]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Merge pull request #92 from jonspock/master
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*!
7 * Bootstrap v3.2.0 (http://getbootstrap.com)
8 * Copyright 2011-2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,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:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}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{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!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.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:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro: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"}*{-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:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;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;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;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}.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;padding:0;margin:-1px;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}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:400;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%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.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:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{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;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;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;text-align:right;border-right:5px solid #eee;border-left:0}.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'}blockquote:before,blockquote:after{content:""}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;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;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{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-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-right:15px;padding-left: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}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-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.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}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-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{min-width:0;padding:0;margin:0;border: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:700}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:thin dotted;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,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-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,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;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}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{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}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.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{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.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{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.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{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.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 .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{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.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:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.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:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.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:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{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:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.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:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{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:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.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:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{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:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.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:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.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:#2a6496;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.33;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:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.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;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.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:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.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;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.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:focus,.btn-group-vertical>.btn:focus{outline:0}.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-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-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-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>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(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-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;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-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;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>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.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.33;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:400;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-top-right-radius:0;border-bottom-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-top-left-radius:0;border-bottom-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{margin-left:-1px}.nav{padding-left:0;margin-bottom: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;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.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 #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.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:#428bca}.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{margin-bottom:5px;text-align:center}.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-left-radius:0;border-top-right-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{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;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-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-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;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@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;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;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;-webkit-box-shadow:none;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-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@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 .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}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{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-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{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{color:#555;background-color:#e7e7e7}@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:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.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{color:#fff;background-color:#080808}@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:#777}.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:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.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{padding:0 5px;color:#ccc;content:"/\00a0"}.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;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;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:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.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;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;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:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.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:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding: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{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left: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:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.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:700}.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{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.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}}@-o-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{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(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:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(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,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;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[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.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,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.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,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.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,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.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-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.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:#428bca;border-color:#428bca}.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:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.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{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.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{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.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{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.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,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-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{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{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.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:first-child,.panel>.table-responsive:first-child>.table: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 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{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{margin-bottom:0;border: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{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:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.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{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.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,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(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:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;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-bottom:0;margin-left:5px}.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,.5);box-shadow:0 5px 15px rgba(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-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;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;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;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;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right: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;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(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{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;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{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";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,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-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}.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;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;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;margin-top:-10px;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%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(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:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left: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-footer:before,.modal-footer:after{display:table;content:" "}.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-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left: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;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-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}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}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}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}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}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>
11 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" />
14 <meta content="Ian Coleman" name="author" />
15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
115 </style>
116 </head>
117 <body>
118 <div class="container">
119
120 <h1 class="text-center">Mnemonic Code Converter</h1>
121 <p class="version">v0.2.2</p>
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
127 <div class="form-group">
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
130 <p data-translate>You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).</p>
131 <p data-translate-html>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
135 </div>
136 </div>
137 <div class="form-group generate-container">
138 <label class="col-sm-2 control-label"></label>
139 <div class="col-sm-10">
140 <div class="form-inline">
141 <div class="input-group-inline">
142 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
143 <button class="btn generate">Generate</button>
144 <select id="strength" class="strength form-control">
145 <option value="3">3</option>
146 <option value="6">6</option>
147 <option value="9">9</option>
148 <option value="12">12</option>
149 <option value="15" selected>15</option>
150 <option value="18">18</option>
151 <option value="21">21</option>
152 <option value="24">24</option>
153 </select>
154 <span data-translate>words</span>
155 </div>
156 </div>
157 </div>
158 </div>
159 <div class="entropy-container hidden">
160 <div class="form-group text-danger">
161 <label class="col-sm-2 control-label" data-translate>Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes" data-translate>Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
171 <div class="row">
172 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
173 <div class="crack-time col-sm-3 form-control-static"></div>
174 <label class="col-sm-3 control-label" data-translate>Event Count</label>
175 <div class="event-count col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
178 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
179 <div class="type col-sm-3 form-control-static"></div>
180 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
181 <div class="bits-per-event col-sm-3 form-control-static"></div>
182 </div>
183 <div class="row">
184 <label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
185 <div class="word-count col-sm-3 form-control-static"></div>
186 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
187 <div class="bits col-sm-3 form-control-static"></div>
188 </div>
189 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
190 <div class="filtered col-sm-9 form-control-static"></div>
191 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
192 <div class="binary col-sm-9 form-control-static"></div>
193 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
194 <div class="col-sm-9">
195 <select class="mnemonic-length form-control">
196 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
197 <option value="12">12 <span data-translate>Words</span></option>
198 <option value="15">15 <span data-translate>Words</option>
199 <option value="18">18 <span data-translate>Words</span></option>
200 <option value="21">21 <span data-translate>Words</span></option>
201 <option value="24">24 <span data-translate>Words</span></option>
202 </select>
203 </div>
204 </div>
205 <div class="col-sm-3">
206 <p data-translate>Valid entropy values include:</p>
207 <ul>
208 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
209 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
210 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
211 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
212 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
213 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
214 </ul>
215 </div>
216 </div>
217 </div>
218 <div class="form-group">
219 <div class="col-sm-2"></div>
220 <div class="col-sm-10 checkbox">
221 <label>
222 <input type="checkbox" class="use-entropy">
223 <span data-translate>Supply my own source of entropy</span>
224 </label>
225 </div>
226 </div>
227 <div class="form-group">
228 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
229 <div class="col-sm-10 languages">
230 <div class="form-control no-border">
231 <a href="#english">English</a>
232 <a href="#japanese" title="Japanese">日本語</a>
233 <a href="#spanish" title="Spanish">Español</a>
234 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
235 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
236 <a href="#french" title="French">Français</a>
237 <a href="#italian" title="Italian">Italiano</a>
238 </div>
239 </div>
240 </div>
241 <div class="form-group">
242 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
243 <div class="col-sm-10">
244 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
245 </div>
246 </div>
247 <div class="form-group">
248 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
249 <div class="col-sm-10">
250 <textarea id="passphrase" class="passphrase form-control"></textarea>
251 </div>
252 </div>
253 <div class="form-group">
254 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
255 <div class="col-sm-10">
256 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
257 </div>
258 </div>
259 <div class="form-group">
260 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
261 <div class="col-sm-10">
262 <select id="network-phrase" class="network form-control">
263 <!-- populated by javascript -->
264 </select>
265 </div>
266 </div>
267 <div class="form-group">
268 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
269 <div class="col-sm-10">
270 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
271 </div>
272 </div>
273 </form>
274 </div>
275 </div>
276
277 <hr>
278
279 <div class="row">
280 <div class="col-md-12">
281 <h2>Derivation Path</h2>
282 <ul class="derivation-type nav nav-tabs" role="tablist">
283 <li id="bip32-tab">
284 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
285 </li>
286 <li id="bip44-tab" class="active">
287 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
288 </li>
289 <li id="bip49-tab">
290 <a href="#bip49" role="tab" data-toggle="tab">BIP49</a>
291 </li>
292 </ul>
293 <div class="derivation-type tab-content">
294 <div id="bip44" class="tab-pane active">
295 <form class="form-horizontal" role="form">
296 <br>
297 <div class="col-sm-2"></div>
298 <div class="col-sm-10">
299 <p data-translate-html>
300 For more info see the
301 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
302 </p>
303 </div>
304 <div class="form-group">
305 <label for="purpose" class="col-sm-2 control-label">
306 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
307 </label>
308 <div class="col-sm-10">
309 <input id="purpose" type="text" class="purpose form-control" value="44" readonly>
310 </div>
311 </div>
312 <div class="form-group">
313 <label for="coin" class="col-sm-2 control-label">
314 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
315 </label>
316 <div class="col-sm-10">
317 <input id="coin" type="text" class="coin form-control" value="0" readonly>
318 </div>
319 </div>
320 <div class="form-group">
321 <label for="account" class="col-sm-2 control-label">
322 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
323 </label>
324 <div class="col-sm-10">
325 <input id="account" type="text" class="account form-control" value="0">
326 </div>
327 </div>
328 <div class="form-group">
329 <label for="change" class="col-sm-2 control-label">
330 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
331 </label>
332 <div class="col-sm-10">
333 <input id="change" type="text" class="change form-control" value="0">
334 </div>
335 </div>
336 <div class="form-group">
337 <label class="col-sm-2 control-label">
338 </label>
339 <div class="col-sm-10">
340 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
341 </div>
342 </div>
343 <div class="form-group">
344 <label for="account-xprv" class="col-sm-2 control-label">
345 <span data-translate>Account Extended Private Key</span>
346 </label>
347 <div class="col-sm-10">
348 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
349 </div>
350 </div>
351 <div class="form-group">
352 <label for="account-xpub" class="col-sm-2 control-label">
353 <span data-translate>Account Extended Public Key</span>
354 </label>
355 <div class="col-sm-10">
356 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
357 </div>
358 </div>
359 <div class="form-group">
360 <label class="col-sm-2 control-label">
361 </label>
362 <div class="col-sm-10">
363 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
364 </div>
365 </div>
366 <div class="form-group">
367 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
368 <div class="col-sm-10">
369 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
370 </div>
371 </div>
372 </form>
373 </div>
374 <div id="bip32" class="tab-pane">
375 <form class="form-horizontal" role="form">
376 <br>
377 <div class="col-sm-2"></div>
378 <div class="col-sm-10">
379 <p data-translate>
380 For more info see the
381 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
382 </p>
383 </div>
384 <div class="form-group">
385 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
386 <div class="col-sm-10">
387 <select id="bip32-client" class="client form-control">
388 <option value="custom">Custom derivation path</option>
389 <!-- populated by javascript -->
390 </select>
391 </div>
392 </div>
393 <div class="form-group">
394 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
395 <div class="col-sm-10">
396 <input id="bip32-path" type="text" class="path form-control" value="m/0">
397 </div>
398 </div>
399 <div class="form-group">
400 <div class="col-sm-2"></div>
401 <label class="col-sm-10">
402 <input class="hardened-addresses" type="checkbox">
403 <span data-translate>Use hardened addresses</span>
404 </label>
405 </div>
406 <div class="form-group">
407 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
408 <div class="col-sm-10">
409 <p class="form-control no-border" data-translate-html>
410 Use path <code>m/0'/0'</code> with hardened addresses.
411 </p>
412 <p class="form-control no-border" data-translate-html>
413 For more info see the
414 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
415 </p>
416 </div>
417 </div>
418 <div class="form-group">
419 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
420 <div class="col-sm-10">
421 <p class="form-control no-border">
422 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
423 </p>
424 <p class="form-control no-border">
425 <span data-translate>For more info see</span>
426 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
427 </p>
428 </div>
429 </div>
430 <div class="form-group">
431 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
432 <div class="col-sm-10">
433 <p class="form-control no-border">
434 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
435 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
436 </p>
437 <p class="form-control no-border">
438 <span data-translate>Can be used with</span>:
439 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
440 </p>
441 </div>
442 </div>
443 </form>
444 </div>
445 <div id="bip49" class="tab-pane">
446 <form class="form-horizontal" role="form">
447 <br>
448 <div class="unavailable hidden">
449 <div class="form-group">
450 <div class="col-sm-2"></div>
451 <div class="col-sm-10">
452 <p data-translate>BIP49 is unavailable for this coin.</p>
453 </div>
454 </div>
455 </div>
456 <div class="available">
457 <div class="col-sm-2"></div>
458 <div class="col-sm-10">
459 <p data-translate-html>
460 For more info see the
461 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">BIP49 spec</a>.
462 </p>
463 </div>
464 <div class="form-group">
465 <label for="purpose" class="col-sm-2 control-label">
466 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
467 </label>
468 <div class="col-sm-10">
469 <input id="purpose" type="text" class="purpose form-control" value="49" readonly>
470 </div>
471 </div>
472 <div class="form-group">
473 <label for="coin" class="col-sm-2 control-label">
474 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
475 </label>
476 <div class="col-sm-10">
477 <input id="coin" type="text" class="coin form-control" value="0" readonly>
478 </div>
479 </div>
480 <div class="form-group">
481 <label for="account" class="col-sm-2 control-label">
482 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
483 </label>
484 <div class="col-sm-10">
485 <input id="account" type="text" class="account form-control" value="0">
486 </div>
487 </div>
488 <div class="form-group">
489 <label for="change" class="col-sm-2 control-label">
490 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
491 </label>
492 <div class="col-sm-10">
493 <input id="change" type="text" class="change form-control" value="0">
494 </div>
495 </div>
496 <div class="form-group">
497 <label class="col-sm-2 control-label">
498 </label>
499 <div class="col-sm-10">
500 <p data-translate>The account extended keys can be used for importing to most BIP49 compatible wallets.</p>
501 </div>
502 </div>
503 <div class="form-group">
504 <label for="account-xprv" class="col-sm-2 control-label">
505 <span data-translate>Account Extended Private Key</span>
506 </label>
507 <div class="col-sm-10">
508 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
509 </div>
510 </div>
511 <div class="form-group">
512 <label for="account-xpub" class="col-sm-2 control-label">
513 <span data-translate>Account Extended Public Key</span>
514 </label>
515 <div class="col-sm-10">
516 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
517 </div>
518 </div>
519 <div class="form-group">
520 <label class="col-sm-2 control-label">
521 </label>
522 <div class="col-sm-10">
523 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
524 </div>
525 </div>
526 <div class="form-group">
527 <label for="bip49-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
528 <div class="col-sm-10">
529 <input id="bip49-path" type="text" class="path form-control" value="m/49'/0'/0'/0" readonly="readonly">
530 </div>
531 </div>
532 </div>
533 </form>
534 </div>
535 </div>
536 <form class="form-horizontal" role="form">
537 <div class="form-group">
538 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
539 <div class="col-sm-10">
540 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
541 </div>
542 </div>
543 <div class="form-group">
544 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
545 <div class="col-sm-10">
546 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
547 </div>
548 </div>
549 </form>
550 </div>
551 </div>
552
553 <hr>
554
555 <div class="row">
556 <div class="col-md-12">
557 <h2>Derived Addresses</h2>
558 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
559 <table class="table table-striped">
560 <thead>
561 <th>
562 <div class="input-group">
563 <span data-translate>Path</span>&nbsp;&nbsp;
564 <button class="index-toggle" data-translate>Toggle</button>
565 </div>
566 </th>
567 <th>
568 <div class="input-group">
569 <span data-translate>Address</span>&nbsp;&nbsp;
570 <button class="address-toggle" data-translate>Toggle</button>
571 </div>
572 </th>
573 <th>
574 <div class="input-group">
575 <span data-translate>Public Key</span>&nbsp;&nbsp;
576 <button class="public-key-toggle" data-translate>Toggle</button>
577 </div>
578 </th>
579 <th>
580 <div class="input-group">
581 <span data-translate>Private Key</span>&nbsp;&nbsp;
582 <button class="private-key-toggle" data-translate>Toggle</button>
583 </div>
584 </th>
585 </thead>
586 <tbody class="addresses monospace">
587 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
588 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
589 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
590 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
591 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
592 </tbody>
593 </table>
594 </div>
595 </div>
596 <span data-translate>Show more rows</span>:
597 <input type="number" class="rows-to-add" value="20">
598 <button class="more" data-translate>Show</button>
599
600 <hr>
601
602 <div class="row">
603 <div class="col-md-12">
604 <h2 data-translate>More info</h2>
605 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
606 <p data-translate-html>
607 Read more at the
608 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
609 </p>
610 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
611 <p data-translate-html>
612 Read more at the
613 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
614 </p>
615 <p data-translate-html>
616 See the demo at
617 <a href="http://bip32.org/" target="_blank">bip32.org</a>
618 </p>
619 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
620 <p data-translate-html>
621 Read more at the
622 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
623 </p>
624 <h3 data-translate>Private Keys</h3>
625 <p>
626 <span data-translate-html>
627 Use private keys at
628 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
629 </span>
630 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
631 </p>
632 <h3 id="entropy-notes" data-translate>Entropy</h3>
633 <p>
634 <span data-translate-html>
635 Entropy values must be sourced from a
636 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
637 </span>
638 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
639 <span data-translate-html>
640 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
641 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
642 random enough for the needs of this tool.
643 </span>
644 </p>
645 <p>
646 <strong><span data-translate>Do not store entropy.</span></strong>
647 </p>
648 <p>
649 <span data-translate>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
650 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
651 <span data-translate-html><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
652 </p>
653 <p>
654 <span data-translate-html>
655 The random mnemonic generator on this page uses a
656 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
657 </span>
658 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
659 <span data-translate>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
660 <span data-translate>In that case you might choose to use your own source of entropy.</span>
661 </p>
662 <p>
663 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
664 </p>
665 <h3 data-translate>License</h3>
666 <p>
667 <span data-translate-html>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
668 </span>
669 </p>
670 <p data-translate>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.</p>
671 </div>
672 </div>
673
674 <hr>
675
676 <div class="row">
677 <div class="col-md-12">
678
679 <h2 data-translate>Offline Usage</h2>
680
681 <p data-translate>
682 You can use this tool without having to be online.
683 </p>
684 <p data-translate>
685 In your browser, select file save-as, and save this page
686 as a file.
687 </p>
688 <p data-translate>
689 Double-click that file to open it in a browser
690 on any offline computer.
691 </p>
692 <p>
693 <span data-translate>Alternatively, download the file from the repository</span>
694 -
695 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
696 </p>
697
698 </div>
699 </div>
700
701 <hr>
702
703 <div class="row">
704 <div class="col-md-12">
705
706 <h2 data-translate>This project is 100% open-source code</h2>
707
708 <p>
709 <span data-translate>Get the source code from the repository</span>
710 -
711 <a href="https://github.com/iancoleman/bip39" target="_blank">
712 https://github.com/iancoleman/bip39
713 </a>
714 </p>
715
716 <h3 data-translate>Libraries</h3>
717
718 <p>
719 <span>BitcoinJS - </span>
720 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
721 https://github.com/bitcoinjs/bitcoinjs-lib
722 </a>
723 </p>
724
725 <p>
726 <span>jsBIP39 - </span>
727 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
728 https://github.com/iancoleman/jsbip39
729 </a>
730 </p>
731
732 <p>
733 <span>sjcl - </span>
734 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
735 https://github.com/bitwiseshiftleft/sjcl
736 </a>
737 </p>
738
739 <p>
740 <span>jQuery - </span>
741 <a href="https://jquery.com/" target="_blank">
742 https://jquery.com/
743 </a>
744 </p>
745
746 <p>
747 <span>Twitter Bootstrap - </span>
748 <a href="http://getbootstrap.com/" target="_blank">
749 http://getbootstrap.com/
750 </a>
751 </p>
752
753 </div>
754 </div>
755
756 </div>
757
758 <div class="qr-container hidden">
759 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
760 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
761 <div class="qr-hider hidden">
762 <div class="qr-image"></div>
763 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
764 </div>
765 </div>
766
767 <div class="feedback-container">
768 <div class="feedback">Loading...</div>
769 </div>
770
771 <script type="text/template" id="address-row-template">
772 <tr>
773 <td class="index"><span></span></td>
774 <td class="address"><span data-show-qr></span></td>
775 <td class="pubkey"><span data-show-qr></span></td>
776 <td class="privkey"><span data-show-qr></span></td>
777 </tr>
778 </script>
779 <script>// From
780 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
781 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
782 // but is not required in any modern browsers.
783 // For more information, see
784 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
785
786 //----------------------------------------------------------------------
787 //
788 // ECMAScript 2015 Polyfills
789 //
790 //----------------------------------------------------------------------
791
792 (function (global) {
793 "use strict";
794
795 // Set this to always override native implementations, for testing
796 // the polyfill in browsers with partial/full ES2015 support.
797 var OVERRIDE_NATIVE_FOR_TESTING = false;
798
799 var undefined = (void 0); // Paranoia
800
801 // Helpers
802
803 function strict(o) {
804 return o === global ? undefined : o;
805 }
806
807 function hook(o, p, f) {
808 var op = o[p];
809 console.assert(typeof op === 'function', 'Hooking a non-function');
810 o[p] = function() {
811 var o = strict(this);
812 var r = f.apply(o, arguments);
813 return r !== undefined ? r : op.apply(o, arguments);
814 };
815 }
816
817 function isSymbol(s) {
818 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
819 }
820
821 function getPropertyDescriptor(target, name) {
822 var desc = Object.getOwnPropertyDescriptor(target, name);
823 var proto = Object.getPrototypeOf(target);
824 while (!desc && proto) {
825 desc = Object.getOwnPropertyDescriptor(proto, name);
826 proto = Object.getPrototypeOf(proto);
827 }
828 return desc;
829 }
830
831 var enqueue = (function(nativePromise, nativeSetImmediate) {
832 if (nativePromise)
833 return function(job) { nativePromise.resolve().then(function() { job(); }); };
834 if (nativeSetImmediate)
835 return function(job) { nativeSetImmediate(job); };
836 return function(job) { setTimeout(job, 0); };
837 }(global['Promise'], global['setImmediate']));
838
839 function define(o, p, v, override) {
840 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
841 return;
842
843 if (typeof v === 'function') {
844 // Sanity check that functions are appropriately named (where possible)
845 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
846 Object.defineProperty(o, p, {
847 value: v,
848 configurable: true,
849 enumerable: false,
850 writable: true
851 });
852 } else {
853 Object.defineProperty(o, p, {
854 value: v,
855 configurable: false,
856 enumerable: false,
857 writable: false
858 });
859 }
860 }
861
862 function set_internal(o, p, v) {
863 Object.defineProperty(o, p, {
864 value: v,
865 configurable: false,
866 enumerable: false,
867 writable: true
868 });
869 }
870
871 // Snapshot intrinsic functions
872 var $isNaN = global.isNaN,
873 $parseInt = global.parseInt,
874 $parseFloat = global.parseFloat;
875
876 var E = Math.E,
877 LOG10E = Math.LOG10E,
878 LOG2E = Math.LOG2E,
879 abs = Math.abs,
880 ceil = Math.ceil,
881 exp = Math.exp,
882 floor = Math.floor,
883 log = Math.log,
884 max = Math.max,
885 min = Math.min,
886 pow = Math.pow,
887 random = Math.random,
888 sqrt = Math.sqrt;
889
890 var orig_match = String.prototype.match,
891 orig_replace = String.prototype.replace,
892 orig_search = String.prototype.search,
893 orig_split = String.prototype.split;
894
895 // These are used for implementing the polyfills, but not exported.
896
897 // Inspired by https://gist.github.com/1638059
898 /** @constructor */
899 function EphemeronTable() {
900 var secretKey = ObjectCreate(null);
901
902 function conceal(o) {
903 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
904 Object.defineProperty(o, 'valueOf', {
905 value: (function(secretKey) {
906 return function (k) {
907 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
908 };
909 }(secretKey)),
910 configurable: true,
911 writeable: true,
912 enumerable: false
913 });
914 return secrets;
915 }
916
917 function reveal(o) {
918 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
919 return v === o ? null : v;
920 }
921
922 return {
923 clear: function() {
924 secretKey = ObjectCreate(null);
925 },
926 remove: function(key) {
927 var secrets = reveal(key);
928 if (secrets && HasOwnProperty(secrets, 'value')) {
929 delete secrets.value;
930 return true;
931 }
932 return false;
933 },
934 get: function(key, defaultValue) {
935 var secrets = reveal(key);
936 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
937 },
938 has: function(key) {
939 var secrets = reveal(key);
940 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
941 },
942 set: function(key, value) {
943 var secrets = reveal(key) || conceal(key);
944 secrets.value = value;
945 }
946 };
947 }
948
949 var empty = Object.create(null);
950
951 //----------------------------------------------------------------------
952 //
953 // ECMAScript 2015
954 // http://www.ecma-international.org/ecma-262/6.0/
955 //
956 //----------------------------------------------------------------------
957
958 // ---------------------------------------
959 // 19.4 Symbol Objects
960 // ---------------------------------------
961
962 // NOTE: Symbols are defined here - out of spec order - since we need the
963 // properties and prototype to be populated for other polyfills.
964
965 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
966
967 var symbolForKey;
968 (function() {
969 var secret = Object.create(null);
970 var symbolMap = {};
971 symbolForKey = function(k) {
972 return symbolMap[k];
973 };
974
975 var GlobalSymbolRegistry = [];
976
977 function unique(bits) {
978 return Array(bits + 1).join('x').replace(/x/g, function() {
979 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
980 });
981 }
982
983 // 19.4.1 The Symbol Constructor
984 // 19.4.1.1 Symbol ( description=undefined )
985 function Symbol(description) {
986 if (!(this instanceof Symbol)) return new Symbol(description, secret);
987 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
988
989 var descString = description === undefined ? undefined : String(description);
990
991 set_internal(this, '[[SymbolData]]', unique(128));
992 set_internal(this, '[[Description]]', descString);
993
994 symbolMap[this] = this;
995 return this;
996 }
997
998 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
999 global.Symbol = Symbol;
1000
1001 // 19.4.2 Properties of the Symbol Constructor
1002
1003 // 19.4.2.1 Symbol.for (key)
1004 define(Symbol, 'for', function for_(key) {
1005 var stringKey = String(key);
1006 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1007 var e = GlobalSymbolRegistry[i];
1008 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1009 }
1010 var newSymbol = Symbol(key);
1011 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1012 return newSymbol;
1013 });
1014
1015 // 19.4.2.2 Symbol.hasInstance
1016 // 19.4.2.3 Symbol.isConcatSpreadable
1017
1018 // 19.4.2.4 Symbol.iterator
1019 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1020
1021 // 19.4.2.5 Symbol.keyFor (sym)
1022 define(Symbol, 'keyFor', function keyFor(sym) {
1023 if (!(sym instanceof Symbol)) throw TypeError();
1024 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1025 var e = GlobalSymbolRegistry[i];
1026 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1027 }
1028 return undefined;
1029 });
1030
1031 // 19.4.2.6 Symbol.match
1032 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1033
1034 // 19.4.2.7 Symbol.prototype
1035
1036 // 19.4.2.8 Symbol.replace
1037 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1038
1039 // 19.4.2.9 Symbol.search
1040 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1041
1042 // 19.4.2.10 Symbol.species
1043
1044 // 19.4.2.11 Symbol.search
1045 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1046
1047 // 19.4.2.12 Symbol.toPrimitive
1048
1049 // 19.4.2.13 Symbol.toStringTag
1050 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1051
1052 // 19.4.2.14 Symbol.unscopables
1053
1054 // 19.4.3 Properties of the Symbol Prototype Object
1055 // 19.4.3.1 Symbol.prototype.constructor
1056
1057 // 19.4.3.2 Symbol.prototype.toString ( )
1058 Object.defineProperty(Symbol.prototype, 'toString', {
1059 value: function toString() {
1060 var s = strict(this);
1061 var desc = s['[[Description]]'];
1062 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1063 },
1064 configurable: true, writeable: true, enumerable: false });
1065
1066 // 19.4.3.3 Symbol.prototype.valueOf ( )
1067 Object.defineProperty(Symbol.prototype, 'valueOf', {
1068 value: function valueOf() {
1069 // To prevent automatic string conversion:
1070 throw TypeError();
1071
1072 // Spec has approximately the following:
1073 //var s = strict(this);
1074 //if (Type(s) === 'symbol') return s;
1075 //if (Type(s) !== 'object') throw TypeError();
1076 //if (!('[[SymbolData]]' in s)) throw TypeError();
1077 //return s['[[SymbolData]]'];
1078 },
1079 configurable: true, writeable: true, enumerable: false });
1080
1081 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1082 // (Done later to polyfill partial implementations)
1083
1084 // 19.4.4 Properties of Symbol Instances
1085 }());
1086
1087 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1088
1089 // Defined here so that other prototypes can reference it
1090 // 25.1.2 The %IteratorPrototype% Object
1091 var $IteratorPrototype$ = {};
1092
1093 //----------------------------------------
1094 // 6 ECMAScript Data Types and Values
1095 //----------------------------------------
1096
1097 // 6.1 ECMAScript Language Types
1098
1099 // "Type(x)" is used as shorthand for "the type of x"...
1100 function Type(v) {
1101 switch (typeof v) {
1102 case 'undefined': return 'undefined';
1103 case 'boolean': return 'boolean';
1104 case 'number': return 'number';
1105 case 'string': return 'string';
1106 case 'symbol': return 'symbol';
1107 default:
1108 if (v === null) return 'null';
1109 if (v instanceof global.Symbol) return 'symbol';
1110 return 'object';
1111 }
1112 }
1113
1114 // 6.1.5.1 Well-Known Symbols
1115 var $$iterator = global.Symbol.iterator,
1116 $$match = global.Symbol.match,
1117 $$replace = global.Symbol.replace,
1118 $$search = global.Symbol.search,
1119 $$split = global.Symbol.split,
1120 $$toStringTag = global.Symbol.toStringTag;
1121
1122 //----------------------------------------
1123 // 7 Abstract Operations
1124 //----------------------------------------
1125
1126 //----------------------------------------
1127 // 7.1 Type Conversion
1128 //----------------------------------------
1129
1130 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1131 // just use valueOf()
1132
1133 // 7.1.2 ToBoolean ( argument )
1134 // just use Boolean()
1135
1136 // 7.1.3 ToNumber ( argument )
1137 // just use Number()
1138
1139 // 7.1.4 ToInteger ( argument )
1140 function ToInteger(n) {
1141 n = Number(n);
1142 if ($isNaN(n)) return 0;
1143 if (n === 0 || n === Infinity || n === -Infinity) return n;
1144 return ((n < 0) ? -1 : 1) * floor(abs(n));
1145 }
1146
1147 // 7.1.5 ToInt32 ( argument )
1148 function ToInt32(v) { return v >> 0; }
1149
1150 // 7.1.6 ToUint32 ( argument )
1151 function ToUint32(v) { return v >>> 0; }
1152
1153 // 7.1.7 ToInt16 ( argument )
1154 function ToInt16(v) { return (v << 16) >> 16; }
1155
1156 // 7.1.8 ToUint16 ( argument )
1157 function ToUint16(v) { return v & 0xFFFF; }
1158
1159 // 7.1.9 ToInt8 ( argument )
1160 function ToInt8(v) { return (v << 24) >> 24; }
1161
1162 // 7.1.10 ToUint8 ( argument )
1163 function ToUint8(v) { return v & 0xFF; }
1164
1165 // 7.1.11 ToUint8Clamp ( argument )
1166 function ToUint8Clamp(argument) {
1167 var number = Number(argument);
1168 if ($isNaN(number)) return 0;
1169 if (number <= 0) return 0;
1170 if (number >= 255) return 255;
1171 var f = floor(number);
1172 if ((f + 0.5) < number) return f + 1;
1173 if (number < (f + 0.5)) return f;
1174 if (f % 2) return f + 1;
1175 return f;
1176 }
1177
1178 // 7.1.12 ToString ( argument )
1179 // just use String()
1180
1181 // 7.1.13 ToObject ( argument )
1182 function ToObject(v) {
1183 if (v === null || v === undefined) throw TypeError();
1184 return Object(v);
1185 }
1186
1187 // 7.1.14 ToPropertyKey ( argument )
1188 function ToPropertyKey(v) {
1189 return String(v);
1190 }
1191
1192 // 7.1.15 ToLength ( argument )
1193 function ToLength(v) {
1194 var len = ToInteger(v);
1195 if (len <= 0) return 0;
1196 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1197 return min(len, 0x20000000000000 - 1); // 2^53-1
1198 }
1199
1200 // 7.1.16 CanonicalNumericIndexString ( argument )
1201
1202 //----------------------------------------
1203 // 7.2 Testing and Comparison Operations
1204 //----------------------------------------
1205
1206 // 7.2.1 RequireObjectCoercible ( argument )
1207 // 7.2.2 IsArray ( argument )
1208
1209 // 7.2.3 IsCallable ( argument )
1210 function IsCallable(o) { return typeof o === 'function'; }
1211
1212 // 7.2.4 IsConstructor ( argument )
1213 function IsConstructor(o) {
1214 // Hacks for Safari 7 TypedArray XXXConstructor objects
1215 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1216 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1217 // TODO: Can this be improved on?
1218 return typeof o === 'function';
1219 }
1220
1221 // 7.2.5 IsExtensible (O)
1222 // 7.2.6 IsInteger ( argument )
1223
1224 // 7.2.7 IsPropertyKey ( argument )
1225 function IsPropertyKey(argument) {
1226 if (Type(argument) === 'string') return true;
1227 if (Type(argument) === 'symbol') return true;
1228 return false;
1229 }
1230
1231 // 7.2.8 IsRegExp ( argument )
1232 // 7.2.5 IsConstructor ( argument )
1233
1234 // 7.2.9 SameValue(x, y)
1235 function SameValue(x, y) {
1236 if (typeof x !== typeof y) return false;
1237 switch (typeof x) {
1238 case 'undefined':
1239 return true;
1240 case 'number':
1241 if (x !== x && y !== y) return true;
1242 if (x === 0 && y === 0) return 1/x === 1/y;
1243 return x === y;
1244 case 'boolean':
1245 case 'string':
1246 case 'object':
1247 default:
1248 return x === y;
1249 }
1250 }
1251
1252 // 7.2.10 SameValueZero(x, y)
1253 function SameValueZero(x, y) {
1254 if (typeof x !== typeof y) return false;
1255 switch (typeof x) {
1256 case 'undefined':
1257 return true;
1258 case 'number':
1259 if (x !== x && y !== y) return true;
1260 return x === y;
1261 case 'boolean':
1262 case 'string':
1263 case 'object':
1264 default:
1265 return x === y;
1266 }
1267 }
1268
1269 //----------------------------------------
1270 // 7.3 Operations on Objects
1271 //----------------------------------------
1272
1273 // 7.3.1 Get (O, P)
1274 // - just use o.p or o[p]
1275
1276 // 7.3.2 GetV (V, P)
1277 function GetV(v, p) {
1278 var o = ToObject(v);
1279 return o[p];
1280 }
1281
1282 // 7.3.3 Set (O, P, V, Throw)
1283 // - just use o.p = v or o[p] = v
1284
1285
1286
1287
1288 // 7.3.9 GetMethod (O, P)
1289 function GetMethod(o, p) {
1290 var func = GetV(o, p);
1291 if (func === undefined || func === null) return undefined;
1292 if (!IsCallable(func)) throw TypeError();
1293 return func;
1294 }
1295
1296 // 7.3.10 HasProperty (O, P)
1297 function HasProperty(o, p) {
1298 while (o) {
1299 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1300 if (Type(o) !== 'object') return false;
1301 o = Object.getPrototypeOf(o);
1302 }
1303 return false;
1304 }
1305
1306 // 7.3.11 HasOwnProperty (O, P)
1307 function HasOwnProperty(o, p) {
1308 return Object.prototype.hasOwnProperty.call(o, p);
1309 }
1310
1311 //----------------------------------------
1312 // 7.4 Operations on Iterator Objects
1313 //----------------------------------------
1314
1315 // 7.4.1 GetIterator ( obj, method )
1316 function GetIterator(obj, method) {
1317 if (arguments.length < 2)
1318 method = GetMethod(obj, $$iterator);
1319 var iterator = method.call(obj);
1320 if (Type(iterator) !== 'object') throw TypeError();
1321 return iterator;
1322 }
1323
1324 // 7.4.2 IteratorNext ( iterator, value )
1325 function IteratorNext(iterator, value) {
1326 if (arguments.length < 2)
1327 var result = iterator.next();
1328 else
1329 result = iterator.next(value);
1330 if (Type(result) !== 'object') throw TypeError();
1331 return result;
1332 }
1333
1334 // 7.4.3 IteratorComplete ( iterResult )
1335 function IteratorComplete(iterResult) {
1336 console.assert(Type(iterResult) === 'object');
1337 return Boolean(iterResult.done);
1338 }
1339
1340 // 7.4.4 IteratorValue ( iterResult )
1341 function IteratorValue(iterResult) {
1342 console.assert(Type(iterResult) === 'object');
1343 return iterResult.value;
1344 }
1345
1346 // 7.4.5 IteratorStep ( iterator )
1347 function IteratorStep( iterator, value ) {
1348 var result = IteratorNext(iterator, value);
1349 var done = result['done'];
1350 if (Boolean(done) === true) return false;
1351 return result;
1352 }
1353
1354 // 7.4.6 IteratorClose( iterator, completion )
1355 function IteratorClose( iterator, completion ) {
1356 console.assert(Type(iterator) === 'object');
1357 var _return = GetMethod(iterator, 'return');
1358 if (_return === undefined) return completion;
1359 try {
1360 var innerResult = _return[iterator]();
1361 } catch (result) {
1362 // TODO: If completion.[[type]] is throw, return completion
1363 return result;
1364 }
1365 if (Type(innerResult) !== 'object') throw TypeError();
1366 return completion;
1367 }
1368
1369 // 7.4.7 CreateIterResultObject (value, done)
1370 function CreateIterResultObject(value, done) {
1371 console.assert(Type(done) === 'boolean');
1372 var obj = {};
1373 obj["value"] = value;
1374 obj["done"] = done;
1375 return obj;
1376 }
1377
1378 // 7.4.8 CreateListIterator (list)
1379 // 7.4.8.1 ListIterator next( )
1380 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1381 // 7.4.9.1 CompoundIterator next( )
1382
1383 //----------------------------------------
1384 // 8 Executable Code and Execution Contexts
1385 //----------------------------------------
1386
1387 //----------------------------------------
1388 // 8.4 Jobs and Job Queues
1389 //----------------------------------------
1390
1391 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1392 function EnqueueJob(queueName, job, args) {
1393 var fn = function() { job.apply(undefined, args); };
1394 enqueue(fn);
1395 }
1396
1397 // 8.4.2 NextJob result
1398 function NextJob(result) {
1399 // no-op
1400 }
1401
1402 //----------------------------------------
1403 // 9 Ordinary and Exotic Objects Behaviors
1404 //----------------------------------------
1405
1406 // 9.1.11 [[Enumerate]] ()
1407 function Enumerate(obj) {
1408 var e = [];
1409 if (Object(obj) !== obj) return e;
1410 var visited = new Set;
1411 while (obj !== null) {
1412 Object.getOwnPropertyNames(obj).forEach(function(name) {
1413 if (!visited.has(name)) {
1414 var desc = Object.getOwnPropertyDescriptor(obj, name);
1415 if (desc) {
1416 visited.add(name);
1417 if (desc.enumerable) e.push(name);
1418 }
1419 }
1420 });
1421 obj = Object.getPrototypeOf(obj);
1422 }
1423 return e[$$iterator]();
1424 }
1425
1426 // 9.1.12 [[OwnPropertyKeys]] ( )
1427 function OwnPropertyKeys(o) {
1428 return Object.getOwnPropertyNames(o);
1429 }
1430
1431 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1432 function ObjectCreate(proto, internalSlotsList) {
1433 return Object.create(proto, internalSlotsList);
1434 }
1435
1436 // ---------------------------------------
1437 // 19 Fundamental Objects
1438 // ---------------------------------------
1439
1440 // ---------------------------------------
1441 // 19.1 Object Objects
1442 // ---------------------------------------
1443
1444 // 19.1.1 The Object Constructor
1445 // 19.1.1.1 Object ( [ value ] )
1446 // 19.1.2 Properties of the Object Constructor
1447 // 19.1.2.1 Object.assign ( target, ...sources )
1448 define(
1449 Object, 'assign',
1450 function assign(target, /*...*/sources) {
1451 var to = ToObject(target);
1452 if (arguments.length < 2) return to;
1453
1454 var sourcesIndex = 1;
1455 while (sourcesIndex < arguments.length) {
1456 var nextSource = arguments[sourcesIndex++];
1457 if (nextSource === undefined || nextSource === null) {
1458 var keys = [];
1459 } else {
1460 var from = ToObject(nextSource);
1461 keys = OwnPropertyKeys(from);
1462 }
1463 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1464 var nextKey = keys[keysIndex];
1465 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1466 if (desc !== undefined && desc.enumerable) {
1467 var propValue = from[nextKey];
1468 to[nextKey] = propValue;
1469 }
1470 }
1471 }
1472 return to;
1473 });
1474
1475 // 19.1.2.2 Object.create ( O [ , Properties ] )
1476 // 19.1.2.3 Object.defineProperties ( O, Properties )
1477 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1478 // 19.1.2.5 Object.freeze ( O )
1479 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1480
1481 (function() {
1482 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1483 $getOwnPropertyNames = Object.getOwnPropertyNames,
1484 $keys = Object.keys,
1485 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1486
1487 function isStringKey(k) { return !symbolForKey(k); }
1488
1489 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1490 define(
1491 Object, 'getOwnPropertyNames',
1492 function getOwnPropertyNames(o) {
1493 if (Object.prototype.toString.call(o) === '[object Window]') {
1494 // Workaround for cross-realm calling by IE itself.
1495 // https://github.com/inexorabletash/polyfill/issues/96
1496 try {
1497 return $getOwnPropertyNames(o).filter(isStringKey);
1498 } catch (_) {
1499 return $window_names.slice();
1500 }
1501 }
1502 return $getOwnPropertyNames(o).filter(isStringKey);
1503 }, !nativeSymbols);
1504
1505 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1506 define(
1507 Object, 'getOwnPropertySymbols',
1508 function getOwnPropertySymbols(o) {
1509 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1510 }, !nativeSymbols);
1511
1512 // 19.1.2.14 Object.keys ( O )
1513 define(
1514 Object, 'keys',
1515 function keys(o) {
1516 return $keys(o).filter(isStringKey);
1517 }, !nativeSymbols);
1518 }());
1519
1520 // 19.1.2.9 Object.getPrototypeOf ( O )
1521 // 19.1.2.10 Object.is ( value1, value2 )
1522 define(
1523 Object, 'is',
1524 function is(value1, value2) {
1525 return SameValue(value1, value2);
1526 });
1527
1528 // 19.1.2.11 Object.isExtensible ( O )
1529 // 19.1.2.12 Object.isFrozen ( O )
1530 // 19.1.2.13 Object.isSealed ( O )
1531
1532 // 19.1.2.14 Object.keys ( O )
1533 // see above
1534
1535 // 19.1.2.15 Object.preventExtensions ( O )
1536 // 19.1.2.16 Object.prototype
1537 // 19.1.2.17 Object.seal ( O )
1538
1539 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1540 define(
1541 Object, 'setPrototypeOf',
1542 function setPrototypeOf(o, proto) {
1543 if (Type(o) !== 'object') throw TypeError();
1544 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1545 o.__proto__ = proto;
1546 return o;
1547 }
1548 );
1549
1550 // 19.1.3 Properties of the Object Prototype Object
1551 // 19.1.3.1 Object.prototype.constructor
1552 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1553 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1554 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1555 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1556 // 19.1.3.6 Object.prototype.toString ( )
1557 hook(Object.prototype, 'toString',
1558 function() {
1559 var o = strict(this);
1560 if (o === Object(o) && $$toStringTag in o) {
1561 return '[object ' + o[$$toStringTag] + ']';
1562 }
1563 return undefined;
1564 });
1565
1566 // 19.1.3.7 Object.prototype.valueOf ( )
1567 // 19.1.4 Properties of Object Instances
1568
1569 // ---------------------------------------
1570 // 19.2 Function Objects
1571 // ---------------------------------------
1572
1573 // 19.2.1 The Function Constructor
1574 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1575 // 19.2.2 Properties of the Function Constructor
1576 // 19.2.2.1 Function.length
1577 // 19.2.2.2 Function.prototype
1578 // 19.2.3 Properties of the Function Prototype Object
1579 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1580 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1581 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1582 // 19.2.3.4 Function.prototype.constructor
1583 // 19.2.3.5 Function.prototype.toString ( )
1584 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1585 // 19.2.4 Function Instances
1586 // 19.2.4.1 length
1587 // 19.2.4.2 name
1588 // 19.2.4.3 prototype
1589
1590 // (No polyfillable changes from ES5)
1591
1592 // ---------------------------------------
1593 // 19.3 Boolean Objects
1594 // ---------------------------------------
1595
1596 // 19.3.1 The Boolean Constructor
1597 // 19.3.1.1 Boolean ( value )
1598 // 19.3.2 Properties of the Boolean Constructor
1599 // 19.3.2.1 Boolean.prototype
1600 // 19.3.3 Properties of the Boolean Prototype Object
1601 // 19.3.3.1 Boolean.prototype.constructor
1602 // 19.3.3.2 Boolean.prototype.toString ( )
1603 // 19.3.3.3 Boolean.prototype.valueOf ( )
1604 // 19.3.4 Properties of Boolean Instances
1605
1606 // (No polyfillable changes from ES5)
1607
1608 // ---------------------------------------
1609 // 19.4 Symbol Objects
1610 // ---------------------------------------
1611
1612 // Moved earlier in this script, so that other polyfills can depend on them.
1613
1614 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1615 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1616
1617 // ---------------------------------------
1618 // 19.5 Error Objects
1619 // ---------------------------------------
1620
1621 // 19.5.1 The Error Constructor
1622 // 19.5.1.1 Error ( message )
1623 // 19.5.1.2 new Error( ...argumentsList )
1624 // 19.5.2 Properties of the Error Constructor
1625 // 19.5.2.1 Error.prototype
1626 // 19.5.3 Properties of the Error Prototype Object
1627 // 19.5.3.1 Error.prototype.constructor
1628 // 19.5.3.2 Error.prototype.message
1629 // 19.5.3.3 Error.prototype.name
1630 // 19.5.3.4 Error.prototype.toString ( )
1631 // 19.5.4 Properties of Error Instances
1632 // 19.5.5 Native Error Types Used in This Standard
1633 // 19.5.5.1 EvalError
1634 // 19.5.5.2 RangeError
1635 // 19.5.5.3 ReferenceError
1636 // 19.5.5.4 SyntaxError
1637 // 19.5.5.5 TypeError
1638 // 19.5.5.6 URIError
1639 // 19.5.6 NativeError Object Structure
1640 // 19.5.6.1 NativeError Constructors
1641 // 19.5.6.1.1 NativeError ( message )
1642 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1643 // 19.5.6.2 Properties of the NativeError Constructors
1644 // 19.5.6.2.1 NativeError.prototype
1645 // 19.5.6.3 Properties of the NativeError Prototype Objects
1646 // 19.5.6.4 Properties of NativeError Instances
1647
1648 // (No polyfillable changes from ES5)
1649
1650 // ---------------------------------------
1651 // 20 Numbers and Dates
1652 // ---------------------------------------
1653
1654 // ---------------------------------------
1655 // 20.1 Number Objects
1656 // ---------------------------------------
1657
1658 // 20.1.1 The Number Constructor
1659 // 20.1.1.1 Number ( [ value ] )
1660 // 20.1.1.2 new Number ( ...argumentsList )
1661 // 20.1.2 Properties of the Number Constructor
1662
1663 // 20.1.2.1 Number.EPSILON
1664 define(
1665 Number, 'EPSILON',
1666 (function () {
1667 var next, result;
1668 for (next = 1; 1 + next !== 1; next = next / 2)
1669 result = next;
1670 return result;
1671 }()));
1672
1673 // 20.1.2.2 Number.isFinite ( number )
1674 define(
1675 Number, 'isFinite',
1676 function isFinite(number) {
1677 if (Type(number) !== 'number') return false;
1678 if (number !== number || number === +Infinity || number === -Infinity) return false;
1679 return true;
1680 });
1681
1682 // 20.1.2.3 Number.isInteger ( number )
1683 define(
1684 Number, 'isInteger',
1685 function isInteger(number) {
1686 if (Type(number) !== 'number') return false;
1687 if (number !== number || number === +Infinity || number === -Infinity) return false;
1688 var integer = ToInteger(number);
1689 if (integer !== number) return false;
1690 return true;
1691 });
1692
1693 // 20.1.2.4 Number.isNaN ( number )
1694 define(
1695 Number, 'isNaN',
1696 function isNaN(number) {
1697 if (Type(number) !== 'number') return false;
1698 if (number !== number) return true;
1699 return false;
1700 });
1701
1702 // 20.1.2.5 Number.isSafeInteger ( number )
1703 define(
1704 Number, 'isSafeInteger',
1705 function isSafeInteger(number) {
1706 if (Type(number) !== 'number') return false;
1707 if (number !== number || number === +Infinity || number === -Infinity) return false;
1708 var integer = ToInteger(number);
1709 if (integer !== number) return false;
1710 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1711 return true;
1712 return false;
1713 });
1714
1715 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1716 define(
1717 Number, 'MAX_SAFE_INTEGER',
1718 9007199254740991); // 2^53-1
1719
1720 // 20.1.2.7 Number.MAX_VALUE
1721
1722 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1723 define(
1724 Number, 'MIN_SAFE_INTEGER',
1725 -9007199254740991); // -2^53+1
1726
1727 // 20.1.2.9 Number.MIN_VALUE
1728 // 20.1.2.10 Number.NaN
1729 // 20.1.2.11 Number.NEGATIVE_INFINITY
1730
1731 // 20.1.2.12 Number.parseFloat ( string )
1732 define(Number, 'parseFloat', $parseFloat);
1733
1734 // 20.1.2.13 Number.parseInt ( string, radix )
1735 define(Number, 'parseInt', $parseInt);
1736
1737 // 20.1.2.14 Number.POSITIVE_INFINITY
1738 // 20.1.2.15 Number.prototype
1739
1740 // 20.1.3 Properties of the Number Prototype Object
1741 // 20.1.3.1 Number.prototype.constructor
1742 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1743 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1744 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1745 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1746 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1747 // 20.1.3.7 Number.prototype.valueOf ( )
1748 // 20.1.4 Properties of Number Instances
1749
1750 // ---------------------------------------
1751 // 20.2 The Math Object
1752 // ---------------------------------------
1753
1754 // 20.2.1 Value Properties of the Math Object
1755 // 20.2.1.1 Math.E
1756 // 20.2.1.2 Math.LN10
1757 // 20.2.1.3 Math.LN2
1758 // 20.2.1.4 Math.LOG10E
1759 // 20.2.1.5 Math.LOG2E
1760 // 20.2.1.6 Math.PI
1761 // 20.2.1.7 Math.SQRT1_2
1762 // 20.2.1.8 Math.SQRT2
1763
1764 // 20.2.1.9 Math [ @@toStringTag ]
1765 define(Math, $$toStringTag, 'Math');
1766
1767 // 20.2.2 Function Properties of the Math Object
1768 // 20.2.2.1 Math.abs ( x )
1769 // 20.2.2.2 Math.acos ( x )
1770
1771 // 20.2.2.3 Math.acosh(x)
1772 define(
1773 Math, 'acosh',
1774 function acosh(x) {
1775 x = Number(x);
1776 return log(x + sqrt(x * x - 1));
1777 });
1778
1779 // 20.2.2.4 Math.asin ( x )
1780
1781 // 20.2.2.5 Math.asinh( x )
1782 define(
1783 Math, 'asinh',
1784 function asinh(x) {
1785 x = Number(x);
1786 if (SameValue(x, -0)) {
1787 return x;
1788 }
1789 var s = sqrt(x * x + 1);
1790 return (s === -x) ? log(0) : log(x + s);
1791 });
1792
1793 // 20.2.2.6 Math.atan ( x )
1794
1795 // 20.2.2.7 Math.atanh( x )
1796 define(
1797 Math, 'atanh',
1798 function atanh(x) {
1799 x = Number(x);
1800 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1801 });
1802
1803 // 20.2.2.8 Math.atan2 ( y, x )
1804
1805 // 20.2.2.9 Math.cbrt ( x )
1806 define(
1807 Math, 'cbrt',
1808 function cbrt(x) {
1809 x = Number(x);
1810 if ($isNaN(x/x)) {
1811 return x;
1812 }
1813 var r = pow(abs(x), 1/3);
1814 var t = x/r/r;
1815 return r + (r * (t-r) / (2*r + t));
1816 });
1817
1818 // 20.2.2.10 Math.ceil ( x )
1819
1820 // 20.2.2.11 Math.clz32 ( x )
1821 define(
1822 Math, 'clz32',
1823 function clz32(x) {
1824 function clz8(x) {
1825 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1826 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1827 }
1828 x = ToUint32(x);
1829 return x & 0xff000000 ? clz8(x >> 24) :
1830 x & 0xff0000 ? clz8(x >> 16) + 8 :
1831 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1832 });
1833
1834
1835
1836 // 20.2.2.12 Math.cos ( x )
1837
1838 // 20.2.2.13 Math.cosh ( x )
1839 define(
1840 Math, 'cosh',
1841 function cosh(x) {
1842 x = Number(x);
1843 return (pow(E, x) + pow(E, -x)) / 2;
1844 });
1845
1846 // 20.2.2.14 Math.exp ( x )
1847
1848 // 20.2.2.15 Math.expm1 ( x )
1849 define(
1850 Math, 'expm1',
1851 function expm1(x) {
1852 x = Number(x);
1853 // from: http://www.johndcook.com/cpp_log1p.html
1854 if (SameValue(x, -0)) {
1855 return -0;
1856 } else if (abs(x) < 1e-5) {
1857 return x + 0.5 * x * x; // two terms of Taylor expansion
1858 } else {
1859 return exp(x) - 1;
1860 }
1861 });
1862
1863 // 20.2.2.16 Math.floor ( x )
1864
1865 // 20.2.2.17 Math.fround ( x )
1866 define(
1867 Math, 'fround',
1868 function fround(x) {
1869 if ($isNaN(x)) {
1870 return NaN;
1871 }
1872 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1873 return x;
1874 }
1875 return (new Float32Array([x]))[0];
1876 });
1877
1878 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1879 define(
1880 Math, 'hypot',
1881 function hypot() {
1882 var values = [];
1883 var m = 0, sawNaN = false;
1884 for (var i = 0; i < arguments.length; ++i) {
1885 var n = abs(Number(arguments[i]));
1886 if (n === Infinity) return n;
1887 if (n !== n) sawNaN = true;
1888 if (n > m) m = n;
1889 values[i] = n;
1890 }
1891 if (sawNaN) return NaN;
1892 if (m === 0) return +0;
1893 var sum = +0;
1894 for (i = 0; i < values.length; ++i) {
1895 var r = values[i] / m;
1896 sum = sum + r * r;
1897 }
1898 return m * sqrt(sum);
1899 });
1900
1901 // 20.2.2.19 Math.imul ( x, y )
1902 define(
1903 Math, 'imul',
1904 function imul(x, y) {
1905 var a = ToUint32(x);
1906 var b = ToUint32(y);
1907 // (slow but accurate)
1908 var ah = (a >>> 16) & 0xffff;
1909 var al = a & 0xffff;
1910 var bh = (b >>> 16) & 0xffff;
1911 var bl = b & 0xffff;
1912 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1913 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1914 );
1915
1916 // 20.2.2.20 Math.log ( x )
1917
1918 // 20.2.2.21 Math.log1p ( x )
1919 define(
1920 Math, 'log1p',
1921 function log1p(x) {
1922 x = Number(x);
1923 // from: http://www.johndcook.com/cpp_expm1.html
1924 if (x < -1) {
1925 return NaN;
1926 } else if (SameValue(x, -0)) {
1927 return -0;
1928 } else if (abs(x) > 1e-4) {
1929 return log(1 + x);
1930 } else {
1931 return (-0.5 * x + 1) * x;
1932 }
1933 });
1934
1935 // 20.2.2.22 Math.log10 ( x )
1936 define(
1937 Math, 'log10',
1938 function log10(x) {
1939 x = Number(x);
1940 return log(x) * LOG10E;
1941 });
1942
1943 // 20.2.2.23 Math.log2 ( x )
1944 define(
1945 Math, 'log2',
1946 function log2(x) {
1947 x = Number(x);
1948 return log(x) * LOG2E;
1949 });
1950
1951 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1952 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1953 // 20.2.2.26 Math.pow ( x, y )
1954 // 20.2.2.27 Math.random ( )
1955 // 20.2.2.28 Math.round ( x )
1956
1957 // 20.2.2.29 Math.sign(x)
1958 define(
1959 Math, 'sign',
1960 function sign(x) {
1961 x = Number(x);
1962 return x < 0 ? -1 : x > 0 ? 1 : x;
1963 });
1964
1965 // 20.2.2.30 Math.sin ( x )
1966
1967 // 20.2.2.31 Math.sinh( x )
1968 define(
1969 Math, 'sinh',
1970 function sinh(x) {
1971 x = Number(x);
1972 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1973 });
1974
1975 // 20.2.2.32 Math.sqrt ( x )
1976 // 20.2.2.33 Math.tan ( x )
1977
1978 // 20.2.2.34 Math.tanh ( x )
1979 define(
1980 Math, 'tanh',
1981 function tanh(x) {
1982 x = Number(x);
1983 var n = pow(E, 2 * x) - 1,
1984 d = pow(E, 2 * x) + 1;
1985 if (SameValue(x, -0))
1986 return x;
1987 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1988 });
1989
1990 // 20.2.2.35 Math.trunc ( x )
1991 define(
1992 Math, 'trunc',
1993 function trunc(x) {
1994 x = Number(x);
1995 return $isNaN(x) ? NaN :
1996 x < 0 ? ceil(x) : floor(x);
1997 });
1998
1999 // ---------------------------------------
2000 // 20.3 Date Objects
2001 // ---------------------------------------
2002
2003 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2004 // 20.3.1.1 Time Values and Time Range
2005 // 20.3.1.2 Day Number and Time within Day
2006 // 20.3.1.3 Year Number
2007 // 20.3.1.4 Month Number
2008 // 20.3.1.5 Date Number
2009 // 20.3.1.6 Week Day
2010 // 20.3.1.7 Local Time Zone Adjustment
2011 // 20.3.1.8 Daylight Saving Time Adjustment
2012 // 20.3.1.9 Local Time
2013 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
2014 // 20.3.1.11 MakeTime (hour, min, sec, ms)
2015 // 20.3.1.12 MakeDay (year, month, date)
2016 // 20.3.1.13 MakeDate (day, time)
2017 // 20.3.1.14 TimeClip (time)
2018 // 20.3.1.15 Date Time String Format
2019 // 20.3.1.15.1 Extended years
2020 // 20.3.2 The Date Constructor
2021 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2022 // 20.3.2.2 Date ( value )
2023 // 20.3.2.3 Date ( )
2024 // 20.3.3 Properties of the Date Constructor
2025 // 20.3.3.1 Date.now ( )
2026 // 20.3.3.2 Date.parse (string)
2027 // 20.3.3.3 Date.prototype
2028 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2029 // 20.3.4 Properties of the Date Prototype Object
2030 // 20.3.4.1 Date.prototype.constructor
2031 // 20.3.4.2 Date.prototype.getDate ( )
2032 // 20.3.4.3 Date.prototype.getDay ( )
2033 // 20.3.4.4 Date.prototype.getFullYear ( )
2034 // 20.3.4.5 Date.prototype.getHours ( )
2035 // 20.3.4.6 Date.prototype.getMilliseconds ( )
2036 // 20.3.4.7 Date.prototype.getMinutes ( )
2037 // 20.3.4.8 Date.prototype.getMonth ( )
2038 // 20.3.4.9 Date.prototype.getSeconds ( )
2039 // 20.3.4.10 Date.prototype.getTime ( )
2040 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
2041 // 20.3.4.12 Date.prototype.getUTCDate ( )
2042 // 20.3.4.13 Date.prototype.getUTCDay ( )
2043 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
2044 // 20.3.4.15 Date.prototype.getUTCHours ( )
2045 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2046 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
2047 // 20.3.4.18 Date.prototype.getUTCMonth ( )
2048 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
2049 // 20.3.4.20 Date.prototype.setDate ( date )
2050 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2051 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2052 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
2053 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2054 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2055 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2056 // 20.3.4.27 Date.prototype.setTime ( time )
2057 // 20.3.4.28 Date.prototype.setUTCDate ( date )
2058 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2059 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2060 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2061 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2062 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2063 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2064 // 20.3.4.35 Date.prototype.toDateString ( )
2065 // 20.3.4.36 Date.prototype.toISOString ( )
2066 // 20.3.4.37 Date.prototype.toJSON ( key )
2067 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2068 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2069 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2070 // 20.3.4.41 Date.prototype.toString ( )
2071 // 20.3.4.42 Date.prototype.toTimeString ( )
2072 // 20.3.4.43 Date.prototype.toUTCString ( )
2073 // 20.3.4.44 Date.prototype.valueOf ( )
2074 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2075 // 20.3.5 Properties of Date Instances
2076
2077 // (No polyfillable changes from ES5)
2078
2079 // ---------------------------------------
2080 // 21 Text Processing
2081 // ---------------------------------------
2082
2083 var string_regexp_dispatch = (function() {
2084 var faux = {}, secret = Symbol();
2085 faux[Symbol.match] = function() { return secret; };
2086 return ("").match(faux) === secret;
2087 }());
2088
2089 // 21.1 String Objects
2090 // 21.1.1 The String Constructor
2091 // 21.1.1.1 String ( value )
2092 // 21.1.2 Properties of the String Constructor
2093 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2094
2095 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2096 define(
2097 String, 'fromCodePoint',
2098 function fromCodePoint(/*...codePoints*/) {
2099 var codePoints = arguments,
2100 length = codePoints.length,
2101 elements = [],
2102 nextIndex = 0;
2103 while (nextIndex < length) {
2104 var next = codePoints[nextIndex];
2105 var nextCP = Number(next);
2106 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2107 nextCP < 0 || nextCP > 0x10FFFF) {
2108 throw RangeError('Invalid code point ' + nextCP);
2109 }
2110 if (nextCP < 0x10000) {
2111 elements.push(String.fromCharCode(nextCP));
2112 } else {
2113 nextCP -= 0x10000;
2114 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2115 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2116 }
2117 nextIndex += 1;
2118 }
2119 return elements.join('');
2120 });
2121
2122 // 21.1.2.3 String.prototype
2123
2124 // 21.1.2.4 String.raw ( template , ...substitutions )
2125 define(
2126 String, 'raw',
2127 function raw(template /*, ...substitutions*/) {
2128 var substitutions = [].slice.call(arguments, 1);
2129
2130 var cooked = Object(template);
2131 var rawValue = cooked['raw'];
2132 var raw = Object(rawValue);
2133 var len = raw['length'];
2134 var literalSegments = ToLength(len);
2135 if (literalSegments <= 0) return '';
2136 var stringElements = [];
2137 var nextIndex = 0;
2138 while (true) {
2139 var next = raw[nextIndex];
2140 var nextSeg = String(next);
2141 stringElements.push(nextSeg);
2142 if (nextIndex + 1 === literalSegments)
2143 return stringElements.join('');
2144 next = substitutions[nextIndex];
2145 var nextSub = String(next);
2146 stringElements.push(nextSub);
2147 nextIndex = nextIndex + 1;
2148 }
2149 });
2150
2151 // See https://githib.com/inexorabletash/uate for a more useful version.
2152
2153 // 21.1.3 Properties of the String Prototype Object
2154 // 21.1.3.1 String.prototype.charAt ( pos )
2155 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2156
2157 // 21.1.3.3 String.prototype.codePointAt ( pos )
2158 define(
2159 String.prototype, 'codePointAt',
2160 function codePointAt(pos) {
2161 var o = strict(this);
2162 var s = String(o);
2163 var position = ToInteger(pos);
2164 var size = s.length;
2165 if (position < 0 || position >= size) return undefined;
2166 var first = s.charCodeAt(position);
2167 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2168 var second = s.charCodeAt(position + 1);
2169 if (second < 0xDC00 || second > 0xDFFF) return first;
2170 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2171 });
2172
2173 // 21.1.3.4 String.prototype.concat ( ...args )
2174 // 21.1.3.5 String.prototype.constructor
2175
2176 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2177 define(
2178 String.prototype, 'endsWith',
2179 function endsWith(searchString) {
2180 var endPosition = arguments[1];
2181
2182 var o = strict(this);
2183 var s = String(o);
2184 var searchStr = String(searchString);
2185 var len = s.length;
2186 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2187 var end = min(max(pos, 0), len);
2188 var searchLength = searchStr.length;
2189 var start = end - searchLength;
2190 if (start < 0) return false;
2191 if (s.substring(start, start + searchLength) === searchStr) return true;
2192 return false;
2193 });
2194
2195 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2196 define(
2197 String.prototype, 'includes',
2198 function includes(searchString) {
2199 var position = arguments[1];
2200
2201 var o = strict(this);
2202 var s = String(o);
2203 var searchStr = String(searchString);
2204 var pos = ToInteger(position);
2205 var len = s.length;
2206 var start = min(max(pos, 0), len);
2207 return s.indexOf(searchStr, start) !== -1;
2208 });
2209
2210 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2211 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2212 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2213 // 21.1.3.11 String.prototype.match ( regexp )
2214 define(
2215 String.prototype, 'match',
2216 function match(regexp) {
2217 var o = strict(this);
2218 var s = String(o);
2219 if (HasProperty(regexp, $$match)) var rx = regexp;
2220 else rx = new RegExp(regexp);
2221 return rx[$$match](s);
2222 }, !string_regexp_dispatch);
2223
2224 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2225
2226 // Not practical due to table sizes; if needed, pull in:
2227 // https://github.com/walling/unorm/
2228
2229 // 21.1.3.13 String.prototype.repeat ( count )
2230 define(
2231 String.prototype, 'repeat',
2232 function repeat(count) {
2233 var o = strict(this);
2234 var s = String(o);
2235 var n = ToInteger(count);
2236 if (n < 0) throw RangeError();
2237 if (n === Infinity) throw RangeError();
2238 var t = new Array(n + 1).join(s);
2239 return t;
2240 });
2241
2242 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2243 define(
2244 String.prototype, 'replace',
2245 function replace(searchValue, replaceValue) {
2246 var o = strict(this);
2247 if (HasProperty(searchValue, $$replace))
2248 return searchValue[$$replace](o, replaceValue);
2249 return orig_replace.call(o, searchValue, replaceValue);
2250 }, !string_regexp_dispatch);
2251
2252 // 21.1.3.15 String.prototype.search ( regexp )
2253 define(
2254 String.prototype, 'search',
2255 function search(regexp) {
2256 var o = strict(this);
2257 var string = String(o);
2258 if (HasProperty(regexp, $$search)) var rx = regexp;
2259 else rx = new RegExp(regexp);
2260 return rx[$$search](string);
2261 }, !string_regexp_dispatch);
2262
2263 // 21.1.3.16 String.prototype.slice ( start, end )
2264 // 21.1.3.17 String.prototype.split ( separator, limit )
2265 define(
2266 String.prototype, 'split',
2267 function split(separator, limit) {
2268 var o = strict(this);
2269 if (HasProperty(separator, $$split))
2270 return separator[$$split](o, limit);
2271 return orig_split.call(o, separator, limit);
2272 }, !string_regexp_dispatch);
2273
2274 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2275 define(
2276 String.prototype, 'startsWith',
2277 function startsWith(searchString) {
2278 var position = arguments[1];
2279
2280 var o = strict(this);
2281 var s = String(o);
2282 var searchStr = String(searchString);
2283 var pos = ToInteger(position);
2284 var len = s.length;
2285 var start = min(max(pos, 0), len);
2286 var searchLength = searchStr.length;
2287 if (searchLength + start > len) return false;
2288 if (s.substring(start, start + searchLength) === searchStr) return true;
2289 return false;
2290 });
2291
2292 // 21.1.3.19 String.prototype.substring ( start, end )
2293 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2294 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2295 // 21.1.3.22 String.prototype.toLowerCase ( )
2296 // 21.1.3.23 String.prototype.toString ( )
2297 // 21.1.3.24 String.prototype.toUpperCase ( )
2298 // 21.1.3.25 String.prototype.trim ( )
2299 // 21.1.3.26 String.prototype.valueOf ( )
2300
2301 // 21.1.3.27 String.prototype [ @@iterator ]( )
2302 define(
2303 String.prototype, $$iterator,
2304 function entries() {
2305 return CreateStringIterator(this, 'value');
2306 });
2307
2308 // 21.1.4 Properties of String Instances
2309 // 21.1.4.1 length
2310
2311 // 21.1.5 String Iterator Objects
2312 /** @constructor */
2313 function StringIterator() {}
2314
2315 // 21.1.5.1 CreateStringIterator Abstract Operation
2316 function CreateStringIterator(string, kind) {
2317 var s = String(string);
2318 var iterator = new StringIterator;
2319 set_internal(iterator, '[[IteratedString]]', s);
2320 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2321 set_internal(iterator, '[[StringIterationKind]]', kind);
2322 return iterator;
2323 }
2324
2325 // 21.1.5.2 The %StringIteratorPrototype% Object
2326 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2327 StringIterator.prototype = $StringIteratorPrototype$;
2328
2329 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2330 define(
2331 $StringIteratorPrototype$, 'next',
2332 function next() {
2333 var o = ToObject(this);
2334 var s = String(o['[[IteratedString]]']),
2335 index = o['[[StringIteratorNextIndex]]'],
2336 len = s.length;
2337 if (index >= len) {
2338 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2339 return CreateIterResultObject(undefined, true);
2340 }
2341 var cp = s.codePointAt(index);
2342 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2343 return CreateIterResultObject(String.fromCodePoint(cp), false);
2344 });
2345
2346 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2347 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2348
2349 // 21.1.5.3 Properties of String Iterator Instances
2350
2351 // ---------------------------------------
2352 // 21.2 RegExp (Regular Expression) Objects
2353 // ---------------------------------------
2354
2355 // 21.2.1 Patterns
2356 // 21.2.2 Pattern Semantics
2357 // 21.2.2.1 Notation
2358 // 21.2.2.2 Pattern
2359 // 21.2.2.3 Disjunction
2360 // 21.2.2.4 Alternative
2361 // 21.2.2.5 Term
2362 // 21.2.2.6 Assertion
2363 // 21.2.2.7 Quantifier
2364 // 21.2.2.8 Atom
2365 // 21.2.2.9 AtomEscape
2366 // 21.2.2.10 CharacterEscape
2367 // 21.2.2.11 DecimalEscape
2368 // 21.2.2.12 CharacterClassEscape
2369 // 21.2.2.13 CharacterClass
2370 // 21.2.2.14 ClassRanges
2371 // 21.2.2.15 NonemptyClassRanges
2372 // 21.2.2.16 NonemptyClassRangesNoDash
2373 // 21.2.2.17 ClassAtom
2374 // 21.2.2.18 ClassAtomNoDash
2375 // 21.2.2.19 ClassEscape
2376 // 21.2.3 The RegExp Constructor
2377 // 21.2.3.1 RegExp ( pattern, flags )
2378 // 21.2.3.2 new RegExp( ...argumentsList )
2379 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2380 // 21.2.4 Properties of the RegExp Constructor
2381 // 21.2.4.1 RegExp.prototype
2382 // 21.2.5 Properties of the RegExp Prototype Object
2383 // 21.2.5.1 RegExp.prototype.constructor
2384 // 21.2.5.2 RegExp.prototype.exec ( string )
2385
2386 // 21.2.5.3 get RegExp.prototype.flags
2387 if (!('flags' in RegExp.prototype)) {
2388 Object.defineProperty(
2389 RegExp.prototype, 'flags', {
2390 get: function() {
2391 var s = String(this);
2392 return s.substring(s.lastIndexOf('/') + 1);
2393 }
2394 });
2395 }
2396
2397 // 21.2.5.4 get RegExp.prototype.global
2398 // 21.2.5.5 get RegExp.prototype.ignoreCase
2399
2400 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2401 define(RegExp.prototype, $$match, function(string) {
2402 var o = strict(this);
2403 return orig_match.call(string, o);
2404 });
2405
2406 // 21.2.5.7 get RegExp.prototype.multiline
2407
2408 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2409 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2410 var o = strict(this);
2411 return orig_replace.call(string, o, replaceValue);
2412 });
2413
2414 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2415 define(RegExp.prototype, $$search, function(string) {
2416 var o = strict(this);
2417 return orig_search.call(string, o);
2418 });
2419
2420 // 21.2.5.10 get RegExp.prototype.source
2421
2422 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2423 define(RegExp.prototype, $$split, function(string, limit) {
2424 var o = strict(this);
2425 return orig_split.call(string, o, limit);
2426 });
2427
2428 // 21.2.5.12 get RegExp.prototype.sticky
2429 // 21.2.5.13 RegExp.prototype.test( S )
2430 // 21.2.5.14 RegExp.prototype.toString ( )
2431 // 21.2.5.15 get RegExp.prototype.unicode
2432
2433 // 21.2.6 Properties of RegExp Instances
2434 // 21.2.6.1 lastIndex
2435
2436 // (No polyfillable changes from ES5)
2437
2438 // ---------------------------------------
2439 // 22 Indexed Collections
2440 // ---------------------------------------
2441
2442 // ---------------------------------------
2443 // 22.1 Array Objects
2444 // ---------------------------------------
2445
2446 // 22.1.1 The Array Constructor
2447 // 22.1.1.1 Array ( )
2448 // 22.1.1.2 Array (len)
2449 // 22.1.1.3 Array (...items )
2450
2451 // 22.1.2 Properties of the Array Constructor
2452
2453 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2454 define(
2455 Array, 'from',
2456 function from(items) {
2457 var mapfn = arguments[1];
2458 var thisArg = arguments[2];
2459
2460 var c = strict(this);
2461 if (mapfn === undefined) {
2462 var mapping = false;
2463 } else {
2464 if (!IsCallable(mapfn)) throw TypeError();
2465 var t = thisArg;
2466 mapping = true;
2467 }
2468 var usingIterator = GetMethod(items, $$iterator);
2469 if (usingIterator !== undefined) {
2470 if (IsConstructor(c)) {
2471 var a = new c();
2472 } else {
2473 a = new Array(0);
2474 }
2475 var iterator = GetIterator(items, usingIterator);
2476 var k = 0;
2477 while (true) {
2478 var next = IteratorStep(iterator);
2479 if (next === false) {
2480 a.length = k;
2481 return a;
2482 }
2483 var nextValue = IteratorValue(next);
2484 if (mapping)
2485 var mappedValue = mapfn.call(t, nextValue);
2486 else
2487 mappedValue = nextValue;
2488 a[k] = mappedValue;
2489 k += 1;
2490 }
2491 }
2492 var arrayLike = ToObject(items);
2493 var lenValue = arrayLike.length;
2494 var len = ToLength(lenValue);
2495 if (IsConstructor(c)) {
2496 a = new c(len);
2497 } else {
2498 a = new Array(len);
2499 }
2500 k = 0;
2501 while (k < len) {
2502 var kValue = arrayLike[k];
2503 if (mapping)
2504 mappedValue = mapfn.call(t, kValue, k);
2505 else
2506 mappedValue = kValue;
2507 a[k] = mappedValue;
2508 k += 1;
2509 }
2510 a.length = len;
2511 return a;
2512 });
2513
2514 // 22.1.2.2 Array.isArray ( arg )
2515
2516 // 22.1.2.3 Array.of ( ...items )
2517 define(
2518 Array, 'of',
2519 function of() {
2520 var items = arguments;
2521
2522 var lenValue = items.length;
2523 var len = ToUint32(lenValue);
2524 var c = strict(this), a;
2525 if (IsConstructor(c)) {
2526 a = new c(len);
2527 a = ToObject(a);
2528 } else {
2529 a = new Array(len);
2530 }
2531 var k = 0;
2532 while (k < len) {
2533 a[k] = items[k];
2534 k += 1;
2535 }
2536 a.length = len;
2537 return a;
2538 });
2539
2540 // 22.1.2.4 Array.prototype
2541 // 22.1.2.5 get Array [ @@species ]
2542 // 22.1.3 Properties of the Array Prototype Object
2543 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2544 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2545 // 22.1.3.2 Array.prototype.constructor
2546 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2547 define(
2548 Array.prototype, 'copyWithin',
2549 function copyWithin(target, start/*, end*/) {
2550 var end = arguments[2];
2551
2552 var o = ToObject(this);
2553 var lenVal = o.length;
2554 var len = ToLength(lenVal);
2555 len = max(len, 0);
2556 var relativeTarget = ToInteger(target);
2557 var to;
2558 if (relativeTarget < 0)
2559 to = max(len + relativeTarget, 0);
2560 else
2561 to = min(relativeTarget, len);
2562 var relativeStart = ToInteger(start);
2563 var from;
2564 if (relativeStart < 0)
2565 from = max(len + relativeStart, 0);
2566 else
2567 from = min(relativeStart, len);
2568 var relativeEnd;
2569 if (end === undefined)
2570 relativeEnd = len;
2571 else
2572 relativeEnd = ToInteger(end);
2573 var final;
2574 if (relativeEnd < 0)
2575 final = max(len + relativeEnd, 0);
2576 else
2577 final = min(relativeEnd, len);
2578 var count = min(final - from, len - to);
2579 var direction;
2580 if (from < to && to < from + count) {
2581 direction = -1;
2582 from = from + count - 1;
2583 to = to + count - 1;
2584 } else {
2585 direction = 1;
2586 }
2587 while (count > 0) {
2588 var fromKey = String(from);
2589 var toKey = String(to);
2590 var fromPresent = HasProperty(o, fromKey);
2591 if (fromPresent) {
2592 var fromVal = o[fromKey];
2593 o[toKey] = fromVal;
2594 } else {
2595 delete o[toKey];
2596 }
2597 from = from + direction;
2598 to = to + direction;
2599 count = count - 1;
2600 }
2601 return o;
2602 });
2603
2604 // 22.1.3.4 Array.prototype.entries ( )
2605 var nativeArrayIteratorMethods =
2606 ('entries' in Array.prototype && 'next' in [].entries());
2607
2608 define(
2609 Array.prototype, 'entries',
2610 function entries() {
2611 return CreateArrayIterator(this, 'key+value');
2612 }, !nativeArrayIteratorMethods);
2613
2614 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2615
2616 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2617 define(
2618 Array.prototype, 'fill',
2619 function fill(value/*, start, end*/) {
2620 var start = arguments[1],
2621 end = arguments[2];
2622
2623 var o = ToObject(this);
2624 var lenVal = o.length;
2625 var len = ToLength(lenVal);
2626 len = max(len, 0);
2627 var relativeStart = ToInteger(start);
2628 var k;
2629 if (relativeStart < 0)
2630 k = max((len + relativeStart), 0);
2631 else
2632 k = min(relativeStart, len);
2633 var relativeEnd;
2634 if (end === undefined)
2635 relativeEnd = len;
2636 else
2637 relativeEnd = ToInteger(end);
2638 var final;
2639 if (relativeEnd < 0)
2640 final = max((len + relativeEnd), 0);
2641 else
2642 final = min(relativeEnd, len);
2643 while (k < final) {
2644 var pk = String(k);
2645 o[pk] = value;
2646 k += 1;
2647 }
2648 return o;
2649 });
2650
2651 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2652
2653 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2654 define(
2655 Array.prototype, 'find',
2656 function find(predicate) {
2657 var o = ToObject(this);
2658 var lenValue = o.length;
2659 var len = ToInteger(lenValue);
2660 if (!IsCallable(predicate)) throw TypeError();
2661 var t = arguments.length > 1 ? arguments[1] : undefined;
2662 var k = 0;
2663 while (k < len) {
2664 var pk = String(k);
2665 var kPresent = HasProperty(o, pk);
2666 if (kPresent) {
2667 var kValue = o[pk];
2668 var testResult = predicate.call(t, kValue, k, o);
2669 if (Boolean(testResult)) {
2670 return kValue;
2671 }
2672 }
2673 ++k;
2674 }
2675 return undefined;
2676 });
2677
2678 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2679 define(
2680 Array.prototype, 'findIndex',
2681 function findIndex(predicate) {
2682 var o = ToObject(this);
2683 var lenValue = o.length;
2684 var len = ToLength(lenValue);
2685 if (!IsCallable(predicate)) throw TypeError();
2686 var t = arguments.length > 1 ? arguments[1] : undefined;
2687 var k = 0;
2688 while (k < len) {
2689 var pk = String(k);
2690 var kPresent = HasProperty(o, pk);
2691 if (kPresent) {
2692 var kValue = o[pk];
2693 var testResult = predicate.call(t, kValue, k, o);
2694 if (Boolean(testResult)) {
2695 return k;
2696 }
2697 }
2698 ++k;
2699 }
2700 return -1;
2701 });
2702
2703 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2704 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2705 // 22.1.3.12 Array.prototype.join (separator)
2706
2707 // 22.1.3.13 Array.prototype.keys ( )
2708 define(
2709 Array.prototype, 'keys',
2710 function keys() {
2711 return CreateArrayIterator(this, 'key');
2712 }, !nativeArrayIteratorMethods);
2713
2714 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2715 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2716 // 22.1.3.16 Array.prototype.pop ( )
2717 // 22.1.3.17 Array.prototype.push ( ...items )
2718 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2719 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2720 // 22.1.3.20 Array.prototype.reverse ( )
2721 // 22.1.3.21 Array.prototype.shift ( )
2722 // 22.1.3.22 Array.prototype.slice (start, end)
2723 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2724 // 22.1.3.24 Array.prototype.sort (comparefn)
2725 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2726 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2727 // 22.1.3.27 Array.prototype.toString ( )
2728 // 22.1.3.28 Array.prototype.unshift ( ...items )
2729
2730 // 22.1.3.29 Array.prototype.values ( )
2731 define(
2732 Array.prototype, 'values',
2733 function values() {
2734 return CreateArrayIterator(this, 'value');
2735 }, !nativeArrayIteratorMethods);
2736
2737 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2738 define(
2739 Array.prototype, $$iterator,
2740 Array.prototype.values
2741 );
2742
2743 // 22.1.3.31 Array.prototype [ @@unscopables ]
2744 // 22.1.4 Properties of Array Instances
2745 // 22.1.4.1 length
2746
2747 // 22.1.5 Array Iterator Objects
2748 function ArrayIterator() {}
2749
2750 // 22.1.5.1 CreateArrayIterator Abstract Operation
2751 function CreateArrayIterator(array, kind) {
2752 var o = ToObject(array);
2753 var iterator = new ArrayIterator;
2754 set_internal(iterator, '[[IteratedObject]]', o);
2755 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2756 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2757 return iterator;
2758 }
2759
2760 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2761 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2762 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2763
2764 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2765 define(
2766 $ArrayIteratorPrototype$, 'next',
2767 function next() {
2768 var o = strict(this);
2769 if (Type(o) !== 'object') throw TypeError();
2770 var a = o['[[IteratedObject]]'],
2771 index = o['[[ArrayIteratorNextIndex]]'],
2772 itemKind = o['[[ArrayIterationKind]]'],
2773 lenValue = a.length,
2774 len = ToUint32(lenValue),
2775 elementKey,
2776 elementValue;
2777 if (itemKind.indexOf('sparse') !== -1) {
2778 var found = false;
2779 while (!found && index < len) {
2780 elementKey = String(index);
2781 found = HasProperty(a, elementKey);
2782 if (!found) {
2783 index += 1;
2784 }
2785 }
2786 }
2787 if (index >= len) {
2788 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2789 return CreateIterResultObject(undefined, true);
2790 }
2791 elementKey = index;
2792 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2793 if (itemKind.indexOf('value') !== -1)
2794 elementValue = a[elementKey];
2795 if (itemKind.indexOf('key+value') !== -1)
2796 return CreateIterResultObject([elementKey, elementValue], false);
2797 if (itemKind.indexOf('key') !== -1)
2798 return CreateIterResultObject(elementKey, false);
2799 if (itemKind === 'value')
2800 return CreateIterResultObject(elementValue, false);
2801 throw Error('Internal error');
2802 });
2803
2804 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2805 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2806
2807 // 22.1.5.3 Properties of Array Iterator Instances
2808
2809
2810 // ---------------------------------------
2811 // 22.2 TypedArray Objects
2812 // ---------------------------------------
2813
2814 // See typedarray.js for TypedArray polyfill
2815
2816 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2817 'Int16Array', 'Uint16Array',
2818 'Int32Array', 'Uint32Array',
2819 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2820 if (!($TypedArrayName$ in global))
2821 return;
2822 var $TypedArray$ = global[$TypedArrayName$];
2823
2824 // 22.2.1 The %TypedArray% Intrinsic Object
2825 // 22.2.1.1 %TypedArray% ( length )
2826 // 22.2.1.2 %TypedArray% ( typedArray )
2827 // 22.2.1.3 %TypedArray% ( object )
2828 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2829 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2830 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2831
2832 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2833 define(
2834 $TypedArray$, 'from',
2835 function from(source) {
2836 var mapfn = arguments[1];
2837 var thisArg = arguments[2];
2838
2839 var c = strict(this);
2840 if (!IsConstructor(c)) throw TypeError();
2841 if (mapfn === undefined) {
2842 var mapping = false;
2843 } else {
2844 if (IsCallable(mapfn)) throw TypeError();
2845 var t = thisArg;
2846 mapping = true;
2847 }
2848 var usingIterator = GetMethod(source, $$iterator);
2849 if (usingIterator !== undefined) {
2850 var iterator = GetIterator(source, usingIterator);
2851 var values = [];
2852 var next = true;
2853 while (next !== false) {
2854 next = IteratorStep(iterator);
2855 if (next !== false) {
2856 var nextValue = IteratorValue(next);
2857 values.push(nextValue);
2858 }
2859 }
2860 var len = values.length;
2861 var newObj = new c(len);
2862 var k = 0;
2863 while (k < len) {
2864 var kValue = values.shift();
2865 if (mapping) {
2866 var mappedValue = mapfn.call(t, kValue);
2867 } else {
2868 mappedValue = kValue;
2869 }
2870 newObj[k] = mappedValue;
2871 ++k;
2872 }
2873 console.assert(values.length === 0);
2874 return newObj;
2875 }
2876 var arrayLike = ToObject(source);
2877 var lenValue = arrayLike.length;
2878 len = ToLength(lenValue);
2879 newObj = new c(len);
2880 k = 0;
2881 while (k < len) {
2882 kValue = arrayLike[k];
2883 if (mapping) {
2884 mappedValue = mapfn.call(t, kValue, k);
2885 } else {
2886 mappedValue = kValue;
2887 }
2888 newObj[k] = mappedValue;
2889 ++k;
2890 }
2891 return newObj;
2892 });
2893
2894 // 22.2.2.2 %TypedArray%.of ( ...items )
2895 define(
2896 $TypedArray$, 'of',
2897 function of() {
2898 var items = arguments;
2899
2900 var len = items.length;
2901 var c = strict(this);
2902 var newObj = new c(len);
2903 var k = 0;
2904 while (k < len) {
2905 newObj[k] = items[k];
2906 ++k;
2907 }
2908 return newObj;
2909 });
2910
2911 // 22.2.2.3 %TypedArray%.prototype
2912 // 22.2.2.4 get %TypedArray% [ @@species ]
2913 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2914 // 22.2.3.1 get %TypedArray%.prototype.buffer
2915 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2916 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2917 // 22.2.3.4 %TypedArray%.prototype.constructor
2918
2919 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2920 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2921
2922 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2923 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2924
2925 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2926 define($TypedArray$.prototype, 'every', Array.prototype.every);
2927
2928 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2929 define(
2930 $TypedArray$.prototype, 'fill',
2931 //Array.prototype.fill // Doesn't work in Safari 7
2932 function fill(value/*, start, end*/) {
2933 var start = arguments[1],
2934 end = arguments[2];
2935
2936 var o = ToObject(this);
2937 var lenVal = o.length;
2938 var len = ToLength(lenVal);
2939 len = max(len, 0);
2940 var relativeStart = ToInteger(start);
2941 var k;
2942 if (relativeStart < 0) k = max((len + relativeStart), 0);
2943 else k = min(relativeStart, len);
2944 var relativeEnd;
2945 if (end === undefined) relativeEnd = len;
2946 else relativeEnd = ToInteger(end);
2947 var final;
2948 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2949 else final = min(relativeEnd, len);
2950 while (k < final) {
2951 var pk = String(k);
2952 o[pk] = value;
2953 k += 1;
2954 }
2955 return o;
2956 });
2957
2958 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2959 define(
2960 $TypedArray$.prototype, 'filter',
2961 function filter(callbackfn) {
2962 var thisArg = arguments[1];
2963
2964 var o = ToObject(this);
2965 var lenVal = o.length;
2966 var len = ToLength(lenVal);
2967 if (!IsCallable(callbackfn)) throw TypeError();
2968 var t = thisArg;
2969 var c = o.constructor;
2970 var kept = [];
2971 var k = 0;
2972 var captured = 0;
2973 while (k < len) {
2974 var kValue = o[k];
2975 var selected = callbackfn.call(t, kValue, k, o);
2976 if (selected) {
2977 kept.push(kValue);
2978 ++captured;
2979 }
2980 ++k;
2981 }
2982 var a = new c(captured);
2983 var n = 0;
2984 for (var i = 0; i < kept.length; ++i) {
2985 var e = kept[i];
2986 a[n] = e;
2987 ++n;
2988 }
2989 return a;
2990 });
2991
2992 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2993 define($TypedArray$.prototype, 'find', Array.prototype.find);
2994
2995 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2996 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2997
2998 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2999 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3000
3001 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3002 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3003
3004 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
3005 define($TypedArray$.prototype, 'join', Array.prototype.join);
3006
3007 // 22.2.3.15 %TypedArray%.prototype.keys ( )
3008 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3009
3010 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3011 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3012
3013 // 22.2.3.17 get %TypedArray%.prototype.length
3014
3015 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3016 define(
3017 $TypedArray$.prototype, 'map',
3018 function map(callbackfn) {
3019 var thisArg = arguments[1];
3020
3021 var o = ToObject(this);
3022 var lenValue = o.length;
3023 var len = ToLength(lenValue);
3024 if (!IsCallable(callbackfn)) throw TypeError();
3025 var t = thisArg;
3026 var a = undefined;
3027 var c = o.constructor;
3028 if (IsConstructor(c))
3029 a = new c(len);
3030 if (a === undefined)
3031 a = new Array(len);
3032 var k = 0;
3033 while (k < len) {
3034 var kPresent = HasProperty(o, k);
3035 if (kPresent) {
3036 var kValue = o[k];
3037 var mappedValue = callbackfn.call(t, kValue, k, o);
3038 a[k] = mappedValue;
3039 }
3040 ++k;
3041 }
3042 return a;
3043 });
3044
3045 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3046 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3047
3048 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3049 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3050
3051 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
3052 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3053
3054 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3055 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3056 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3057
3058 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3059 define(
3060 $TypedArray$.prototype, 'slice',
3061 function slice(start, end) {
3062 var o = ToObject(this);
3063 var lenVal = o.length;
3064 var len = ToLength(lenVal);
3065 var relativeStart = ToInteger(start);
3066 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
3067 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3068 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
3069 var count = final - k;
3070 var c = o.constructor;
3071 if (IsConstructor(c)) {
3072 var a = new c(count);
3073 } else {
3074 throw TypeError();
3075 }
3076 var n = 0;
3077 while (k < final) {
3078 var kValue = o[k];
3079 a[n] = kValue;
3080 ++k;
3081 ++n;
3082 }
3083 return a;
3084 });
3085
3086 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3087 define($TypedArray$.prototype, 'some', Array.prototype.some);
3088
3089 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3090 define(
3091 $TypedArray$.prototype, 'sort',
3092 function sort() {
3093 var comparefn = arguments[0];
3094
3095 function sortCompare(x, y) {
3096 console.assert(Type(x) === 'number' && Type(y) === 'number');
3097 if (x !== x && y !== y) return +0;
3098 if (x !== x) return 1;
3099 if (y !== y) return -1;
3100 if (comparefn !== undefined) {
3101 return comparefn(x, y);
3102 }
3103 if (x < y) return -1;
3104 if (x > y) return 1;
3105 return +0;
3106 }
3107 return Array.prototype.sort.call(this, sortCompare);
3108 });
3109
3110 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3111 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3112 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3113
3114 // 22.2.3.29 %TypedArray%.prototype.values ( )
3115 define($TypedArray$.prototype, 'values', Array.prototype.values);
3116
3117 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3118 define(
3119 $TypedArray$.prototype, $$iterator,
3120 $TypedArray$.prototype.values
3121 );
3122
3123 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3124 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3125
3126 // 22.2.4 The TypedArray Constructors
3127 // 22.2.4.1TypedArray( ... argumentsList)
3128 // 22.2.5 Properties of the TypedArray Constructors
3129 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3130 // 22.2.5.2 TypedArray.prototype
3131 // 22.2.6 Properties of TypedArray Prototype Objects
3132 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3133 // 22.2.6.2 TypedArray.prototype.constructor
3134 // 22.2.7 Properties of TypedArray Instances
3135 });
3136
3137 // ---------------------------------------
3138 // 23 Keyed Collection
3139 // ---------------------------------------
3140
3141 // ---------------------------------------
3142 // 23.1 Map Objects
3143 // ---------------------------------------
3144
3145 (function() {
3146 // 23.1.1 The Map Constructor
3147
3148 // 23.1.1.1 Map ( [ iterable ] )
3149 /** @constructor */
3150 function Map(/*iterable*/) {
3151 var map = strict(this);
3152 var iterable = arguments[0];
3153
3154 if (Type(map) !== 'object') throw TypeError();
3155 if ('[[MapData]]' in map) throw TypeError();
3156
3157 if (iterable !== undefined) {
3158 var adder = map['set'];
3159 if (!IsCallable(adder)) throw TypeError();
3160 var iter = GetIterator(ToObject(iterable));
3161 }
3162 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3163 if (iter === undefined) return map;
3164 while (true) {
3165 var next = IteratorStep(iter);
3166 if (next === false)
3167 return map;
3168 var nextItem = IteratorValue(next);
3169 if (Type(nextItem) !== 'object') throw TypeError();
3170 var k = nextItem[0];
3171 var v = nextItem[1];
3172 adder.call(map, k, v);
3173 }
3174
3175 return map;
3176 }
3177
3178 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3179 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3180 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3181 (new global.Map([['a', 1]]).size !== 1))
3182 global.Map = Map;
3183
3184
3185 function MapDataIndexOf(mapData, key) {
3186 var i;
3187 if (key === key) return mapData.keys.indexOf(key);
3188 // Slow case for NaN
3189 for (i = 0; i < mapData.keys.length; i += 1)
3190 if (SameValueZero(mapData.keys[i], key)) return i;
3191 return -1;
3192 }
3193
3194 // 23.1.1.2 new Map ( ... argumentsList )
3195 // 23.1.2 Properties of the Map Constructor
3196 // 23.1.2.1 Map.prototype
3197 var $MapPrototype$ = {};
3198 Map.prototype = $MapPrototype$;
3199
3200 // 23.1.2.2 get Map [ @@species ]
3201
3202 // 23.1.3 Properties of the Map Prototype Object
3203 // 23.1.3.1 Map.prototype.clear ()
3204 define(
3205 Map.prototype, 'clear',
3206 function clear() {
3207 var m = strict(this);
3208 if (Type(m) !== 'object') throw TypeError();
3209 if (!('[[MapData]]' in m)) throw TypeError();
3210 if (m['[[MapData]]'] === undefined) throw TypeError();
3211 var entries = m['[[MapData]]'];
3212 entries.keys.length = 0;
3213 entries.values.length = 0;
3214 return undefined;
3215 });
3216
3217 // 23.1.3.2 Map.prototype.constructor
3218
3219 // 23.1.3.3 Map.prototype.delete ( key )
3220 define(
3221 Map.prototype, 'delete',
3222 function delete_(key) {
3223 var m = strict(this);
3224 if (Type(m) !== 'object') throw TypeError();
3225 if (!('[[MapData]]' in m)) throw TypeError();
3226 if (m['[[MapData]]'] === undefined) throw TypeError();
3227 var entries = m['[[MapData]]'];
3228 var i = MapDataIndexOf(entries, key);
3229 if (i < 0) return false;
3230 entries.keys[i] = empty;
3231 entries.values[i] = empty;
3232 return true;
3233 });
3234
3235 // 23.1.3.4 Map.prototype.entries ( )
3236 define(
3237 Map.prototype, 'entries',
3238 function entries() {
3239 var m = strict(this);
3240 if (Type(m) !== 'object') throw TypeError();
3241 return CreateMapIterator(m, 'key+value');
3242 });
3243
3244 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3245 define(
3246 Map.prototype, 'forEach',
3247 function forEach(callbackfn /*, thisArg*/) {
3248 var thisArg = arguments[1];
3249
3250 var m = strict(this);
3251 if (Type(m) !== 'object') throw TypeError();
3252 if (!('[[MapData]]' in m)) throw TypeError();
3253 if (m['[[MapData]]'] === undefined) throw TypeError();
3254 var entries = m['[[MapData]]'];
3255
3256 if (!IsCallable(callbackfn)) {
3257 throw TypeError('First argument to forEach is not callable.');
3258 }
3259 for (var i = 0; i < entries.keys.length; ++i) {
3260 if (entries.keys[i] !== empty) {
3261 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3262 }
3263 }
3264 return undefined;
3265 });
3266
3267 // 23.1.3.6 Map.prototype.get ( key )
3268 define(
3269 Map.prototype, 'get',
3270 function get(key) {
3271 var m = strict(this);
3272 if (Type(m) !== 'object') throw TypeError();
3273 if (!('[[MapData]]' in m)) throw TypeError();
3274 if (m['[[MapData]]'] === undefined) throw TypeError();
3275 var entries = m['[[MapData]]'];
3276 var i = MapDataIndexOf(entries, key);
3277 if (i >= 0) return entries.values[i];
3278 return undefined;
3279 });
3280
3281 // 23.1.3.7 Map.prototype.has ( key )
3282 define(
3283 Map.prototype, 'has',
3284 function has(key) {
3285 var m = strict(this);
3286 if (Type(m) !== 'object') throw TypeError();
3287 if (!('[[MapData]]' in m)) throw TypeError();
3288 if (m['[[MapData]]'] === undefined) throw TypeError();
3289 var entries = m['[[MapData]]'];
3290 if (MapDataIndexOf(entries, key) >= 0) return true;
3291 return false;
3292 });
3293
3294 // 23.1.3.8 Map.prototype.keys ( )
3295 define(
3296 Map.prototype, 'keys',
3297 function keys() {
3298 var m = strict(this);
3299 if (Type(m) !== 'object') throw TypeError();
3300 return CreateMapIterator(m, 'key');
3301 });
3302
3303 // 23.1.3.9 Map.prototype.set ( key , value )
3304 define(
3305 Map.prototype, 'set',
3306 function set(key, value) {
3307 var m = strict(this);
3308 if (Type(m) !== 'object') throw TypeError();
3309 if (!('[[MapData]]' in m)) throw TypeError();
3310 if (m['[[MapData]]'] === undefined) throw TypeError();
3311 var entries = m['[[MapData]]'];
3312 var i = MapDataIndexOf(entries, key);
3313 if (i < 0) i = entries.keys.length;
3314 if (SameValue(key, -0)) key = 0;
3315 entries.keys[i] = key;
3316 entries.values[i] = value;
3317 return m;
3318 });
3319
3320 // 23.1.3.10 get Map.prototype.size
3321 Object.defineProperty(
3322 Map.prototype, 'size', {
3323 get: function() {
3324 var m = strict(this);
3325 if (Type(m) !== 'object') throw TypeError();
3326 if (!('[[MapData]]' in m)) throw TypeError();
3327 if (m['[[MapData]]'] === undefined) throw TypeError();
3328 var entries = m['[[MapData]]'];
3329 var count = 0;
3330 for (var i = 0; i < entries.keys.length; ++i) {
3331 if (entries.keys[i] !== empty)
3332 count = count + 1;
3333 }
3334 return count;
3335 }
3336 });
3337
3338 // 23.1.3.11 Map.prototype.values ( )
3339 define(
3340 Map.prototype, 'values',
3341 function values() {
3342 var m = strict(this);
3343 if (Type(m) !== 'object') throw TypeError();
3344 return CreateMapIterator(m, 'value');
3345 });
3346
3347 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3348 define(
3349 Map.prototype, $$iterator,
3350 function() {
3351 var m = strict(this);
3352 if (Type(m) !== 'object') throw TypeError();
3353 return CreateMapIterator(m, 'key+value');
3354 });
3355
3356 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3357 define(global.Map.prototype, $$toStringTag, 'Map');
3358
3359 // 23.1.4 Properties of Map Instances
3360 // 23.1.5 Map Iterator Objects
3361
3362 /** @constructor */
3363 function MapIterator() {}
3364
3365 // 23.1.5.1 CreateMapIterator Abstract Operation
3366 function CreateMapIterator(map, kind) {
3367 if (Type(map) !== 'object') throw TypeError();
3368 if (!('[[MapData]]' in map)) throw TypeError();
3369 if (map['[[MapData]]'] === undefined) throw TypeError();
3370 var iterator = new MapIterator;
3371 set_internal(iterator, '[[Map]]', map);
3372 set_internal(iterator, '[[MapNextIndex]]', 0);
3373 set_internal(iterator, '[[MapIterationKind]]', kind);
3374 return iterator;
3375 }
3376
3377 // 23.1.5.2 The %MapIteratorPrototype% Object
3378 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3379 MapIterator.prototype = $MapIteratorPrototype$;
3380
3381 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3382 define(
3383 $MapIteratorPrototype$, 'next',
3384 function next() {
3385 var o = strict(this);
3386 if (Type(o) !== 'object') throw TypeError();
3387 var m = o['[[Map]]'],
3388 index = o['[[MapNextIndex]]'],
3389 itemKind = o['[[MapIterationKind]]'],
3390 entries = m['[[MapData]]'];
3391 while (index < entries.keys.length) {
3392 var e = {key: entries.keys[index], value: entries.values[index]};
3393 index = index += 1;
3394 set_internal(o, '[[MapNextIndex]]', index);
3395 if (e.key !== empty) {
3396 if (itemKind === 'key') {
3397 return CreateIterResultObject(e.key, false);
3398 } else if (itemKind === 'value') {
3399 return CreateIterResultObject(e.value, false);
3400 } else {
3401 return CreateIterResultObject([e.key, e.value], false);
3402 }
3403 }
3404 }
3405 return CreateIterResultObject(undefined, true);
3406 });
3407
3408 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3409 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3410
3411 // 23.1.5.3 Properties of Map Iterator Instances
3412 }());
3413
3414 // ---------------------------------------
3415 // 23.2 Set Objects
3416 // ---------------------------------------
3417
3418 (function() {
3419 // 23.2.1 The Set Constructor
3420 // 23.2.1.1 Set ( [ iterable ] )
3421
3422 /** @constructor */
3423 function Set(/*iterable*/) {
3424 var set = strict(this);
3425 var iterable = arguments[0];
3426
3427 if (Type(set) !== 'object') throw TypeError();
3428 if ('[[SetData]]' in set) throw TypeError();
3429
3430 if (iterable !== undefined) {
3431 var adder = set['add'];
3432 if (!IsCallable(adder)) throw TypeError();
3433 var iter = GetIterator(ToObject(iterable));
3434 }
3435 set_internal(set, '[[SetData]]', []);
3436 if (iter === undefined) return set;
3437 while (true) {
3438 var next = IteratorStep(iter);
3439 if (next === false)
3440 return set;
3441 var nextValue = IteratorValue(next);
3442 adder.call(set, nextValue);
3443 }
3444
3445 return set;
3446 }
3447
3448 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3449 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3450 (new global.Set([1]).size !== 1))
3451 global.Set = Set;
3452
3453 function SetDataIndexOf(setData, key) {
3454 var i;
3455 if (key === key)
3456 return setData.indexOf(key);
3457 // Slow case for NaN
3458 for (i = 0; i < setData.length; i += 1)
3459 if (SameValueZero(setData[i], key)) return i;
3460 return -1;
3461 }
3462
3463 // 23.2.1.2 new Set ( ...argumentsList )
3464 // 23.2.2 Properties of the Set Constructor
3465
3466 // 23.2.2.1 Set.prototype
3467 var $SetPrototype$ = {};
3468 Set.prototype = $SetPrototype$;
3469
3470 // 23.2.2.2 get Set [ @@species ]
3471 // 23.2.3 Properties of the Set Prototype Object
3472
3473 // 23.2.3.1 Set.prototype.add (value )
3474 define(
3475 Set.prototype, 'add',
3476 function add(value) {
3477 var s = strict(this);
3478 if (Type(s) !== 'object') throw TypeError();
3479 if (!('[[SetData]]' in s)) throw TypeError();
3480 if (s['[[SetData]]'] === undefined) throw TypeError();
3481 if (SameValue(value, -0)) value = 0;
3482 var entries = s['[[SetData]]'];
3483 var i = SetDataIndexOf(entries, value);
3484 if (i < 0) i = s['[[SetData]]'].length;
3485 s['[[SetData]]'][i] = value;
3486
3487 return s;
3488 });
3489
3490 // 23.2.3.2 Set.prototype.clear ()
3491 define(
3492 Set.prototype, 'clear',
3493 function clear() {
3494 var s = strict(this);
3495 if (Type(s) !== 'object') throw TypeError();
3496 if (!('[[SetData]]' in s)) throw TypeError();
3497 if (s['[[SetData]]'] === undefined) throw TypeError();
3498 var entries = s['[[SetData]]'];
3499 entries.length = 0;
3500 return undefined;
3501 });
3502
3503 // 23.2.3.3 Set.prototype.constructor
3504 // 23.2.3.4 Set.prototype.delete ( value )
3505 define(
3506 Set.prototype, 'delete',
3507 function delete_(value) {
3508 var s = strict(this);
3509 if (Type(s) !== 'object') throw TypeError();
3510 if (!('[[SetData]]' in s)) throw TypeError();
3511 if (s['[[SetData]]'] === undefined) throw TypeError();
3512 var entries = s['[[SetData]]'];
3513 var i = SetDataIndexOf(entries, value);
3514 if (i < 0) return false;
3515 entries[i] = empty;
3516 return true;
3517 });
3518
3519 // 23.2.3.5 Set.prototype.entries ( )
3520 define(
3521 Set.prototype, 'entries',
3522 function entries() {
3523 var s = strict(this);
3524 if (Type(s) !== 'object') throw TypeError();
3525 return CreateSetIterator(s, 'key+value');
3526 });
3527
3528 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3529 define(
3530 Set.prototype, 'forEach',
3531 function forEach(callbackfn/*, thisArg*/) {
3532 var thisArg = arguments[1];
3533
3534 var s = strict(this);
3535 if (Type(s) !== 'object') throw TypeError();
3536 if (!('[[SetData]]' in s)) throw TypeError();
3537 if (s['[[SetData]]'] === undefined) throw TypeError();
3538 var entries = s['[[SetData]]'];
3539
3540 if (!IsCallable(callbackfn)) {
3541 throw TypeError('First argument to forEach is not callable.');
3542 }
3543 for (var i = 0; i < entries.length; ++i) {
3544 if (entries[i] !== empty) {
3545 callbackfn.call(thisArg, entries[i], entries[i], s);
3546 }
3547 }
3548 });
3549
3550 // 23.2.3.7 Set.prototype.has ( value )
3551 define(
3552 Set.prototype, 'has',
3553 function has(key) {
3554 var s = strict(this);
3555 if (Type(s) !== 'object') throw TypeError();
3556 if (!('[[SetData]]' in s)) throw TypeError();
3557 if (s['[[SetData]]'] === undefined) throw TypeError();
3558 var entries = s['[[SetData]]'];
3559 return SetDataIndexOf(entries, key) !== -1;
3560 });
3561
3562 // 23.2.3.8 Set.prototype.keys ( )
3563 // See Set.prototype.values
3564
3565 // 23.2.3.9 get Set.prototype.size
3566 Object.defineProperty(
3567 Set.prototype, 'size', {
3568 get: function() {
3569 var s = strict(this);
3570 if (Type(s) !== 'object') throw TypeError();
3571 if (!('[[SetData]]' in s)) throw TypeError();
3572 if (s['[[SetData]]'] === undefined) throw TypeError();
3573 var entries = s['[[SetData]]'];
3574 var count = 0;
3575 for (var i = 0; i < entries.length; ++i) {
3576 if (entries[i] !== empty)
3577 count = count + 1;
3578 }
3579 return count;
3580 }
3581 });
3582
3583 // 23.2.3.10 Set.prototype.values ( )
3584 define(
3585 Set.prototype, 'values',
3586 function values() {
3587 var s = strict(this);
3588 if (Type(s) !== 'object') throw TypeError();
3589 return CreateSetIterator(s, 'value');
3590 });
3591 // NOTE: function name is still 'values':
3592 Set.prototype.keys = Set.prototype.values;
3593
3594 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3595 define(
3596 Set.prototype, $$iterator,
3597 function() {
3598 var s = strict(this);
3599 if (Type(s) !== 'object') throw TypeError();
3600 return CreateSetIterator(s);
3601 });
3602
3603 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3604 define(global.Set.prototype, $$toStringTag, 'Set');
3605
3606 // 23.2.4 Properties of Set Instances
3607 // 23.2.5 Set Iterator Objects
3608 /** @constructor */
3609 function SetIterator() {}
3610
3611 // 23.2.5.1 CreateSetIterator Abstract Operation
3612 function CreateSetIterator(set, kind) {
3613 if (Type(set) !== 'object') throw TypeError();
3614 if (!('[[SetData]]' in set)) throw TypeError();
3615 if (set['[[SetData]]'] === undefined) throw TypeError();
3616 var iterator = new SetIterator;
3617 set_internal(iterator, '[[IteratedSet]]', set);
3618 set_internal(iterator, '[[SetNextIndex]]', 0);
3619 set_internal(iterator, '[[SetIterationKind]]', kind);
3620 return iterator;
3621 }
3622
3623 // 23.2.5.2 The %SetIteratorPrototype% Object
3624 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3625 SetIterator.prototype = $SetIteratorPrototype$;
3626
3627 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3628 define(
3629 $SetIteratorPrototype$, 'next',
3630 function next() {
3631 var o = strict(this);
3632 if (Type(o) !== 'object') throw TypeError();
3633 var s = o['[[IteratedSet]]'],
3634 index = o['[[SetNextIndex]]'],
3635 itemKind = o['[[SetIterationKind]]'],
3636 entries = s['[[SetData]]'];
3637 while (index < entries.length) {
3638 var e = entries[index];
3639 index = index += 1;
3640 set_internal(o, '[[SetNextIndex]]', index);
3641 if (e !== empty) {
3642 if (itemKind === 'key+value')
3643 return CreateIterResultObject([e, e], false);
3644 return CreateIterResultObject(e, false);
3645 }
3646 }
3647 return CreateIterResultObject(undefined, true);
3648 });
3649
3650 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3651 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3652
3653 // 23.2.5.3 Properties of Set Iterator Instances
3654
3655 }());
3656
3657 // ---------------------------------------
3658 // 23.3 WeakMap Objects
3659 // ---------------------------------------
3660
3661 (function() {
3662 // 23.3.1 The WeakMap Constructor
3663 // 23.3.1.1 WeakMap ( [ iterable ] )
3664 /** @constructor */
3665 function WeakMap(/*iterable*/) {
3666 var map = strict(this);
3667 var iterable = arguments[0];
3668
3669 if (Type(map) !== 'object') throw TypeError();
3670 if ('[[WeakMapData]]' in map) throw TypeError();
3671
3672 if (iterable !== undefined) {
3673 var adder = map['set'];
3674 if (!IsCallable(adder)) throw TypeError();
3675 var iter = GetIterator(ToObject(iterable));
3676 }
3677 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3678 if (iter === undefined) return map;
3679 while (true) {
3680 var next = IteratorStep(iter);
3681 if (next === false)
3682 return map;
3683 var nextValue = IteratorValue(next);
3684 if (Type(nextValue) !== 'object') throw TypeError();
3685 var k = nextValue[0];
3686 var v = nextValue[1];
3687 adder.call(map, k, v);
3688 }
3689
3690 return map;
3691 }
3692
3693 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3694 global.WeakMap = WeakMap;
3695
3696 // 23.3.2 Properties of the WeakMap Constructor
3697 // 23.3.2.1 WeakMap.prototype
3698 var $WeakMapPrototype$ = {};
3699 WeakMap.prototype = $WeakMapPrototype$;
3700
3701
3702
3703 // 23.3.2.2 WeakMap[ @@create ] ( )
3704 // 23.3.3 Properties of the WeakMap Prototype Object
3705
3706 // 23.3.3.1 WeakMap.prototype.constructor
3707
3708 // 23.3.3.2 WeakMap.prototype.delete ( key )
3709 define(
3710 WeakMap.prototype, 'delete',
3711 function delete_(key) {
3712 var M = strict(this);
3713 if (Type(M) !== 'object') throw TypeError();
3714 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3715 if (Type(key) !== 'object') throw TypeError('Expected object');
3716 return M['[[WeakMapData]]'].remove(key);
3717 });
3718
3719 // 23.3.3.3 WeakMap.prototype.get ( key )
3720 define(
3721 WeakMap.prototype, 'get',
3722 function get(key, defaultValue) {
3723 var M = strict(this);
3724 if (Type(M) !== 'object') throw TypeError();
3725 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3726 if (Type(key) !== 'object') throw TypeError('Expected object');
3727 return M['[[WeakMapData]]'].get(key, defaultValue);
3728 });
3729
3730 // 23.3.3.4 WeakMap.prototype.has ( key )
3731 define(
3732 WeakMap.prototype, 'has',
3733 function has(key) {
3734 var M = strict(this);
3735 if (Type(M) !== 'object') throw TypeError();
3736 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3737 if (Type(key) !== 'object') throw TypeError('Expected object');
3738 return M['[[WeakMapData]]'].has(key);
3739 });
3740
3741 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3742 define(
3743 WeakMap.prototype, 'set',
3744 function set(key, value) {
3745 var M = strict(this);
3746 if (Type(M) !== 'object') throw TypeError();
3747 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3748 if (Type(key) !== 'object') throw TypeError('Expected object');
3749 M['[[WeakMapData]]'].set(key, value);
3750 return M;
3751 });
3752
3753 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3754 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3755
3756 // 23.3.4 Properties of WeakMap Instances
3757
3758 // Polyfills for incomplete native implementations:
3759 (function() {
3760 var wm = new global.WeakMap();
3761 var orig = global.WeakMap.prototype.set;
3762 define(global.WeakMap.prototype, 'set', function set() {
3763 orig.apply(this, arguments);
3764 return this;
3765 }, wm.set({}, 0) !== wm);
3766 }());
3767 }());
3768
3769 // ---------------------------------------
3770 // 23.4 WeakSet Objects
3771 // ---------------------------------------
3772
3773 (function() {
3774 // 23.4.1 The WeakSet Constructor
3775 // 23.4.1.1 WeakSet ( [ iterable ] )
3776 /** @constructor */
3777 function WeakSet(/*iterable*/) {
3778 var set = strict(this);
3779 var iterable = arguments[0];
3780
3781 if (Type(set) !== 'object') throw TypeError();
3782 if ('[[WeakSetData]]' in set) throw TypeError();
3783
3784 if (iterable !== undefined) {
3785 var adder = set['add'];
3786 if (!IsCallable(adder)) throw TypeError();
3787 var iter = GetIterator(ToObject(iterable));
3788 }
3789 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3790 if (iter === undefined) return set;
3791 while (true) {
3792 var next = IteratorStep(iter);
3793 if (next === false)
3794 return set;
3795 var nextValue = IteratorValue(next);
3796 adder.call(set, nextValue);
3797 }
3798
3799 return set;
3800 }
3801
3802 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3803 global.WeakSet = WeakSet;
3804
3805 // 23.4.2 Properties of the WeakSet Constructor
3806 // 23.4.2.1 WeakSet.prototype
3807 var $WeakSetPrototype$ = {};
3808 WeakSet.prototype = $WeakSetPrototype$;
3809
3810 // 23.4.3 Properties of the WeakSet Prototype Object
3811 // 23.4.3.1 WeakSet.prototype.add (value )
3812 define(
3813 WeakSet.prototype, 'add',
3814 function add(value) {
3815 var S = strict(this);
3816 if (Type(S) !== 'object') throw TypeError();
3817 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3818 if (Type(value) !== 'object') throw TypeError('Expected object');
3819 S['[[WeakSetData]]'].set(value, true);
3820 return S;
3821 });
3822
3823 // 23.4.3.2 WeakSet.prototype.constructor
3824 // 23.4.3.3 WeakSet.prototype.delete ( value )
3825 define(
3826 WeakSet.prototype, 'delete',
3827 function delete_(value) {
3828 var S = strict(this);
3829 if (Type(S) !== 'object') throw TypeError();
3830 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3831 if (Type(value) !== 'object') throw TypeError('Expected object');
3832 return S['[[WeakSetData]]'].remove(value);
3833 });
3834
3835 // 23.4.3.4 WeakSet.prototype.has ( value )
3836 define(
3837 WeakSet.prototype, 'has',
3838 function has(key) {
3839 var S = strict(this);
3840 if (Type(S) !== 'object') throw TypeError();
3841 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3842 if (Type(key) !== 'object') throw TypeError('Expected object');
3843 return S['[[WeakSetData]]'].has(key);
3844 });
3845
3846 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3847 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3848
3849 // 23.4.4 Properties of WeakSet Instances
3850
3851 // Polyfills for incomplete native implementations:
3852 (function() {
3853 var ws = new global.WeakSet();
3854 var orig = global.WeakSet.prototype.add;
3855 define(global.WeakSet.prototype, 'add', function add() {
3856 orig.apply(this, arguments);
3857 return this;
3858 }, ws.add({}) !== ws);
3859 }());
3860 }());
3861
3862 // ---------------------------------------
3863 // 24 Structured Data
3864 // ---------------------------------------
3865
3866 // ---------------------------------------
3867 // 24.1 ArrayBuffer Objects
3868 // ---------------------------------------
3869
3870 // See typedarray.js for TypedArray polyfill
3871
3872 (function() {
3873 if (!('ArrayBuffer' in global))
3874 return;
3875
3876 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3877 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3878 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3879 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3880 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3881 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3882 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3883 // 24.1.2 The ArrayBuffer Constructor
3884 // 24.1.2.1 ArrayBuffer( length )
3885 // 24.1.3 Properties of the ArrayBuffer Constructor
3886
3887 // 24.1.3.1 ArrayBuffer.isView ( arg )
3888 define(
3889 ArrayBuffer, 'isView',
3890 function isView(arg) {
3891 if (Type(arg) !== 'object') return false;
3892 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3893 return false;
3894 });
3895
3896 // 24.1.3.2 ArrayBuffer.prototype
3897 // 24.1.3.3 get ArrayBuffer [ @@species ]
3898 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3899 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3900 // 24.1.4.2 ArrayBuffer.prototype.constructor
3901 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3902
3903 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3904 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3905
3906 // 24.1.5 Properties of the ArrayBuffer Instances
3907 }());
3908
3909 // ---------------------------------------
3910 // 24.2 DataView Objects
3911 // ---------------------------------------
3912
3913 // See typedarray.js for TypedArray polyfill
3914
3915 (function() {
3916 if (!('DataView' in global))
3917 return;
3918
3919 // 24.2.1 Abstract Operations For DataView Objects
3920 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3921 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3922 // 24.2.2 The DataView Constructor
3923 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3924 // 24.2.3 Properties of the DataView Constructor
3925 // 24.2.3.1 DataView.prototype
3926 // 24.2.4 Properties of the DataView Prototype Object
3927 // 24.2.4.1 get DataView.prototype.buffer
3928 // 24.2.4.2 get DataView.prototype.byteLength
3929 // 24.2.4.3 get DataView.prototype.byteOffset
3930 // 24.2.4.4 DataView.prototype.constructor
3931 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3932 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3933 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3934 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3935 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3936 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3937 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3938 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3939 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3940 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3941 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3942 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3943 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3944 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3945 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3946 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3947
3948 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3949 define(DataView.prototype, $$toStringTag, 'DataView');
3950
3951 // 24.2.5 Properties of DataView Instances
3952 }());
3953
3954 // ---------------------------------------
3955 // 24.3 The JSON Object
3956 // ---------------------------------------
3957
3958 // 24.3.1 JSON.parse ( text [ , reviver ] )
3959 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3960 // 24.3.3 JSON [ @@toStringTag ]
3961 define(JSON, $$toStringTag, 'JSON');
3962
3963 // ---------------------------------------
3964 // 25.1 Iteration
3965 // ---------------------------------------
3966
3967 // 25.1.1 Common Iteration Interfaces
3968 // 25.1.1.1 The Iterable Interface
3969 // 25.1.1.2 The Iterator Interface
3970 // 25.1.1.3 The IteratorResult Interface
3971
3972 // 25.1.2 The %IteratorPrototype% Object
3973 // Defined earlier, so other prototypes can reference it.
3974 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3975 define($IteratorPrototype$, $$iterator, function() {
3976 return this;
3977 });
3978
3979
3980 // ---------------------------------------
3981 // 25.4 Promise Objects
3982 // ---------------------------------------
3983
3984 (function() {
3985 // 25.4 Promise Objects
3986
3987 // 25.4.1 Promise Abstract Operations
3988
3989 // 25.4.1.1 PromiseCapability Records
3990 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3991
3992 function IfAbruptRejectPromise(value, capability) {
3993 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3994 return capability['[[Promise]]'];
3995 }
3996
3997 // 25.4.1.2 PromiseReaction Records
3998
3999 // 25.4.1.3 CreateResolvingFunctions ( promise )
4000
4001 function CreateResolvingFunctions(promise) {
4002 var alreadyResolved = {'[[value]]': false};
4003 var resolve = PromiseResolveFunction();
4004 set_internal(resolve, '[[Promise]]', promise);
4005 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4006 var reject = PromiseRejectFunction();
4007 set_internal(reject, '[[Promise]]', promise);
4008 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4009 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4010 }
4011
4012 // 25.4.1.3.1 Promise Reject Functions
4013
4014 function PromiseRejectFunction() {
4015 var F = function(reason) {
4016 console.assert(Type(F['[[Promise]]']) === 'object');
4017 var promise = F['[[Promise]]'];
4018 var alreadyResolved = F['[[AlreadyResolved]]'];
4019 if (alreadyResolved['[[value]]']) return undefined;
4020 set_internal(alreadyResolved, '[[value]]', true);
4021 return RejectPromise(promise, reason);
4022 };
4023 return F;
4024 }
4025
4026 // 25.4.1.3.2 Promise Resolve Functions
4027
4028 function PromiseResolveFunction() {
4029 var F = function(resolution) {
4030 console.assert(Type(F['[[Promise]]']) === 'object');
4031 var promise = F['[[Promise]]'];
4032 var alreadyResolved = F['[[AlreadyResolved]]'];
4033 if (alreadyResolved['[[value]]']) return undefined;
4034 set_internal(alreadyResolved, '[[value]]', true);
4035
4036 if (SameValue(resolution, promise)) {
4037 var selfResolutionError = TypeError();
4038 return RejectPromise(promise, selfResolutionError);
4039 }
4040 if (Type(resolution) !== 'object')
4041 return FulfillPromise(promise, resolution);
4042 try {
4043 var then = resolution['then'];
4044 } catch(then) {
4045 return RejectPromise(promise, then);
4046 }
4047 if (!IsCallable(then))
4048 return FulfillPromise(promise, resolution);
4049 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4050 return undefined;
4051 };
4052 return F;
4053 }
4054
4055 // 25.4.1.4 FulfillPromise ( promise, value )
4056
4057 function FulfillPromise(promise, value) {
4058 console.assert(promise['[[PromiseState]]'] === 'pending');
4059 var reactions = promise['[[PromiseFulfillReactions]]'];
4060 set_internal(promise, '[[PromiseResult]]', value);
4061 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4062 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4063 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4064 return TriggerPromiseReactions(reactions, value);
4065 }
4066
4067 // 25.4.1.5 NewPromiseCapability ( C )
4068
4069 function NewPromiseCapability(c) {
4070 // To keep Promise hermetic, this doesn't look much like the spec.
4071 return CreatePromiseCapabilityRecord(undefined, c);
4072 }
4073
4074 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4075
4076 function CreatePromiseCapabilityRecord(promise, constructor) {
4077 // To keep Promise hermetic, this doesn't look much like the spec.
4078 console.assert(IsConstructor(constructor));
4079 var promiseCapability = {};
4080 set_internal(promiseCapability, '[[Promise]]', promise);
4081 set_internal(promiseCapability, '[[Resolve]]', undefined);
4082 set_internal(promiseCapability, '[[Reject]]', undefined);
4083 var executor = GetCapabilitiesExecutor();
4084 set_internal(executor, '[[Capability]]', promiseCapability);
4085
4086 // NOTE: Differs from spec; object is constructed here
4087 var constructorResult = promise = new constructor(executor);
4088 set_internal(promiseCapability, '[[Promise]]', promise);
4089
4090 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4091 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4092 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4093 return promiseCapability;
4094 }
4095
4096 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4097
4098 function GetCapabilitiesExecutor() {
4099 var F = function(resolve, reject) {
4100 console.assert(F['[[Capability]]']);
4101 var promiseCapability = F['[[Capability]]'];
4102 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4103 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4104 set_internal(promiseCapability, '[[Resolve]]', resolve);
4105 set_internal(promiseCapability, '[[Reject]]', reject);
4106 return undefined;
4107 };
4108 return F;
4109 }
4110
4111 // 25.4.1.6 IsPromise ( x )
4112
4113 function IsPromise(x) {
4114 if (Type(x) !== 'object') return false;
4115 if (!('[[PromiseState]]' in x)) return false;
4116 if (x['[[PromiseState]]'] === undefined) return false;
4117 return true;
4118 }
4119
4120 // 25.4.1.7 RejectPromise ( promise, reason )
4121
4122 function RejectPromise(promise, reason) {
4123 console.assert(promise['[[PromiseState]]'] === 'pending');
4124 var reactions = promise['[[PromiseRejectReactions]]'];
4125 set_internal(promise, '[[PromiseResult]]', reason);
4126 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4127 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4128 set_internal(promise, '[[PromiseState]]', 'rejected');
4129 return TriggerPromiseReactions(reactions, reason);
4130 }
4131
4132 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4133
4134 function TriggerPromiseReactions(reactions, argument) {
4135 for (var i = 0, len = reactions.length; i < len; ++i)
4136 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4137 return undefined;
4138 }
4139
4140 // 25.4.2 Promise Jobs
4141
4142 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4143
4144 function PromiseReactionJob(reaction, argument) {
4145 var promiseCapability = reaction['[[Capabilities]]'];
4146 var handler = reaction['[[Handler]]'];
4147 var handlerResult, status;
4148 try {
4149 if (handler === 'Identity') handlerResult = argument;
4150 else if (handler === 'Thrower') throw argument;
4151 else handlerResult = handler.call(undefined, argument);
4152 } catch (handlerResult) {
4153 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4154 NextJob(status); return;
4155 }
4156 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4157 NextJob(status);
4158 }
4159
4160 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4161
4162 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4163 // SPEC BUG: promise vs. promiseToResolve
4164 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4165 try {
4166 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4167 resolvingFunctions['[[Reject]]']);
4168 } catch (thenCallResult) {
4169 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4170 NextJob(status); return;
4171 }
4172 NextJob(thenCallResult);
4173 }
4174
4175 // 25.4.3 The Promise Constructor
4176
4177 // 25.4.3.1 Promise ( executor )
4178
4179 function Promise(executor) {
4180 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4181 Object.defineProperty(this, '[[PromiseState]]', config);
4182 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4183 Object.defineProperty(this, '[[PromiseResult]]', config);
4184 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4185 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4186
4187 var promise = this;
4188 if (Type(promise) !== 'object') throw new TypeError();
4189 if (!('[[PromiseState]]' in promise)) throw TypeError();
4190 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4191 if (!IsCallable(executor)) throw TypeError();
4192
4193 set_internal(promise, '[[PromiseConstructor]]', Promise);
4194
4195 return InitializePromise(promise, executor);
4196 }
4197
4198 // 25.4.3.1.1 InitializePromise ( promise, executor )
4199
4200 function InitializePromise(promise, executor) {
4201 console.assert('[[PromiseState]]' in promise);
4202 console.assert(IsCallable(executor));
4203 set_internal(promise, '[[PromiseState]]', 'pending');
4204 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4205 set_internal(promise, '[[PromiseRejectReactions]]', []);
4206 var resolvingFunctions = CreateResolvingFunctions(promise);
4207 try {
4208 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4209 resolvingFunctions['[[Reject]]']);
4210 } catch (completion) {
4211 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4212 }
4213 return promise;
4214 }
4215
4216 // 25.4.4 Properties of the Promise Constructor
4217 // 25.4.4.1 Promise.all ( iterable )
4218
4219 define(Promise, 'all', function all(iterable) {
4220 var c = strict(this);
4221 var promiseCapability = NewPromiseCapability(c);
4222 try {
4223 var iterator = GetIterator(iterable);
4224 } catch (value) {
4225 promiseCapability['[[Reject]]'].call(undefined, value);
4226 return promiseCapability['[[Promise]]'];
4227 }
4228 var values = [];
4229 var remainingElementsCount = { value: 1 };
4230 var index = 0;
4231 while (true) {
4232 try {
4233 var next = IteratorStep(iterator);
4234 } catch (value) {
4235 promiseCapability['[[Reject]]'].call(undefined, value);
4236 return promiseCapability['[[Promise]]'];
4237 }
4238 if (!next) {
4239 remainingElementsCount.value -= 1;
4240 if (remainingElementsCount.value === 0) {
4241 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4242
4243
4244 }
4245 return promiseCapability['[[Promise]]'];
4246 }
4247 try {
4248 var nextValue = IteratorValue(next);
4249 } catch (value) {
4250 promiseCapability['[[Reject]]'].call(undefined, value);
4251 return promiseCapability['[[Promise]]'];
4252 }
4253 try {
4254 var nextPromise = c.resolve(nextValue);
4255 } catch (value) {
4256 promiseCapability['[[Reject]]'].call(undefined, value);
4257 return promiseCapability['[[Promise]]'];
4258 }
4259 var resolveElement = PromiseAllResolveElementFunction();
4260 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4261 set_internal(resolveElement, '[[Index]]', index);
4262 set_internal(resolveElement, '[[Values]]', values);
4263 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4264 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4265 remainingElementsCount.value += 1;
4266 try {
4267 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4268 } catch (value) {
4269 promiseCapability['[[Reject]]'].call(undefined, value);
4270 return promiseCapability['[[Promise]]'];
4271 }
4272 index += 1;
4273 }
4274 });
4275
4276 // 25.4.4.1.1 Promise.all Resolve Element Functions
4277
4278 function PromiseAllResolveElementFunction() {
4279 var F = function(x) {
4280 var alreadyCalled = F['[[AlreadyCalled]]'];
4281 if (alreadyCalled.value) return undefined;
4282 alreadyCalled.value = true;
4283 var index = F['[[Index]]'];
4284 var values = F['[[Values]]'];
4285 var promiseCapability = F['[[Capabilities]]'];
4286 var remainingElementsCount = F['[[RemainingElements]]'];
4287 try {
4288 values[index] = x;
4289 } catch (result) {
4290 promiseCapability['[[Reject]]'].call(undefined, result);
4291 return promiseCapability['[[Promise]]'];
4292 }
4293 remainingElementsCount.value -= 1;
4294 if (remainingElementsCount.value === 0)
4295 return promiseCapability['[[Resolve]]'].call(undefined, values);
4296 return undefined;
4297 };
4298 return F;
4299 }
4300
4301 // 25.4.4.2 Promise.prototype
4302
4303 Promise.prototype = {};
4304
4305 // 25.4.4.3 Promise.race ( iterable )
4306
4307 define(Promise, 'race', function race(iterable) {
4308 var c = strict(this);
4309 var promiseCapability = NewPromiseCapability(c);
4310 try {
4311 var iterator = GetIterator(iterable);
4312 } catch (value) {
4313 promiseCapability['[[Reject]]'].call(undefined, value);
4314 return promiseCapability['[[Promise]]'];
4315 }
4316 while (true) {
4317 try {
4318 var next = IteratorStep(iterator);
4319 } catch (value) {
4320 promiseCapability['[[Reject]]'].call(undefined, value);
4321 return promiseCapability['[[Promise]]'];
4322 }
4323 if (!next) return promiseCapability['[[Promise]]'];
4324 try {
4325 var nextValue = IteratorValue(next);
4326 } catch (value) {
4327 promiseCapability['[[Reject]]'].call(undefined, value);
4328 return promiseCapability['[[Promise]]'];
4329 }
4330 try {
4331 var nextPromise = c.resolve(nextValue);
4332 } catch (value) {
4333 promiseCapability['[[Reject]]'].call(undefined, value);
4334 return promiseCapability['[[Promise]]'];
4335 }
4336 try {
4337 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4338 } catch (value) {
4339 promiseCapability['[[Reject]]'].call(undefined, value);
4340 return promiseCapability['[[Promise]]'];
4341 }
4342 }
4343 });
4344
4345 // 25.4.4.4 Promise.reject ( r )
4346
4347 define(Promise, 'reject', function reject(r) {
4348 var c = strict(this);
4349 var promiseCapability = NewPromiseCapability(c);
4350 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4351 return promiseCapability['[[Promise]]'];
4352 });
4353
4354 // 25.4.4.5 Promise.resolve ( x )
4355
4356 define(Promise, 'resolve', function resolve(x) {
4357 var c = strict(this);
4358 if (IsPromise(x)) {
4359 var constructor = x['[[PromiseConstructor]]'];
4360 if (SameValue(constructor, c)) return x;
4361 }
4362 var promiseCapability = NewPromiseCapability(c);
4363 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4364 return promiseCapability['[[Promise]]'];
4365 });
4366
4367 // 25.4.4.6 Promise [ @@create ] ( )
4368 // 25.4.4.6.1 AllocatePromise ( constructor )
4369 // 25.4.5 Properties of the Promise Prototype Object
4370 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4371
4372 define(Promise.prototype, 'catch', function catch_(onRejected) {
4373 var promise = this;
4374 return promise.then(undefined, onRejected);
4375 });
4376
4377 // 25.4.5.2 Promise.prototype.constructor
4378
4379 Promise.prototype.constructor = Promise;
4380
4381 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4382
4383 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4384 var promise = this;
4385 if (!IsPromise(promise)) throw TypeError();
4386 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4387 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4388 var c = promise.constructor;
4389 var promiseCapability = NewPromiseCapability(c);
4390 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4391 '[[Handler]]': onFulfilled };
4392 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4393 '[[Handler]]': onRejected };
4394 if (promise['[[PromiseState]]'] === 'pending') {
4395 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4396 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4397 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4398 var value = promise['[[PromiseResult]]'];
4399 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4400 } else if (promise['[[PromiseState]]'] === 'rejected') {
4401 var reason = promise['[[PromiseResult]]'];
4402 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4403 }
4404 return promiseCapability['[[Promise]]'];
4405 });
4406
4407 // 25.4.6 Properties of Promise Instances
4408
4409 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4410 global.Promise = Promise;
4411
4412 // Patch early Promise.cast vs. Promise.resolve implementations
4413 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4414 }());
4415
4416 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4417 define(Promise.prototype, $$toStringTag, 'Promise');
4418
4419 // ---------------------------------------
4420 // 26 Reflection
4421 // ---------------------------------------
4422
4423 (function() {
4424 // 26.1 The Reflect Object
4425 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4426 global.Reflect = {};
4427
4428 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4429 define(
4430 Reflect, 'apply',
4431 function apply(target, thisArgument, argumentsList) {
4432 if (!IsCallable(target)) throw TypeError();
4433 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4434 });
4435
4436 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4437 define(
4438 Reflect, 'construct',
4439 function construct(target, argumentsList) {
4440 return __cons(target, argumentsList);
4441 });
4442
4443 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4444 define(
4445 Reflect, 'defineProperty',
4446 function defineProperty(target, propertyKey, attributes) {
4447 try {
4448 Object.defineProperty(target, propertyKey, attributes);
4449 return true;
4450 } catch (_) {
4451 return false;
4452 }
4453 });
4454
4455 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4456 define(
4457 Reflect, 'deleteProperty',
4458 function deleteProperty(target,name) {
4459 try {
4460 delete target[name];
4461 return !HasOwnProperty(target, name);
4462 } catch (_) {
4463 return false;
4464 }
4465 });
4466
4467 // 26.1.5 Reflect.enumerate ( target )
4468 define(
4469 Reflect, 'enumerate',
4470 function enumerate(target) {
4471 target = ToObject(target);
4472 var iterator = Enumerate(target);
4473 return iterator;
4474 });
4475
4476 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4477 define(
4478 Reflect, 'get',
4479 function get(target, name, receiver) {
4480 target = ToObject(target);
4481 name = String(name);
4482 receiver = (receiver === undefined) ? target : ToObject(receiver);
4483 var desc = getPropertyDescriptor(target, name);
4484 if (desc && 'get' in desc)
4485 return Function.prototype.call.call(desc['get'], receiver);
4486 return target[name];
4487 });
4488
4489 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4490 define(
4491 Reflect, 'getOwnPropertyDescriptor',
4492 Object.getOwnPropertyDescriptor);
4493
4494 // 26.1.8 Reflect.getPrototypeOf ( target )
4495 define(
4496 Reflect, 'getPrototypeOf',
4497 Object.getPrototypeOf);
4498
4499 // 26.1.9 Reflect.has ( target, propertyKey )
4500 define(
4501 Reflect, 'has',
4502 function has(target,name) {
4503 return String(name) in ToObject(target);
4504 });
4505
4506 // 26.1.10 Reflect.isExtensible (target)
4507 define(
4508 Reflect, 'isExtensible',
4509 Object.isExtensible);
4510
4511 // 26.1.11 Reflect.ownKeys ( target )
4512 define(
4513 Reflect, 'ownKeys',
4514 function ownKeys(target) {
4515 var obj = ToObject(target);
4516 return Object.getOwnPropertyNames(obj);
4517 });
4518
4519 // 26.1.12 Reflect.preventExtensions ( target )
4520 define(
4521 Reflect, 'preventExtensions',
4522 function preventExtensions(target) {
4523 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4524 });
4525
4526 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4527 define(
4528 Reflect, 'set',
4529 function set(target, name, value, receiver) {
4530 target = ToObject(target);
4531 name = String(name);
4532 receiver = (receiver === undefined) ? target : ToObject(receiver);
4533 var desc = getPropertyDescriptor(target, name);
4534 try {
4535 if (desc && 'set' in desc)
4536 Function.prototype.call.call(desc['set'], receiver, value);
4537 else
4538 target[name] = value;
4539 return true;
4540 } catch (_) {
4541 return false;
4542 }
4543 });
4544
4545 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4546 define(
4547 Reflect, 'setPrototypeOf',
4548 function setPrototypeOf(target, proto) {
4549 try {
4550 target.__proto__ = proto;
4551 return Reflect.getPrototypeOf(target) === proto;
4552 } catch(_) {
4553 return false;
4554 }
4555 });
4556
4557 }());
4558
4559 // ---------------------------------------
4560 // 26.2 Proxy Objects
4561 // ---------------------------------------
4562
4563 // Not polyfillable.
4564
4565 }(self));
4566
4567 // This helper is defined outside the main scope so that the use of
4568 // 'eval' does not taint the scope for minifiers.
4569 function __cons(t, a) {
4570 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4571 }
4572 </script>
4573 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.foo = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
4574 'use strict'
4575
4576 exports.byteLength = byteLength
4577 exports.toByteArray = toByteArray
4578 exports.fromByteArray = fromByteArray
4579
4580 var lookup = []
4581 var revLookup = []
4582 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4583
4584 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4585 for (var i = 0, len = code.length; i < len; ++i) {
4586 lookup[i] = code[i]
4587 revLookup[code.charCodeAt(i)] = i
4588 }
4589
4590 revLookup['-'.charCodeAt(0)] = 62
4591 revLookup['_'.charCodeAt(0)] = 63
4592
4593 function placeHoldersCount (b64) {
4594 var len = b64.length
4595 if (len % 4 > 0) {
4596 throw new Error('Invalid string. Length must be a multiple of 4')
4597 }
4598
4599 // the number of equal signs (place holders)
4600 // if there are two placeholders, than the two characters before it
4601 // represent one byte
4602 // if there is only one, then the three characters before it represent 2 bytes
4603 // this is just a cheap hack to not do indexOf twice
4604 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4605 }
4606
4607 function byteLength (b64) {
4608 // base64 is 4/3 + up to two characters of the original data
4609 return b64.length * 3 / 4 - placeHoldersCount(b64)
4610 }
4611
4612 function toByteArray (b64) {
4613 var i, j, l, tmp, placeHolders, arr
4614 var len = b64.length
4615 placeHolders = placeHoldersCount(b64)
4616
4617 arr = new Arr(len * 3 / 4 - placeHolders)
4618
4619 // if there are placeholders, only get up to the last complete 4 chars
4620 l = placeHolders > 0 ? len - 4 : len
4621
4622 var L = 0
4623
4624 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4625 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4626 arr[L++] = (tmp >> 16) & 0xFF
4627 arr[L++] = (tmp >> 8) & 0xFF
4628 arr[L++] = tmp & 0xFF
4629 }
4630
4631 if (placeHolders === 2) {
4632 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4633 arr[L++] = tmp & 0xFF
4634 } else if (placeHolders === 1) {
4635 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4636 arr[L++] = (tmp >> 8) & 0xFF
4637 arr[L++] = tmp & 0xFF
4638 }
4639
4640 return arr
4641 }
4642
4643 function tripletToBase64 (num) {
4644 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4645 }
4646
4647 function encodeChunk (uint8, start, end) {
4648 var tmp
4649 var output = []
4650 for (var i = start; i < end; i += 3) {
4651 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4652 output.push(tripletToBase64(tmp))
4653 }
4654 return output.join('')
4655 }
4656
4657 function fromByteArray (uint8) {
4658 var tmp
4659 var len = uint8.length
4660 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4661 var output = ''
4662 var parts = []
4663 var maxChunkLength = 16383 // must be multiple of 3
4664
4665 // go through the array every three bytes, we'll deal with trailing stuff later
4666 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4667 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4668 }
4669
4670 // pad the end with zeros, but make sure to not forget the extra bytes
4671 if (extraBytes === 1) {
4672 tmp = uint8[len - 1]
4673 output += lookup[tmp >> 2]
4674 output += lookup[(tmp << 4) & 0x3F]
4675 output += '=='
4676 } else if (extraBytes === 2) {
4677 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4678 output += lookup[tmp >> 10]
4679 output += lookup[(tmp >> 4) & 0x3F]
4680 output += lookup[(tmp << 2) & 0x3F]
4681 output += '='
4682 }
4683
4684 parts.push(output)
4685
4686 return parts.join('')
4687 }
4688
4689 },{}],2:[function(require,module,exports){
4690 /*!
4691 * The buffer module from node.js, for the browser.
4692 *
4693 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4694 * @license MIT
4695 */
4696 /* eslint-disable no-proto */
4697
4698 'use strict'
4699
4700 var base64 = require('base64-js')
4701 var ieee754 = require('ieee754')
4702
4703 exports.Buffer = Buffer
4704 exports.SlowBuffer = SlowBuffer
4705 exports.INSPECT_MAX_BYTES = 50
4706
4707 var K_MAX_LENGTH = 0x7fffffff
4708 exports.kMaxLength = K_MAX_LENGTH
4709
4710 /**
4711 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4712 * === true Use Uint8Array implementation (fastest)
4713 * === false Print warning and recommend using `buffer` v4.x which has an Object
4714 * implementation (most compatible, even IE6)
4715 *
4716 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4717 * Opera 11.6+, iOS 4.2+.
4718 *
4719 * We report that the browser does not support typed arrays if the are not subclassable
4720 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4721 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4722 * for __proto__ and has a buggy typed array implementation.
4723 */
4724 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4725
4726 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4727 typeof console.error === 'function') {
4728 console.error(
4729 'This browser lacks typed array (Uint8Array) support which is required by ' +
4730 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4731 )
4732 }
4733
4734 function typedArraySupport () {
4735 // Can typed array instances can be augmented?
4736 try {
4737 var arr = new Uint8Array(1)
4738 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4739 return arr.foo() === 42
4740 } catch (e) {
4741 return false
4742 }
4743 }
4744
4745 function createBuffer (length) {
4746 if (length > K_MAX_LENGTH) {
4747 throw new RangeError('Invalid typed array length')
4748 }
4749 // Return an augmented `Uint8Array` instance
4750 var buf = new Uint8Array(length)
4751 buf.__proto__ = Buffer.prototype
4752 return buf
4753 }
4754
4755 /**
4756 * The Buffer constructor returns instances of `Uint8Array` that have their
4757 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4758 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4759 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4760 * returns a single octet.
4761 *
4762 * The `Uint8Array` prototype remains unmodified.
4763 */
4764
4765 function Buffer (arg, encodingOrOffset, length) {
4766 // Common case.
4767 if (typeof arg === 'number') {
4768 if (typeof encodingOrOffset === 'string') {
4769 throw new Error(
4770 'If encoding is specified then the first argument must be a string'
4771 )
4772 }
4773 return allocUnsafe(arg)
4774 }
4775 return from(arg, encodingOrOffset, length)
4776 }
4777
4778 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4779 if (typeof Symbol !== 'undefined' && Symbol.species &&
4780 Buffer[Symbol.species] === Buffer) {
4781 Object.defineProperty(Buffer, Symbol.species, {
4782 value: null,
4783 configurable: true,
4784 enumerable: false,
4785 writable: false
4786 })
4787 }
4788
4789 Buffer.poolSize = 8192 // not used by this implementation
4790
4791 function from (value, encodingOrOffset, length) {
4792 if (typeof value === 'number') {
4793 throw new TypeError('"value" argument must not be a number')
4794 }
4795
4796 if (value instanceof ArrayBuffer) {
4797 return fromArrayBuffer(value, encodingOrOffset, length)
4798 }
4799
4800 if (typeof value === 'string') {
4801 return fromString(value, encodingOrOffset)
4802 }
4803
4804 return fromObject(value)
4805 }
4806
4807 /**
4808 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4809 * if value is a number.
4810 * Buffer.from(str[, encoding])
4811 * Buffer.from(array)
4812 * Buffer.from(buffer)
4813 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4814 **/
4815 Buffer.from = function (value, encodingOrOffset, length) {
4816 return from(value, encodingOrOffset, length)
4817 }
4818
4819 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4820 // https://github.com/feross/buffer/pull/148
4821 Buffer.prototype.__proto__ = Uint8Array.prototype
4822 Buffer.__proto__ = Uint8Array
4823
4824 function assertSize (size) {
4825 if (typeof size !== 'number') {
4826 throw new TypeError('"size" argument must be a number')
4827 } else if (size < 0) {
4828 throw new RangeError('"size" argument must not be negative')
4829 }
4830 }
4831
4832 function alloc (size, fill, encoding) {
4833 assertSize(size)
4834 if (size <= 0) {
4835 return createBuffer(size)
4836 }
4837 if (fill !== undefined) {
4838 // Only pay attention to encoding if it's a string. This
4839 // prevents accidentally sending in a number that would
4840 // be interpretted as a start offset.
4841 return typeof encoding === 'string'
4842 ? createBuffer(size).fill(fill, encoding)
4843 : createBuffer(size).fill(fill)
4844 }
4845 return createBuffer(size)
4846 }
4847
4848 /**
4849 * Creates a new filled Buffer instance.
4850 * alloc(size[, fill[, encoding]])
4851 **/
4852 Buffer.alloc = function (size, fill, encoding) {
4853 return alloc(size, fill, encoding)
4854 }
4855
4856 function allocUnsafe (size) {
4857 assertSize(size)
4858 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4859 }
4860
4861 /**
4862 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4863 * */
4864 Buffer.allocUnsafe = function (size) {
4865 return allocUnsafe(size)
4866 }
4867 /**
4868 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4869 */
4870 Buffer.allocUnsafeSlow = function (size) {
4871 return allocUnsafe(size)
4872 }
4873
4874 function fromString (string, encoding) {
4875 if (typeof encoding !== 'string' || encoding === '') {
4876 encoding = 'utf8'
4877 }
4878
4879 if (!Buffer.isEncoding(encoding)) {
4880 throw new TypeError('"encoding" must be a valid string encoding')
4881 }
4882
4883 var length = byteLength(string, encoding) | 0
4884 var buf = createBuffer(length)
4885
4886 var actual = buf.write(string, encoding)
4887
4888 if (actual !== length) {
4889 // Writing a hex string, for example, that contains invalid characters will
4890 // cause everything after the first invalid character to be ignored. (e.g.
4891 // 'abxxcd' will be treated as 'ab')
4892 buf = buf.slice(0, actual)
4893 }
4894
4895 return buf
4896 }
4897
4898 function fromArrayLike (array) {
4899 var length = array.length < 0 ? 0 : checked(array.length) | 0
4900 var buf = createBuffer(length)
4901 for (var i = 0; i < length; i += 1) {
4902 buf[i] = array[i] & 255
4903 }
4904 return buf
4905 }
4906
4907 function fromArrayBuffer (array, byteOffset, length) {
4908 if (byteOffset < 0 || array.byteLength < byteOffset) {
4909 throw new RangeError('\'offset\' is out of bounds')
4910 }
4911
4912 if (array.byteLength < byteOffset + (length || 0)) {
4913 throw new RangeError('\'length\' is out of bounds')
4914 }
4915
4916 var buf
4917 if (byteOffset === undefined && length === undefined) {
4918 buf = new Uint8Array(array)
4919 } else if (length === undefined) {
4920 buf = new Uint8Array(array, byteOffset)
4921 } else {
4922 buf = new Uint8Array(array, byteOffset, length)
4923 }
4924
4925 // Return an augmented `Uint8Array` instance
4926 buf.__proto__ = Buffer.prototype
4927 return buf
4928 }
4929
4930 function fromObject (obj) {
4931 if (Buffer.isBuffer(obj)) {
4932 var len = checked(obj.length) | 0
4933 var buf = createBuffer(len)
4934
4935 if (buf.length === 0) {
4936 return buf
4937 }
4938
4939 obj.copy(buf, 0, 0, len)
4940 return buf
4941 }
4942
4943 if (obj) {
4944 if (isArrayBufferView(obj) || 'length' in obj) {
4945 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4946 return createBuffer(0)
4947 }
4948 return fromArrayLike(obj)
4949 }
4950
4951 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4952 return fromArrayLike(obj.data)
4953 }
4954 }
4955
4956 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4957 }
4958
4959 function checked (length) {
4960 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4961 // length is NaN (which is otherwise coerced to zero.)
4962 if (length >= K_MAX_LENGTH) {
4963 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4964 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4965 }
4966 return length | 0
4967 }
4968
4969 function SlowBuffer (length) {
4970 if (+length != length) { // eslint-disable-line eqeqeq
4971 length = 0
4972 }
4973 return Buffer.alloc(+length)
4974 }
4975
4976 Buffer.isBuffer = function isBuffer (b) {
4977 return b != null && b._isBuffer === true
4978 }
4979
4980 Buffer.compare = function compare (a, b) {
4981 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4982 throw new TypeError('Arguments must be Buffers')
4983 }
4984
4985 if (a === b) return 0
4986
4987 var x = a.length
4988 var y = b.length
4989
4990 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
4991 if (a[i] !== b[i]) {
4992 x = a[i]
4993 y = b[i]
4994 break
4995 }
4996 }
4997
4998 if (x < y) return -1
4999 if (y < x) return 1
5000 return 0
5001 }
5002
5003 Buffer.isEncoding = function isEncoding (encoding) {
5004 switch (String(encoding).toLowerCase()) {
5005 case 'hex':
5006 case 'utf8':
5007 case 'utf-8':
5008 case 'ascii':
5009 case 'latin1':
5010 case 'binary':
5011 case 'base64':
5012 case 'ucs2':
5013 case 'ucs-2':
5014 case 'utf16le':
5015 case 'utf-16le':
5016 return true
5017 default:
5018 return false
5019 }
5020 }
5021
5022 Buffer.concat = function concat (list, length) {
5023 if (!Array.isArray(list)) {
5024 throw new TypeError('"list" argument must be an Array of Buffers')
5025 }
5026
5027 if (list.length === 0) {
5028 return Buffer.alloc(0)
5029 }
5030
5031 var i
5032 if (length === undefined) {
5033 length = 0
5034 for (i = 0; i < list.length; ++i) {
5035 length += list[i].length
5036 }
5037 }
5038
5039 var buffer = Buffer.allocUnsafe(length)
5040 var pos = 0
5041 for (i = 0; i < list.length; ++i) {
5042 var buf = list[i]
5043 if (!Buffer.isBuffer(buf)) {
5044 throw new TypeError('"list" argument must be an Array of Buffers')
5045 }
5046 buf.copy(buffer, pos)
5047 pos += buf.length
5048 }
5049 return buffer
5050 }
5051
5052 function byteLength (string, encoding) {
5053 if (Buffer.isBuffer(string)) {
5054 return string.length
5055 }
5056 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5057 return string.byteLength
5058 }
5059 if (typeof string !== 'string') {
5060 string = '' + string
5061 }
5062
5063 var len = string.length
5064 if (len === 0) return 0
5065
5066 // Use a for loop to avoid recursion
5067 var loweredCase = false
5068 for (;;) {
5069 switch (encoding) {
5070 case 'ascii':
5071 case 'latin1':
5072 case 'binary':
5073 return len
5074 case 'utf8':
5075 case 'utf-8':
5076 case undefined:
5077 return utf8ToBytes(string).length
5078 case 'ucs2':
5079 case 'ucs-2':
5080 case 'utf16le':
5081 case 'utf-16le':
5082 return len * 2
5083 case 'hex':
5084 return len >>> 1
5085 case 'base64':
5086 return base64ToBytes(string).length
5087 default:
5088 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5089 encoding = ('' + encoding).toLowerCase()
5090 loweredCase = true
5091 }
5092 }
5093 }
5094 Buffer.byteLength = byteLength
5095
5096 function slowToString (encoding, start, end) {
5097 var loweredCase = false
5098
5099 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5100 // property of a typed array.
5101
5102 // This behaves neither like String nor Uint8Array in that we set start/end
5103 // to their upper/lower bounds if the value passed is out of range.
5104 // undefined is handled specially as per ECMA-262 6th Edition,
5105 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5106 if (start === undefined || start < 0) {
5107 start = 0
5108 }
5109 // Return early if start > this.length. Done here to prevent potential uint32
5110 // coercion fail below.
5111 if (start > this.length) {
5112 return ''
5113 }
5114
5115 if (end === undefined || end > this.length) {
5116 end = this.length
5117 }
5118
5119 if (end <= 0) {
5120 return ''
5121 }
5122
5123 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5124 end >>>= 0
5125 start >>>= 0
5126
5127 if (end <= start) {
5128 return ''
5129 }
5130
5131 if (!encoding) encoding = 'utf8'
5132
5133 while (true) {
5134 switch (encoding) {
5135 case 'hex':
5136 return hexSlice(this, start, end)
5137
5138 case 'utf8':
5139 case 'utf-8':
5140 return utf8Slice(this, start, end)
5141
5142 case 'ascii':
5143 return asciiSlice(this, start, end)
5144
5145 case 'latin1':
5146 case 'binary':
5147 return latin1Slice(this, start, end)
5148
5149 case 'base64':
5150 return base64Slice(this, start, end)
5151
5152 case 'ucs2':
5153 case 'ucs-2':
5154 case 'utf16le':
5155 case 'utf-16le':
5156 return utf16leSlice(this, start, end)
5157
5158 default:
5159 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5160 encoding = (encoding + '').toLowerCase()
5161 loweredCase = true
5162 }
5163 }
5164 }
5165
5166 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5167 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5168 // reliably in a browserify context because there could be multiple different
5169 // copies of the 'buffer' package in use. This method works even for Buffer
5170 // instances that were created from another copy of the `buffer` package.
5171 // See: https://github.com/feross/buffer/issues/154
5172 Buffer.prototype._isBuffer = true
5173
5174 function swap (b, n, m) {
5175 var i = b[n]
5176 b[n] = b[m]
5177 b[m] = i
5178 }
5179
5180 Buffer.prototype.swap16 = function swap16 () {
5181 var len = this.length
5182 if (len % 2 !== 0) {
5183 throw new RangeError('Buffer size must be a multiple of 16-bits')
5184 }
5185 for (var i = 0; i < len; i += 2) {
5186 swap(this, i, i + 1)
5187 }
5188 return this
5189 }
5190
5191 Buffer.prototype.swap32 = function swap32 () {
5192 var len = this.length
5193 if (len % 4 !== 0) {
5194 throw new RangeError('Buffer size must be a multiple of 32-bits')
5195 }
5196 for (var i = 0; i < len; i += 4) {
5197 swap(this, i, i + 3)
5198 swap(this, i + 1, i + 2)
5199 }
5200 return this
5201 }
5202
5203 Buffer.prototype.swap64 = function swap64 () {
5204 var len = this.length
5205 if (len % 8 !== 0) {
5206 throw new RangeError('Buffer size must be a multiple of 64-bits')
5207 }
5208 for (var i = 0; i < len; i += 8) {
5209 swap(this, i, i + 7)
5210 swap(this, i + 1, i + 6)
5211 swap(this, i + 2, i + 5)
5212 swap(this, i + 3, i + 4)
5213 }
5214 return this
5215 }
5216
5217 Buffer.prototype.toString = function toString () {
5218 var length = this.length
5219 if (length === 0) return ''
5220 if (arguments.length === 0) return utf8Slice(this, 0, length)
5221 return slowToString.apply(this, arguments)
5222 }
5223
5224 Buffer.prototype.equals = function equals (b) {
5225 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5226 if (this === b) return true
5227 return Buffer.compare(this, b) === 0
5228 }
5229
5230 Buffer.prototype.inspect = function inspect () {
5231 var str = ''
5232 var max = exports.INSPECT_MAX_BYTES
5233 if (this.length > 0) {
5234 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5235 if (this.length > max) str += ' ... '
5236 }
5237 return '<Buffer ' + str + '>'
5238 }
5239
5240 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5241 if (!Buffer.isBuffer(target)) {
5242 throw new TypeError('Argument must be a Buffer')
5243 }
5244
5245 if (start === undefined) {
5246 start = 0
5247 }
5248 if (end === undefined) {
5249 end = target ? target.length : 0
5250 }
5251 if (thisStart === undefined) {
5252 thisStart = 0
5253 }
5254 if (thisEnd === undefined) {
5255 thisEnd = this.length
5256 }
5257
5258 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5259 throw new RangeError('out of range index')
5260 }
5261
5262 if (thisStart >= thisEnd && start >= end) {
5263 return 0
5264 }
5265 if (thisStart >= thisEnd) {
5266 return -1
5267 }
5268 if (start >= end) {
5269 return 1
5270 }
5271
5272 start >>>= 0
5273 end >>>= 0
5274 thisStart >>>= 0
5275 thisEnd >>>= 0
5276
5277 if (this === target) return 0
5278
5279 var x = thisEnd - thisStart
5280 var y = end - start
5281 var len = Math.min(x, y)
5282
5283 var thisCopy = this.slice(thisStart, thisEnd)
5284 var targetCopy = target.slice(start, end)
5285
5286 for (var i = 0; i < len; ++i) {
5287 if (thisCopy[i] !== targetCopy[i]) {
5288 x = thisCopy[i]
5289 y = targetCopy[i]
5290 break
5291 }
5292 }
5293
5294 if (x < y) return -1
5295 if (y < x) return 1
5296 return 0
5297 }
5298
5299 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5300 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5301 //
5302 // Arguments:
5303 // - buffer - a Buffer to search
5304 // - val - a string, Buffer, or number
5305 // - byteOffset - an index into `buffer`; will be clamped to an int32
5306 // - encoding - an optional encoding, relevant is val is a string
5307 // - dir - true for indexOf, false for lastIndexOf
5308 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5309 // Empty buffer means no match
5310 if (buffer.length === 0) return -1
5311
5312 // Normalize byteOffset
5313 if (typeof byteOffset === 'string') {
5314 encoding = byteOffset
5315 byteOffset = 0
5316 } else if (byteOffset > 0x7fffffff) {
5317 byteOffset = 0x7fffffff
5318 } else if (byteOffset < -0x80000000) {
5319 byteOffset = -0x80000000
5320 }
5321 byteOffset = +byteOffset // Coerce to Number.
5322 if (numberIsNaN(byteOffset)) {
5323 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5324 byteOffset = dir ? 0 : (buffer.length - 1)
5325 }
5326
5327 // Normalize byteOffset: negative offsets start from the end of the buffer
5328 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5329 if (byteOffset >= buffer.length) {
5330 if (dir) return -1
5331 else byteOffset = buffer.length - 1
5332 } else if (byteOffset < 0) {
5333 if (dir) byteOffset = 0
5334 else return -1
5335 }
5336
5337 // Normalize val
5338 if (typeof val === 'string') {
5339 val = Buffer.from(val, encoding)
5340 }
5341
5342 // Finally, search either indexOf (if dir is true) or lastIndexOf
5343 if (Buffer.isBuffer(val)) {
5344 // Special case: looking for empty string/buffer always fails
5345 if (val.length === 0) {
5346 return -1
5347 }
5348 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5349 } else if (typeof val === 'number') {
5350 val = val & 0xFF // Search for a byte value [0-255]
5351 if (typeof Uint8Array.prototype.indexOf === 'function') {
5352 if (dir) {
5353 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5354 } else {
5355 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5356 }
5357 }
5358 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5359 }
5360
5361 throw new TypeError('val must be string, number or Buffer')
5362 }
5363
5364 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5365 var indexSize = 1
5366 var arrLength = arr.length
5367 var valLength = val.length
5368
5369 if (encoding !== undefined) {
5370 encoding = String(encoding).toLowerCase()
5371 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5372 encoding === 'utf16le' || encoding === 'utf-16le') {
5373 if (arr.length < 2 || val.length < 2) {
5374 return -1
5375 }
5376 indexSize = 2
5377 arrLength /= 2
5378 valLength /= 2
5379 byteOffset /= 2
5380 }
5381 }
5382
5383 function read (buf, i) {
5384 if (indexSize === 1) {
5385 return buf[i]
5386 } else {
5387 return buf.readUInt16BE(i * indexSize)
5388 }
5389 }
5390
5391 var i
5392 if (dir) {
5393 var foundIndex = -1
5394 for (i = byteOffset; i < arrLength; i++) {
5395 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5396 if (foundIndex === -1) foundIndex = i
5397 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5398 } else {
5399 if (foundIndex !== -1) i -= i - foundIndex
5400 foundIndex = -1
5401 }
5402 }
5403 } else {
5404 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5405 for (i = byteOffset; i >= 0; i--) {
5406 var found = true
5407 for (var j = 0; j < valLength; j++) {
5408 if (read(arr, i + j) !== read(val, j)) {
5409 found = false
5410 break
5411 }
5412 }
5413 if (found) return i
5414 }
5415 }
5416
5417 return -1
5418 }
5419
5420 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5421 return this.indexOf(val, byteOffset, encoding) !== -1
5422 }
5423
5424 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5425 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5426 }
5427
5428 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5429 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5430 }
5431
5432 function hexWrite (buf, string, offset, length) {
5433 offset = Number(offset) || 0
5434 var remaining = buf.length - offset
5435 if (!length) {
5436 length = remaining
5437 } else {
5438 length = Number(length)
5439 if (length > remaining) {
5440 length = remaining
5441 }
5442 }
5443
5444 // must be an even number of digits
5445 var strLen = string.length
5446 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5447
5448 if (length > strLen / 2) {
5449 length = strLen / 2
5450 }
5451 for (var i = 0; i < length; ++i) {
5452 var parsed = parseInt(string.substr(i * 2, 2), 16)
5453 if (numberIsNaN(parsed)) return i
5454 buf[offset + i] = parsed
5455 }
5456 return i
5457 }
5458
5459 function utf8Write (buf, string, offset, length) {
5460 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5461 }
5462
5463 function asciiWrite (buf, string, offset, length) {
5464 return blitBuffer(asciiToBytes(string), buf, offset, length)
5465 }
5466
5467 function latin1Write (buf, string, offset, length) {
5468 return asciiWrite(buf, string, offset, length)
5469 }
5470
5471 function base64Write (buf, string, offset, length) {
5472 return blitBuffer(base64ToBytes(string), buf, offset, length)
5473 }
5474
5475 function ucs2Write (buf, string, offset, length) {
5476 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5477 }
5478
5479 Buffer.prototype.write = function write (string, offset, length, encoding) {
5480 // Buffer#write(string)
5481 if (offset === undefined) {
5482 encoding = 'utf8'
5483 length = this.length
5484 offset = 0
5485 // Buffer#write(string, encoding)
5486 } else if (length === undefined && typeof offset === 'string') {
5487 encoding = offset
5488 length = this.length
5489 offset = 0
5490 // Buffer#write(string, offset[, length][, encoding])
5491 } else if (isFinite(offset)) {
5492 offset = offset >>> 0
5493 if (isFinite(length)) {
5494 length = length >>> 0
5495 if (encoding === undefined) encoding = 'utf8'
5496 } else {
5497 encoding = length
5498 length = undefined
5499 }
5500 } else {
5501 throw new Error(
5502 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5503 )
5504 }
5505
5506 var remaining = this.length - offset
5507 if (length === undefined || length > remaining) length = remaining
5508
5509 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5510 throw new RangeError('Attempt to write outside buffer bounds')
5511 }
5512
5513 if (!encoding) encoding = 'utf8'
5514
5515 var loweredCase = false
5516 for (;;) {
5517 switch (encoding) {
5518 case 'hex':
5519 return hexWrite(this, string, offset, length)
5520
5521 case 'utf8':
5522 case 'utf-8':
5523 return utf8Write(this, string, offset, length)
5524
5525 case 'ascii':
5526 return asciiWrite(this, string, offset, length)
5527
5528 case 'latin1':
5529 case 'binary':
5530 return latin1Write(this, string, offset, length)
5531
5532 case 'base64':
5533 // Warning: maxLength not taken into account in base64Write
5534 return base64Write(this, string, offset, length)
5535
5536 case 'ucs2':
5537 case 'ucs-2':
5538 case 'utf16le':
5539 case 'utf-16le':
5540 return ucs2Write(this, string, offset, length)
5541
5542 default:
5543 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5544 encoding = ('' + encoding).toLowerCase()
5545 loweredCase = true
5546 }
5547 }
5548 }
5549
5550 Buffer.prototype.toJSON = function toJSON () {
5551 return {
5552 type: 'Buffer',
5553 data: Array.prototype.slice.call(this._arr || this, 0)
5554 }
5555 }
5556
5557 function base64Slice (buf, start, end) {
5558 if (start === 0 && end === buf.length) {
5559 return base64.fromByteArray(buf)
5560 } else {
5561 return base64.fromByteArray(buf.slice(start, end))
5562 }
5563 }
5564
5565 function utf8Slice (buf, start, end) {
5566 end = Math.min(buf.length, end)
5567 var res = []
5568
5569 var i = start
5570 while (i < end) {
5571 var firstByte = buf[i]
5572 var codePoint = null
5573 var bytesPerSequence = (firstByte > 0xEF) ? 4
5574 : (firstByte > 0xDF) ? 3
5575 : (firstByte > 0xBF) ? 2
5576 : 1
5577
5578 if (i + bytesPerSequence <= end) {
5579 var secondByte, thirdByte, fourthByte, tempCodePoint
5580
5581 switch (bytesPerSequence) {
5582 case 1:
5583 if (firstByte < 0x80) {
5584 codePoint = firstByte
5585 }
5586 break
5587 case 2:
5588 secondByte = buf[i + 1]
5589 if ((secondByte & 0xC0) === 0x80) {
5590 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5591 if (tempCodePoint > 0x7F) {
5592 codePoint = tempCodePoint
5593 }
5594 }
5595 break
5596 case 3:
5597 secondByte = buf[i + 1]
5598 thirdByte = buf[i + 2]
5599 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5600 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5601 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5602 codePoint = tempCodePoint
5603 }
5604 }
5605 break
5606 case 4:
5607 secondByte = buf[i + 1]
5608 thirdByte = buf[i + 2]
5609 fourthByte = buf[i + 3]
5610 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5611 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5612 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5613 codePoint = tempCodePoint
5614 }
5615 }
5616 }
5617 }
5618
5619 if (codePoint === null) {
5620 // we did not generate a valid codePoint so insert a
5621 // replacement char (U+FFFD) and advance only 1 byte
5622 codePoint = 0xFFFD
5623 bytesPerSequence = 1
5624 } else if (codePoint > 0xFFFF) {
5625 // encode to utf16 (surrogate pair dance)
5626 codePoint -= 0x10000
5627 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5628 codePoint = 0xDC00 | codePoint & 0x3FF
5629 }
5630
5631 res.push(codePoint)
5632 i += bytesPerSequence
5633 }
5634
5635 return decodeCodePointsArray(res)
5636 }
5637
5638 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5639 // the lowest limit is Chrome, with 0x10000 args.
5640 // We go 1 magnitude less, for safety
5641 var MAX_ARGUMENTS_LENGTH = 0x1000
5642
5643 function decodeCodePointsArray (codePoints) {
5644 var len = codePoints.length
5645 if (len <= MAX_ARGUMENTS_LENGTH) {
5646 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5647 }
5648
5649 // Decode in chunks to avoid "call stack size exceeded".
5650 var res = ''
5651 var i = 0
5652 while (i < len) {
5653 res += String.fromCharCode.apply(
5654 String,
5655 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5656 )
5657 }
5658 return res
5659 }
5660
5661 function asciiSlice (buf, start, end) {
5662 var ret = ''
5663 end = Math.min(buf.length, end)
5664
5665 for (var i = start; i < end; ++i) {
5666 ret += String.fromCharCode(buf[i] & 0x7F)
5667 }
5668 return ret
5669 }
5670
5671 function latin1Slice (buf, start, end) {
5672 var ret = ''
5673 end = Math.min(buf.length, end)
5674
5675 for (var i = start; i < end; ++i) {
5676 ret += String.fromCharCode(buf[i])
5677 }
5678 return ret
5679 }
5680
5681 function hexSlice (buf, start, end) {
5682 var len = buf.length
5683
5684 if (!start || start < 0) start = 0
5685 if (!end || end < 0 || end > len) end = len
5686
5687 var out = ''
5688 for (var i = start; i < end; ++i) {
5689 out += toHex(buf[i])
5690 }
5691 return out
5692 }
5693
5694 function utf16leSlice (buf, start, end) {
5695 var bytes = buf.slice(start, end)
5696 var res = ''
5697 for (var i = 0; i < bytes.length; i += 2) {
5698 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5699 }
5700 return res
5701 }
5702
5703 Buffer.prototype.slice = function slice (start, end) {
5704 var len = this.length
5705 start = ~~start
5706 end = end === undefined ? len : ~~end
5707
5708 if (start < 0) {
5709 start += len
5710 if (start < 0) start = 0
5711 } else if (start > len) {
5712 start = len
5713 }
5714
5715 if (end < 0) {
5716 end += len
5717 if (end < 0) end = 0
5718 } else if (end > len) {
5719 end = len
5720 }
5721
5722 if (end < start) end = start
5723
5724 var newBuf = this.subarray(start, end)
5725 // Return an augmented `Uint8Array` instance
5726 newBuf.__proto__ = Buffer.prototype
5727 return newBuf
5728 }
5729
5730 /*
5731 * Need to make sure that buffer isn't trying to write out of bounds.
5732 */
5733 function checkOffset (offset, ext, length) {
5734 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5735 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5736 }
5737
5738 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5739 offset = offset >>> 0
5740 byteLength = byteLength >>> 0
5741 if (!noAssert) checkOffset(offset, byteLength, this.length)
5742
5743 var val = this[offset]
5744 var mul = 1
5745 var i = 0
5746 while (++i < byteLength && (mul *= 0x100)) {
5747 val += this[offset + i] * mul
5748 }
5749
5750 return val
5751 }
5752
5753 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5754 offset = offset >>> 0
5755 byteLength = byteLength >>> 0
5756 if (!noAssert) {
5757 checkOffset(offset, byteLength, this.length)
5758 }
5759
5760 var val = this[offset + --byteLength]
5761 var mul = 1
5762 while (byteLength > 0 && (mul *= 0x100)) {
5763 val += this[offset + --byteLength] * mul
5764 }
5765
5766 return val
5767 }
5768
5769 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5770 offset = offset >>> 0
5771 if (!noAssert) checkOffset(offset, 1, this.length)
5772 return this[offset]
5773 }
5774
5775 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5776 offset = offset >>> 0
5777 if (!noAssert) checkOffset(offset, 2, this.length)
5778 return this[offset] | (this[offset + 1] << 8)
5779 }
5780
5781 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5782 offset = offset >>> 0
5783 if (!noAssert) checkOffset(offset, 2, this.length)
5784 return (this[offset] << 8) | this[offset + 1]
5785 }
5786
5787 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5788 offset = offset >>> 0
5789 if (!noAssert) checkOffset(offset, 4, this.length)
5790
5791 return ((this[offset]) |
5792 (this[offset + 1] << 8) |
5793 (this[offset + 2] << 16)) +
5794 (this[offset + 3] * 0x1000000)
5795 }
5796
5797 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 4, this.length)
5800
5801 return (this[offset] * 0x1000000) +
5802 ((this[offset + 1] << 16) |
5803 (this[offset + 2] << 8) |
5804 this[offset + 3])
5805 }
5806
5807 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5808 offset = offset >>> 0
5809 byteLength = byteLength >>> 0
5810 if (!noAssert) checkOffset(offset, byteLength, this.length)
5811
5812 var val = this[offset]
5813 var mul = 1
5814 var i = 0
5815 while (++i < byteLength && (mul *= 0x100)) {
5816 val += this[offset + i] * mul
5817 }
5818 mul *= 0x80
5819
5820 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5821
5822 return val
5823 }
5824
5825 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5826 offset = offset >>> 0
5827 byteLength = byteLength >>> 0
5828 if (!noAssert) checkOffset(offset, byteLength, this.length)
5829
5830 var i = byteLength
5831 var mul = 1
5832 var val = this[offset + --i]
5833 while (i > 0 && (mul *= 0x100)) {
5834 val += this[offset + --i] * mul
5835 }
5836 mul *= 0x80
5837
5838 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5839
5840 return val
5841 }
5842
5843 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5844 offset = offset >>> 0
5845 if (!noAssert) checkOffset(offset, 1, this.length)
5846 if (!(this[offset] & 0x80)) return (this[offset])
5847 return ((0xff - this[offset] + 1) * -1)
5848 }
5849
5850 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5851 offset = offset >>> 0
5852 if (!noAssert) checkOffset(offset, 2, this.length)
5853 var val = this[offset] | (this[offset + 1] << 8)
5854 return (val & 0x8000) ? val | 0xFFFF0000 : val
5855 }
5856
5857 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5858 offset = offset >>> 0
5859 if (!noAssert) checkOffset(offset, 2, this.length)
5860 var val = this[offset + 1] | (this[offset] << 8)
5861 return (val & 0x8000) ? val | 0xFFFF0000 : val
5862 }
5863
5864 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5865 offset = offset >>> 0
5866 if (!noAssert) checkOffset(offset, 4, this.length)
5867
5868 return (this[offset]) |
5869 (this[offset + 1] << 8) |
5870 (this[offset + 2] << 16) |
5871 (this[offset + 3] << 24)
5872 }
5873
5874 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5875 offset = offset >>> 0
5876 if (!noAssert) checkOffset(offset, 4, this.length)
5877
5878 return (this[offset] << 24) |
5879 (this[offset + 1] << 16) |
5880 (this[offset + 2] << 8) |
5881 (this[offset + 3])
5882 }
5883
5884 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5885 offset = offset >>> 0
5886 if (!noAssert) checkOffset(offset, 4, this.length)
5887 return ieee754.read(this, offset, true, 23, 4)
5888 }
5889
5890 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5891 offset = offset >>> 0
5892 if (!noAssert) checkOffset(offset, 4, this.length)
5893 return ieee754.read(this, offset, false, 23, 4)
5894 }
5895
5896 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5897 offset = offset >>> 0
5898 if (!noAssert) checkOffset(offset, 8, this.length)
5899 return ieee754.read(this, offset, true, 52, 8)
5900 }
5901
5902 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5903 offset = offset >>> 0
5904 if (!noAssert) checkOffset(offset, 8, this.length)
5905 return ieee754.read(this, offset, false, 52, 8)
5906 }
5907
5908 function checkInt (buf, value, offset, ext, max, min) {
5909 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5910 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5911 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5912 }
5913
5914 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5915 value = +value
5916 offset = offset >>> 0
5917 byteLength = byteLength >>> 0
5918 if (!noAssert) {
5919 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5920 checkInt(this, value, offset, byteLength, maxBytes, 0)
5921 }
5922
5923 var mul = 1
5924 var i = 0
5925 this[offset] = value & 0xFF
5926 while (++i < byteLength && (mul *= 0x100)) {
5927 this[offset + i] = (value / mul) & 0xFF
5928 }
5929
5930 return offset + byteLength
5931 }
5932
5933 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5934 value = +value
5935 offset = offset >>> 0
5936 byteLength = byteLength >>> 0
5937 if (!noAssert) {
5938 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5939 checkInt(this, value, offset, byteLength, maxBytes, 0)
5940 }
5941
5942 var i = byteLength - 1
5943 var mul = 1
5944 this[offset + i] = value & 0xFF
5945 while (--i >= 0 && (mul *= 0x100)) {
5946 this[offset + i] = (value / mul) & 0xFF
5947 }
5948
5949 return offset + byteLength
5950 }
5951
5952 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5953 value = +value
5954 offset = offset >>> 0
5955 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5956 this[offset] = (value & 0xff)
5957 return offset + 1
5958 }
5959
5960 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5961 value = +value
5962 offset = offset >>> 0
5963 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5964 this[offset] = (value & 0xff)
5965 this[offset + 1] = (value >>> 8)
5966 return offset + 2
5967 }
5968
5969 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5970 value = +value
5971 offset = offset >>> 0
5972 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5973 this[offset] = (value >>> 8)
5974 this[offset + 1] = (value & 0xff)
5975 return offset + 2
5976 }
5977
5978 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5979 value = +value
5980 offset = offset >>> 0
5981 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5982 this[offset + 3] = (value >>> 24)
5983 this[offset + 2] = (value >>> 16)
5984 this[offset + 1] = (value >>> 8)
5985 this[offset] = (value & 0xff)
5986 return offset + 4
5987 }
5988
5989 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5990 value = +value
5991 offset = offset >>> 0
5992 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5993 this[offset] = (value >>> 24)
5994 this[offset + 1] = (value >>> 16)
5995 this[offset + 2] = (value >>> 8)
5996 this[offset + 3] = (value & 0xff)
5997 return offset + 4
5998 }
5999
6000 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6001 value = +value
6002 offset = offset >>> 0
6003 if (!noAssert) {
6004 var limit = Math.pow(2, (8 * byteLength) - 1)
6005
6006 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6007 }
6008
6009 var i = 0
6010 var mul = 1
6011 var sub = 0
6012 this[offset] = value & 0xFF
6013 while (++i < byteLength && (mul *= 0x100)) {
6014 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6015 sub = 1
6016 }
6017 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6018 }
6019
6020 return offset + byteLength
6021 }
6022
6023 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6024 value = +value
6025 offset = offset >>> 0
6026 if (!noAssert) {
6027 var limit = Math.pow(2, (8 * byteLength) - 1)
6028
6029 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6030 }
6031
6032 var i = byteLength - 1
6033 var mul = 1
6034 var sub = 0
6035 this[offset + i] = value & 0xFF
6036 while (--i >= 0 && (mul *= 0x100)) {
6037 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6038 sub = 1
6039 }
6040 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6041 }
6042
6043 return offset + byteLength
6044 }
6045
6046 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6047 value = +value
6048 offset = offset >>> 0
6049 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6050 if (value < 0) value = 0xff + value + 1
6051 this[offset] = (value & 0xff)
6052 return offset + 1
6053 }
6054
6055 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6056 value = +value
6057 offset = offset >>> 0
6058 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6059 this[offset] = (value & 0xff)
6060 this[offset + 1] = (value >>> 8)
6061 return offset + 2
6062 }
6063
6064 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6065 value = +value
6066 offset = offset >>> 0
6067 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6068 this[offset] = (value >>> 8)
6069 this[offset + 1] = (value & 0xff)
6070 return offset + 2
6071 }
6072
6073 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6074 value = +value
6075 offset = offset >>> 0
6076 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6077 this[offset] = (value & 0xff)
6078 this[offset + 1] = (value >>> 8)
6079 this[offset + 2] = (value >>> 16)
6080 this[offset + 3] = (value >>> 24)
6081 return offset + 4
6082 }
6083
6084 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6085 value = +value
6086 offset = offset >>> 0
6087 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6088 if (value < 0) value = 0xffffffff + value + 1
6089 this[offset] = (value >>> 24)
6090 this[offset + 1] = (value >>> 16)
6091 this[offset + 2] = (value >>> 8)
6092 this[offset + 3] = (value & 0xff)
6093 return offset + 4
6094 }
6095
6096 function checkIEEE754 (buf, value, offset, ext, max, min) {
6097 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6098 if (offset < 0) throw new RangeError('Index out of range')
6099 }
6100
6101 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6102 value = +value
6103 offset = offset >>> 0
6104 if (!noAssert) {
6105 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6106 }
6107 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6108 return offset + 4
6109 }
6110
6111 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6112 return writeFloat(this, value, offset, true, noAssert)
6113 }
6114
6115 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6116 return writeFloat(this, value, offset, false, noAssert)
6117 }
6118
6119 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6120 value = +value
6121 offset = offset >>> 0
6122 if (!noAssert) {
6123 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6124 }
6125 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6126 return offset + 8
6127 }
6128
6129 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6130 return writeDouble(this, value, offset, true, noAssert)
6131 }
6132
6133 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6134 return writeDouble(this, value, offset, false, noAssert)
6135 }
6136
6137 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6138 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6139 if (!start) start = 0
6140 if (!end && end !== 0) end = this.length
6141 if (targetStart >= target.length) targetStart = target.length
6142 if (!targetStart) targetStart = 0
6143 if (end > 0 && end < start) end = start
6144
6145 // Copy 0 bytes; we're done
6146 if (end === start) return 0
6147 if (target.length === 0 || this.length === 0) return 0
6148
6149 // Fatal error conditions
6150 if (targetStart < 0) {
6151 throw new RangeError('targetStart out of bounds')
6152 }
6153 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6154 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6155
6156 // Are we oob?
6157 if (end > this.length) end = this.length
6158 if (target.length - targetStart < end - start) {
6159 end = target.length - targetStart + start
6160 }
6161
6162 var len = end - start
6163 var i
6164
6165 if (this === target && start < targetStart && targetStart < end) {
6166 // descending copy from end
6167 for (i = len - 1; i >= 0; --i) {
6168 target[i + targetStart] = this[i + start]
6169 }
6170 } else if (len < 1000) {
6171 // ascending copy from start
6172 for (i = 0; i < len; ++i) {
6173 target[i + targetStart] = this[i + start]
6174 }
6175 } else {
6176 Uint8Array.prototype.set.call(
6177 target,
6178 this.subarray(start, start + len),
6179 targetStart
6180 )
6181 }
6182
6183 return len
6184 }
6185
6186 // Usage:
6187 // buffer.fill(number[, offset[, end]])
6188 // buffer.fill(buffer[, offset[, end]])
6189 // buffer.fill(string[, offset[, end]][, encoding])
6190 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6191 // Handle string cases:
6192 if (typeof val === 'string') {
6193 if (typeof start === 'string') {
6194 encoding = start
6195 start = 0
6196 end = this.length
6197 } else if (typeof end === 'string') {
6198 encoding = end
6199 end = this.length
6200 }
6201 if (val.length === 1) {
6202 var code = val.charCodeAt(0)
6203 if (code < 256) {
6204 val = code
6205 }
6206 }
6207 if (encoding !== undefined && typeof encoding !== 'string') {
6208 throw new TypeError('encoding must be a string')
6209 }
6210 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6211 throw new TypeError('Unknown encoding: ' + encoding)
6212 }
6213 } else if (typeof val === 'number') {
6214 val = val & 255
6215 }
6216
6217 // Invalid ranges are not set to a default, so can range check early.
6218 if (start < 0 || this.length < start || this.length < end) {
6219 throw new RangeError('Out of range index')
6220 }
6221
6222 if (end <= start) {
6223 return this
6224 }
6225
6226 start = start >>> 0
6227 end = end === undefined ? this.length : end >>> 0
6228
6229 if (!val) val = 0
6230
6231 var i
6232 if (typeof val === 'number') {
6233 for (i = start; i < end; ++i) {
6234 this[i] = val
6235 }
6236 } else {
6237 var bytes = Buffer.isBuffer(val)
6238 ? val
6239 : new Buffer(val, encoding)
6240 var len = bytes.length
6241 for (i = 0; i < end - start; ++i) {
6242 this[i + start] = bytes[i % len]
6243 }
6244 }
6245
6246 return this
6247 }
6248
6249 // HELPER FUNCTIONS
6250 // ================
6251
6252 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6253
6254 function base64clean (str) {
6255 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6256 str = str.trim().replace(INVALID_BASE64_RE, '')
6257 // Node converts strings with length < 2 to ''
6258 if (str.length < 2) return ''
6259 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6260 while (str.length % 4 !== 0) {
6261 str = str + '='
6262 }
6263 return str
6264 }
6265
6266 function toHex (n) {
6267 if (n < 16) return '0' + n.toString(16)
6268 return n.toString(16)
6269 }
6270
6271 function utf8ToBytes (string, units) {
6272 units = units || Infinity
6273 var codePoint
6274 var length = string.length
6275 var leadSurrogate = null
6276 var bytes = []
6277
6278 for (var i = 0; i < length; ++i) {
6279 codePoint = string.charCodeAt(i)
6280
6281 // is surrogate component
6282 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6283 // last char was a lead
6284 if (!leadSurrogate) {
6285 // no lead yet
6286 if (codePoint > 0xDBFF) {
6287 // unexpected trail
6288 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6289 continue
6290 } else if (i + 1 === length) {
6291 // unpaired lead
6292 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6293 continue
6294 }
6295
6296 // valid lead
6297 leadSurrogate = codePoint
6298
6299 continue
6300 }
6301
6302 // 2 leads in a row
6303 if (codePoint < 0xDC00) {
6304 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6305 leadSurrogate = codePoint
6306 continue
6307 }
6308
6309 // valid surrogate pair
6310 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6311 } else if (leadSurrogate) {
6312 // valid bmp char, but last char was a lead
6313 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6314 }
6315
6316 leadSurrogate = null
6317
6318 // encode utf8
6319 if (codePoint < 0x80) {
6320 if ((units -= 1) < 0) break
6321 bytes.push(codePoint)
6322 } else if (codePoint < 0x800) {
6323 if ((units -= 2) < 0) break
6324 bytes.push(
6325 codePoint >> 0x6 | 0xC0,
6326 codePoint & 0x3F | 0x80
6327 )
6328 } else if (codePoint < 0x10000) {
6329 if ((units -= 3) < 0) break
6330 bytes.push(
6331 codePoint >> 0xC | 0xE0,
6332 codePoint >> 0x6 & 0x3F | 0x80,
6333 codePoint & 0x3F | 0x80
6334 )
6335 } else if (codePoint < 0x110000) {
6336 if ((units -= 4) < 0) break
6337 bytes.push(
6338 codePoint >> 0x12 | 0xF0,
6339 codePoint >> 0xC & 0x3F | 0x80,
6340 codePoint >> 0x6 & 0x3F | 0x80,
6341 codePoint & 0x3F | 0x80
6342 )
6343 } else {
6344 throw new Error('Invalid code point')
6345 }
6346 }
6347
6348 return bytes
6349 }
6350
6351 function asciiToBytes (str) {
6352 var byteArray = []
6353 for (var i = 0; i < str.length; ++i) {
6354 // Node's code seems to be doing this and not & 0x7F..
6355 byteArray.push(str.charCodeAt(i) & 0xFF)
6356 }
6357 return byteArray
6358 }
6359
6360 function utf16leToBytes (str, units) {
6361 var c, hi, lo
6362 var byteArray = []
6363 for (var i = 0; i < str.length; ++i) {
6364 if ((units -= 2) < 0) break
6365
6366 c = str.charCodeAt(i)
6367 hi = c >> 8
6368 lo = c % 256
6369 byteArray.push(lo)
6370 byteArray.push(hi)
6371 }
6372
6373 return byteArray
6374 }
6375
6376 function base64ToBytes (str) {
6377 return base64.toByteArray(base64clean(str))
6378 }
6379
6380 function blitBuffer (src, dst, offset, length) {
6381 for (var i = 0; i < length; ++i) {
6382 if ((i + offset >= dst.length) || (i >= src.length)) break
6383 dst[i + offset] = src[i]
6384 }
6385 return i
6386 }
6387
6388 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6389 function isArrayBufferView (obj) {
6390 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6391 }
6392
6393 function numberIsNaN (obj) {
6394 return obj !== obj // eslint-disable-line no-self-compare
6395 }
6396
6397 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6398 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6399 var e, m
6400 var eLen = nBytes * 8 - mLen - 1
6401 var eMax = (1 << eLen) - 1
6402 var eBias = eMax >> 1
6403 var nBits = -7
6404 var i = isLE ? (nBytes - 1) : 0
6405 var d = isLE ? -1 : 1
6406 var s = buffer[offset + i]
6407
6408 i += d
6409
6410 e = s & ((1 << (-nBits)) - 1)
6411 s >>= (-nBits)
6412 nBits += eLen
6413 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6414
6415 m = e & ((1 << (-nBits)) - 1)
6416 e >>= (-nBits)
6417 nBits += mLen
6418 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6419
6420 if (e === 0) {
6421 e = 1 - eBias
6422 } else if (e === eMax) {
6423 return m ? NaN : ((s ? -1 : 1) * Infinity)
6424 } else {
6425 m = m + Math.pow(2, mLen)
6426 e = e - eBias
6427 }
6428 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6429 }
6430
6431 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6432 var e, m, c
6433 var eLen = nBytes * 8 - mLen - 1
6434 var eMax = (1 << eLen) - 1
6435 var eBias = eMax >> 1
6436 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6437 var i = isLE ? 0 : (nBytes - 1)
6438 var d = isLE ? 1 : -1
6439 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6440
6441 value = Math.abs(value)
6442
6443 if (isNaN(value) || value === Infinity) {
6444 m = isNaN(value) ? 1 : 0
6445 e = eMax
6446 } else {
6447 e = Math.floor(Math.log(value) / Math.LN2)
6448 if (value * (c = Math.pow(2, -e)) < 1) {
6449 e--
6450 c *= 2
6451 }
6452 if (e + eBias >= 1) {
6453 value += rt / c
6454 } else {
6455 value += rt * Math.pow(2, 1 - eBias)
6456 }
6457 if (value * c >= 2) {
6458 e++
6459 c /= 2
6460 }
6461
6462 if (e + eBias >= eMax) {
6463 m = 0
6464 e = eMax
6465 } else if (e + eBias >= 1) {
6466 m = (value * c - 1) * Math.pow(2, mLen)
6467 e = e + eBias
6468 } else {
6469 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6470 e = 0
6471 }
6472 }
6473
6474 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6475
6476 e = (e << mLen) | m
6477 eLen += mLen
6478 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6479
6480 buffer[offset + i - d] |= s * 128
6481 }
6482
6483 },{}],4:[function(require,module,exports){
6484 window.basex = require('base-x')
6485 },{"base-x":5}],5:[function(require,module,exports){
6486 // base-x encoding
6487 // Forked from https://github.com/cryptocoinjs/bs58
6488 // Originally written by Mike Hearn for BitcoinJ
6489 // Copyright (c) 2011 Google Inc
6490 // Ported to JavaScript by Stefan Thomas
6491 // Merged Buffer refactorings from base58-native by Stephen Pair
6492 // Copyright (c) 2013 BitPay Inc
6493
6494 var Buffer = require('safe-buffer').Buffer
6495
6496 module.exports = function base (ALPHABET) {
6497 var ALPHABET_MAP = {}
6498 var BASE = ALPHABET.length
6499 var LEADER = ALPHABET.charAt(0)
6500
6501 // pre-compute lookup table
6502 for (var z = 0; z < ALPHABET.length; z++) {
6503 var x = ALPHABET.charAt(z)
6504
6505 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6506 ALPHABET_MAP[x] = z
6507 }
6508
6509 function encode (source) {
6510 if (source.length === 0) return ''
6511
6512 var digits = [0]
6513 for (var i = 0; i < source.length; ++i) {
6514 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6515 carry += digits[j] << 8
6516 digits[j] = carry % BASE
6517 carry = (carry / BASE) | 0
6518 }
6519
6520 while (carry > 0) {
6521 digits.push(carry % BASE)
6522 carry = (carry / BASE) | 0
6523 }
6524 }
6525
6526 var string = ''
6527
6528 // deal with leading zeros
6529 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6530 // convert digits to a string
6531 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6532
6533 return string
6534 }
6535
6536 function decodeUnsafe (string) {
6537 if (string.length === 0) return Buffer.allocUnsafe(0)
6538
6539 var bytes = [0]
6540 for (var i = 0; i < string.length; i++) {
6541 var value = ALPHABET_MAP[string[i]]
6542 if (value === undefined) return
6543
6544 for (var j = 0, carry = value; j < bytes.length; ++j) {
6545 carry += bytes[j] * BASE
6546 bytes[j] = carry & 0xff
6547 carry >>= 8
6548 }
6549
6550 while (carry > 0) {
6551 bytes.push(carry & 0xff)
6552 carry >>= 8
6553 }
6554 }
6555
6556 // deal with leading zeros
6557 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6558 bytes.push(0)
6559 }
6560
6561 return Buffer.from(bytes.reverse())
6562 }
6563
6564 function decode (string) {
6565 var buffer = decodeUnsafe(string)
6566 if (buffer) return buffer
6567
6568 throw new Error('Non-base' + BASE + ' character')
6569 }
6570
6571 return {
6572 encode: encode,
6573 decodeUnsafe: decodeUnsafe,
6574 decode: decode
6575 }
6576 }
6577
6578 },{"safe-buffer":6}],6:[function(require,module,exports){
6579 module.exports = require('buffer')
6580
6581 },{"buffer":2}]},{},[4])(4)
6582 });</script>
6583 <script>(function (root) {
6584 "use strict";
6585
6586 /***** unorm.js *****/
6587
6588 /*
6589 * UnicodeNormalizer 1.0.0
6590 * Copyright (c) 2008 Matsuza
6591 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6592 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6593 * $Rev: 13309 $
6594 */
6595
6596 var DEFAULT_FEATURE = [null, 0, {}];
6597 var CACHE_THRESHOLD = 10;
6598 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6599 var NCount = VCount * TCount; // 588
6600 var SCount = LCount * NCount; // 11172
6601
6602 var UChar = function(cp, feature){
6603 this.codepoint = cp;
6604 this.feature = feature;
6605 };
6606
6607 // Strategies
6608 var cache = {};
6609 var cacheCounter = [];
6610 for (var i = 0; i <= 0xFF; ++i){
6611 cacheCounter[i] = 0;
6612 }
6613
6614 function fromCache(next, cp, needFeature){
6615 var ret = cache[cp];
6616 if(!ret){
6617 ret = next(cp, needFeature);
6618 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6619 cache[cp] = ret;
6620 }
6621 }
6622 return ret;
6623 }
6624
6625 function fromData(next, cp, needFeature){
6626 var hash = cp & 0xFF00;
6627 var dunit = UChar.udata[hash] || {};
6628 var f = dunit[cp];
6629 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6630 }
6631 function fromCpOnly(next, cp, needFeature){
6632 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6633 }
6634 function fromRuleBasedJamo(next, cp, needFeature){
6635 var j;
6636 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6637 return next(cp, needFeature);
6638 }
6639 if(LBase <= cp && cp < LBase + LCount){
6640 var c = {};
6641 var base = (cp - LBase) * VCount;
6642 for (j = 0; j < VCount; ++j){
6643 c[VBase + j] = SBase + TCount * (j + base);
6644 }
6645 return new UChar(cp, [,,c]);
6646 }
6647
6648 var SIndex = cp - SBase;
6649 var TIndex = SIndex % TCount;
6650 var feature = [];
6651 if(TIndex !== 0){
6652 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6653 } else {
6654 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6655 feature[2] = {};
6656 for (j = 1; j < TCount; ++j){
6657 feature[2][TBase + j] = cp + j;
6658 }
6659 }
6660 return new UChar(cp, feature);
6661 }
6662 function fromCpFilter(next, cp, needFeature){
6663 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6664 }
6665
6666 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6667
6668 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6669 return function (cp, needFeature) {
6670 return strategy(next, cp, needFeature);
6671 };
6672 }, null);
6673
6674 UChar.isHighSurrogate = function(cp){
6675 return cp >= 0xD800 && cp <= 0xDBFF;
6676 };
6677 UChar.isLowSurrogate = function(cp){
6678 return cp >= 0xDC00 && cp <= 0xDFFF;
6679 };
6680
6681 UChar.prototype.prepFeature = function(){
6682 if(!this.feature){
6683 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6684 }
6685 };
6686
6687 UChar.prototype.toString = function(){
6688 if(this.codepoint < 0x10000){
6689 return String.fromCharCode(this.codepoint);
6690 } else {
6691 var x = this.codepoint - 0x10000;
6692 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6693 }
6694 };
6695
6696 UChar.prototype.getDecomp = function(){
6697 this.prepFeature();
6698 return this.feature[0] || null;
6699 };
6700
6701 UChar.prototype.isCompatibility = function(){
6702 this.prepFeature();
6703 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6704 };
6705 UChar.prototype.isExclude = function(){
6706 this.prepFeature();
6707 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6708 };
6709 UChar.prototype.getCanonicalClass = function(){
6710 this.prepFeature();
6711 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6712 };
6713 UChar.prototype.getComposite = function(following){
6714 this.prepFeature();
6715 if(!this.feature[2]){
6716 return null;
6717 }
6718 var cp = this.feature[2][following.codepoint];
6719 return cp ? UChar.fromCharCode(cp) : null;
6720 };
6721
6722 var UCharIterator = function(str){
6723 this.str = str;
6724 this.cursor = 0;
6725 };
6726 UCharIterator.prototype.next = function(){
6727 if(!!this.str && this.cursor < this.str.length){
6728 var cp = this.str.charCodeAt(this.cursor++);
6729 var d;
6730 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6731 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6732 ++this.cursor;
6733 }
6734 return UChar.fromCharCode(cp);
6735 } else {
6736 this.str = null;
6737 return null;
6738 }
6739 };
6740
6741 var RecursDecompIterator = function(it, cano){
6742 this.it = it;
6743 this.canonical = cano;
6744 this.resBuf = [];
6745 };
6746
6747 RecursDecompIterator.prototype.next = function(){
6748 function recursiveDecomp(cano, uchar){
6749 var decomp = uchar.getDecomp();
6750 if(!!decomp && !(cano && uchar.isCompatibility())){
6751 var ret = [];
6752 for(var i = 0; i < decomp.length; ++i){
6753 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6754 ret = ret.concat(a);
6755 }
6756 return ret;
6757 } else {
6758 return [uchar];
6759 }
6760 }
6761 if(this.resBuf.length === 0){
6762 var uchar = this.it.next();
6763 if(!uchar){
6764 return null;
6765 }
6766 this.resBuf = recursiveDecomp(this.canonical, uchar);
6767 }
6768 return this.resBuf.shift();
6769 };
6770
6771 var DecompIterator = function(it){
6772 this.it = it;
6773 this.resBuf = [];
6774 };
6775
6776 DecompIterator.prototype.next = function(){
6777 var cc;
6778 if(this.resBuf.length === 0){
6779 do{
6780 var uchar = this.it.next();
6781 if(!uchar){
6782 break;
6783 }
6784 cc = uchar.getCanonicalClass();
6785 var inspt = this.resBuf.length;
6786 if(cc !== 0){
6787 for(; inspt > 0; --inspt){
6788 var uchar2 = this.resBuf[inspt - 1];
6789 var cc2 = uchar2.getCanonicalClass();
6790 if(cc2 <= cc){
6791 break;
6792 }
6793 }
6794 }
6795 this.resBuf.splice(inspt, 0, uchar);
6796 } while(cc !== 0);
6797 }
6798 return this.resBuf.shift();
6799 };
6800
6801 var CompIterator = function(it){
6802 this.it = it;
6803 this.procBuf = [];
6804 this.resBuf = [];
6805 this.lastClass = null;
6806 };
6807
6808 CompIterator.prototype.next = function(){
6809 while(this.resBuf.length === 0){
6810 var uchar = this.it.next();
6811 if(!uchar){
6812 this.resBuf = this.procBuf;
6813 this.procBuf = [];
6814 break;
6815 }
6816 if(this.procBuf.length === 0){
6817 this.lastClass = uchar.getCanonicalClass();
6818 this.procBuf.push(uchar);
6819 } else {
6820 var starter = this.procBuf[0];
6821 var composite = starter.getComposite(uchar);
6822 var cc = uchar.getCanonicalClass();
6823 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6824 this.procBuf[0] = composite;
6825 } else {
6826 if(cc === 0){
6827 this.resBuf = this.procBuf;
6828 this.procBuf = [];
6829 }
6830 this.lastClass = cc;
6831 this.procBuf.push(uchar);
6832 }
6833 }
6834 }
6835 return this.resBuf.shift();
6836 };
6837
6838 var createIterator = function(mode, str){
6839 switch(mode){
6840 case "NFD":
6841 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6842 case "NFKD":
6843 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6844 case "NFC":
6845 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6846 case "NFKC":
6847 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6848 }
6849 throw mode + " is invalid";
6850 };
6851 var normalize = function(mode, str){
6852 var it = createIterator(mode, str);
6853 var ret = "";
6854 var uchar;
6855 while(!!(uchar = it.next())){
6856 ret += uchar.toString();
6857 }
6858 return ret;
6859 };
6860
6861 /* API functions */
6862 function nfd(str){
6863 return normalize("NFD", str);
6864 }
6865
6866 function nfkd(str){
6867 return normalize("NFKD", str);
6868 }
6869
6870 function nfc(str){
6871 return normalize("NFC", str);
6872 }
6873
6874 function nfkc(str){
6875 return normalize("NFKC", str);
6876 }
6877
6878 /* Unicode data */
6879 UChar.udata={
6880 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
6881 256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
6882 512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},
6883 768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},
6884 1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
6885 1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
6886 1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
6887 1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
6888 2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},
6889 2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
6890 2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},
6891 2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
6892 3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
6893 3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
6894 3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
6895 3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
6896 4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
6897 4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},
6898 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6899 4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},
6900 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6901 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6902 5632:{71231:[,9],71350:[,9],71351:[,7]},
6903 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6904 6144:{6313:[,228]},
6905 6400:{6457:[,222],6458:[,230],6459:[,220]},
6906 6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},
6907 6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
6908 7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},
6909 7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
6910 7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
6911 7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
6912 8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
6913 8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
6914 8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
6915 8960:{9001:[[12296]],9002:[[12297]]},
6916 9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
6917 10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
6918 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6919 11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
6920 11776:{11935:[[27597],256],12019:[[40863],256]},
6921 12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
6922 12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
6923 12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
6924 12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
6925 13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
6926 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6927 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6928 42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},
6929 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6930 43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
6931 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6932 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6933 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6934 48128:{113822:[,1]},
6935 53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
6936 53760:{119362:[,230],119363:[,230],119364:[,230]},
6937 54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
6938 54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
6939 54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
6940 55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
6941 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6942 60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
6943 61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
6944 61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
6945 63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
6946 63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
6947 64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
6948 64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
6949 64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
6950 64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
6951 65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
6952 65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
6953
6954 };
6955
6956 /***** Module to export */
6957 var unorm = {
6958 nfc: nfc,
6959 nfd: nfd,
6960 nfkc: nfkc,
6961 nfkd: nfkd
6962 };
6963
6964 /*globals module:true,define:true*/
6965
6966 // CommonJS
6967 if (typeof module === "object") {
6968 module.exports = unorm;
6969
6970 // AMD
6971 } else if (typeof define === "function" && define.amd) {
6972 define("unorm", function () {
6973 return unorm;
6974 });
6975
6976 // Global
6977 } else {
6978 root.unorm = unorm;
6979 }
6980
6981 /***** Export as shim for String::normalize method *****/
6982 /*
6983 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6984
6985 21.1.3.12 String.prototype.normalize(form="NFC")
6986 When the normalize method is called with one argument form, the following steps are taken:
6987
6988 1. Let O be CheckObjectCoercible(this value).
6989 2. Let S be ToString(O).
6990 3. ReturnIfAbrupt(S).
6991 4. If form is not provided or undefined let form be "NFC".
6992 5. Let f be ToString(form).
6993 6. ReturnIfAbrupt(f).
6994 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
6995 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.
6996 9. Return ns.
6997
6998 The length property of the normalize method is 0.
6999
7000 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
7001 */
7002 unorm.shimApplied = false;
7003
7004 if (!String.prototype.normalize) {
7005 String.prototype.normalize = function(form) {
7006 var str = "" + this;
7007 form = form === undefined ? "NFC" : form;
7008
7009 if (form === "NFC") {
7010 return unorm.nfc(str);
7011 } else if (form === "NFD") {
7012 return unorm.nfd(str);
7013 } else if (form === "NFKC") {
7014 return unorm.nfkc(str);
7015 } else if (form === "NFKD") {
7016 return unorm.nfkd(str);
7017 } else {
7018 throw new RangeError("Invalid normalization form: " + form);
7019 }
7020 };
7021
7022 unorm.shimApplied = true;
7023 }
7024 }(this));
7025 </script>
7026 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
7027 !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)
7028 },_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
7029 },removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
7030 </script>
7031 <script>/*!
7032 * Bootstrap v3.2.0 (http://getbootstrap.com)
7033 * Copyright 2011-2014 Twitter, Inc.
7034 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7035 */
7036 if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);</script>
7037 <script>(function() {
7038 'use strict';
7039
7040 /**
7041 * Extend an Object with another Object's properties.
7042 *
7043 * The source objects are specified as additional arguments.
7044 *
7045 * @param dst Object the object to extend.
7046 *
7047 * @return Object the final object.
7048 */
7049 var _extend = function(dst) {
7050 var sources = Array.prototype.slice.call(arguments, 1);
7051 for (var i=0; i<sources.length; ++i) {
7052 var src = sources[i];
7053 for (var p in src) {
7054 if (src.hasOwnProperty(p)) dst[p] = src[p];
7055 }
7056 }
7057 return dst;
7058 };
7059
7060
7061 /**
7062 * Defer execution of given function.
7063 * @param {Function} func
7064 */
7065 var _defer = function(func) {
7066 if (typeof setImmediate === 'function') {
7067 return setImmediate(func);
7068 } else {
7069 return setTimeout(func, 0);
7070 }
7071 };
7072
7073 /**
7074 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7075 */
7076 var Levenshtein = {
7077 /**
7078 * Calculate levenshtein distance of the two strings.
7079 *
7080 * @param str1 String the first string.
7081 * @param str2 String the second string.
7082 * @return Integer the levenshtein distance (0 and above).
7083 */
7084 get: function(str1, str2) {
7085 // base cases
7086 if (str1 === str2) return 0;
7087 if (str1.length === 0) return str2.length;
7088 if (str2.length === 0) return str1.length;
7089
7090 // two rows
7091 var prevRow = new Array(str2.length + 1),
7092 curCol, nextCol, i, j, tmp;
7093
7094 // initialise previous row
7095 for (i=0; i<prevRow.length; ++i) {
7096 prevRow[i] = i;
7097 }
7098
7099 // calculate current row distance from previous row
7100 for (i=0; i<str1.length; ++i) {
7101 nextCol = i + 1;
7102
7103 for (j=0; j<str2.length; ++j) {
7104 curCol = nextCol;
7105
7106 // substution
7107 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7108 // insertion
7109 tmp = curCol + 1;
7110 if (nextCol > tmp) {
7111 nextCol = tmp;
7112 }
7113 // deletion
7114 tmp = prevRow[j + 1] + 1;
7115 if (nextCol > tmp) {
7116 nextCol = tmp;
7117 }
7118
7119 // copy current col value into previous (in preparation for next iteration)
7120 prevRow[j] = curCol;
7121 }
7122
7123 // copy last col value into previous (in preparation for next iteration)
7124 prevRow[j] = nextCol;
7125 }
7126
7127 return nextCol;
7128 },
7129
7130 /**
7131 * Asynchronously calculate levenshtein distance of the two strings.
7132 *
7133 * @param str1 String the first string.
7134 * @param str2 String the second string.
7135 * @param cb Function callback function with signature: function(Error err, int distance)
7136 * @param [options] Object additional options.
7137 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7138 */
7139 getAsync: function(str1, str2, cb, options) {
7140 options = _extend({}, {
7141 progress: null
7142 }, options);
7143
7144 // base cases
7145 if (str1 === str2) return cb(null, 0);
7146 if (str1.length === 0) return cb(null, str2.length);
7147 if (str2.length === 0) return cb(null, str1.length);
7148
7149 // two rows
7150 var prevRow = new Array(str2.length + 1),
7151 curCol, nextCol,
7152 i, j, tmp,
7153 startTime, currentTime;
7154
7155 // initialise previous row
7156 for (i=0; i<prevRow.length; ++i) {
7157 prevRow[i] = i;
7158 }
7159
7160 nextCol = 1;
7161 i = 0;
7162 j = -1;
7163
7164 var __calculate = function() {
7165 // reset timer
7166 startTime = new Date().valueOf();
7167 currentTime = startTime;
7168
7169 // keep going until one second has elapsed
7170 while (currentTime - startTime < 1000) {
7171 // reached end of current row?
7172 if (str2.length <= (++j)) {
7173 // copy current into previous (in preparation for next iteration)
7174 prevRow[j] = nextCol;
7175
7176 // if already done all chars
7177 if (str1.length <= (++i)) {
7178 return cb(null, nextCol);
7179 }
7180 // else if we have more left to do
7181 else {
7182 nextCol = i + 1;
7183 j = 0;
7184 }
7185 }
7186
7187 // calculation
7188 curCol = nextCol;
7189
7190 // substution
7191 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7192 // insertion
7193 tmp = curCol + 1;
7194 if (nextCol > tmp) {
7195 nextCol = tmp;
7196 }
7197 // deletion
7198 tmp = prevRow[j + 1] + 1;
7199 if (nextCol > tmp) {
7200 nextCol = tmp;
7201 }
7202
7203 // copy current into previous (in preparation for next iteration)
7204 prevRow[j] = curCol;
7205
7206 // get current time
7207 currentTime = new Date().valueOf();
7208 }
7209
7210 // send a progress update?
7211 if (null !== options.progress) {
7212 try {
7213 options.progress.call(null, (i * 100.0/ str1.length));
7214 } catch (err) {
7215 return cb('Progress callback: ' + err.toString());
7216 }
7217 }
7218
7219 // next iteration
7220 _defer(__calculate);
7221 };
7222
7223 __calculate();
7224 }
7225
7226 };
7227
7228 // amd
7229 if (typeof define !== "undefined" && define !== null && define.amd) {
7230 define(function() {
7231 return Levenshtein;
7232 });
7233 }
7234 // commonjs
7235 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7236 module.exports = Levenshtein;
7237 }
7238 // web worker
7239 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7240 self.Levenshtein = Levenshtein;
7241 }
7242 // browser main thread
7243 else if (typeof window !== "undefined" && window !== null) {
7244 window.Levenshtein = Levenshtein;
7245 }
7246 }());
7247
7248 </script>
7249 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
7250 write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount;
7251 for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
7252 7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
7253 0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
7254 setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
7255 j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
7256 b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
7257 c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
7258 0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
7259 (d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
7260 78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
7261 j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
7262 a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
7263 a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
7264 2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
7265 LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
7266 this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
7267 [4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
7268 116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
7269 43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
7270 3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
7271 55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
7272 45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
7273 (a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
7274 correctLevel:2,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
7275 j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
7276 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7277 </script>
7278 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoinjs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
7279 (function (global){
7280 'use strict';
7281
7282 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7283 // original notice:
7284
7285 /*!
7286 * The buffer module from node.js, for the browser.
7287 *
7288 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7289 * @license MIT
7290 */
7291 function compare(a, b) {
7292 if (a === b) {
7293 return 0;
7294 }
7295
7296 var x = a.length;
7297 var y = b.length;
7298
7299 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
7300 if (a[i] !== b[i]) {
7301 x = a[i];
7302 y = b[i];
7303 break;
7304 }
7305 }
7306
7307 if (x < y) {
7308 return -1;
7309 }
7310 if (y < x) {
7311 return 1;
7312 }
7313 return 0;
7314 }
7315 function isBuffer(b) {
7316 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7317 return global.Buffer.isBuffer(b);
7318 }
7319 return !!(b != null && b._isBuffer);
7320 }
7321
7322 // based on node assert, original notice:
7323
7324 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
7325 //
7326 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7327 //
7328 // Originally from narwhal.js (http://narwhaljs.org)
7329 // Copyright (c) 2009 Thomas Robinson <280north.com>
7330 //
7331 // Permission is hereby granted, free of charge, to any person obtaining a copy
7332 // of this software and associated documentation files (the 'Software'), to
7333 // deal in the Software without restriction, including without limitation the
7334 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7335 // sell copies of the Software, and to permit persons to whom the Software is
7336 // furnished to do so, subject to the following conditions:
7337 //
7338 // The above copyright notice and this permission notice shall be included in
7339 // all copies or substantial portions of the Software.
7340 //
7341 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7342 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7343 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7344 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7345 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7346 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7347
7348 var util = require('util/');
7349 var hasOwn = Object.prototype.hasOwnProperty;
7350 var pSlice = Array.prototype.slice;
7351 var functionsHaveNames = (function () {
7352 return function foo() {}.name === 'foo';
7353 }());
7354 function pToString (obj) {
7355 return Object.prototype.toString.call(obj);
7356 }
7357 function isView(arrbuf) {
7358 if (isBuffer(arrbuf)) {
7359 return false;
7360 }
7361 if (typeof global.ArrayBuffer !== 'function') {
7362 return false;
7363 }
7364 if (typeof ArrayBuffer.isView === 'function') {
7365 return ArrayBuffer.isView(arrbuf);
7366 }
7367 if (!arrbuf) {
7368 return false;
7369 }
7370 if (arrbuf instanceof DataView) {
7371 return true;
7372 }
7373 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7374 return true;
7375 }
7376 return false;
7377 }
7378 // 1. The assert module provides functions that throw
7379 // AssertionError's when particular conditions are not met. The
7380 // assert module must conform to the following interface.
7381
7382 var assert = module.exports = ok;
7383
7384 // 2. The AssertionError is defined in assert.
7385 // new assert.AssertionError({ message: message,
7386 // actual: actual,
7387 // expected: expected })
7388
7389 var regex = /\s*function\s+([^\(\s]*)\s*/;
7390 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7391 function getName(func) {
7392 if (!util.isFunction(func)) {
7393 return;
7394 }
7395 if (functionsHaveNames) {
7396 return func.name;
7397 }
7398 var str = func.toString();
7399 var match = str.match(regex);
7400 return match && match[1];
7401 }
7402 assert.AssertionError = function AssertionError(options) {
7403 this.name = 'AssertionError';
7404 this.actual = options.actual;
7405 this.expected = options.expected;
7406 this.operator = options.operator;
7407 if (options.message) {
7408 this.message = options.message;
7409 this.generatedMessage = false;
7410 } else {
7411 this.message = getMessage(this);
7412 this.generatedMessage = true;
7413 }
7414 var stackStartFunction = options.stackStartFunction || fail;
7415 if (Error.captureStackTrace) {
7416 Error.captureStackTrace(this, stackStartFunction);
7417 } else {
7418 // non v8 browsers so we can have a stacktrace
7419 var err = new Error();
7420 if (err.stack) {
7421 var out = err.stack;
7422
7423 // try to strip useless frames
7424 var fn_name = getName(stackStartFunction);
7425 var idx = out.indexOf('\n' + fn_name);
7426 if (idx >= 0) {
7427 // once we have located the function frame
7428 // we need to strip out everything before it (and its line)
7429 var next_line = out.indexOf('\n', idx + 1);
7430 out = out.substring(next_line + 1);
7431 }
7432
7433 this.stack = out;
7434 }
7435 }
7436 };
7437
7438 // assert.AssertionError instanceof Error
7439 util.inherits(assert.AssertionError, Error);
7440
7441 function truncate(s, n) {
7442 if (typeof s === 'string') {
7443 return s.length < n ? s : s.slice(0, n);
7444 } else {
7445 return s;
7446 }
7447 }
7448 function inspect(something) {
7449 if (functionsHaveNames || !util.isFunction(something)) {
7450 return util.inspect(something);
7451 }
7452 var rawname = getName(something);
7453 var name = rawname ? ': ' + rawname : '';
7454 return '[Function' + name + ']';
7455 }
7456 function getMessage(self) {
7457 return truncate(inspect(self.actual), 128) + ' ' +
7458 self.operator + ' ' +
7459 truncate(inspect(self.expected), 128);
7460 }
7461
7462 // At present only the three keys mentioned above are used and
7463 // understood by the spec. Implementations or sub modules can pass
7464 // other keys to the AssertionError's constructor - they will be
7465 // ignored.
7466
7467 // 3. All of the following functions must throw an AssertionError
7468 // when a corresponding condition is not met, with a message that
7469 // may be undefined if not provided. All assertion methods provide
7470 // both the actual and expected values to the assertion error for
7471 // display purposes.
7472
7473 function fail(actual, expected, message, operator, stackStartFunction) {
7474 throw new assert.AssertionError({
7475 message: message,
7476 actual: actual,
7477 expected: expected,
7478 operator: operator,
7479 stackStartFunction: stackStartFunction
7480 });
7481 }
7482
7483 // EXTENSION! allows for well behaved errors defined elsewhere.
7484 assert.fail = fail;
7485
7486 // 4. Pure assertion tests whether a value is truthy, as determined
7487 // by !!guard.
7488 // assert.ok(guard, message_opt);
7489 // This statement is equivalent to assert.equal(true, !!guard,
7490 // message_opt);. To test strictly for the value true, use
7491 // assert.strictEqual(true, guard, message_opt);.
7492
7493 function ok(value, message) {
7494 if (!value) fail(value, true, message, '==', assert.ok);
7495 }
7496 assert.ok = ok;
7497
7498 // 5. The equality assertion tests shallow, coercive equality with
7499 // ==.
7500 // assert.equal(actual, expected, message_opt);
7501
7502 assert.equal = function equal(actual, expected, message) {
7503 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7504 };
7505
7506 // 6. The non-equality assertion tests for whether two objects are not equal
7507 // with != assert.notEqual(actual, expected, message_opt);
7508
7509 assert.notEqual = function notEqual(actual, expected, message) {
7510 if (actual == expected) {
7511 fail(actual, expected, message, '!=', assert.notEqual);
7512 }
7513 };
7514
7515 // 7. The equivalence assertion tests a deep equality relation.
7516 // assert.deepEqual(actual, expected, message_opt);
7517
7518 assert.deepEqual = function deepEqual(actual, expected, message) {
7519 if (!_deepEqual(actual, expected, false)) {
7520 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7521 }
7522 };
7523
7524 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7525 if (!_deepEqual(actual, expected, true)) {
7526 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7527 }
7528 };
7529
7530 function _deepEqual(actual, expected, strict, memos) {
7531 // 7.1. All identical values are equivalent, as determined by ===.
7532 if (actual === expected) {
7533 return true;
7534 } else if (isBuffer(actual) && isBuffer(expected)) {
7535 return compare(actual, expected) === 0;
7536
7537 // 7.2. If the expected value is a Date object, the actual value is
7538 // equivalent if it is also a Date object that refers to the same time.
7539 } else if (util.isDate(actual) && util.isDate(expected)) {
7540 return actual.getTime() === expected.getTime();
7541
7542 // 7.3 If the expected value is a RegExp object, the actual value is
7543 // equivalent if it is also a RegExp object with the same source and
7544 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7545 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7546 return actual.source === expected.source &&
7547 actual.global === expected.global &&
7548 actual.multiline === expected.multiline &&
7549 actual.lastIndex === expected.lastIndex &&
7550 actual.ignoreCase === expected.ignoreCase;
7551
7552 // 7.4. Other pairs that do not both pass typeof value == 'object',
7553 // equivalence is determined by ==.
7554 } else if ((actual === null || typeof actual !== 'object') &&
7555 (expected === null || typeof expected !== 'object')) {
7556 return strict ? actual === expected : actual == expected;
7557
7558 // If both values are instances of typed arrays, wrap their underlying
7559 // ArrayBuffers in a Buffer each to increase performance
7560 // This optimization requires the arrays to have the same type as checked by
7561 // Object.prototype.toString (aka pToString). Never perform binary
7562 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
7563 // bit patterns are not identical.
7564 } else if (isView(actual) && isView(expected) &&
7565 pToString(actual) === pToString(expected) &&
7566 !(actual instanceof Float32Array ||
7567 actual instanceof Float64Array)) {
7568 return compare(new Uint8Array(actual.buffer),
7569 new Uint8Array(expected.buffer)) === 0;
7570
7571 // 7.5 For all other Object pairs, including Array objects, equivalence is
7572 // determined by having the same number of owned properties (as verified
7573 // with Object.prototype.hasOwnProperty.call), the same set of keys
7574 // (although not necessarily the same order), equivalent values for every
7575 // corresponding key, and an identical 'prototype' property. Note: this
7576 // accounts for both named and indexed properties on Arrays.
7577 } else if (isBuffer(actual) !== isBuffer(expected)) {
7578 return false;
7579 } else {
7580 memos = memos || {actual: [], expected: []};
7581
7582 var actualIndex = memos.actual.indexOf(actual);
7583 if (actualIndex !== -1) {
7584 if (actualIndex === memos.expected.indexOf(expected)) {
7585 return true;
7586 }
7587 }
7588
7589 memos.actual.push(actual);
7590 memos.expected.push(expected);
7591
7592 return objEquiv(actual, expected, strict, memos);
7593 }
7594 }
7595
7596 function isArguments(object) {
7597 return Object.prototype.toString.call(object) == '[object Arguments]';
7598 }
7599
7600 function objEquiv(a, b, strict, actualVisitedObjects) {
7601 if (a === null || a === undefined || b === null || b === undefined)
7602 return false;
7603 // if one is a primitive, the other must be same
7604 if (util.isPrimitive(a) || util.isPrimitive(b))
7605 return a === b;
7606 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7607 return false;
7608 var aIsArgs = isArguments(a);
7609 var bIsArgs = isArguments(b);
7610 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7611 return false;
7612 if (aIsArgs) {
7613 a = pSlice.call(a);
7614 b = pSlice.call(b);
7615 return _deepEqual(a, b, strict);
7616 }
7617 var ka = objectKeys(a);
7618 var kb = objectKeys(b);
7619 var key, i;
7620 // having the same number of owned properties (keys incorporates
7621 // hasOwnProperty)
7622 if (ka.length !== kb.length)
7623 return false;
7624 //the same set of keys (although not necessarily the same order),
7625 ka.sort();
7626 kb.sort();
7627 //~~~cheap key test
7628 for (i = ka.length - 1; i >= 0; i--) {
7629 if (ka[i] !== kb[i])
7630 return false;
7631 }
7632 //equivalent values for every corresponding key, and
7633 //~~~possibly expensive deep test
7634 for (i = ka.length - 1; i >= 0; i--) {
7635 key = ka[i];
7636 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7637 return false;
7638 }
7639 return true;
7640 }
7641
7642 // 8. The non-equivalence assertion tests for any deep inequality.
7643 // assert.notDeepEqual(actual, expected, message_opt);
7644
7645 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7646 if (_deepEqual(actual, expected, false)) {
7647 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7648 }
7649 };
7650
7651 assert.notDeepStrictEqual = notDeepStrictEqual;
7652 function notDeepStrictEqual(actual, expected, message) {
7653 if (_deepEqual(actual, expected, true)) {
7654 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7655 }
7656 }
7657
7658
7659 // 9. The strict equality assertion tests strict equality, as determined by ===.
7660 // assert.strictEqual(actual, expected, message_opt);
7661
7662 assert.strictEqual = function strictEqual(actual, expected, message) {
7663 if (actual !== expected) {
7664 fail(actual, expected, message, '===', assert.strictEqual);
7665 }
7666 };
7667
7668 // 10. The strict non-equality assertion tests for strict inequality, as
7669 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7670
7671 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7672 if (actual === expected) {
7673 fail(actual, expected, message, '!==', assert.notStrictEqual);
7674 }
7675 };
7676
7677 function expectedException(actual, expected) {
7678 if (!actual || !expected) {
7679 return false;
7680 }
7681
7682 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7683 return expected.test(actual);
7684 }
7685
7686 try {
7687 if (actual instanceof expected) {
7688 return true;
7689 }
7690 } catch (e) {
7691 // Ignore. The instanceof check doesn't work for arrow functions.
7692 }
7693
7694 if (Error.isPrototypeOf(expected)) {
7695 return false;
7696 }
7697
7698 return expected.call({}, actual) === true;
7699 }
7700
7701 function _tryBlock(block) {
7702 var error;
7703 try {
7704 block();
7705 } catch (e) {
7706 error = e;
7707 }
7708 return error;
7709 }
7710
7711 function _throws(shouldThrow, block, expected, message) {
7712 var actual;
7713
7714 if (typeof block !== 'function') {
7715 throw new TypeError('"block" argument must be a function');
7716 }
7717
7718 if (typeof expected === 'string') {
7719 message = expected;
7720 expected = null;
7721 }
7722
7723 actual = _tryBlock(block);
7724
7725 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7726 (message ? ' ' + message : '.');
7727
7728 if (shouldThrow && !actual) {
7729 fail(actual, expected, 'Missing expected exception' + message);
7730 }
7731
7732 var userProvidedMessage = typeof message === 'string';
7733 var isUnwantedException = !shouldThrow && util.isError(actual);
7734 var isUnexpectedException = !shouldThrow && actual && !expected;
7735
7736 if ((isUnwantedException &&
7737 userProvidedMessage &&
7738 expectedException(actual, expected)) ||
7739 isUnexpectedException) {
7740 fail(actual, expected, 'Got unwanted exception' + message);
7741 }
7742
7743 if ((shouldThrow && actual && expected &&
7744 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7745 throw actual;
7746 }
7747 }
7748
7749 // 11. Expected to throw an error:
7750 // assert.throws(block, Error_opt, message_opt);
7751
7752 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7753 _throws(true, block, error, message);
7754 };
7755
7756 // EXTENSION! This is annoying to write outside this module.
7757 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7758 _throws(false, block, error, message);
7759 };
7760
7761 assert.ifError = function(err) { if (err) throw err; };
7762
7763 var objectKeys = Object.keys || function (obj) {
7764 var keys = [];
7765 for (var key in obj) {
7766 if (hasOwn.call(obj, key)) keys.push(key);
7767 }
7768 return keys;
7769 };
7770
7771 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7772 },{"util/":32}],2:[function(require,module,exports){
7773 'use strict'
7774
7775 exports.byteLength = byteLength
7776 exports.toByteArray = toByteArray
7777 exports.fromByteArray = fromByteArray
7778
7779 var lookup = []
7780 var revLookup = []
7781 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7782
7783 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7784 for (var i = 0, len = code.length; i < len; ++i) {
7785 lookup[i] = code[i]
7786 revLookup[code.charCodeAt(i)] = i
7787 }
7788
7789 revLookup['-'.charCodeAt(0)] = 62
7790 revLookup['_'.charCodeAt(0)] = 63
7791
7792 function placeHoldersCount (b64) {
7793 var len = b64.length
7794 if (len % 4 > 0) {
7795 throw new Error('Invalid string. Length must be a multiple of 4')
7796 }
7797
7798 // the number of equal signs (place holders)
7799 // if there are two placeholders, than the two characters before it
7800 // represent one byte
7801 // if there is only one, then the three characters before it represent 2 bytes
7802 // this is just a cheap hack to not do indexOf twice
7803 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
7804 }
7805
7806 function byteLength (b64) {
7807 // base64 is 4/3 + up to two characters of the original data
7808 return (b64.length * 3 / 4) - placeHoldersCount(b64)
7809 }
7810
7811 function toByteArray (b64) {
7812 var i, l, tmp, placeHolders, arr
7813 var len = b64.length
7814 placeHolders = placeHoldersCount(b64)
7815
7816 arr = new Arr((len * 3 / 4) - placeHolders)
7817
7818 // if there are placeholders, only get up to the last complete 4 chars
7819 l = placeHolders > 0 ? len - 4 : len
7820
7821 var L = 0
7822
7823 for (i = 0; i < l; i += 4) {
7824 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
7825 arr[L++] = (tmp >> 16) & 0xFF
7826 arr[L++] = (tmp >> 8) & 0xFF
7827 arr[L++] = tmp & 0xFF
7828 }
7829
7830 if (placeHolders === 2) {
7831 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
7832 arr[L++] = tmp & 0xFF
7833 } else if (placeHolders === 1) {
7834 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
7835 arr[L++] = (tmp >> 8) & 0xFF
7836 arr[L++] = tmp & 0xFF
7837 }
7838
7839 return arr
7840 }
7841
7842 function tripletToBase64 (num) {
7843 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
7844 }
7845
7846 function encodeChunk (uint8, start, end) {
7847 var tmp
7848 var output = []
7849 for (var i = start; i < end; i += 3) {
7850 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
7851 output.push(tripletToBase64(tmp))
7852 }
7853 return output.join('')
7854 }
7855
7856 function fromByteArray (uint8) {
7857 var tmp
7858 var len = uint8.length
7859 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
7860 var output = ''
7861 var parts = []
7862 var maxChunkLength = 16383 // must be multiple of 3
7863
7864 // go through the array every three bytes, we'll deal with trailing stuff later
7865 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7866 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
7867 }
7868
7869 // pad the end with zeros, but make sure to not forget the extra bytes
7870 if (extraBytes === 1) {
7871 tmp = uint8[len - 1]
7872 output += lookup[tmp >> 2]
7873 output += lookup[(tmp << 4) & 0x3F]
7874 output += '=='
7875 } else if (extraBytes === 2) {
7876 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
7877 output += lookup[tmp >> 10]
7878 output += lookup[(tmp >> 4) & 0x3F]
7879 output += lookup[(tmp << 2) & 0x3F]
7880 output += '='
7881 }
7882
7883 parts.push(output)
7884
7885 return parts.join('')
7886 }
7887
7888 },{}],3:[function(require,module,exports){
7889
7890 },{}],4:[function(require,module,exports){
7891 /*!
7892 * The buffer module from node.js, for the browser.
7893 *
7894 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7895 * @license MIT
7896 */
7897 /* eslint-disable no-proto */
7898
7899 'use strict'
7900
7901 var base64 = require('base64-js')
7902 var ieee754 = require('ieee754')
7903
7904 exports.Buffer = Buffer
7905 exports.SlowBuffer = SlowBuffer
7906 exports.INSPECT_MAX_BYTES = 50
7907
7908 var K_MAX_LENGTH = 0x7fffffff
7909 exports.kMaxLength = K_MAX_LENGTH
7910
7911 /**
7912 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7913 * === true Use Uint8Array implementation (fastest)
7914 * === false Print warning and recommend using `buffer` v4.x which has an Object
7915 * implementation (most compatible, even IE6)
7916 *
7917 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7918 * Opera 11.6+, iOS 4.2+.
7919 *
7920 * We report that the browser does not support typed arrays if the are not subclassable
7921 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
7922 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
7923 * for __proto__ and has a buggy typed array implementation.
7924 */
7925 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
7926
7927 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
7928 typeof console.error === 'function') {
7929 console.error(
7930 'This browser lacks typed array (Uint8Array) support which is required by ' +
7931 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
7932 )
7933 }
7934
7935 function typedArraySupport () {
7936 // Can typed array instances can be augmented?
7937 try {
7938 var arr = new Uint8Array(1)
7939 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
7940 return arr.foo() === 42
7941 } catch (e) {
7942 return false
7943 }
7944 }
7945
7946 function createBuffer (length) {
7947 if (length > K_MAX_LENGTH) {
7948 throw new RangeError('Invalid typed array length')
7949 }
7950 // Return an augmented `Uint8Array` instance
7951 var buf = new Uint8Array(length)
7952 buf.__proto__ = Buffer.prototype
7953 return buf
7954 }
7955
7956 /**
7957 * The Buffer constructor returns instances of `Uint8Array` that have their
7958 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
7959 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
7960 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
7961 * returns a single octet.
7962 *
7963 * The `Uint8Array` prototype remains unmodified.
7964 */
7965
7966 function Buffer (arg, encodingOrOffset, length) {
7967 // Common case.
7968 if (typeof arg === 'number') {
7969 if (typeof encodingOrOffset === 'string') {
7970 throw new Error(
7971 'If encoding is specified then the first argument must be a string'
7972 )
7973 }
7974 return allocUnsafe(arg)
7975 }
7976 return from(arg, encodingOrOffset, length)
7977 }
7978
7979 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
7980 if (typeof Symbol !== 'undefined' && Symbol.species &&
7981 Buffer[Symbol.species] === Buffer) {
7982 Object.defineProperty(Buffer, Symbol.species, {
7983 value: null,
7984 configurable: true,
7985 enumerable: false,
7986 writable: false
7987 })
7988 }
7989
7990 Buffer.poolSize = 8192 // not used by this implementation
7991
7992 function from (value, encodingOrOffset, length) {
7993 if (typeof value === 'number') {
7994 throw new TypeError('"value" argument must not be a number')
7995 }
7996
7997 if (value instanceof ArrayBuffer) {
7998 return fromArrayBuffer(value, encodingOrOffset, length)
7999 }
8000
8001 if (typeof value === 'string') {
8002 return fromString(value, encodingOrOffset)
8003 }
8004
8005 return fromObject(value)
8006 }
8007
8008 /**
8009 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8010 * if value is a number.
8011 * Buffer.from(str[, encoding])
8012 * Buffer.from(array)
8013 * Buffer.from(buffer)
8014 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8015 **/
8016 Buffer.from = function (value, encodingOrOffset, length) {
8017 return from(value, encodingOrOffset, length)
8018 }
8019
8020 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8021 // https://github.com/feross/buffer/pull/148
8022 Buffer.prototype.__proto__ = Uint8Array.prototype
8023 Buffer.__proto__ = Uint8Array
8024
8025 function assertSize (size) {
8026 if (typeof size !== 'number') {
8027 throw new TypeError('"size" argument must be a number')
8028 } else if (size < 0) {
8029 throw new RangeError('"size" argument must not be negative')
8030 }
8031 }
8032
8033 function alloc (size, fill, encoding) {
8034 assertSize(size)
8035 if (size <= 0) {
8036 return createBuffer(size)
8037 }
8038 if (fill !== undefined) {
8039 // Only pay attention to encoding if it's a string. This
8040 // prevents accidentally sending in a number that would
8041 // be interpretted as a start offset.
8042 return typeof encoding === 'string'
8043 ? createBuffer(size).fill(fill, encoding)
8044 : createBuffer(size).fill(fill)
8045 }
8046 return createBuffer(size)
8047 }
8048
8049 /**
8050 * Creates a new filled Buffer instance.
8051 * alloc(size[, fill[, encoding]])
8052 **/
8053 Buffer.alloc = function (size, fill, encoding) {
8054 return alloc(size, fill, encoding)
8055 }
8056
8057 function allocUnsafe (size) {
8058 assertSize(size)
8059 return createBuffer(size < 0 ? 0 : checked(size) | 0)
8060 }
8061
8062 /**
8063 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8064 * */
8065 Buffer.allocUnsafe = function (size) {
8066 return allocUnsafe(size)
8067 }
8068 /**
8069 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8070 */
8071 Buffer.allocUnsafeSlow = function (size) {
8072 return allocUnsafe(size)
8073 }
8074
8075 function fromString (string, encoding) {
8076 if (typeof encoding !== 'string' || encoding === '') {
8077 encoding = 'utf8'
8078 }
8079
8080 if (!Buffer.isEncoding(encoding)) {
8081 throw new TypeError('"encoding" must be a valid string encoding')
8082 }
8083
8084 var length = byteLength(string, encoding) | 0
8085 var buf = createBuffer(length)
8086
8087 var actual = buf.write(string, encoding)
8088
8089 if (actual !== length) {
8090 // Writing a hex string, for example, that contains invalid characters will
8091 // cause everything after the first invalid character to be ignored. (e.g.
8092 // 'abxxcd' will be treated as 'ab')
8093 buf = buf.slice(0, actual)
8094 }
8095
8096 return buf
8097 }
8098
8099 function fromArrayLike (array) {
8100 var length = array.length < 0 ? 0 : checked(array.length) | 0
8101 var buf = createBuffer(length)
8102 for (var i = 0; i < length; i += 1) {
8103 buf[i] = array[i] & 255
8104 }
8105 return buf
8106 }
8107
8108 function fromArrayBuffer (array, byteOffset, length) {
8109 if (byteOffset < 0 || array.byteLength < byteOffset) {
8110 throw new RangeError('\'offset\' is out of bounds')
8111 }
8112
8113 if (array.byteLength < byteOffset + (length || 0)) {
8114 throw new RangeError('\'length\' is out of bounds')
8115 }
8116
8117 var buf
8118 if (byteOffset === undefined && length === undefined) {
8119 buf = new Uint8Array(array)
8120 } else if (length === undefined) {
8121 buf = new Uint8Array(array, byteOffset)
8122 } else {
8123 buf = new Uint8Array(array, byteOffset, length)
8124 }
8125
8126 // Return an augmented `Uint8Array` instance
8127 buf.__proto__ = Buffer.prototype
8128 return buf
8129 }
8130
8131 function fromObject (obj) {
8132 if (Buffer.isBuffer(obj)) {
8133 var len = checked(obj.length) | 0
8134 var buf = createBuffer(len)
8135
8136 if (buf.length === 0) {
8137 return buf
8138 }
8139
8140 obj.copy(buf, 0, 0, len)
8141 return buf
8142 }
8143
8144 if (obj) {
8145 if (isArrayBufferView(obj) || 'length' in obj) {
8146 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8147 return createBuffer(0)
8148 }
8149 return fromArrayLike(obj)
8150 }
8151
8152 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8153 return fromArrayLike(obj.data)
8154 }
8155 }
8156
8157 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8158 }
8159
8160 function checked (length) {
8161 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8162 // length is NaN (which is otherwise coerced to zero.)
8163 if (length >= K_MAX_LENGTH) {
8164 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8165 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
8166 }
8167 return length | 0
8168 }
8169
8170 function SlowBuffer (length) {
8171 if (+length != length) { // eslint-disable-line eqeqeq
8172 length = 0
8173 }
8174 return Buffer.alloc(+length)
8175 }
8176
8177 Buffer.isBuffer = function isBuffer (b) {
8178 return b != null && b._isBuffer === true
8179 }
8180
8181 Buffer.compare = function compare (a, b) {
8182 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8183 throw new TypeError('Arguments must be Buffers')
8184 }
8185
8186 if (a === b) return 0
8187
8188 var x = a.length
8189 var y = b.length
8190
8191 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
8192 if (a[i] !== b[i]) {
8193 x = a[i]
8194 y = b[i]
8195 break
8196 }
8197 }
8198
8199 if (x < y) return -1
8200 if (y < x) return 1
8201 return 0
8202 }
8203
8204 Buffer.isEncoding = function isEncoding (encoding) {
8205 switch (String(encoding).toLowerCase()) {
8206 case 'hex':
8207 case 'utf8':
8208 case 'utf-8':
8209 case 'ascii':
8210 case 'latin1':
8211 case 'binary':
8212 case 'base64':
8213 case 'ucs2':
8214 case 'ucs-2':
8215 case 'utf16le':
8216 case 'utf-16le':
8217 return true
8218 default:
8219 return false
8220 }
8221 }
8222
8223 Buffer.concat = function concat (list, length) {
8224 if (!Array.isArray(list)) {
8225 throw new TypeError('"list" argument must be an Array of Buffers')
8226 }
8227
8228 if (list.length === 0) {
8229 return Buffer.alloc(0)
8230 }
8231
8232 var i
8233 if (length === undefined) {
8234 length = 0
8235 for (i = 0; i < list.length; ++i) {
8236 length += list[i].length
8237 }
8238 }
8239
8240 var buffer = Buffer.allocUnsafe(length)
8241 var pos = 0
8242 for (i = 0; i < list.length; ++i) {
8243 var buf = list[i]
8244 if (!Buffer.isBuffer(buf)) {
8245 throw new TypeError('"list" argument must be an Array of Buffers')
8246 }
8247 buf.copy(buffer, pos)
8248 pos += buf.length
8249 }
8250 return buffer
8251 }
8252
8253 function byteLength (string, encoding) {
8254 if (Buffer.isBuffer(string)) {
8255 return string.length
8256 }
8257 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8258 return string.byteLength
8259 }
8260 if (typeof string !== 'string') {
8261 string = '' + string
8262 }
8263
8264 var len = string.length
8265 if (len === 0) return 0
8266
8267 // Use a for loop to avoid recursion
8268 var loweredCase = false
8269 for (;;) {
8270 switch (encoding) {
8271 case 'ascii':
8272 case 'latin1':
8273 case 'binary':
8274 return len
8275 case 'utf8':
8276 case 'utf-8':
8277 case undefined:
8278 return utf8ToBytes(string).length
8279 case 'ucs2':
8280 case 'ucs-2':
8281 case 'utf16le':
8282 case 'utf-16le':
8283 return len * 2
8284 case 'hex':
8285 return len >>> 1
8286 case 'base64':
8287 return base64ToBytes(string).length
8288 default:
8289 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8290 encoding = ('' + encoding).toLowerCase()
8291 loweredCase = true
8292 }
8293 }
8294 }
8295 Buffer.byteLength = byteLength
8296
8297 function slowToString (encoding, start, end) {
8298 var loweredCase = false
8299
8300 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
8301 // property of a typed array.
8302
8303 // This behaves neither like String nor Uint8Array in that we set start/end
8304 // to their upper/lower bounds if the value passed is out of range.
8305 // undefined is handled specially as per ECMA-262 6th Edition,
8306 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8307 if (start === undefined || start < 0) {
8308 start = 0
8309 }
8310 // Return early if start > this.length. Done here to prevent potential uint32
8311 // coercion fail below.
8312 if (start > this.length) {
8313 return ''
8314 }
8315
8316 if (end === undefined || end > this.length) {
8317 end = this.length
8318 }
8319
8320 if (end <= 0) {
8321 return ''
8322 }
8323
8324 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
8325 end >>>= 0
8326 start >>>= 0
8327
8328 if (end <= start) {
8329 return ''
8330 }
8331
8332 if (!encoding) encoding = 'utf8'
8333
8334 while (true) {
8335 switch (encoding) {
8336 case 'hex':
8337 return hexSlice(this, start, end)
8338
8339 case 'utf8':
8340 case 'utf-8':
8341 return utf8Slice(this, start, end)
8342
8343 case 'ascii':
8344 return asciiSlice(this, start, end)
8345
8346 case 'latin1':
8347 case 'binary':
8348 return latin1Slice(this, start, end)
8349
8350 case 'base64':
8351 return base64Slice(this, start, end)
8352
8353 case 'ucs2':
8354 case 'ucs-2':
8355 case 'utf16le':
8356 case 'utf-16le':
8357 return utf16leSlice(this, start, end)
8358
8359 default:
8360 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8361 encoding = (encoding + '').toLowerCase()
8362 loweredCase = true
8363 }
8364 }
8365 }
8366
8367 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8368 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8369 // reliably in a browserify context because there could be multiple different
8370 // copies of the 'buffer' package in use. This method works even for Buffer
8371 // instances that were created from another copy of the `buffer` package.
8372 // See: https://github.com/feross/buffer/issues/154
8373 Buffer.prototype._isBuffer = true
8374
8375 function swap (b, n, m) {
8376 var i = b[n]
8377 b[n] = b[m]
8378 b[m] = i
8379 }
8380
8381 Buffer.prototype.swap16 = function swap16 () {
8382 var len = this.length
8383 if (len % 2 !== 0) {
8384 throw new RangeError('Buffer size must be a multiple of 16-bits')
8385 }
8386 for (var i = 0; i < len; i += 2) {
8387 swap(this, i, i + 1)
8388 }
8389 return this
8390 }
8391
8392 Buffer.prototype.swap32 = function swap32 () {
8393 var len = this.length
8394 if (len % 4 !== 0) {
8395 throw new RangeError('Buffer size must be a multiple of 32-bits')
8396 }
8397 for (var i = 0; i < len; i += 4) {
8398 swap(this, i, i + 3)
8399 swap(this, i + 1, i + 2)
8400 }
8401 return this
8402 }
8403
8404 Buffer.prototype.swap64 = function swap64 () {
8405 var len = this.length
8406 if (len % 8 !== 0) {
8407 throw new RangeError('Buffer size must be a multiple of 64-bits')
8408 }
8409 for (var i = 0; i < len; i += 8) {
8410 swap(this, i, i + 7)
8411 swap(this, i + 1, i + 6)
8412 swap(this, i + 2, i + 5)
8413 swap(this, i + 3, i + 4)
8414 }
8415 return this
8416 }
8417
8418 Buffer.prototype.toString = function toString () {
8419 var length = this.length
8420 if (length === 0) return ''
8421 if (arguments.length === 0) return utf8Slice(this, 0, length)
8422 return slowToString.apply(this, arguments)
8423 }
8424
8425 Buffer.prototype.equals = function equals (b) {
8426 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8427 if (this === b) return true
8428 return Buffer.compare(this, b) === 0
8429 }
8430
8431 Buffer.prototype.inspect = function inspect () {
8432 var str = ''
8433 var max = exports.INSPECT_MAX_BYTES
8434 if (this.length > 0) {
8435 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
8436 if (this.length > max) str += ' ... '
8437 }
8438 return '<Buffer ' + str + '>'
8439 }
8440
8441 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8442 if (!Buffer.isBuffer(target)) {
8443 throw new TypeError('Argument must be a Buffer')
8444 }
8445
8446 if (start === undefined) {
8447 start = 0
8448 }
8449 if (end === undefined) {
8450 end = target ? target.length : 0
8451 }
8452 if (thisStart === undefined) {
8453 thisStart = 0
8454 }
8455 if (thisEnd === undefined) {
8456 thisEnd = this.length
8457 }
8458
8459 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
8460 throw new RangeError('out of range index')
8461 }
8462
8463 if (thisStart >= thisEnd && start >= end) {
8464 return 0
8465 }
8466 if (thisStart >= thisEnd) {
8467 return -1
8468 }
8469 if (start >= end) {
8470 return 1
8471 }
8472
8473 start >>>= 0
8474 end >>>= 0
8475 thisStart >>>= 0
8476 thisEnd >>>= 0
8477
8478 if (this === target) return 0
8479
8480 var x = thisEnd - thisStart
8481 var y = end - start
8482 var len = Math.min(x, y)
8483
8484 var thisCopy = this.slice(thisStart, thisEnd)
8485 var targetCopy = target.slice(start, end)
8486
8487 for (var i = 0; i < len; ++i) {
8488 if (thisCopy[i] !== targetCopy[i]) {
8489 x = thisCopy[i]
8490 y = targetCopy[i]
8491 break
8492 }
8493 }
8494
8495 if (x < y) return -1
8496 if (y < x) return 1
8497 return 0
8498 }
8499
8500 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
8501 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8502 //
8503 // Arguments:
8504 // - buffer - a Buffer to search
8505 // - val - a string, Buffer, or number
8506 // - byteOffset - an index into `buffer`; will be clamped to an int32
8507 // - encoding - an optional encoding, relevant is val is a string
8508 // - dir - true for indexOf, false for lastIndexOf
8509 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8510 // Empty buffer means no match
8511 if (buffer.length === 0) return -1
8512
8513 // Normalize byteOffset
8514 if (typeof byteOffset === 'string') {
8515 encoding = byteOffset
8516 byteOffset = 0
8517 } else if (byteOffset > 0x7fffffff) {
8518 byteOffset = 0x7fffffff
8519 } else if (byteOffset < -0x80000000) {
8520 byteOffset = -0x80000000
8521 }
8522 byteOffset = +byteOffset // Coerce to Number.
8523 if (numberIsNaN(byteOffset)) {
8524 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
8525 byteOffset = dir ? 0 : (buffer.length - 1)
8526 }
8527
8528 // Normalize byteOffset: negative offsets start from the end of the buffer
8529 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
8530 if (byteOffset >= buffer.length) {
8531 if (dir) return -1
8532 else byteOffset = buffer.length - 1
8533 } else if (byteOffset < 0) {
8534 if (dir) byteOffset = 0
8535 else return -1
8536 }
8537
8538 // Normalize val
8539 if (typeof val === 'string') {
8540 val = Buffer.from(val, encoding)
8541 }
8542
8543 // Finally, search either indexOf (if dir is true) or lastIndexOf
8544 if (Buffer.isBuffer(val)) {
8545 // Special case: looking for empty string/buffer always fails
8546 if (val.length === 0) {
8547 return -1
8548 }
8549 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8550 } else if (typeof val === 'number') {
8551 val = val & 0xFF // Search for a byte value [0-255]
8552 if (typeof Uint8Array.prototype.indexOf === 'function') {
8553 if (dir) {
8554 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8555 } else {
8556 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8557 }
8558 }
8559 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8560 }
8561
8562 throw new TypeError('val must be string, number or Buffer')
8563 }
8564
8565 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8566 var indexSize = 1
8567 var arrLength = arr.length
8568 var valLength = val.length
8569
8570 if (encoding !== undefined) {
8571 encoding = String(encoding).toLowerCase()
8572 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
8573 encoding === 'utf16le' || encoding === 'utf-16le') {
8574 if (arr.length < 2 || val.length < 2) {
8575 return -1
8576 }
8577 indexSize = 2
8578 arrLength /= 2
8579 valLength /= 2
8580 byteOffset /= 2
8581 }
8582 }
8583
8584 function read (buf, i) {
8585 if (indexSize === 1) {
8586 return buf[i]
8587 } else {
8588 return buf.readUInt16BE(i * indexSize)
8589 }
8590 }
8591
8592 var i
8593 if (dir) {
8594 var foundIndex = -1
8595 for (i = byteOffset; i < arrLength; i++) {
8596 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
8597 if (foundIndex === -1) foundIndex = i
8598 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
8599 } else {
8600 if (foundIndex !== -1) i -= i - foundIndex
8601 foundIndex = -1
8602 }
8603 }
8604 } else {
8605 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
8606 for (i = byteOffset; i >= 0; i--) {
8607 var found = true
8608 for (var j = 0; j < valLength; j++) {
8609 if (read(arr, i + j) !== read(val, j)) {
8610 found = false
8611 break
8612 }
8613 }
8614 if (found) return i
8615 }
8616 }
8617
8618 return -1
8619 }
8620
8621 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8622 return this.indexOf(val, byteOffset, encoding) !== -1
8623 }
8624
8625 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8626 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8627 }
8628
8629 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8630 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8631 }
8632
8633 function hexWrite (buf, string, offset, length) {
8634 offset = Number(offset) || 0
8635 var remaining = buf.length - offset
8636 if (!length) {
8637 length = remaining
8638 } else {
8639 length = Number(length)
8640 if (length > remaining) {
8641 length = remaining
8642 }
8643 }
8644
8645 // must be an even number of digits
8646 var strLen = string.length
8647 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
8648
8649 if (length > strLen / 2) {
8650 length = strLen / 2
8651 }
8652 for (var i = 0; i < length; ++i) {
8653 var parsed = parseInt(string.substr(i * 2, 2), 16)
8654 if (numberIsNaN(parsed)) return i
8655 buf[offset + i] = parsed
8656 }
8657 return i
8658 }
8659
8660 function utf8Write (buf, string, offset, length) {
8661 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8662 }
8663
8664 function asciiWrite (buf, string, offset, length) {
8665 return blitBuffer(asciiToBytes(string), buf, offset, length)
8666 }
8667
8668 function latin1Write (buf, string, offset, length) {
8669 return asciiWrite(buf, string, offset, length)
8670 }
8671
8672 function base64Write (buf, string, offset, length) {
8673 return blitBuffer(base64ToBytes(string), buf, offset, length)
8674 }
8675
8676 function ucs2Write (buf, string, offset, length) {
8677 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8678 }
8679
8680 Buffer.prototype.write = function write (string, offset, length, encoding) {
8681 // Buffer#write(string)
8682 if (offset === undefined) {
8683 encoding = 'utf8'
8684 length = this.length
8685 offset = 0
8686 // Buffer#write(string, encoding)
8687 } else if (length === undefined && typeof offset === 'string') {
8688 encoding = offset
8689 length = this.length
8690 offset = 0
8691 // Buffer#write(string, offset[, length][, encoding])
8692 } else if (isFinite(offset)) {
8693 offset = offset >>> 0
8694 if (isFinite(length)) {
8695 length = length >>> 0
8696 if (encoding === undefined) encoding = 'utf8'
8697 } else {
8698 encoding = length
8699 length = undefined
8700 }
8701 } else {
8702 throw new Error(
8703 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8704 )
8705 }
8706
8707 var remaining = this.length - offset
8708 if (length === undefined || length > remaining) length = remaining
8709
8710 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
8711 throw new RangeError('Attempt to write outside buffer bounds')
8712 }
8713
8714 if (!encoding) encoding = 'utf8'
8715
8716 var loweredCase = false
8717 for (;;) {
8718 switch (encoding) {
8719 case 'hex':
8720 return hexWrite(this, string, offset, length)
8721
8722 case 'utf8':
8723 case 'utf-8':
8724 return utf8Write(this, string, offset, length)
8725
8726 case 'ascii':
8727 return asciiWrite(this, string, offset, length)
8728
8729 case 'latin1':
8730 case 'binary':
8731 return latin1Write(this, string, offset, length)
8732
8733 case 'base64':
8734 // Warning: maxLength not taken into account in base64Write
8735 return base64Write(this, string, offset, length)
8736
8737 case 'ucs2':
8738 case 'ucs-2':
8739 case 'utf16le':
8740 case 'utf-16le':
8741 return ucs2Write(this, string, offset, length)
8742
8743 default:
8744 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8745 encoding = ('' + encoding).toLowerCase()
8746 loweredCase = true
8747 }
8748 }
8749 }
8750
8751 Buffer.prototype.toJSON = function toJSON () {
8752 return {
8753 type: 'Buffer',
8754 data: Array.prototype.slice.call(this._arr || this, 0)
8755 }
8756 }
8757
8758 function base64Slice (buf, start, end) {
8759 if (start === 0 && end === buf.length) {
8760 return base64.fromByteArray(buf)
8761 } else {
8762 return base64.fromByteArray(buf.slice(start, end))
8763 }
8764 }
8765
8766 function utf8Slice (buf, start, end) {
8767 end = Math.min(buf.length, end)
8768 var res = []
8769
8770 var i = start
8771 while (i < end) {
8772 var firstByte = buf[i]
8773 var codePoint = null
8774 var bytesPerSequence = (firstByte > 0xEF) ? 4
8775 : (firstByte > 0xDF) ? 3
8776 : (firstByte > 0xBF) ? 2
8777 : 1
8778
8779 if (i + bytesPerSequence <= end) {
8780 var secondByte, thirdByte, fourthByte, tempCodePoint
8781
8782 switch (bytesPerSequence) {
8783 case 1:
8784 if (firstByte < 0x80) {
8785 codePoint = firstByte
8786 }
8787 break
8788 case 2:
8789 secondByte = buf[i + 1]
8790 if ((secondByte & 0xC0) === 0x80) {
8791 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
8792 if (tempCodePoint > 0x7F) {
8793 codePoint = tempCodePoint
8794 }
8795 }
8796 break
8797 case 3:
8798 secondByte = buf[i + 1]
8799 thirdByte = buf[i + 2]
8800 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
8801 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
8802 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
8803 codePoint = tempCodePoint
8804 }
8805 }
8806 break
8807 case 4:
8808 secondByte = buf[i + 1]
8809 thirdByte = buf[i + 2]
8810 fourthByte = buf[i + 3]
8811 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
8812 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
8813 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
8814 codePoint = tempCodePoint
8815 }
8816 }
8817 }
8818 }
8819
8820 if (codePoint === null) {
8821 // we did not generate a valid codePoint so insert a
8822 // replacement char (U+FFFD) and advance only 1 byte
8823 codePoint = 0xFFFD
8824 bytesPerSequence = 1
8825 } else if (codePoint > 0xFFFF) {
8826 // encode to utf16 (surrogate pair dance)
8827 codePoint -= 0x10000
8828 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
8829 codePoint = 0xDC00 | codePoint & 0x3FF
8830 }
8831
8832 res.push(codePoint)
8833 i += bytesPerSequence
8834 }
8835
8836 return decodeCodePointsArray(res)
8837 }
8838
8839 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
8840 // the lowest limit is Chrome, with 0x10000 args.
8841 // We go 1 magnitude less, for safety
8842 var MAX_ARGUMENTS_LENGTH = 0x1000
8843
8844 function decodeCodePointsArray (codePoints) {
8845 var len = codePoints.length
8846 if (len <= MAX_ARGUMENTS_LENGTH) {
8847 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
8848 }
8849
8850 // Decode in chunks to avoid "call stack size exceeded".
8851 var res = ''
8852 var i = 0
8853 while (i < len) {
8854 res += String.fromCharCode.apply(
8855 String,
8856 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
8857 )
8858 }
8859 return res
8860 }
8861
8862 function asciiSlice (buf, start, end) {
8863 var ret = ''
8864 end = Math.min(buf.length, end)
8865
8866 for (var i = start; i < end; ++i) {
8867 ret += String.fromCharCode(buf[i] & 0x7F)
8868 }
8869 return ret
8870 }
8871
8872 function latin1Slice (buf, start, end) {
8873 var ret = ''
8874 end = Math.min(buf.length, end)
8875
8876 for (var i = start; i < end; ++i) {
8877 ret += String.fromCharCode(buf[i])
8878 }
8879 return ret
8880 }
8881
8882 function hexSlice (buf, start, end) {
8883 var len = buf.length
8884
8885 if (!start || start < 0) start = 0
8886 if (!end || end < 0 || end > len) end = len
8887
8888 var out = ''
8889 for (var i = start; i < end; ++i) {
8890 out += toHex(buf[i])
8891 }
8892 return out
8893 }
8894
8895 function utf16leSlice (buf, start, end) {
8896 var bytes = buf.slice(start, end)
8897 var res = ''
8898 for (var i = 0; i < bytes.length; i += 2) {
8899 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
8900 }
8901 return res
8902 }
8903
8904 Buffer.prototype.slice = function slice (start, end) {
8905 var len = this.length
8906 start = ~~start
8907 end = end === undefined ? len : ~~end
8908
8909 if (start < 0) {
8910 start += len
8911 if (start < 0) start = 0
8912 } else if (start > len) {
8913 start = len
8914 }
8915
8916 if (end < 0) {
8917 end += len
8918 if (end < 0) end = 0
8919 } else if (end > len) {
8920 end = len
8921 }
8922
8923 if (end < start) end = start
8924
8925 var newBuf = this.subarray(start, end)
8926 // Return an augmented `Uint8Array` instance
8927 newBuf.__proto__ = Buffer.prototype
8928 return newBuf
8929 }
8930
8931 /*
8932 * Need to make sure that buffer isn't trying to write out of bounds.
8933 */
8934 function checkOffset (offset, ext, length) {
8935 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8936 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8937 }
8938
8939 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8940 offset = offset >>> 0
8941 byteLength = byteLength >>> 0
8942 if (!noAssert) checkOffset(offset, byteLength, this.length)
8943
8944 var val = this[offset]
8945 var mul = 1
8946 var i = 0
8947 while (++i < byteLength && (mul *= 0x100)) {
8948 val += this[offset + i] * mul
8949 }
8950
8951 return val
8952 }
8953
8954 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8955 offset = offset >>> 0
8956 byteLength = byteLength >>> 0
8957 if (!noAssert) {
8958 checkOffset(offset, byteLength, this.length)
8959 }
8960
8961 var val = this[offset + --byteLength]
8962 var mul = 1
8963 while (byteLength > 0 && (mul *= 0x100)) {
8964 val += this[offset + --byteLength] * mul
8965 }
8966
8967 return val
8968 }
8969
8970 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
8971 offset = offset >>> 0
8972 if (!noAssert) checkOffset(offset, 1, this.length)
8973 return this[offset]
8974 }
8975
8976 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
8977 offset = offset >>> 0
8978 if (!noAssert) checkOffset(offset, 2, this.length)
8979 return this[offset] | (this[offset + 1] << 8)
8980 }
8981
8982 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
8983 offset = offset >>> 0
8984 if (!noAssert) checkOffset(offset, 2, this.length)
8985 return (this[offset] << 8) | this[offset + 1]
8986 }
8987
8988 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
8989 offset = offset >>> 0
8990 if (!noAssert) checkOffset(offset, 4, this.length)
8991
8992 return ((this[offset]) |
8993 (this[offset + 1] << 8) |
8994 (this[offset + 2] << 16)) +
8995 (this[offset + 3] * 0x1000000)
8996 }
8997
8998 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
8999 offset = offset >>> 0
9000 if (!noAssert) checkOffset(offset, 4, this.length)
9001
9002 return (this[offset] * 0x1000000) +
9003 ((this[offset + 1] << 16) |
9004 (this[offset + 2] << 8) |
9005 this[offset + 3])
9006 }
9007
9008 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9009 offset = offset >>> 0
9010 byteLength = byteLength >>> 0
9011 if (!noAssert) checkOffset(offset, byteLength, this.length)
9012
9013 var val = this[offset]
9014 var mul = 1
9015 var i = 0
9016 while (++i < byteLength && (mul *= 0x100)) {
9017 val += this[offset + i] * mul
9018 }
9019 mul *= 0x80
9020
9021 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9022
9023 return val
9024 }
9025
9026 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9027 offset = offset >>> 0
9028 byteLength = byteLength >>> 0
9029 if (!noAssert) checkOffset(offset, byteLength, this.length)
9030
9031 var i = byteLength
9032 var mul = 1
9033 var val = this[offset + --i]
9034 while (i > 0 && (mul *= 0x100)) {
9035 val += this[offset + --i] * mul
9036 }
9037 mul *= 0x80
9038
9039 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9040
9041 return val
9042 }
9043
9044 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9045 offset = offset >>> 0
9046 if (!noAssert) checkOffset(offset, 1, this.length)
9047 if (!(this[offset] & 0x80)) return (this[offset])
9048 return ((0xff - this[offset] + 1) * -1)
9049 }
9050
9051 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9052 offset = offset >>> 0
9053 if (!noAssert) checkOffset(offset, 2, this.length)
9054 var val = this[offset] | (this[offset + 1] << 8)
9055 return (val & 0x8000) ? val | 0xFFFF0000 : val
9056 }
9057
9058 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9059 offset = offset >>> 0
9060 if (!noAssert) checkOffset(offset, 2, this.length)
9061 var val = this[offset + 1] | (this[offset] << 8)
9062 return (val & 0x8000) ? val | 0xFFFF0000 : val
9063 }
9064
9065 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9066 offset = offset >>> 0
9067 if (!noAssert) checkOffset(offset, 4, this.length)
9068
9069 return (this[offset]) |
9070 (this[offset + 1] << 8) |
9071 (this[offset + 2] << 16) |
9072 (this[offset + 3] << 24)
9073 }
9074
9075 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9076 offset = offset >>> 0
9077 if (!noAssert) checkOffset(offset, 4, this.length)
9078
9079 return (this[offset] << 24) |
9080 (this[offset + 1] << 16) |
9081 (this[offset + 2] << 8) |
9082 (this[offset + 3])
9083 }
9084
9085 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9086 offset = offset >>> 0
9087 if (!noAssert) checkOffset(offset, 4, this.length)
9088 return ieee754.read(this, offset, true, 23, 4)
9089 }
9090
9091 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9092 offset = offset >>> 0
9093 if (!noAssert) checkOffset(offset, 4, this.length)
9094 return ieee754.read(this, offset, false, 23, 4)
9095 }
9096
9097 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9098 offset = offset >>> 0
9099 if (!noAssert) checkOffset(offset, 8, this.length)
9100 return ieee754.read(this, offset, true, 52, 8)
9101 }
9102
9103 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9104 offset = offset >>> 0
9105 if (!noAssert) checkOffset(offset, 8, this.length)
9106 return ieee754.read(this, offset, false, 52, 8)
9107 }
9108
9109 function checkInt (buf, value, offset, ext, max, min) {
9110 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
9111 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
9112 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9113 }
9114
9115 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9116 value = +value
9117 offset = offset >>> 0
9118 byteLength = byteLength >>> 0
9119 if (!noAssert) {
9120 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9121 checkInt(this, value, offset, byteLength, maxBytes, 0)
9122 }
9123
9124 var mul = 1
9125 var i = 0
9126 this[offset] = value & 0xFF
9127 while (++i < byteLength && (mul *= 0x100)) {
9128 this[offset + i] = (value / mul) & 0xFF
9129 }
9130
9131 return offset + byteLength
9132 }
9133
9134 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9135 value = +value
9136 offset = offset >>> 0
9137 byteLength = byteLength >>> 0
9138 if (!noAssert) {
9139 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9140 checkInt(this, value, offset, byteLength, maxBytes, 0)
9141 }
9142
9143 var i = byteLength - 1
9144 var mul = 1
9145 this[offset + i] = value & 0xFF
9146 while (--i >= 0 && (mul *= 0x100)) {
9147 this[offset + i] = (value / mul) & 0xFF
9148 }
9149
9150 return offset + byteLength
9151 }
9152
9153 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9154 value = +value
9155 offset = offset >>> 0
9156 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
9157 this[offset] = (value & 0xff)
9158 return offset + 1
9159 }
9160
9161 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9162 value = +value
9163 offset = offset >>> 0
9164 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9165 this[offset] = (value & 0xff)
9166 this[offset + 1] = (value >>> 8)
9167 return offset + 2
9168 }
9169
9170 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9171 value = +value
9172 offset = offset >>> 0
9173 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9174 this[offset] = (value >>> 8)
9175 this[offset + 1] = (value & 0xff)
9176 return offset + 2
9177 }
9178
9179 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9180 value = +value
9181 offset = offset >>> 0
9182 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9183 this[offset + 3] = (value >>> 24)
9184 this[offset + 2] = (value >>> 16)
9185 this[offset + 1] = (value >>> 8)
9186 this[offset] = (value & 0xff)
9187 return offset + 4
9188 }
9189
9190 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9191 value = +value
9192 offset = offset >>> 0
9193 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9194 this[offset] = (value >>> 24)
9195 this[offset + 1] = (value >>> 16)
9196 this[offset + 2] = (value >>> 8)
9197 this[offset + 3] = (value & 0xff)
9198 return offset + 4
9199 }
9200
9201 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9202 value = +value
9203 offset = offset >>> 0
9204 if (!noAssert) {
9205 var limit = Math.pow(2, (8 * byteLength) - 1)
9206
9207 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9208 }
9209
9210 var i = 0
9211 var mul = 1
9212 var sub = 0
9213 this[offset] = value & 0xFF
9214 while (++i < byteLength && (mul *= 0x100)) {
9215 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
9216 sub = 1
9217 }
9218 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9219 }
9220
9221 return offset + byteLength
9222 }
9223
9224 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9225 value = +value
9226 offset = offset >>> 0
9227 if (!noAssert) {
9228 var limit = Math.pow(2, (8 * byteLength) - 1)
9229
9230 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9231 }
9232
9233 var i = byteLength - 1
9234 var mul = 1
9235 var sub = 0
9236 this[offset + i] = value & 0xFF
9237 while (--i >= 0 && (mul *= 0x100)) {
9238 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
9239 sub = 1
9240 }
9241 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9242 }
9243
9244 return offset + byteLength
9245 }
9246
9247 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9248 value = +value
9249 offset = offset >>> 0
9250 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
9251 if (value < 0) value = 0xff + value + 1
9252 this[offset] = (value & 0xff)
9253 return offset + 1
9254 }
9255
9256 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9257 value = +value
9258 offset = offset >>> 0
9259 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9260 this[offset] = (value & 0xff)
9261 this[offset + 1] = (value >>> 8)
9262 return offset + 2
9263 }
9264
9265 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9266 value = +value
9267 offset = offset >>> 0
9268 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9269 this[offset] = (value >>> 8)
9270 this[offset + 1] = (value & 0xff)
9271 return offset + 2
9272 }
9273
9274 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9275 value = +value
9276 offset = offset >>> 0
9277 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9278 this[offset] = (value & 0xff)
9279 this[offset + 1] = (value >>> 8)
9280 this[offset + 2] = (value >>> 16)
9281 this[offset + 3] = (value >>> 24)
9282 return offset + 4
9283 }
9284
9285 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9286 value = +value
9287 offset = offset >>> 0
9288 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9289 if (value < 0) value = 0xffffffff + value + 1
9290 this[offset] = (value >>> 24)
9291 this[offset + 1] = (value >>> 16)
9292 this[offset + 2] = (value >>> 8)
9293 this[offset + 3] = (value & 0xff)
9294 return offset + 4
9295 }
9296
9297 function checkIEEE754 (buf, value, offset, ext, max, min) {
9298 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9299 if (offset < 0) throw new RangeError('Index out of range')
9300 }
9301
9302 function writeFloat (buf, value, offset, littleEndian, noAssert) {
9303 value = +value
9304 offset = offset >>> 0
9305 if (!noAssert) {
9306 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
9307 }
9308 ieee754.write(buf, value, offset, littleEndian, 23, 4)
9309 return offset + 4
9310 }
9311
9312 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9313 return writeFloat(this, value, offset, true, noAssert)
9314 }
9315
9316 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9317 return writeFloat(this, value, offset, false, noAssert)
9318 }
9319
9320 function writeDouble (buf, value, offset, littleEndian, noAssert) {
9321 value = +value
9322 offset = offset >>> 0
9323 if (!noAssert) {
9324 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
9325 }
9326 ieee754.write(buf, value, offset, littleEndian, 52, 8)
9327 return offset + 8
9328 }
9329
9330 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9331 return writeDouble(this, value, offset, true, noAssert)
9332 }
9333
9334 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9335 return writeDouble(this, value, offset, false, noAssert)
9336 }
9337
9338 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
9339 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9340 if (!start) start = 0
9341 if (!end && end !== 0) end = this.length
9342 if (targetStart >= target.length) targetStart = target.length
9343 if (!targetStart) targetStart = 0
9344 if (end > 0 && end < start) end = start
9345
9346 // Copy 0 bytes; we're done
9347 if (end === start) return 0
9348 if (target.length === 0 || this.length === 0) return 0
9349
9350 // Fatal error conditions
9351 if (targetStart < 0) {
9352 throw new RangeError('targetStart out of bounds')
9353 }
9354 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
9355 if (end < 0) throw new RangeError('sourceEnd out of bounds')
9356
9357 // Are we oob?
9358 if (end > this.length) end = this.length
9359 if (target.length - targetStart < end - start) {
9360 end = target.length - targetStart + start
9361 }
9362
9363 var len = end - start
9364 var i
9365
9366 if (this === target && start < targetStart && targetStart < end) {
9367 // descending copy from end
9368 for (i = len - 1; i >= 0; --i) {
9369 target[i + targetStart] = this[i + start]
9370 }
9371 } else if (len < 1000) {
9372 // ascending copy from start
9373 for (i = 0; i < len; ++i) {
9374 target[i + targetStart] = this[i + start]
9375 }
9376 } else {
9377 Uint8Array.prototype.set.call(
9378 target,
9379 this.subarray(start, start + len),
9380 targetStart
9381 )
9382 }
9383
9384 return len
9385 }
9386
9387 // Usage:
9388 // buffer.fill(number[, offset[, end]])
9389 // buffer.fill(buffer[, offset[, end]])
9390 // buffer.fill(string[, offset[, end]][, encoding])
9391 Buffer.prototype.fill = function fill (val, start, end, encoding) {
9392 // Handle string cases:
9393 if (typeof val === 'string') {
9394 if (typeof start === 'string') {
9395 encoding = start
9396 start = 0
9397 end = this.length
9398 } else if (typeof end === 'string') {
9399 encoding = end
9400 end = this.length
9401 }
9402 if (val.length === 1) {
9403 var code = val.charCodeAt(0)
9404 if (code < 256) {
9405 val = code
9406 }
9407 }
9408 if (encoding !== undefined && typeof encoding !== 'string') {
9409 throw new TypeError('encoding must be a string')
9410 }
9411 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9412 throw new TypeError('Unknown encoding: ' + encoding)
9413 }
9414 } else if (typeof val === 'number') {
9415 val = val & 255
9416 }
9417
9418 // Invalid ranges are not set to a default, so can range check early.
9419 if (start < 0 || this.length < start || this.length < end) {
9420 throw new RangeError('Out of range index')
9421 }
9422
9423 if (end <= start) {
9424 return this
9425 }
9426
9427 start = start >>> 0
9428 end = end === undefined ? this.length : end >>> 0
9429
9430 if (!val) val = 0
9431
9432 var i
9433 if (typeof val === 'number') {
9434 for (i = start; i < end; ++i) {
9435 this[i] = val
9436 }
9437 } else {
9438 var bytes = Buffer.isBuffer(val)
9439 ? val
9440 : new Buffer(val, encoding)
9441 var len = bytes.length
9442 for (i = 0; i < end - start; ++i) {
9443 this[i + start] = bytes[i % len]
9444 }
9445 }
9446
9447 return this
9448 }
9449
9450 // HELPER FUNCTIONS
9451 // ================
9452
9453 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
9454
9455 function base64clean (str) {
9456 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9457 str = str.trim().replace(INVALID_BASE64_RE, '')
9458 // Node converts strings with length < 2 to ''
9459 if (str.length < 2) return ''
9460 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9461 while (str.length % 4 !== 0) {
9462 str = str + '='
9463 }
9464 return str
9465 }
9466
9467 function toHex (n) {
9468 if (n < 16) return '0' + n.toString(16)
9469 return n.toString(16)
9470 }
9471
9472 function utf8ToBytes (string, units) {
9473 units = units || Infinity
9474 var codePoint
9475 var length = string.length
9476 var leadSurrogate = null
9477 var bytes = []
9478
9479 for (var i = 0; i < length; ++i) {
9480 codePoint = string.charCodeAt(i)
9481
9482 // is surrogate component
9483 if (codePoint > 0xD7FF && codePoint < 0xE000) {
9484 // last char was a lead
9485 if (!leadSurrogate) {
9486 // no lead yet
9487 if (codePoint > 0xDBFF) {
9488 // unexpected trail
9489 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9490 continue
9491 } else if (i + 1 === length) {
9492 // unpaired lead
9493 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9494 continue
9495 }
9496
9497 // valid lead
9498 leadSurrogate = codePoint
9499
9500 continue
9501 }
9502
9503 // 2 leads in a row
9504 if (codePoint < 0xDC00) {
9505 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9506 leadSurrogate = codePoint
9507 continue
9508 }
9509
9510 // valid surrogate pair
9511 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
9512 } else if (leadSurrogate) {
9513 // valid bmp char, but last char was a lead
9514 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9515 }
9516
9517 leadSurrogate = null
9518
9519 // encode utf8
9520 if (codePoint < 0x80) {
9521 if ((units -= 1) < 0) break
9522 bytes.push(codePoint)
9523 } else if (codePoint < 0x800) {
9524 if ((units -= 2) < 0) break
9525 bytes.push(
9526 codePoint >> 0x6 | 0xC0,
9527 codePoint & 0x3F | 0x80
9528 )
9529 } else if (codePoint < 0x10000) {
9530 if ((units -= 3) < 0) break
9531 bytes.push(
9532 codePoint >> 0xC | 0xE0,
9533 codePoint >> 0x6 & 0x3F | 0x80,
9534 codePoint & 0x3F | 0x80
9535 )
9536 } else if (codePoint < 0x110000) {
9537 if ((units -= 4) < 0) break
9538 bytes.push(
9539 codePoint >> 0x12 | 0xF0,
9540 codePoint >> 0xC & 0x3F | 0x80,
9541 codePoint >> 0x6 & 0x3F | 0x80,
9542 codePoint & 0x3F | 0x80
9543 )
9544 } else {
9545 throw new Error('Invalid code point')
9546 }
9547 }
9548
9549 return bytes
9550 }
9551
9552 function asciiToBytes (str) {
9553 var byteArray = []
9554 for (var i = 0; i < str.length; ++i) {
9555 // Node's code seems to be doing this and not & 0x7F..
9556 byteArray.push(str.charCodeAt(i) & 0xFF)
9557 }
9558 return byteArray
9559 }
9560
9561 function utf16leToBytes (str, units) {
9562 var c, hi, lo
9563 var byteArray = []
9564 for (var i = 0; i < str.length; ++i) {
9565 if ((units -= 2) < 0) break
9566
9567 c = str.charCodeAt(i)
9568 hi = c >> 8
9569 lo = c % 256
9570 byteArray.push(lo)
9571 byteArray.push(hi)
9572 }
9573
9574 return byteArray
9575 }
9576
9577 function base64ToBytes (str) {
9578 return base64.toByteArray(base64clean(str))
9579 }
9580
9581 function blitBuffer (src, dst, offset, length) {
9582 for (var i = 0; i < length; ++i) {
9583 if ((i + offset >= dst.length) || (i >= src.length)) break
9584 dst[i + offset] = src[i]
9585 }
9586 return i
9587 }
9588
9589 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9590 function isArrayBufferView (obj) {
9591 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9592 }
9593
9594 function numberIsNaN (obj) {
9595 return obj !== obj // eslint-disable-line no-self-compare
9596 }
9597
9598 },{"base64-js":2,"ieee754":7}],5:[function(require,module,exports){
9599 (function (Buffer){
9600 // Copyright Joyent, Inc. and other Node contributors.
9601 //
9602 // Permission is hereby granted, free of charge, to any person obtaining a
9603 // copy of this software and associated documentation files (the
9604 // "Software"), to deal in the Software without restriction, including
9605 // without limitation the rights to use, copy, modify, merge, publish,
9606 // distribute, sublicense, and/or sell copies of the Software, and to permit
9607 // persons to whom the Software is furnished to do so, subject to the
9608 // following conditions:
9609 //
9610 // The above copyright notice and this permission notice shall be included
9611 // in all copies or substantial portions of the Software.
9612 //
9613 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9614 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9615 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9616 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9617 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9618 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9619 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9620
9621 // NOTE: These type checking functions intentionally don't use `instanceof`
9622 // because it is fragile and can be easily faked with `Object.create()`.
9623
9624 function isArray(arg) {
9625 if (Array.isArray) {
9626 return Array.isArray(arg);
9627 }
9628 return objectToString(arg) === '[object Array]';
9629 }
9630 exports.isArray = isArray;
9631
9632 function isBoolean(arg) {
9633 return typeof arg === 'boolean';
9634 }
9635 exports.isBoolean = isBoolean;
9636
9637 function isNull(arg) {
9638 return arg === null;
9639 }
9640 exports.isNull = isNull;
9641
9642 function isNullOrUndefined(arg) {
9643 return arg == null;
9644 }
9645 exports.isNullOrUndefined = isNullOrUndefined;
9646
9647 function isNumber(arg) {
9648 return typeof arg === 'number';
9649 }
9650 exports.isNumber = isNumber;
9651
9652 function isString(arg) {
9653 return typeof arg === 'string';
9654 }
9655 exports.isString = isString;
9656
9657 function isSymbol(arg) {
9658 return typeof arg === 'symbol';
9659 }
9660 exports.isSymbol = isSymbol;
9661
9662 function isUndefined(arg) {
9663 return arg === void 0;
9664 }
9665 exports.isUndefined = isUndefined;
9666
9667 function isRegExp(re) {
9668 return objectToString(re) === '[object RegExp]';
9669 }
9670 exports.isRegExp = isRegExp;
9671
9672 function isObject(arg) {
9673 return typeof arg === 'object' && arg !== null;
9674 }
9675 exports.isObject = isObject;
9676
9677 function isDate(d) {
9678 return objectToString(d) === '[object Date]';
9679 }
9680 exports.isDate = isDate;
9681
9682 function isError(e) {
9683 return (objectToString(e) === '[object Error]' || e instanceof Error);
9684 }
9685 exports.isError = isError;
9686
9687 function isFunction(arg) {
9688 return typeof arg === 'function';
9689 }
9690 exports.isFunction = isFunction;
9691
9692 function isPrimitive(arg) {
9693 return arg === null ||
9694 typeof arg === 'boolean' ||
9695 typeof arg === 'number' ||
9696 typeof arg === 'string' ||
9697 typeof arg === 'symbol' || // ES6 symbol
9698 typeof arg === 'undefined';
9699 }
9700 exports.isPrimitive = isPrimitive;
9701
9702 exports.isBuffer = Buffer.isBuffer;
9703
9704 function objectToString(o) {
9705 return Object.prototype.toString.call(o);
9706 }
9707
9708 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9709 },{"../../is-buffer/index.js":9}],6:[function(require,module,exports){
9710 // Copyright Joyent, Inc. and other Node contributors.
9711 //
9712 // Permission is hereby granted, free of charge, to any person obtaining a
9713 // copy of this software and associated documentation files (the
9714 // "Software"), to deal in the Software without restriction, including
9715 // without limitation the rights to use, copy, modify, merge, publish,
9716 // distribute, sublicense, and/or sell copies of the Software, and to permit
9717 // persons to whom the Software is furnished to do so, subject to the
9718 // following conditions:
9719 //
9720 // The above copyright notice and this permission notice shall be included
9721 // in all copies or substantial portions of the Software.
9722 //
9723 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9724 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9725 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9726 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9727 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9728 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9729 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9730
9731 function EventEmitter() {
9732 this._events = this._events || {};
9733 this._maxListeners = this._maxListeners || undefined;
9734 }
9735 module.exports = EventEmitter;
9736
9737 // Backwards-compat with node 0.10.x
9738 EventEmitter.EventEmitter = EventEmitter;
9739
9740 EventEmitter.prototype._events = undefined;
9741 EventEmitter.prototype._maxListeners = undefined;
9742
9743 // By default EventEmitters will print a warning if more than 10 listeners are
9744 // added to it. This is a useful default which helps finding memory leaks.
9745 EventEmitter.defaultMaxListeners = 10;
9746
9747 // Obviously not all Emitters should be limited to 10. This function allows
9748 // that to be increased. Set to zero for unlimited.
9749 EventEmitter.prototype.setMaxListeners = function(n) {
9750 if (!isNumber(n) || n < 0 || isNaN(n))
9751 throw TypeError('n must be a positive number');
9752 this._maxListeners = n;
9753 return this;
9754 };
9755
9756 EventEmitter.prototype.emit = function(type) {
9757 var er, handler, len, args, i, listeners;
9758
9759 if (!this._events)
9760 this._events = {};
9761
9762 // If there is no 'error' event listener then throw.
9763 if (type === 'error') {
9764 if (!this._events.error ||
9765 (isObject(this._events.error) && !this._events.error.length)) {
9766 er = arguments[1];
9767 if (er instanceof Error) {
9768 throw er; // Unhandled 'error' event
9769 } else {
9770 // At least give some kind of context to the user
9771 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9772 err.context = er;
9773 throw err;
9774 }
9775 }
9776 }
9777
9778 handler = this._events[type];
9779
9780 if (isUndefined(handler))
9781 return false;
9782
9783 if (isFunction(handler)) {
9784 switch (arguments.length) {
9785 // fast cases
9786 case 1:
9787 handler.call(this);
9788 break;
9789 case 2:
9790 handler.call(this, arguments[1]);
9791 break;
9792 case 3:
9793 handler.call(this, arguments[1], arguments[2]);
9794 break;
9795 // slower
9796 default:
9797 args = Array.prototype.slice.call(arguments, 1);
9798 handler.apply(this, args);
9799 }
9800 } else if (isObject(handler)) {
9801 args = Array.prototype.slice.call(arguments, 1);
9802 listeners = handler.slice();
9803 len = listeners.length;
9804 for (i = 0; i < len; i++)
9805 listeners[i].apply(this, args);
9806 }
9807
9808 return true;
9809 };
9810
9811 EventEmitter.prototype.addListener = function(type, listener) {
9812 var m;
9813
9814 if (!isFunction(listener))
9815 throw TypeError('listener must be a function');
9816
9817 if (!this._events)
9818 this._events = {};
9819
9820 // To avoid recursion in the case that type === "newListener"! Before
9821 // adding it to the listeners, first emit "newListener".
9822 if (this._events.newListener)
9823 this.emit('newListener', type,
9824 isFunction(listener.listener) ?
9825 listener.listener : listener);
9826
9827 if (!this._events[type])
9828 // Optimize the case of one listener. Don't need the extra array object.
9829 this._events[type] = listener;
9830 else if (isObject(this._events[type]))
9831 // If we've already got an array, just append.
9832 this._events[type].push(listener);
9833 else
9834 // Adding the second element, need to change to array.
9835 this._events[type] = [this._events[type], listener];
9836
9837 // Check for listener leak
9838 if (isObject(this._events[type]) && !this._events[type].warned) {
9839 if (!isUndefined(this._maxListeners)) {
9840 m = this._maxListeners;
9841 } else {
9842 m = EventEmitter.defaultMaxListeners;
9843 }
9844
9845 if (m && m > 0 && this._events[type].length > m) {
9846 this._events[type].warned = true;
9847 console.error('(node) warning: possible EventEmitter memory ' +
9848 'leak detected. %d listeners added. ' +
9849 'Use emitter.setMaxListeners() to increase limit.',
9850 this._events[type].length);
9851 if (typeof console.trace === 'function') {
9852 // not supported in IE 10
9853 console.trace();
9854 }
9855 }
9856 }
9857
9858 return this;
9859 };
9860
9861 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9862
9863 EventEmitter.prototype.once = function(type, listener) {
9864 if (!isFunction(listener))
9865 throw TypeError('listener must be a function');
9866
9867 var fired = false;
9868
9869 function g() {
9870 this.removeListener(type, g);
9871
9872 if (!fired) {
9873 fired = true;
9874 listener.apply(this, arguments);
9875 }
9876 }
9877
9878 g.listener = listener;
9879 this.on(type, g);
9880
9881 return this;
9882 };
9883
9884 // emits a 'removeListener' event iff the listener was removed
9885 EventEmitter.prototype.removeListener = function(type, listener) {
9886 var list, position, length, i;
9887
9888 if (!isFunction(listener))
9889 throw TypeError('listener must be a function');
9890
9891 if (!this._events || !this._events[type])
9892 return this;
9893
9894 list = this._events[type];
9895 length = list.length;
9896 position = -1;
9897
9898 if (list === listener ||
9899 (isFunction(list.listener) && list.listener === listener)) {
9900 delete this._events[type];
9901 if (this._events.removeListener)
9902 this.emit('removeListener', type, listener);
9903
9904 } else if (isObject(list)) {
9905 for (i = length; i-- > 0;) {
9906 if (list[i] === listener ||
9907 (list[i].listener && list[i].listener === listener)) {
9908 position = i;
9909 break;
9910 }
9911 }
9912
9913 if (position < 0)
9914 return this;
9915
9916 if (list.length === 1) {
9917 list.length = 0;
9918 delete this._events[type];
9919 } else {
9920 list.splice(position, 1);
9921 }
9922
9923 if (this._events.removeListener)
9924 this.emit('removeListener', type, listener);
9925 }
9926
9927 return this;
9928 };
9929
9930 EventEmitter.prototype.removeAllListeners = function(type) {
9931 var key, listeners;
9932
9933 if (!this._events)
9934 return this;
9935
9936 // not listening for removeListener, no need to emit
9937 if (!this._events.removeListener) {
9938 if (arguments.length === 0)
9939 this._events = {};
9940 else if (this._events[type])
9941 delete this._events[type];
9942 return this;
9943 }
9944
9945 // emit removeListener for all listeners on all events
9946 if (arguments.length === 0) {
9947 for (key in this._events) {
9948 if (key === 'removeListener') continue;
9949 this.removeAllListeners(key);
9950 }
9951 this.removeAllListeners('removeListener');
9952 this._events = {};
9953 return this;
9954 }
9955
9956 listeners = this._events[type];
9957
9958 if (isFunction(listeners)) {
9959 this.removeListener(type, listeners);
9960 } else if (listeners) {
9961 // LIFO order
9962 while (listeners.length)
9963 this.removeListener(type, listeners[listeners.length - 1]);
9964 }
9965 delete this._events[type];
9966
9967 return this;
9968 };
9969
9970 EventEmitter.prototype.listeners = function(type) {
9971 var ret;
9972 if (!this._events || !this._events[type])
9973 ret = [];
9974 else if (isFunction(this._events[type]))
9975 ret = [this._events[type]];
9976 else
9977 ret = this._events[type].slice();
9978 return ret;
9979 };
9980
9981 EventEmitter.prototype.listenerCount = function(type) {
9982 if (this._events) {
9983 var evlistener = this._events[type];
9984
9985 if (isFunction(evlistener))
9986 return 1;
9987 else if (evlistener)
9988 return evlistener.length;
9989 }
9990 return 0;
9991 };
9992
9993 EventEmitter.listenerCount = function(emitter, type) {
9994 return emitter.listenerCount(type);
9995 };
9996
9997 function isFunction(arg) {
9998 return typeof arg === 'function';
9999 }
10000
10001 function isNumber(arg) {
10002 return typeof arg === 'number';
10003 }
10004
10005 function isObject(arg) {
10006 return typeof arg === 'object' && arg !== null;
10007 }
10008
10009 function isUndefined(arg) {
10010 return arg === void 0;
10011 }
10012
10013 },{}],7:[function(require,module,exports){
10014 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10015 var e, m
10016 var eLen = nBytes * 8 - mLen - 1
10017 var eMax = (1 << eLen) - 1
10018 var eBias = eMax >> 1
10019 var nBits = -7
10020 var i = isLE ? (nBytes - 1) : 0
10021 var d = isLE ? -1 : 1
10022 var s = buffer[offset + i]
10023
10024 i += d
10025
10026 e = s & ((1 << (-nBits)) - 1)
10027 s >>= (-nBits)
10028 nBits += eLen
10029 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10030
10031 m = e & ((1 << (-nBits)) - 1)
10032 e >>= (-nBits)
10033 nBits += mLen
10034 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10035
10036 if (e === 0) {
10037 e = 1 - eBias
10038 } else if (e === eMax) {
10039 return m ? NaN : ((s ? -1 : 1) * Infinity)
10040 } else {
10041 m = m + Math.pow(2, mLen)
10042 e = e - eBias
10043 }
10044 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10045 }
10046
10047 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10048 var e, m, c
10049 var eLen = nBytes * 8 - mLen - 1
10050 var eMax = (1 << eLen) - 1
10051 var eBias = eMax >> 1
10052 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10053 var i = isLE ? 0 : (nBytes - 1)
10054 var d = isLE ? 1 : -1
10055 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10056
10057 value = Math.abs(value)
10058
10059 if (isNaN(value) || value === Infinity) {
10060 m = isNaN(value) ? 1 : 0
10061 e = eMax
10062 } else {
10063 e = Math.floor(Math.log(value) / Math.LN2)
10064 if (value * (c = Math.pow(2, -e)) < 1) {
10065 e--
10066 c *= 2
10067 }
10068 if (e + eBias >= 1) {
10069 value += rt / c
10070 } else {
10071 value += rt * Math.pow(2, 1 - eBias)
10072 }
10073 if (value * c >= 2) {
10074 e++
10075 c /= 2
10076 }
10077
10078 if (e + eBias >= eMax) {
10079 m = 0
10080 e = eMax
10081 } else if (e + eBias >= 1) {
10082 m = (value * c - 1) * Math.pow(2, mLen)
10083 e = e + eBias
10084 } else {
10085 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10086 e = 0
10087 }
10088 }
10089
10090 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10091
10092 e = (e << mLen) | m
10093 eLen += mLen
10094 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10095
10096 buffer[offset + i - d] |= s * 128
10097 }
10098
10099 },{}],8:[function(require,module,exports){
10100 if (typeof Object.create === 'function') {
10101 // implementation from standard node.js 'util' module
10102 module.exports = function inherits(ctor, superCtor) {
10103 ctor.super_ = superCtor
10104 ctor.prototype = Object.create(superCtor.prototype, {
10105 constructor: {
10106 value: ctor,
10107 enumerable: false,
10108 writable: true,
10109 configurable: true
10110 }
10111 });
10112 };
10113 } else {
10114 // old school shim for old browsers
10115 module.exports = function inherits(ctor, superCtor) {
10116 ctor.super_ = superCtor
10117 var TempCtor = function () {}
10118 TempCtor.prototype = superCtor.prototype
10119 ctor.prototype = new TempCtor()
10120 ctor.prototype.constructor = ctor
10121 }
10122 }
10123
10124 },{}],9:[function(require,module,exports){
10125 /*!
10126 * Determine if an object is a Buffer
10127 *
10128 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
10129 * @license MIT
10130 */
10131
10132 // The _isBuffer check is for Safari 5-7 support, because it's missing
10133 // Object.prototype.constructor. Remove this eventually
10134 module.exports = function (obj) {
10135 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10136 }
10137
10138 function isBuffer (obj) {
10139 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
10140 }
10141
10142 // For Node v0.10 support. Remove this eventually.
10143 function isSlowBuffer (obj) {
10144 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
10145 }
10146
10147 },{}],10:[function(require,module,exports){
10148 var toString = {}.toString;
10149
10150 module.exports = Array.isArray || function (arr) {
10151 return toString.call(arr) == '[object Array]';
10152 };
10153
10154 },{}],11:[function(require,module,exports){
10155 (function (process){
10156 'use strict';
10157
10158 if (!process.version ||
10159 process.version.indexOf('v0.') === 0 ||
10160 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
10161 module.exports = nextTick;
10162 } else {
10163 module.exports = process.nextTick;
10164 }
10165
10166 function nextTick(fn, arg1, arg2, arg3) {
10167 if (typeof fn !== 'function') {
10168 throw new TypeError('"callback" argument must be a function');
10169 }
10170 var len = arguments.length;
10171 var args, i;
10172 switch (len) {
10173 case 0:
10174 case 1:
10175 return process.nextTick(fn);
10176 case 2:
10177 return process.nextTick(function afterTickOne() {
10178 fn.call(null, arg1);
10179 });
10180 case 3:
10181 return process.nextTick(function afterTickTwo() {
10182 fn.call(null, arg1, arg2);
10183 });
10184 case 4:
10185 return process.nextTick(function afterTickThree() {
10186 fn.call(null, arg1, arg2, arg3);
10187 });
10188 default:
10189 args = new Array(len - 1);
10190 i = 0;
10191 while (i < args.length) {
10192 args[i++] = arguments[i];
10193 }
10194 return process.nextTick(function afterTick() {
10195 fn.apply(null, args);
10196 });
10197 }
10198 }
10199
10200 }).call(this,require('_process'))
10201 },{"_process":12}],12:[function(require,module,exports){
10202 // shim for using process in browser
10203 var process = module.exports = {};
10204
10205 // cached from whatever global is present so that test runners that stub it
10206 // don't break things. But we need to wrap it in a try catch in case it is
10207 // wrapped in strict mode code which doesn't define any globals. It's inside a
10208 // function because try/catches deoptimize in certain engines.
10209
10210 var cachedSetTimeout;
10211 var cachedClearTimeout;
10212
10213 function defaultSetTimout() {
10214 throw new Error('setTimeout has not been defined');
10215 }
10216 function defaultClearTimeout () {
10217 throw new Error('clearTimeout has not been defined');
10218 }
10219 (function () {
10220 try {
10221 if (typeof setTimeout === 'function') {
10222 cachedSetTimeout = setTimeout;
10223 } else {
10224 cachedSetTimeout = defaultSetTimout;
10225 }
10226 } catch (e) {
10227 cachedSetTimeout = defaultSetTimout;
10228 }
10229 try {
10230 if (typeof clearTimeout === 'function') {
10231 cachedClearTimeout = clearTimeout;
10232 } else {
10233 cachedClearTimeout = defaultClearTimeout;
10234 }
10235 } catch (e) {
10236 cachedClearTimeout = defaultClearTimeout;
10237 }
10238 } ())
10239 function runTimeout(fun) {
10240 if (cachedSetTimeout === setTimeout) {
10241 //normal enviroments in sane situations
10242 return setTimeout(fun, 0);
10243 }
10244 // if setTimeout wasn't available but was latter defined
10245 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10246 cachedSetTimeout = setTimeout;
10247 return setTimeout(fun, 0);
10248 }
10249 try {
10250 // when when somebody has screwed with setTimeout but no I.E. maddness
10251 return cachedSetTimeout(fun, 0);
10252 } catch(e){
10253 try {
10254 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10255 return cachedSetTimeout.call(null, fun, 0);
10256 } catch(e){
10257 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
10258 return cachedSetTimeout.call(this, fun, 0);
10259 }
10260 }
10261
10262
10263 }
10264 function runClearTimeout(marker) {
10265 if (cachedClearTimeout === clearTimeout) {
10266 //normal enviroments in sane situations
10267 return clearTimeout(marker);
10268 }
10269 // if clearTimeout wasn't available but was latter defined
10270 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10271 cachedClearTimeout = clearTimeout;
10272 return clearTimeout(marker);
10273 }
10274 try {
10275 // when when somebody has screwed with setTimeout but no I.E. maddness
10276 return cachedClearTimeout(marker);
10277 } catch (e){
10278 try {
10279 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10280 return cachedClearTimeout.call(null, marker);
10281 } catch (e){
10282 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
10283 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10284 return cachedClearTimeout.call(this, marker);
10285 }
10286 }
10287
10288
10289
10290 }
10291 var queue = [];
10292 var draining = false;
10293 var currentQueue;
10294 var queueIndex = -1;
10295
10296 function cleanUpNextTick() {
10297 if (!draining || !currentQueue) {
10298 return;
10299 }
10300 draining = false;
10301 if (currentQueue.length) {
10302 queue = currentQueue.concat(queue);
10303 } else {
10304 queueIndex = -1;
10305 }
10306 if (queue.length) {
10307 drainQueue();
10308 }
10309 }
10310
10311 function drainQueue() {
10312 if (draining) {
10313 return;
10314 }
10315 var timeout = runTimeout(cleanUpNextTick);
10316 draining = true;
10317
10318 var len = queue.length;
10319 while(len) {
10320 currentQueue = queue;
10321 queue = [];
10322 while (++queueIndex < len) {
10323 if (currentQueue) {
10324 currentQueue[queueIndex].run();
10325 }
10326 }
10327 queueIndex = -1;
10328 len = queue.length;
10329 }
10330 currentQueue = null;
10331 draining = false;
10332 runClearTimeout(timeout);
10333 }
10334
10335 process.nextTick = function (fun) {
10336 var args = new Array(arguments.length - 1);
10337 if (arguments.length > 1) {
10338 for (var i = 1; i < arguments.length; i++) {
10339 args[i - 1] = arguments[i];
10340 }
10341 }
10342 queue.push(new Item(fun, args));
10343 if (queue.length === 1 && !draining) {
10344 runTimeout(drainQueue);
10345 }
10346 };
10347
10348 // v8 likes predictible objects
10349 function Item(fun, array) {
10350 this.fun = fun;
10351 this.array = array;
10352 }
10353 Item.prototype.run = function () {
10354 this.fun.apply(null, this.array);
10355 };
10356 process.title = 'browser';
10357 process.browser = true;
10358 process.env = {};
10359 process.argv = [];
10360 process.version = ''; // empty string to avoid regexp issues
10361 process.versions = {};
10362
10363 function noop() {}
10364
10365 process.on = noop;
10366 process.addListener = noop;
10367 process.once = noop;
10368 process.off = noop;
10369 process.removeListener = noop;
10370 process.removeAllListeners = noop;
10371 process.emit = noop;
10372 process.prependListener = noop;
10373 process.prependOnceListener = noop;
10374
10375 process.listeners = function (name) { return [] }
10376
10377 process.binding = function (name) {
10378 throw new Error('process.binding is not supported');
10379 };
10380
10381 process.cwd = function () { return '/' };
10382 process.chdir = function (dir) {
10383 throw new Error('process.chdir is not supported');
10384 };
10385 process.umask = function() { return 0; };
10386
10387 },{}],13:[function(require,module,exports){
10388 module.exports = require('./lib/_stream_duplex.js');
10389
10390 },{"./lib/_stream_duplex.js":14}],14:[function(require,module,exports){
10391 // Copyright Joyent, Inc. and other Node contributors.
10392 //
10393 // Permission is hereby granted, free of charge, to any person obtaining a
10394 // copy of this software and associated documentation files (the
10395 // "Software"), to deal in the Software without restriction, including
10396 // without limitation the rights to use, copy, modify, merge, publish,
10397 // distribute, sublicense, and/or sell copies of the Software, and to permit
10398 // persons to whom the Software is furnished to do so, subject to the
10399 // following conditions:
10400 //
10401 // The above copyright notice and this permission notice shall be included
10402 // in all copies or substantial portions of the Software.
10403 //
10404 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10405 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10406 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10407 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10408 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10409 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10410 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10411
10412 // a duplex stream is just a stream that is both readable and writable.
10413 // Since JS doesn't have multiple prototypal inheritance, this class
10414 // prototypally inherits from Readable, and then parasitically from
10415 // Writable.
10416
10417 'use strict';
10418
10419 /*<replacement>*/
10420
10421 var processNextTick = require('process-nextick-args');
10422 /*</replacement>*/
10423
10424 /*<replacement>*/
10425 var objectKeys = Object.keys || function (obj) {
10426 var keys = [];
10427 for (var key in obj) {
10428 keys.push(key);
10429 }return keys;
10430 };
10431 /*</replacement>*/
10432
10433 module.exports = Duplex;
10434
10435 /*<replacement>*/
10436 var util = require('core-util-is');
10437 util.inherits = require('inherits');
10438 /*</replacement>*/
10439
10440 var Readable = require('./_stream_readable');
10441 var Writable = require('./_stream_writable');
10442
10443 util.inherits(Duplex, Readable);
10444
10445 var keys = objectKeys(Writable.prototype);
10446 for (var v = 0; v < keys.length; v++) {
10447 var method = keys[v];
10448 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
10449 }
10450
10451 function Duplex(options) {
10452 if (!(this instanceof Duplex)) return new Duplex(options);
10453
10454 Readable.call(this, options);
10455 Writable.call(this, options);
10456
10457 if (options && options.readable === false) this.readable = false;
10458
10459 if (options && options.writable === false) this.writable = false;
10460
10461 this.allowHalfOpen = true;
10462 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
10463
10464 this.once('end', onend);
10465 }
10466
10467 // the no-half-open enforcer
10468 function onend() {
10469 // if we allow half-open state, or if the writable side ended,
10470 // then we're ok.
10471 if (this.allowHalfOpen || this._writableState.ended) return;
10472
10473 // no more data can be written.
10474 // But allow more writes to happen in this tick.
10475 processNextTick(onEndNT, this);
10476 }
10477
10478 function onEndNT(self) {
10479 self.end();
10480 }
10481
10482 Object.defineProperty(Duplex.prototype, 'destroyed', {
10483 get: function () {
10484 if (this._readableState === undefined || this._writableState === undefined) {
10485 return false;
10486 }
10487 return this._readableState.destroyed && this._writableState.destroyed;
10488 },
10489 set: function (value) {
10490 // we ignore the value if the stream
10491 // has not been initialized yet
10492 if (this._readableState === undefined || this._writableState === undefined) {
10493 return;
10494 }
10495
10496 // backward compatibility, the user is explicitly
10497 // managing destroyed
10498 this._readableState.destroyed = value;
10499 this._writableState.destroyed = value;
10500 }
10501 });
10502
10503 Duplex.prototype._destroy = function (err, cb) {
10504 this.push(null);
10505 this.end();
10506
10507 processNextTick(cb, err);
10508 };
10509
10510 function forEach(xs, f) {
10511 for (var i = 0, l = xs.length; i < l; i++) {
10512 f(xs[i], i);
10513 }
10514 }
10515 },{"./_stream_readable":16,"./_stream_writable":18,"core-util-is":5,"inherits":8,"process-nextick-args":11}],15:[function(require,module,exports){
10516 // Copyright Joyent, Inc. and other Node contributors.
10517 //
10518 // Permission is hereby granted, free of charge, to any person obtaining a
10519 // copy of this software and associated documentation files (the
10520 // "Software"), to deal in the Software without restriction, including
10521 // without limitation the rights to use, copy, modify, merge, publish,
10522 // distribute, sublicense, and/or sell copies of the Software, and to permit
10523 // persons to whom the Software is furnished to do so, subject to the
10524 // following conditions:
10525 //
10526 // The above copyright notice and this permission notice shall be included
10527 // in all copies or substantial portions of the Software.
10528 //
10529 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10530 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10531 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10532 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10533 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10534 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10535 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10536
10537 // a passthrough stream.
10538 // basically just the most minimal sort of Transform stream.
10539 // Every written chunk gets output as-is.
10540
10541 'use strict';
10542
10543 module.exports = PassThrough;
10544
10545 var Transform = require('./_stream_transform');
10546
10547 /*<replacement>*/
10548 var util = require('core-util-is');
10549 util.inherits = require('inherits');
10550 /*</replacement>*/
10551
10552 util.inherits(PassThrough, Transform);
10553
10554 function PassThrough(options) {
10555 if (!(this instanceof PassThrough)) return new PassThrough(options);
10556
10557 Transform.call(this, options);
10558 }
10559
10560 PassThrough.prototype._transform = function (chunk, encoding, cb) {
10561 cb(null, chunk);
10562 };
10563 },{"./_stream_transform":17,"core-util-is":5,"inherits":8}],16:[function(require,module,exports){
10564 (function (process,global){
10565 // Copyright Joyent, Inc. and other Node contributors.
10566 //
10567 // Permission is hereby granted, free of charge, to any person obtaining a
10568 // copy of this software and associated documentation files (the
10569 // "Software"), to deal in the Software without restriction, including
10570 // without limitation the rights to use, copy, modify, merge, publish,
10571 // distribute, sublicense, and/or sell copies of the Software, and to permit
10572 // persons to whom the Software is furnished to do so, subject to the
10573 // following conditions:
10574 //
10575 // The above copyright notice and this permission notice shall be included
10576 // in all copies or substantial portions of the Software.
10577 //
10578 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10579 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10580 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10581 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10582 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10583 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10584 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10585
10586 'use strict';
10587
10588 /*<replacement>*/
10589
10590 var processNextTick = require('process-nextick-args');
10591 /*</replacement>*/
10592
10593 module.exports = Readable;
10594
10595 /*<replacement>*/
10596 var isArray = require('isarray');
10597 /*</replacement>*/
10598
10599 /*<replacement>*/
10600 var Duplex;
10601 /*</replacement>*/
10602
10603 Readable.ReadableState = ReadableState;
10604
10605 /*<replacement>*/
10606 var EE = require('events').EventEmitter;
10607
10608 var EElistenerCount = function (emitter, type) {
10609 return emitter.listeners(type).length;
10610 };
10611 /*</replacement>*/
10612
10613 /*<replacement>*/
10614 var Stream = require('./internal/streams/stream');
10615 /*</replacement>*/
10616
10617 // TODO(bmeurer): Change this back to const once hole checks are
10618 // properly optimized away early in Ignition+TurboFan.
10619 /*<replacement>*/
10620 var Buffer = require('safe-buffer').Buffer;
10621 var OurUint8Array = global.Uint8Array || function () {};
10622 function _uint8ArrayToBuffer(chunk) {
10623 return Buffer.from(chunk);
10624 }
10625 function _isUint8Array(obj) {
10626 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10627 }
10628 /*</replacement>*/
10629
10630 /*<replacement>*/
10631 var util = require('core-util-is');
10632 util.inherits = require('inherits');
10633 /*</replacement>*/
10634
10635 /*<replacement>*/
10636 var debugUtil = require('util');
10637 var debug = void 0;
10638 if (debugUtil && debugUtil.debuglog) {
10639 debug = debugUtil.debuglog('stream');
10640 } else {
10641 debug = function () {};
10642 }
10643 /*</replacement>*/
10644
10645 var BufferList = require('./internal/streams/BufferList');
10646 var destroyImpl = require('./internal/streams/destroy');
10647 var StringDecoder;
10648
10649 util.inherits(Readable, Stream);
10650
10651 var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10652
10653 function prependListener(emitter, event, fn) {
10654 // Sadly this is not cacheable as some libraries bundle their own
10655 // event emitter implementation with them.
10656 if (typeof emitter.prependListener === 'function') {
10657 return emitter.prependListener(event, fn);
10658 } else {
10659 // This is a hack to make sure that our error handler is attached before any
10660 // userland ones. NEVER DO THIS. This is here only because this code needs
10661 // to continue to work with older versions of Node.js that do not include
10662 // the prependListener() method. The goal is to eventually remove this hack.
10663 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
10664 }
10665 }
10666
10667 function ReadableState(options, stream) {
10668 Duplex = Duplex || require('./_stream_duplex');
10669
10670 options = options || {};
10671
10672 // object stream flag. Used to make read(n) ignore n and to
10673 // make all the buffer merging and length checks go away
10674 this.objectMode = !!options.objectMode;
10675
10676 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
10677
10678 // the point at which it stops calling _read() to fill the buffer
10679 // Note: 0 is a valid value, means "don't call _read preemptively ever"
10680 var hwm = options.highWaterMark;
10681 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
10682 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
10683
10684 // cast to ints.
10685 this.highWaterMark = Math.floor(this.highWaterMark);
10686
10687 // A linked list is used to store data chunks instead of an array because the
10688 // linked list can remove elements from the beginning faster than
10689 // array.shift()
10690 this.buffer = new BufferList();
10691 this.length = 0;
10692 this.pipes = null;
10693 this.pipesCount = 0;
10694 this.flowing = null;
10695 this.ended = false;
10696 this.endEmitted = false;
10697 this.reading = false;
10698
10699 // a flag to be able to tell if the event 'readable'/'data' is emitted
10700 // immediately, or on a later tick. We set this to true at first, because
10701 // any actions that shouldn't happen until "later" should generally also
10702 // not happen before the first read call.
10703 this.sync = true;
10704
10705 // whenever we return null, then we set a flag to say
10706 // that we're awaiting a 'readable' event emission.
10707 this.needReadable = false;
10708 this.emittedReadable = false;
10709 this.readableListening = false;
10710 this.resumeScheduled = false;
10711
10712 // has it been destroyed
10713 this.destroyed = false;
10714
10715 // Crypto is kind of old and crusty. Historically, its default string
10716 // encoding is 'binary' so we have to make this configurable.
10717 // Everything else in the universe uses 'utf8', though.
10718 this.defaultEncoding = options.defaultEncoding || 'utf8';
10719
10720 // the number of writers that are awaiting a drain event in .pipe()s
10721 this.awaitDrain = 0;
10722
10723 // if true, a maybeReadMore has been scheduled
10724 this.readingMore = false;
10725
10726 this.decoder = null;
10727 this.encoding = null;
10728 if (options.encoding) {
10729 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10730 this.decoder = new StringDecoder(options.encoding);
10731 this.encoding = options.encoding;
10732 }
10733 }
10734
10735 function Readable(options) {
10736 Duplex = Duplex || require('./_stream_duplex');
10737
10738 if (!(this instanceof Readable)) return new Readable(options);
10739
10740 this._readableState = new ReadableState(options, this);
10741
10742 // legacy
10743 this.readable = true;
10744
10745 if (options) {
10746 if (typeof options.read === 'function') this._read = options.read;
10747
10748 if (typeof options.destroy === 'function') this._destroy = options.destroy;
10749 }
10750
10751 Stream.call(this);
10752 }
10753
10754 Object.defineProperty(Readable.prototype, 'destroyed', {
10755 get: function () {
10756 if (this._readableState === undefined) {
10757 return false;
10758 }
10759 return this._readableState.destroyed;
10760 },
10761 set: function (value) {
10762 // we ignore the value if the stream
10763 // has not been initialized yet
10764 if (!this._readableState) {
10765 return;
10766 }
10767
10768 // backward compatibility, the user is explicitly
10769 // managing destroyed
10770 this._readableState.destroyed = value;
10771 }
10772 });
10773
10774 Readable.prototype.destroy = destroyImpl.destroy;
10775 Readable.prototype._undestroy = destroyImpl.undestroy;
10776 Readable.prototype._destroy = function (err, cb) {
10777 this.push(null);
10778 cb(err);
10779 };
10780
10781 // Manually shove something into the read() buffer.
10782 // This returns true if the highWaterMark has not been hit yet,
10783 // similar to how Writable.write() returns true if you should
10784 // write() some more.
10785 Readable.prototype.push = function (chunk, encoding) {
10786 var state = this._readableState;
10787 var skipChunkCheck;
10788
10789 if (!state.objectMode) {
10790 if (typeof chunk === 'string') {
10791 encoding = encoding || state.defaultEncoding;
10792 if (encoding !== state.encoding) {
10793 chunk = Buffer.from(chunk, encoding);
10794 encoding = '';
10795 }
10796 skipChunkCheck = true;
10797 }
10798 } else {
10799 skipChunkCheck = true;
10800 }
10801
10802 return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
10803 };
10804
10805 // Unshift should *always* be something directly out of read()
10806 Readable.prototype.unshift = function (chunk) {
10807 return readableAddChunk(this, chunk, null, true, false);
10808 };
10809
10810 function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
10811 var state = stream._readableState;
10812 if (chunk === null) {
10813 state.reading = false;
10814 onEofChunk(stream, state);
10815 } else {
10816 var er;
10817 if (!skipChunkCheck) er = chunkInvalid(state, chunk);
10818 if (er) {
10819 stream.emit('error', er);
10820 } else if (state.objectMode || chunk && chunk.length > 0) {
10821 if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
10822 chunk = _uint8ArrayToBuffer(chunk);
10823 }
10824
10825 if (addToFront) {
10826 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
10827 } else if (state.ended) {
10828 stream.emit('error', new Error('stream.push() after EOF'));
10829 } else {
10830 state.reading = false;
10831 if (state.decoder && !encoding) {
10832 chunk = state.decoder.write(chunk);
10833 if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
10834 } else {
10835 addChunk(stream, state, chunk, false);
10836 }
10837 }
10838 } else if (!addToFront) {
10839 state.reading = false;
10840 }
10841 }
10842
10843 return needMoreData(state);
10844 }
10845
10846 function addChunk(stream, state, chunk, addToFront) {
10847 if (state.flowing && state.length === 0 && !state.sync) {
10848 stream.emit('data', chunk);
10849 stream.read(0);
10850 } else {
10851 // update the buffer info.
10852 state.length += state.objectMode ? 1 : chunk.length;
10853 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
10854
10855 if (state.needReadable) emitReadable(stream);
10856 }
10857 maybeReadMore(stream, state);
10858 }
10859
10860 function chunkInvalid(state, chunk) {
10861 var er;
10862 if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
10863 er = new TypeError('Invalid non-string/buffer chunk');
10864 }
10865 return er;
10866 }
10867
10868 // if it's past the high water mark, we can push in some more.
10869 // Also, if we have no data yet, we can stand some
10870 // more bytes. This is to work around cases where hwm=0,
10871 // such as the repl. Also, if the push() triggered a
10872 // readable event, and the user called read(largeNumber) such that
10873 // needReadable was set, then we ought to push more, so that another
10874 // 'readable' event will be triggered.
10875 function needMoreData(state) {
10876 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
10877 }
10878
10879 Readable.prototype.isPaused = function () {
10880 return this._readableState.flowing === false;
10881 };
10882
10883 // backwards compatibility.
10884 Readable.prototype.setEncoding = function (enc) {
10885 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10886 this._readableState.decoder = new StringDecoder(enc);
10887 this._readableState.encoding = enc;
10888 return this;
10889 };
10890
10891 // Don't raise the hwm > 8MB
10892 var MAX_HWM = 0x800000;
10893 function computeNewHighWaterMark(n) {
10894 if (n >= MAX_HWM) {
10895 n = MAX_HWM;
10896 } else {
10897 // Get the next highest power of 2 to prevent increasing hwm excessively in
10898 // tiny amounts
10899 n--;
10900 n |= n >>> 1;
10901 n |= n >>> 2;
10902 n |= n >>> 4;
10903 n |= n >>> 8;
10904 n |= n >>> 16;
10905 n++;
10906 }
10907 return n;
10908 }
10909
10910 // This function is designed to be inlinable, so please take care when making
10911 // changes to the function body.
10912 function howMuchToRead(n, state) {
10913 if (n <= 0 || state.length === 0 && state.ended) return 0;
10914 if (state.objectMode) return 1;
10915 if (n !== n) {
10916 // Only flow one buffer at a time
10917 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10918 }
10919 // If we're asking for more than the current hwm, then raise the hwm.
10920 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10921 if (n <= state.length) return n;
10922 // Don't have enough
10923 if (!state.ended) {
10924 state.needReadable = true;
10925 return 0;
10926 }
10927 return state.length;
10928 }
10929
10930 // you can override either this method, or the async _read(n) below.
10931 Readable.prototype.read = function (n) {
10932 debug('read', n);
10933 n = parseInt(n, 10);
10934 var state = this._readableState;
10935 var nOrig = n;
10936
10937 if (n !== 0) state.emittedReadable = false;
10938
10939 // if we're doing read(0) to trigger a readable event, but we
10940 // already have a bunch of data in the buffer, then just trigger
10941 // the 'readable' event and move on.
10942 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
10943 debug('read: emitReadable', state.length, state.ended);
10944 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
10945 return null;
10946 }
10947
10948 n = howMuchToRead(n, state);
10949
10950 // if we've ended, and we're now clear, then finish it up.
10951 if (n === 0 && state.ended) {
10952 if (state.length === 0) endReadable(this);
10953 return null;
10954 }
10955
10956 // All the actual chunk generation logic needs to be
10957 // *below* the call to _read. The reason is that in certain
10958 // synthetic stream cases, such as passthrough streams, _read
10959 // may be a completely synchronous operation which may change
10960 // the state of the read buffer, providing enough data when
10961 // before there was *not* enough.
10962 //
10963 // So, the steps are:
10964 // 1. Figure out what the state of things will be after we do
10965 // a read from the buffer.
10966 //
10967 // 2. If that resulting state will trigger a _read, then call _read.
10968 // Note that this may be asynchronous, or synchronous. Yes, it is
10969 // deeply ugly to write APIs this way, but that still doesn't mean
10970 // that the Readable class should behave improperly, as streams are
10971 // designed to be sync/async agnostic.
10972 // Take note if the _read call is sync or async (ie, if the read call
10973 // has returned yet), so that we know whether or not it's safe to emit
10974 // 'readable' etc.
10975 //
10976 // 3. Actually pull the requested chunks out of the buffer and return.
10977
10978 // if we need a readable event, then we need to do some reading.
10979 var doRead = state.needReadable;
10980 debug('need readable', doRead);
10981
10982 // if we currently have less than the highWaterMark, then also read some
10983 if (state.length === 0 || state.length - n < state.highWaterMark) {
10984 doRead = true;
10985 debug('length less than watermark', doRead);
10986 }
10987
10988 // however, if we've ended, then there's no point, and if we're already
10989 // reading, then it's unnecessary.
10990 if (state.ended || state.reading) {
10991 doRead = false;
10992 debug('reading or ended', doRead);
10993 } else if (doRead) {
10994 debug('do read');
10995 state.reading = true;
10996 state.sync = true;
10997 // if the length is currently zero, then we *need* a readable event.
10998 if (state.length === 0) state.needReadable = true;
10999 // call internal read method
11000 this._read(state.highWaterMark);
11001 state.sync = false;
11002 // If _read pushed data synchronously, then `reading` will be false,
11003 // and we need to re-evaluate how much data we can return to the user.
11004 if (!state.reading) n = howMuchToRead(nOrig, state);
11005 }
11006
11007 var ret;
11008 if (n > 0) ret = fromList(n, state);else ret = null;
11009
11010 if (ret === null) {
11011 state.needReadable = true;
11012 n = 0;
11013 } else {
11014 state.length -= n;
11015 }
11016
11017 if (state.length === 0) {
11018 // If we have nothing in the buffer, then we want to know
11019 // as soon as we *do* get something into the buffer.
11020 if (!state.ended) state.needReadable = true;
11021
11022 // If we tried to read() past the EOF, then emit end on the next tick.
11023 if (nOrig !== n && state.ended) endReadable(this);
11024 }
11025
11026 if (ret !== null) this.emit('data', ret);
11027
11028 return ret;
11029 };
11030
11031 function onEofChunk(stream, state) {
11032 if (state.ended) return;
11033 if (state.decoder) {
11034 var chunk = state.decoder.end();
11035 if (chunk && chunk.length) {
11036 state.buffer.push(chunk);
11037 state.length += state.objectMode ? 1 : chunk.length;
11038 }
11039 }
11040 state.ended = true;
11041
11042 // emit 'readable' now to make sure it gets picked up.
11043 emitReadable(stream);
11044 }
11045
11046 // Don't emit readable right away in sync mode, because this can trigger
11047 // another read() call => stack overflow. This way, it might trigger
11048 // a nextTick recursion warning, but that's not so bad.
11049 function emitReadable(stream) {
11050 var state = stream._readableState;
11051 state.needReadable = false;
11052 if (!state.emittedReadable) {
11053 debug('emitReadable', state.flowing);
11054 state.emittedReadable = true;
11055 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11056 }
11057 }
11058
11059 function emitReadable_(stream) {
11060 debug('emit readable');
11061 stream.emit('readable');
11062 flow(stream);
11063 }
11064
11065 // at this point, the user has presumably seen the 'readable' event,
11066 // and called read() to consume some data. that may have triggered
11067 // in turn another _read(n) call, in which case reading = true if
11068 // it's in progress.
11069 // However, if we're not ended, or reading, and the length < hwm,
11070 // then go ahead and try to read some more preemptively.
11071 function maybeReadMore(stream, state) {
11072 if (!state.readingMore) {
11073 state.readingMore = true;
11074 processNextTick(maybeReadMore_, stream, state);
11075 }
11076 }
11077
11078 function maybeReadMore_(stream, state) {
11079 var len = state.length;
11080 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11081 debug('maybeReadMore read 0');
11082 stream.read(0);
11083 if (len === state.length)
11084 // didn't get any data, stop spinning.
11085 break;else len = state.length;
11086 }
11087 state.readingMore = false;
11088 }
11089
11090 // abstract method. to be overridden in specific implementation classes.
11091 // call cb(er, data) where data is <= n in length.
11092 // for virtual (non-string, non-buffer) streams, "length" is somewhat
11093 // arbitrary, and perhaps not very meaningful.
11094 Readable.prototype._read = function (n) {
11095 this.emit('error', new Error('_read() is not implemented'));
11096 };
11097
11098 Readable.prototype.pipe = function (dest, pipeOpts) {
11099 var src = this;
11100 var state = this._readableState;
11101
11102 switch (state.pipesCount) {
11103 case 0:
11104 state.pipes = dest;
11105 break;
11106 case 1:
11107 state.pipes = [state.pipes, dest];
11108 break;
11109 default:
11110 state.pipes.push(dest);
11111 break;
11112 }
11113 state.pipesCount += 1;
11114 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
11115
11116 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
11117
11118 var endFn = doEnd ? onend : unpipe;
11119 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
11120
11121 dest.on('unpipe', onunpipe);
11122 function onunpipe(readable, unpipeInfo) {
11123 debug('onunpipe');
11124 if (readable === src) {
11125 if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
11126 unpipeInfo.hasUnpiped = true;
11127 cleanup();
11128 }
11129 }
11130 }
11131
11132 function onend() {
11133 debug('onend');
11134 dest.end();
11135 }
11136
11137 // when the dest drains, it reduces the awaitDrain counter
11138 // on the source. This would be more elegant with a .once()
11139 // handler in flow(), but adding and removing repeatedly is
11140 // too slow.
11141 var ondrain = pipeOnDrain(src);
11142 dest.on('drain', ondrain);
11143
11144 var cleanedUp = false;
11145 function cleanup() {
11146 debug('cleanup');
11147 // cleanup event handlers once the pipe is broken
11148 dest.removeListener('close', onclose);
11149 dest.removeListener('finish', onfinish);
11150 dest.removeListener('drain', ondrain);
11151 dest.removeListener('error', onerror);
11152 dest.removeListener('unpipe', onunpipe);
11153 src.removeListener('end', onend);
11154 src.removeListener('end', unpipe);
11155 src.removeListener('data', ondata);
11156
11157 cleanedUp = true;
11158
11159 // if the reader is waiting for a drain event from this
11160 // specific writer, then it would cause it to never start
11161 // flowing again.
11162 // So, if this is awaiting a drain, then we just call it now.
11163 // If we don't know, then assume that we are waiting for one.
11164 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
11165 }
11166
11167 // If the user pushes more data while we're writing to dest then we'll end up
11168 // in ondata again. However, we only want to increase awaitDrain once because
11169 // dest will only emit one 'drain' event for the multiple writes.
11170 // => Introduce a guard on increasing awaitDrain.
11171 var increasedAwaitDrain = false;
11172 src.on('data', ondata);
11173 function ondata(chunk) {
11174 debug('ondata');
11175 increasedAwaitDrain = false;
11176 var ret = dest.write(chunk);
11177 if (false === ret && !increasedAwaitDrain) {
11178 // If the user unpiped during `dest.write()`, it is possible
11179 // to get stuck in a permanently paused state if that write
11180 // also returned false.
11181 // => Check whether `dest` is still a piping destination.
11182 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
11183 debug('false write response, pause', src._readableState.awaitDrain);
11184 src._readableState.awaitDrain++;
11185 increasedAwaitDrain = true;
11186 }
11187 src.pause();
11188 }
11189 }
11190
11191 // if the dest has an error, then stop piping into it.
11192 // however, don't suppress the throwing behavior for this.
11193 function onerror(er) {
11194 debug('onerror', er);
11195 unpipe();
11196 dest.removeListener('error', onerror);
11197 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
11198 }
11199
11200 // Make sure our error handler is attached before userland ones.
11201 prependListener(dest, 'error', onerror);
11202
11203 // Both close and finish should trigger unpipe, but only once.
11204 function onclose() {
11205 dest.removeListener('finish', onfinish);
11206 unpipe();
11207 }
11208 dest.once('close', onclose);
11209 function onfinish() {
11210 debug('onfinish');
11211 dest.removeListener('close', onclose);
11212 unpipe();
11213 }
11214 dest.once('finish', onfinish);
11215
11216 function unpipe() {
11217 debug('unpipe');
11218 src.unpipe(dest);
11219 }
11220
11221 // tell the dest that it's being piped to
11222 dest.emit('pipe', src);
11223
11224 // start the flow if it hasn't been started already.
11225 if (!state.flowing) {
11226 debug('pipe resume');
11227 src.resume();
11228 }
11229
11230 return dest;
11231 };
11232
11233 function pipeOnDrain(src) {
11234 return function () {
11235 var state = src._readableState;
11236 debug('pipeOnDrain', state.awaitDrain);
11237 if (state.awaitDrain) state.awaitDrain--;
11238 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
11239 state.flowing = true;
11240 flow(src);
11241 }
11242 };
11243 }
11244
11245 Readable.prototype.unpipe = function (dest) {
11246 var state = this._readableState;
11247 var unpipeInfo = { hasUnpiped: false };
11248
11249 // if we're not piping anywhere, then do nothing.
11250 if (state.pipesCount === 0) return this;
11251
11252 // just one destination. most common case.
11253 if (state.pipesCount === 1) {
11254 // passed in one, but it's not the right one.
11255 if (dest && dest !== state.pipes) return this;
11256
11257 if (!dest) dest = state.pipes;
11258
11259 // got a match.
11260 state.pipes = null;
11261 state.pipesCount = 0;
11262 state.flowing = false;
11263 if (dest) dest.emit('unpipe', this, unpipeInfo);
11264 return this;
11265 }
11266
11267 // slow case. multiple pipe destinations.
11268
11269 if (!dest) {
11270 // remove all.
11271 var dests = state.pipes;
11272 var len = state.pipesCount;
11273 state.pipes = null;
11274 state.pipesCount = 0;
11275 state.flowing = false;
11276
11277 for (var i = 0; i < len; i++) {
11278 dests[i].emit('unpipe', this, unpipeInfo);
11279 }return this;
11280 }
11281
11282 // try to find the right one.
11283 var index = indexOf(state.pipes, dest);
11284 if (index === -1) return this;
11285
11286 state.pipes.splice(index, 1);
11287 state.pipesCount -= 1;
11288 if (state.pipesCount === 1) state.pipes = state.pipes[0];
11289
11290 dest.emit('unpipe', this, unpipeInfo);
11291
11292 return this;
11293 };
11294
11295 // set up data events if they are asked for
11296 // Ensure readable listeners eventually get something
11297 Readable.prototype.on = function (ev, fn) {
11298 var res = Stream.prototype.on.call(this, ev, fn);
11299
11300 if (ev === 'data') {
11301 // Start flowing on next tick if stream isn't explicitly paused
11302 if (this._readableState.flowing !== false) this.resume();
11303 } else if (ev === 'readable') {
11304 var state = this._readableState;
11305 if (!state.endEmitted && !state.readableListening) {
11306 state.readableListening = state.needReadable = true;
11307 state.emittedReadable = false;
11308 if (!state.reading) {
11309 processNextTick(nReadingNextTick, this);
11310 } else if (state.length) {
11311 emitReadable(this);
11312 }
11313 }
11314 }
11315
11316 return res;
11317 };
11318 Readable.prototype.addListener = Readable.prototype.on;
11319
11320 function nReadingNextTick(self) {
11321 debug('readable nexttick read 0');
11322 self.read(0);
11323 }
11324
11325 // pause() and resume() are remnants of the legacy readable stream API
11326 // If the user uses them, then switch into old mode.
11327 Readable.prototype.resume = function () {
11328 var state = this._readableState;
11329 if (!state.flowing) {
11330 debug('resume');
11331 state.flowing = true;
11332 resume(this, state);
11333 }
11334 return this;
11335 };
11336
11337 function resume(stream, state) {
11338 if (!state.resumeScheduled) {
11339 state.resumeScheduled = true;
11340 processNextTick(resume_, stream, state);
11341 }
11342 }
11343
11344 function resume_(stream, state) {
11345 if (!state.reading) {
11346 debug('resume read 0');
11347 stream.read(0);
11348 }
11349
11350 state.resumeScheduled = false;
11351 state.awaitDrain = 0;
11352 stream.emit('resume');
11353 flow(stream);
11354 if (state.flowing && !state.reading) stream.read(0);
11355 }
11356
11357 Readable.prototype.pause = function () {
11358 debug('call pause flowing=%j', this._readableState.flowing);
11359 if (false !== this._readableState.flowing) {
11360 debug('pause');
11361 this._readableState.flowing = false;
11362 this.emit('pause');
11363 }
11364 return this;
11365 };
11366
11367 function flow(stream) {
11368 var state = stream._readableState;
11369 debug('flow', state.flowing);
11370 while (state.flowing && stream.read() !== null) {}
11371 }
11372
11373 // wrap an old-style stream as the async data source.
11374 // This is *not* part of the readable stream interface.
11375 // It is an ugly unfortunate mess of history.
11376 Readable.prototype.wrap = function (stream) {
11377 var state = this._readableState;
11378 var paused = false;
11379
11380 var self = this;
11381 stream.on('end', function () {
11382 debug('wrapped end');
11383 if (state.decoder && !state.ended) {
11384 var chunk = state.decoder.end();
11385 if (chunk && chunk.length) self.push(chunk);
11386 }
11387
11388 self.push(null);
11389 });
11390
11391 stream.on('data', function (chunk) {
11392 debug('wrapped data');
11393 if (state.decoder) chunk = state.decoder.write(chunk);
11394
11395 // don't skip over falsy values in objectMode
11396 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
11397
11398 var ret = self.push(chunk);
11399 if (!ret) {
11400 paused = true;
11401 stream.pause();
11402 }
11403 });
11404
11405 // proxy all the other methods.
11406 // important when wrapping filters and duplexes.
11407 for (var i in stream) {
11408 if (this[i] === undefined && typeof stream[i] === 'function') {
11409 this[i] = function (method) {
11410 return function () {
11411 return stream[method].apply(stream, arguments);
11412 };
11413 }(i);
11414 }
11415 }
11416
11417 // proxy certain important events.
11418 for (var n = 0; n < kProxyEvents.length; n++) {
11419 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11420 }
11421
11422 // when we try to consume some more bytes, simply unpause the
11423 // underlying stream.
11424 self._read = function (n) {
11425 debug('wrapped _read', n);
11426 if (paused) {
11427 paused = false;
11428 stream.resume();
11429 }
11430 };
11431
11432 return self;
11433 };
11434
11435 // exposed for testing purposes only.
11436 Readable._fromList = fromList;
11437
11438 // Pluck off n bytes from an array of buffers.
11439 // Length is the combined lengths of all the buffers in the list.
11440 // This function is designed to be inlinable, so please take care when making
11441 // changes to the function body.
11442 function fromList(n, state) {
11443 // nothing buffered
11444 if (state.length === 0) return null;
11445
11446 var ret;
11447 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
11448 // read it all, truncate the list
11449 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
11450 state.buffer.clear();
11451 } else {
11452 // read part of list
11453 ret = fromListPartial(n, state.buffer, state.decoder);
11454 }
11455
11456 return ret;
11457 }
11458
11459 // Extracts only enough buffered data to satisfy the amount requested.
11460 // This function is designed to be inlinable, so please take care when making
11461 // changes to the function body.
11462 function fromListPartial(n, list, hasStrings) {
11463 var ret;
11464 if (n < list.head.data.length) {
11465 // slice is the same for buffers and strings
11466 ret = list.head.data.slice(0, n);
11467 list.head.data = list.head.data.slice(n);
11468 } else if (n === list.head.data.length) {
11469 // first chunk is a perfect match
11470 ret = list.shift();
11471 } else {
11472 // result spans more than one buffer
11473 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
11474 }
11475 return ret;
11476 }
11477
11478 // Copies a specified amount of characters from the list of buffered data
11479 // chunks.
11480 // This function is designed to be inlinable, so please take care when making
11481 // changes to the function body.
11482 function copyFromBufferString(n, list) {
11483 var p = list.head;
11484 var c = 1;
11485 var ret = p.data;
11486 n -= ret.length;
11487 while (p = p.next) {
11488 var str = p.data;
11489 var nb = n > str.length ? str.length : n;
11490 if (nb === str.length) ret += str;else ret += str.slice(0, n);
11491 n -= nb;
11492 if (n === 0) {
11493 if (nb === str.length) {
11494 ++c;
11495 if (p.next) list.head = p.next;else list.head = list.tail = null;
11496 } else {
11497 list.head = p;
11498 p.data = str.slice(nb);
11499 }
11500 break;
11501 }
11502 ++c;
11503 }
11504 list.length -= c;
11505 return ret;
11506 }
11507
11508 // Copies a specified amount of bytes from the list of buffered data chunks.
11509 // This function is designed to be inlinable, so please take care when making
11510 // changes to the function body.
11511 function copyFromBuffer(n, list) {
11512 var ret = Buffer.allocUnsafe(n);
11513 var p = list.head;
11514 var c = 1;
11515 p.data.copy(ret);
11516 n -= p.data.length;
11517 while (p = p.next) {
11518 var buf = p.data;
11519 var nb = n > buf.length ? buf.length : n;
11520 buf.copy(ret, ret.length - n, 0, nb);
11521 n -= nb;
11522 if (n === 0) {
11523 if (nb === buf.length) {
11524 ++c;
11525 if (p.next) list.head = p.next;else list.head = list.tail = null;
11526 } else {
11527 list.head = p;
11528 p.data = buf.slice(nb);
11529 }
11530 break;
11531 }
11532 ++c;
11533 }
11534 list.length -= c;
11535 return ret;
11536 }
11537
11538 function endReadable(stream) {
11539 var state = stream._readableState;
11540
11541 // If we get here before consuming all the bytes, then that is a
11542 // bug in node. Should never happen.
11543 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
11544
11545 if (!state.endEmitted) {
11546 state.ended = true;
11547 processNextTick(endReadableNT, state, stream);
11548 }
11549 }
11550
11551 function endReadableNT(state, stream) {
11552 // Check that we didn't get one last unshift.
11553 if (!state.endEmitted && state.length === 0) {
11554 state.endEmitted = true;
11555 stream.readable = false;
11556 stream.emit('end');
11557 }
11558 }
11559
11560 function forEach(xs, f) {
11561 for (var i = 0, l = xs.length; i < l; i++) {
11562 f(xs[i], i);
11563 }
11564 }
11565
11566 function indexOf(xs, x) {
11567 for (var i = 0, l = xs.length; i < l; i++) {
11568 if (xs[i] === x) return i;
11569 }
11570 return -1;
11571 }
11572 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11573 },{"./_stream_duplex":14,"./internal/streams/BufferList":19,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"events":6,"inherits":8,"isarray":10,"process-nextick-args":11,"safe-buffer":26,"string_decoder/":28,"util":3}],17:[function(require,module,exports){
11574 // Copyright Joyent, Inc. and other Node contributors.
11575 //
11576 // Permission is hereby granted, free of charge, to any person obtaining a
11577 // copy of this software and associated documentation files (the
11578 // "Software"), to deal in the Software without restriction, including
11579 // without limitation the rights to use, copy, modify, merge, publish,
11580 // distribute, sublicense, and/or sell copies of the Software, and to permit
11581 // persons to whom the Software is furnished to do so, subject to the
11582 // following conditions:
11583 //
11584 // The above copyright notice and this permission notice shall be included
11585 // in all copies or substantial portions of the Software.
11586 //
11587 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11588 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11589 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11590 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11591 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11592 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11593 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11594
11595 // a transform stream is a readable/writable stream where you do
11596 // something with the data. Sometimes it's called a "filter",
11597 // but that's not a great name for it, since that implies a thing where
11598 // some bits pass through, and others are simply ignored. (That would
11599 // be a valid example of a transform, of course.)
11600 //
11601 // While the output is causally related to the input, it's not a
11602 // necessarily symmetric or synchronous transformation. For example,
11603 // a zlib stream might take multiple plain-text writes(), and then
11604 // emit a single compressed chunk some time in the future.
11605 //
11606 // Here's how this works:
11607 //
11608 // The Transform stream has all the aspects of the readable and writable
11609 // stream classes. When you write(chunk), that calls _write(chunk,cb)
11610 // internally, and returns false if there's a lot of pending writes
11611 // buffered up. When you call read(), that calls _read(n) until
11612 // there's enough pending readable data buffered up.
11613 //
11614 // In a transform stream, the written data is placed in a buffer. When
11615 // _read(n) is called, it transforms the queued up data, calling the
11616 // buffered _write cb's as it consumes chunks. If consuming a single
11617 // written chunk would result in multiple output chunks, then the first
11618 // outputted bit calls the readcb, and subsequent chunks just go into
11619 // the read buffer, and will cause it to emit 'readable' if necessary.
11620 //
11621 // This way, back-pressure is actually determined by the reading side,
11622 // since _read has to be called to start processing a new chunk. However,
11623 // a pathological inflate type of transform can cause excessive buffering
11624 // here. For example, imagine a stream where every byte of input is
11625 // interpreted as an integer from 0-255, and then results in that many
11626 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
11627 // 1kb of data being output. In this case, you could write a very small
11628 // amount of input, and end up with a very large amount of output. In
11629 // such a pathological inflating mechanism, there'd be no way to tell
11630 // the system to stop doing the transform. A single 4MB write could
11631 // cause the system to run out of memory.
11632 //
11633 // However, even in such a pathological case, only a single written chunk
11634 // would be consumed, and then the rest would wait (un-transformed) until
11635 // the results of the previous transformed chunk were consumed.
11636
11637 'use strict';
11638
11639 module.exports = Transform;
11640
11641 var Duplex = require('./_stream_duplex');
11642
11643 /*<replacement>*/
11644 var util = require('core-util-is');
11645 util.inherits = require('inherits');
11646 /*</replacement>*/
11647
11648 util.inherits(Transform, Duplex);
11649
11650 function TransformState(stream) {
11651 this.afterTransform = function (er, data) {
11652 return afterTransform(stream, er, data);
11653 };
11654
11655 this.needTransform = false;
11656 this.transforming = false;
11657 this.writecb = null;
11658 this.writechunk = null;
11659 this.writeencoding = null;
11660 }
11661
11662 function afterTransform(stream, er, data) {
11663 var ts = stream._transformState;
11664 ts.transforming = false;
11665
11666 var cb = ts.writecb;
11667
11668 if (!cb) {
11669 return stream.emit('error', new Error('write callback called multiple times'));
11670 }
11671
11672 ts.writechunk = null;
11673 ts.writecb = null;
11674
11675 if (data !== null && data !== undefined) stream.push(data);
11676
11677 cb(er);
11678
11679 var rs = stream._readableState;
11680 rs.reading = false;
11681 if (rs.needReadable || rs.length < rs.highWaterMark) {
11682 stream._read(rs.highWaterMark);
11683 }
11684 }
11685
11686 function Transform(options) {
11687 if (!(this instanceof Transform)) return new Transform(options);
11688
11689 Duplex.call(this, options);
11690
11691 this._transformState = new TransformState(this);
11692
11693 var stream = this;
11694
11695 // start out asking for a readable event once data is transformed.
11696 this._readableState.needReadable = true;
11697
11698 // we have implemented the _read method, and done the other things
11699 // that Readable wants before the first _read call, so unset the
11700 // sync guard flag.
11701 this._readableState.sync = false;
11702
11703 if (options) {
11704 if (typeof options.transform === 'function') this._transform = options.transform;
11705
11706 if (typeof options.flush === 'function') this._flush = options.flush;
11707 }
11708
11709 // When the writable side finishes, then flush out anything remaining.
11710 this.once('prefinish', function () {
11711 if (typeof this._flush === 'function') this._flush(function (er, data) {
11712 done(stream, er, data);
11713 });else done(stream);
11714 });
11715 }
11716
11717 Transform.prototype.push = function (chunk, encoding) {
11718 this._transformState.needTransform = false;
11719 return Duplex.prototype.push.call(this, chunk, encoding);
11720 };
11721
11722 // This is the part where you do stuff!
11723 // override this function in implementation classes.
11724 // 'chunk' is an input chunk.
11725 //
11726 // Call `push(newChunk)` to pass along transformed output
11727 // to the readable side. You may call 'push' zero or more times.
11728 //
11729 // Call `cb(err)` when you are done with this chunk. If you pass
11730 // an error, then that'll put the hurt on the whole operation. If you
11731 // never call cb(), then you'll never get another chunk.
11732 Transform.prototype._transform = function (chunk, encoding, cb) {
11733 throw new Error('_transform() is not implemented');
11734 };
11735
11736 Transform.prototype._write = function (chunk, encoding, cb) {
11737 var ts = this._transformState;
11738 ts.writecb = cb;
11739 ts.writechunk = chunk;
11740 ts.writeencoding = encoding;
11741 if (!ts.transforming) {
11742 var rs = this._readableState;
11743 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
11744 }
11745 };
11746
11747 // Doesn't matter what the args are here.
11748 // _transform does all the work.
11749 // That we got here means that the readable side wants more data.
11750 Transform.prototype._read = function (n) {
11751 var ts = this._transformState;
11752
11753 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11754 ts.transforming = true;
11755 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11756 } else {
11757 // mark that we need a transform, so that any data that comes in
11758 // will get processed, now that we've asked for it.
11759 ts.needTransform = true;
11760 }
11761 };
11762
11763 Transform.prototype._destroy = function (err, cb) {
11764 var _this = this;
11765
11766 Duplex.prototype._destroy.call(this, err, function (err2) {
11767 cb(err2);
11768 _this.emit('close');
11769 });
11770 };
11771
11772 function done(stream, er, data) {
11773 if (er) return stream.emit('error', er);
11774
11775 if (data !== null && data !== undefined) stream.push(data);
11776
11777 // if there's nothing in the write buffer, then that means
11778 // that nothing more will ever be provided
11779 var ws = stream._writableState;
11780 var ts = stream._transformState;
11781
11782 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
11783
11784 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11785
11786 return stream.push(null);
11787 }
11788 },{"./_stream_duplex":14,"core-util-is":5,"inherits":8}],18:[function(require,module,exports){
11789 (function (process,global){
11790 // Copyright Joyent, Inc. and other Node contributors.
11791 //
11792 // Permission is hereby granted, free of charge, to any person obtaining a
11793 // copy of this software and associated documentation files (the
11794 // "Software"), to deal in the Software without restriction, including
11795 // without limitation the rights to use, copy, modify, merge, publish,
11796 // distribute, sublicense, and/or sell copies of the Software, and to permit
11797 // persons to whom the Software is furnished to do so, subject to the
11798 // following conditions:
11799 //
11800 // The above copyright notice and this permission notice shall be included
11801 // in all copies or substantial portions of the Software.
11802 //
11803 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11804 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11805 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11806 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11807 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11808 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11809 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11810
11811 // A bit simpler than readable streams.
11812 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
11813 // the drain event emission and buffering.
11814
11815 'use strict';
11816
11817 /*<replacement>*/
11818
11819 var processNextTick = require('process-nextick-args');
11820 /*</replacement>*/
11821
11822 module.exports = Writable;
11823
11824 /* <replacement> */
11825 function WriteReq(chunk, encoding, cb) {
11826 this.chunk = chunk;
11827 this.encoding = encoding;
11828 this.callback = cb;
11829 this.next = null;
11830 }
11831
11832 // It seems a linked list but it is not
11833 // there will be only 2 of these for each stream
11834 function CorkedRequest(state) {
11835 var _this = this;
11836
11837 this.next = null;
11838 this.entry = null;
11839 this.finish = function () {
11840 onCorkedFinish(_this, state);
11841 };
11842 }
11843 /* </replacement> */
11844
11845 /*<replacement>*/
11846 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
11847 /*</replacement>*/
11848
11849 /*<replacement>*/
11850 var Duplex;
11851 /*</replacement>*/
11852
11853 Writable.WritableState = WritableState;
11854
11855 /*<replacement>*/
11856 var util = require('core-util-is');
11857 util.inherits = require('inherits');
11858 /*</replacement>*/
11859
11860 /*<replacement>*/
11861 var internalUtil = {
11862 deprecate: require('util-deprecate')
11863 };
11864 /*</replacement>*/
11865
11866 /*<replacement>*/
11867 var Stream = require('./internal/streams/stream');
11868 /*</replacement>*/
11869
11870 /*<replacement>*/
11871 var Buffer = require('safe-buffer').Buffer;
11872 var OurUint8Array = global.Uint8Array || function () {};
11873 function _uint8ArrayToBuffer(chunk) {
11874 return Buffer.from(chunk);
11875 }
11876 function _isUint8Array(obj) {
11877 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
11878 }
11879 /*</replacement>*/
11880
11881 var destroyImpl = require('./internal/streams/destroy');
11882
11883 util.inherits(Writable, Stream);
11884
11885 function nop() {}
11886
11887 function WritableState(options, stream) {
11888 Duplex = Duplex || require('./_stream_duplex');
11889
11890 options = options || {};
11891
11892 // object stream flag to indicate whether or not this stream
11893 // contains buffers or objects.
11894 this.objectMode = !!options.objectMode;
11895
11896 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
11897
11898 // the point at which write() starts returning false
11899 // Note: 0 is a valid value, means that we always return false if
11900 // the entire buffer is not flushed immediately on write()
11901 var hwm = options.highWaterMark;
11902 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
11903 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
11904
11905 // cast to ints.
11906 this.highWaterMark = Math.floor(this.highWaterMark);
11907
11908 // if _final has been called
11909 this.finalCalled = false;
11910
11911 // drain event flag.
11912 this.needDrain = false;
11913 // at the start of calling end()
11914 this.ending = false;
11915 // when end() has been called, and returned
11916 this.ended = false;
11917 // when 'finish' is emitted
11918 this.finished = false;
11919
11920 // has it been destroyed
11921 this.destroyed = false;
11922
11923 // should we decode strings into buffers before passing to _write?
11924 // this is here so that some node-core streams can optimize string
11925 // handling at a lower level.
11926 var noDecode = options.decodeStrings === false;
11927 this.decodeStrings = !noDecode;
11928
11929 // Crypto is kind of old and crusty. Historically, its default string
11930 // encoding is 'binary' so we have to make this configurable.
11931 // Everything else in the universe uses 'utf8', though.
11932 this.defaultEncoding = options.defaultEncoding || 'utf8';
11933
11934 // not an actual buffer we keep track of, but a measurement
11935 // of how much we're waiting to get pushed to some underlying
11936 // socket or file.
11937 this.length = 0;
11938
11939 // a flag to see when we're in the middle of a write.
11940 this.writing = false;
11941
11942 // when true all writes will be buffered until .uncork() call
11943 this.corked = 0;
11944
11945 // a flag to be able to tell if the onwrite cb is called immediately,
11946 // or on a later tick. We set this to true at first, because any
11947 // actions that shouldn't happen until "later" should generally also
11948 // not happen before the first write call.
11949 this.sync = true;
11950
11951 // a flag to know if we're processing previously buffered items, which
11952 // may call the _write() callback in the same tick, so that we don't
11953 // end up in an overlapped onwrite situation.
11954 this.bufferProcessing = false;
11955
11956 // the callback that's passed to _write(chunk,cb)
11957 this.onwrite = function (er) {
11958 onwrite(stream, er);
11959 };
11960
11961 // the callback that the user supplies to write(chunk,encoding,cb)
11962 this.writecb = null;
11963
11964 // the amount that is being written when _write is called.
11965 this.writelen = 0;
11966
11967 this.bufferedRequest = null;
11968 this.lastBufferedRequest = null;
11969
11970 // number of pending user-supplied write callbacks
11971 // this must be 0 before 'finish' can be emitted
11972 this.pendingcb = 0;
11973
11974 // emit prefinish if the only thing we're waiting for is _write cbs
11975 // This is relevant for synchronous Transform streams
11976 this.prefinished = false;
11977
11978 // True if the error was already emitted and should not be thrown again
11979 this.errorEmitted = false;
11980
11981 // count buffered requests
11982 this.bufferedRequestCount = 0;
11983
11984 // allocate the first CorkedRequest, there is always
11985 // one allocated and free to use, and we maintain at most two
11986 this.corkedRequestsFree = new CorkedRequest(this);
11987 }
11988
11989 WritableState.prototype.getBuffer = function getBuffer() {
11990 var current = this.bufferedRequest;
11991 var out = [];
11992 while (current) {
11993 out.push(current);
11994 current = current.next;
11995 }
11996 return out;
11997 };
11998
11999 (function () {
12000 try {
12001 Object.defineProperty(WritableState.prototype, 'buffer', {
12002 get: internalUtil.deprecate(function () {
12003 return this.getBuffer();
12004 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
12005 });
12006 } catch (_) {}
12007 })();
12008
12009 // Test _writableState for inheritance to account for Duplex streams,
12010 // whose prototype chain only points to Readable.
12011 var realHasInstance;
12012 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
12013 realHasInstance = Function.prototype[Symbol.hasInstance];
12014 Object.defineProperty(Writable, Symbol.hasInstance, {
12015 value: function (object) {
12016 if (realHasInstance.call(this, object)) return true;
12017
12018 return object && object._writableState instanceof WritableState;
12019 }
12020 });
12021 } else {
12022 realHasInstance = function (object) {
12023 return object instanceof this;
12024 };
12025 }
12026
12027 function Writable(options) {
12028 Duplex = Duplex || require('./_stream_duplex');
12029
12030 // Writable ctor is applied to Duplexes, too.
12031 // `realHasInstance` is necessary because using plain `instanceof`
12032 // would return false, as no `_writableState` property is attached.
12033
12034 // Trying to use the custom `instanceof` for Writable here will also break the
12035 // Node.js LazyTransform implementation, which has a non-trivial getter for
12036 // `_writableState` that would lead to infinite recursion.
12037 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12038 return new Writable(options);
12039 }
12040
12041 this._writableState = new WritableState(options, this);
12042
12043 // legacy.
12044 this.writable = true;
12045
12046 if (options) {
12047 if (typeof options.write === 'function') this._write = options.write;
12048
12049 if (typeof options.writev === 'function') this._writev = options.writev;
12050
12051 if (typeof options.destroy === 'function') this._destroy = options.destroy;
12052
12053 if (typeof options.final === 'function') this._final = options.final;
12054 }
12055
12056 Stream.call(this);
12057 }
12058
12059 // Otherwise people can pipe Writable streams, which is just wrong.
12060 Writable.prototype.pipe = function () {
12061 this.emit('error', new Error('Cannot pipe, not readable'));
12062 };
12063
12064 function writeAfterEnd(stream, cb) {
12065 var er = new Error('write after end');
12066 // TODO: defer error events consistently everywhere, not just the cb
12067 stream.emit('error', er);
12068 processNextTick(cb, er);
12069 }
12070
12071 // Checks that a user-supplied chunk is valid, especially for the particular
12072 // mode the stream is in. Currently this means that `null` is never accepted
12073 // and undefined/non-string values are only allowed in object mode.
12074 function validChunk(stream, state, chunk, cb) {
12075 var valid = true;
12076 var er = false;
12077
12078 if (chunk === null) {
12079 er = new TypeError('May not write null values to stream');
12080 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12081 er = new TypeError('Invalid non-string/buffer chunk');
12082 }
12083 if (er) {
12084 stream.emit('error', er);
12085 processNextTick(cb, er);
12086 valid = false;
12087 }
12088 return valid;
12089 }
12090
12091 Writable.prototype.write = function (chunk, encoding, cb) {
12092 var state = this._writableState;
12093 var ret = false;
12094 var isBuf = _isUint8Array(chunk) && !state.objectMode;
12095
12096 if (isBuf && !Buffer.isBuffer(chunk)) {
12097 chunk = _uint8ArrayToBuffer(chunk);
12098 }
12099
12100 if (typeof encoding === 'function') {
12101 cb = encoding;
12102 encoding = null;
12103 }
12104
12105 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12106
12107 if (typeof cb !== 'function') cb = nop;
12108
12109 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12110 state.pendingcb++;
12111 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
12112 }
12113
12114 return ret;
12115 };
12116
12117 Writable.prototype.cork = function () {
12118 var state = this._writableState;
12119
12120 state.corked++;
12121 };
12122
12123 Writable.prototype.uncork = function () {
12124 var state = this._writableState;
12125
12126 if (state.corked) {
12127 state.corked--;
12128
12129 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12130 }
12131 };
12132
12133 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12134 // node::ParseEncoding() requires lower case.
12135 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12136 if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
12137 this._writableState.defaultEncoding = encoding;
12138 return this;
12139 };
12140
12141 function decodeChunk(state, chunk, encoding) {
12142 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12143 chunk = Buffer.from(chunk, encoding);
12144 }
12145 return chunk;
12146 }
12147
12148 // if we're already writing something, then just put this
12149 // in the queue, and wait our turn. Otherwise, call _write
12150 // If we return false, then we need a drain event, so set that flag.
12151 function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12152 if (!isBuf) {
12153 var newChunk = decodeChunk(state, chunk, encoding);
12154 if (chunk !== newChunk) {
12155 isBuf = true;
12156 encoding = 'buffer';
12157 chunk = newChunk;
12158 }
12159 }
12160 var len = state.objectMode ? 1 : chunk.length;
12161
12162 state.length += len;
12163
12164 var ret = state.length < state.highWaterMark;
12165 // we must ensure that previous needDrain will not be reset to false.
12166 if (!ret) state.needDrain = true;
12167
12168 if (state.writing || state.corked) {
12169 var last = state.lastBufferedRequest;
12170 state.lastBufferedRequest = {
12171 chunk: chunk,
12172 encoding: encoding,
12173 isBuf: isBuf,
12174 callback: cb,
12175 next: null
12176 };
12177 if (last) {
12178 last.next = state.lastBufferedRequest;
12179 } else {
12180 state.bufferedRequest = state.lastBufferedRequest;
12181 }
12182 state.bufferedRequestCount += 1;
12183 } else {
12184 doWrite(stream, state, false, len, chunk, encoding, cb);
12185 }
12186
12187 return ret;
12188 }
12189
12190 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12191 state.writelen = len;
12192 state.writecb = cb;
12193 state.writing = true;
12194 state.sync = true;
12195 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12196 state.sync = false;
12197 }
12198
12199 function onwriteError(stream, state, sync, er, cb) {
12200 --state.pendingcb;
12201
12202 if (sync) {
12203 // defer the callback if we are being called synchronously
12204 // to avoid piling up things on the stack
12205 processNextTick(cb, er);
12206 // this can emit finish, and it will always happen
12207 // after error
12208 processNextTick(finishMaybe, stream, state);
12209 stream._writableState.errorEmitted = true;
12210 stream.emit('error', er);
12211 } else {
12212 // the caller expect this to happen before if
12213 // it is async
12214 cb(er);
12215 stream._writableState.errorEmitted = true;
12216 stream.emit('error', er);
12217 // this can emit finish, but finish must
12218 // always follow error
12219 finishMaybe(stream, state);
12220 }
12221 }
12222
12223 function onwriteStateUpdate(state) {
12224 state.writing = false;
12225 state.writecb = null;
12226 state.length -= state.writelen;
12227 state.writelen = 0;
12228 }
12229
12230 function onwrite(stream, er) {
12231 var state = stream._writableState;
12232 var sync = state.sync;
12233 var cb = state.writecb;
12234
12235 onwriteStateUpdate(state);
12236
12237 if (er) onwriteError(stream, state, sync, er, cb);else {
12238 // Check if we're actually ready to finish, but don't emit yet
12239 var finished = needFinish(state);
12240
12241 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12242 clearBuffer(stream, state);
12243 }
12244
12245 if (sync) {
12246 /*<replacement>*/
12247 asyncWrite(afterWrite, stream, state, finished, cb);
12248 /*</replacement>*/
12249 } else {
12250 afterWrite(stream, state, finished, cb);
12251 }
12252 }
12253 }
12254
12255 function afterWrite(stream, state, finished, cb) {
12256 if (!finished) onwriteDrain(stream, state);
12257 state.pendingcb--;
12258 cb();
12259 finishMaybe(stream, state);
12260 }
12261
12262 // Must force callback to be called on nextTick, so that we don't
12263 // emit 'drain' before the write() consumer gets the 'false' return
12264 // value, and has a chance to attach a 'drain' listener.
12265 function onwriteDrain(stream, state) {
12266 if (state.length === 0 && state.needDrain) {
12267 state.needDrain = false;
12268 stream.emit('drain');
12269 }
12270 }
12271
12272 // if there's something in the buffer waiting, then process it
12273 function clearBuffer(stream, state) {
12274 state.bufferProcessing = true;
12275 var entry = state.bufferedRequest;
12276
12277 if (stream._writev && entry && entry.next) {
12278 // Fast case, write everything using _writev()
12279 var l = state.bufferedRequestCount;
12280 var buffer = new Array(l);
12281 var holder = state.corkedRequestsFree;
12282 holder.entry = entry;
12283
12284 var count = 0;
12285 var allBuffers = true;
12286 while (entry) {
12287 buffer[count] = entry;
12288 if (!entry.isBuf) allBuffers = false;
12289 entry = entry.next;
12290 count += 1;
12291 }
12292 buffer.allBuffers = allBuffers;
12293
12294 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
12295
12296 // doWrite is almost always async, defer these to save a bit of time
12297 // as the hot path ends with doWrite
12298 state.pendingcb++;
12299 state.lastBufferedRequest = null;
12300 if (holder.next) {
12301 state.corkedRequestsFree = holder.next;
12302 holder.next = null;
12303 } else {
12304 state.corkedRequestsFree = new CorkedRequest(state);
12305 }
12306 } else {
12307 // Slow case, write chunks one-by-one
12308 while (entry) {
12309 var chunk = entry.chunk;
12310 var encoding = entry.encoding;
12311 var cb = entry.callback;
12312 var len = state.objectMode ? 1 : chunk.length;
12313
12314 doWrite(stream, state, false, len, chunk, encoding, cb);
12315 entry = entry.next;
12316 // if we didn't call the onwrite immediately, then
12317 // it means that we need to wait until it does.
12318 // also, that means that the chunk and cb are currently
12319 // being processed, so move the buffer counter past them.
12320 if (state.writing) {
12321 break;
12322 }
12323 }
12324
12325 if (entry === null) state.lastBufferedRequest = null;
12326 }
12327
12328 state.bufferedRequestCount = 0;
12329 state.bufferedRequest = entry;
12330 state.bufferProcessing = false;
12331 }
12332
12333 Writable.prototype._write = function (chunk, encoding, cb) {
12334 cb(new Error('_write() is not implemented'));
12335 };
12336
12337 Writable.prototype._writev = null;
12338
12339 Writable.prototype.end = function (chunk, encoding, cb) {
12340 var state = this._writableState;
12341
12342 if (typeof chunk === 'function') {
12343 cb = chunk;
12344 chunk = null;
12345 encoding = null;
12346 } else if (typeof encoding === 'function') {
12347 cb = encoding;
12348 encoding = null;
12349 }
12350
12351 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
12352
12353 // .end() fully uncorks
12354 if (state.corked) {
12355 state.corked = 1;
12356 this.uncork();
12357 }
12358
12359 // ignore unnecessary end() calls.
12360 if (!state.ending && !state.finished) endWritable(this, state, cb);
12361 };
12362
12363 function needFinish(state) {
12364 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
12365 }
12366 function callFinal(stream, state) {
12367 stream._final(function (err) {
12368 state.pendingcb--;
12369 if (err) {
12370 stream.emit('error', err);
12371 }
12372 state.prefinished = true;
12373 stream.emit('prefinish');
12374 finishMaybe(stream, state);
12375 });
12376 }
12377 function prefinish(stream, state) {
12378 if (!state.prefinished && !state.finalCalled) {
12379 if (typeof stream._final === 'function') {
12380 state.pendingcb++;
12381 state.finalCalled = true;
12382 processNextTick(callFinal, stream, state);
12383 } else {
12384 state.prefinished = true;
12385 stream.emit('prefinish');
12386 }
12387 }
12388 }
12389
12390 function finishMaybe(stream, state) {
12391 var need = needFinish(state);
12392 if (need) {
12393 prefinish(stream, state);
12394 if (state.pendingcb === 0) {
12395 state.finished = true;
12396 stream.emit('finish');
12397 }
12398 }
12399 return need;
12400 }
12401
12402 function endWritable(stream, state, cb) {
12403 state.ending = true;
12404 finishMaybe(stream, state);
12405 if (cb) {
12406 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
12407 }
12408 state.ended = true;
12409 stream.writable = false;
12410 }
12411
12412 function onCorkedFinish(corkReq, state, err) {
12413 var entry = corkReq.entry;
12414 corkReq.entry = null;
12415 while (entry) {
12416 var cb = entry.callback;
12417 state.pendingcb--;
12418 cb(err);
12419 entry = entry.next;
12420 }
12421 if (state.corkedRequestsFree) {
12422 state.corkedRequestsFree.next = corkReq;
12423 } else {
12424 state.corkedRequestsFree = corkReq;
12425 }
12426 }
12427
12428 Object.defineProperty(Writable.prototype, 'destroyed', {
12429 get: function () {
12430 if (this._writableState === undefined) {
12431 return false;
12432 }
12433 return this._writableState.destroyed;
12434 },
12435 set: function (value) {
12436 // we ignore the value if the stream
12437 // has not been initialized yet
12438 if (!this._writableState) {
12439 return;
12440 }
12441
12442 // backward compatibility, the user is explicitly
12443 // managing destroyed
12444 this._writableState.destroyed = value;
12445 }
12446 });
12447
12448 Writable.prototype.destroy = destroyImpl.destroy;
12449 Writable.prototype._undestroy = destroyImpl.undestroy;
12450 Writable.prototype._destroy = function (err, cb) {
12451 this.end();
12452 cb(err);
12453 };
12454 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12455 },{"./_stream_duplex":14,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"inherits":8,"process-nextick-args":11,"safe-buffer":26,"util-deprecate":29}],19:[function(require,module,exports){
12456 'use strict';
12457
12458 /*<replacement>*/
12459
12460 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12461
12462 var Buffer = require('safe-buffer').Buffer;
12463 /*</replacement>*/
12464
12465 function copyBuffer(src, target, offset) {
12466 src.copy(target, offset);
12467 }
12468
12469 module.exports = function () {
12470 function BufferList() {
12471 _classCallCheck(this, BufferList);
12472
12473 this.head = null;
12474 this.tail = null;
12475 this.length = 0;
12476 }
12477
12478 BufferList.prototype.push = function push(v) {
12479 var entry = { data: v, next: null };
12480 if (this.length > 0) this.tail.next = entry;else this.head = entry;
12481 this.tail = entry;
12482 ++this.length;
12483 };
12484
12485 BufferList.prototype.unshift = function unshift(v) {
12486 var entry = { data: v, next: this.head };
12487 if (this.length === 0) this.tail = entry;
12488 this.head = entry;
12489 ++this.length;
12490 };
12491
12492 BufferList.prototype.shift = function shift() {
12493 if (this.length === 0) return;
12494 var ret = this.head.data;
12495 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
12496 --this.length;
12497 return ret;
12498 };
12499
12500 BufferList.prototype.clear = function clear() {
12501 this.head = this.tail = null;
12502 this.length = 0;
12503 };
12504
12505 BufferList.prototype.join = function join(s) {
12506 if (this.length === 0) return '';
12507 var p = this.head;
12508 var ret = '' + p.data;
12509 while (p = p.next) {
12510 ret += s + p.data;
12511 }return ret;
12512 };
12513
12514 BufferList.prototype.concat = function concat(n) {
12515 if (this.length === 0) return Buffer.alloc(0);
12516 if (this.length === 1) return this.head.data;
12517 var ret = Buffer.allocUnsafe(n >>> 0);
12518 var p = this.head;
12519 var i = 0;
12520 while (p) {
12521 copyBuffer(p.data, ret, i);
12522 i += p.data.length;
12523 p = p.next;
12524 }
12525 return ret;
12526 };
12527
12528 return BufferList;
12529 }();
12530 },{"safe-buffer":26}],20:[function(require,module,exports){
12531 'use strict';
12532
12533 /*<replacement>*/
12534
12535 var processNextTick = require('process-nextick-args');
12536 /*</replacement>*/
12537
12538 // undocumented cb() API, needed for core, not for public API
12539 function destroy(err, cb) {
12540 var _this = this;
12541
12542 var readableDestroyed = this._readableState && this._readableState.destroyed;
12543 var writableDestroyed = this._writableState && this._writableState.destroyed;
12544
12545 if (readableDestroyed || writableDestroyed) {
12546 if (cb) {
12547 cb(err);
12548 } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
12549 processNextTick(emitErrorNT, this, err);
12550 }
12551 return;
12552 }
12553
12554 // we set destroyed to true before firing error callbacks in order
12555 // to make it re-entrance safe in case destroy() is called within callbacks
12556
12557 if (this._readableState) {
12558 this._readableState.destroyed = true;
12559 }
12560
12561 // if this is a duplex stream mark the writable part as destroyed as well
12562 if (this._writableState) {
12563 this._writableState.destroyed = true;
12564 }
12565
12566 this._destroy(err || null, function (err) {
12567 if (!cb && err) {
12568 processNextTick(emitErrorNT, _this, err);
12569 if (_this._writableState) {
12570 _this._writableState.errorEmitted = true;
12571 }
12572 } else if (cb) {
12573 cb(err);
12574 }
12575 });
12576 }
12577
12578 function undestroy() {
12579 if (this._readableState) {
12580 this._readableState.destroyed = false;
12581 this._readableState.reading = false;
12582 this._readableState.ended = false;
12583 this._readableState.endEmitted = false;
12584 }
12585
12586 if (this._writableState) {
12587 this._writableState.destroyed = false;
12588 this._writableState.ended = false;
12589 this._writableState.ending = false;
12590 this._writableState.finished = false;
12591 this._writableState.errorEmitted = false;
12592 }
12593 }
12594
12595 function emitErrorNT(self, err) {
12596 self.emit('error', err);
12597 }
12598
12599 module.exports = {
12600 destroy: destroy,
12601 undestroy: undestroy
12602 };
12603 },{"process-nextick-args":11}],21:[function(require,module,exports){
12604 module.exports = require('events').EventEmitter;
12605
12606 },{"events":6}],22:[function(require,module,exports){
12607 module.exports = require('./readable').PassThrough
12608
12609 },{"./readable":23}],23:[function(require,module,exports){
12610 exports = module.exports = require('./lib/_stream_readable.js');
12611 exports.Stream = exports;
12612 exports.Readable = exports;
12613 exports.Writable = require('./lib/_stream_writable.js');
12614 exports.Duplex = require('./lib/_stream_duplex.js');
12615 exports.Transform = require('./lib/_stream_transform.js');
12616 exports.PassThrough = require('./lib/_stream_passthrough.js');
12617
12618 },{"./lib/_stream_duplex.js":14,"./lib/_stream_passthrough.js":15,"./lib/_stream_readable.js":16,"./lib/_stream_transform.js":17,"./lib/_stream_writable.js":18}],24:[function(require,module,exports){
12619 module.exports = require('./readable').Transform
12620
12621 },{"./readable":23}],25:[function(require,module,exports){
12622 module.exports = require('./lib/_stream_writable.js');
12623
12624 },{"./lib/_stream_writable.js":18}],26:[function(require,module,exports){
12625 /* eslint-disable node/no-deprecated-api */
12626 var buffer = require('buffer')
12627 var Buffer = buffer.Buffer
12628
12629 // alternative to using Object.keys for old browsers
12630 function copyProps (src, dst) {
12631 for (var key in src) {
12632 dst[key] = src[key]
12633 }
12634 }
12635 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12636 module.exports = buffer
12637 } else {
12638 // Copy properties from require('buffer')
12639 copyProps(buffer, exports)
12640 exports.Buffer = SafeBuffer
12641 }
12642
12643 function SafeBuffer (arg, encodingOrOffset, length) {
12644 return Buffer(arg, encodingOrOffset, length)
12645 }
12646
12647 // Copy static methods from Buffer
12648 copyProps(Buffer, SafeBuffer)
12649
12650 SafeBuffer.from = function (arg, encodingOrOffset, length) {
12651 if (typeof arg === 'number') {
12652 throw new TypeError('Argument must not be a number')
12653 }
12654 return Buffer(arg, encodingOrOffset, length)
12655 }
12656
12657 SafeBuffer.alloc = function (size, fill, encoding) {
12658 if (typeof size !== 'number') {
12659 throw new TypeError('Argument must be a number')
12660 }
12661 var buf = Buffer(size)
12662 if (fill !== undefined) {
12663 if (typeof encoding === 'string') {
12664 buf.fill(fill, encoding)
12665 } else {
12666 buf.fill(fill)
12667 }
12668 } else {
12669 buf.fill(0)
12670 }
12671 return buf
12672 }
12673
12674 SafeBuffer.allocUnsafe = function (size) {
12675 if (typeof size !== 'number') {
12676 throw new TypeError('Argument must be a number')
12677 }
12678 return Buffer(size)
12679 }
12680
12681 SafeBuffer.allocUnsafeSlow = function (size) {
12682 if (typeof size !== 'number') {
12683 throw new TypeError('Argument must be a number')
12684 }
12685 return buffer.SlowBuffer(size)
12686 }
12687
12688 },{"buffer":4}],27:[function(require,module,exports){
12689 // Copyright Joyent, Inc. and other Node contributors.
12690 //
12691 // Permission is hereby granted, free of charge, to any person obtaining a
12692 // copy of this software and associated documentation files (the
12693 // "Software"), to deal in the Software without restriction, including
12694 // without limitation the rights to use, copy, modify, merge, publish,
12695 // distribute, sublicense, and/or sell copies of the Software, and to permit
12696 // persons to whom the Software is furnished to do so, subject to the
12697 // following conditions:
12698 //
12699 // The above copyright notice and this permission notice shall be included
12700 // in all copies or substantial portions of the Software.
12701 //
12702 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12703 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12704 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12705 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12706 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12707 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12708 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12709
12710 module.exports = Stream;
12711
12712 var EE = require('events').EventEmitter;
12713 var inherits = require('inherits');
12714
12715 inherits(Stream, EE);
12716 Stream.Readable = require('readable-stream/readable.js');
12717 Stream.Writable = require('readable-stream/writable.js');
12718 Stream.Duplex = require('readable-stream/duplex.js');
12719 Stream.Transform = require('readable-stream/transform.js');
12720 Stream.PassThrough = require('readable-stream/passthrough.js');
12721
12722 // Backwards-compat with node 0.4.x
12723 Stream.Stream = Stream;
12724
12725
12726
12727 // old-style streams. Note that the pipe method (the only relevant
12728 // part of this class) is overridden in the Readable class.
12729
12730 function Stream() {
12731 EE.call(this);
12732 }
12733
12734 Stream.prototype.pipe = function(dest, options) {
12735 var source = this;
12736
12737 function ondata(chunk) {
12738 if (dest.writable) {
12739 if (false === dest.write(chunk) && source.pause) {
12740 source.pause();
12741 }
12742 }
12743 }
12744
12745 source.on('data', ondata);
12746
12747 function ondrain() {
12748 if (source.readable && source.resume) {
12749 source.resume();
12750 }
12751 }
12752
12753 dest.on('drain', ondrain);
12754
12755 // If the 'end' option is not supplied, dest.end() will be called when
12756 // source gets the 'end' or 'close' events. Only dest.end() once.
12757 if (!dest._isStdio && (!options || options.end !== false)) {
12758 source.on('end', onend);
12759 source.on('close', onclose);
12760 }
12761
12762 var didOnEnd = false;
12763 function onend() {
12764 if (didOnEnd) return;
12765 didOnEnd = true;
12766
12767 dest.end();
12768 }
12769
12770
12771 function onclose() {
12772 if (didOnEnd) return;
12773 didOnEnd = true;
12774
12775 if (typeof dest.destroy === 'function') dest.destroy();
12776 }
12777
12778 // don't leave dangling pipes when there are errors.
12779 function onerror(er) {
12780 cleanup();
12781 if (EE.listenerCount(this, 'error') === 0) {
12782 throw er; // Unhandled stream error in pipe.
12783 }
12784 }
12785
12786 source.on('error', onerror);
12787 dest.on('error', onerror);
12788
12789 // remove all the event listeners that were added.
12790 function cleanup() {
12791 source.removeListener('data', ondata);
12792 dest.removeListener('drain', ondrain);
12793
12794 source.removeListener('end', onend);
12795 source.removeListener('close', onclose);
12796
12797 source.removeListener('error', onerror);
12798 dest.removeListener('error', onerror);
12799
12800 source.removeListener('end', cleanup);
12801 source.removeListener('close', cleanup);
12802
12803 dest.removeListener('close', cleanup);
12804 }
12805
12806 source.on('end', cleanup);
12807 source.on('close', cleanup);
12808
12809 dest.on('close', cleanup);
12810
12811 dest.emit('pipe', source);
12812
12813 // Allow for unix-like usage: A.pipe(B).pipe(C)
12814 return dest;
12815 };
12816
12817 },{"events":6,"inherits":8,"readable-stream/duplex.js":13,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],28:[function(require,module,exports){
12818 'use strict';
12819
12820 var Buffer = require('safe-buffer').Buffer;
12821
12822 var isEncoding = Buffer.isEncoding || function (encoding) {
12823 encoding = '' + encoding;
12824 switch (encoding && encoding.toLowerCase()) {
12825 case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
12826 return true;
12827 default:
12828 return false;
12829 }
12830 };
12831
12832 function _normalizeEncoding(enc) {
12833 if (!enc) return 'utf8';
12834 var retried;
12835 while (true) {
12836 switch (enc) {
12837 case 'utf8':
12838 case 'utf-8':
12839 return 'utf8';
12840 case 'ucs2':
12841 case 'ucs-2':
12842 case 'utf16le':
12843 case 'utf-16le':
12844 return 'utf16le';
12845 case 'latin1':
12846 case 'binary':
12847 return 'latin1';
12848 case 'base64':
12849 case 'ascii':
12850 case 'hex':
12851 return enc;
12852 default:
12853 if (retried) return; // undefined
12854 enc = ('' + enc).toLowerCase();
12855 retried = true;
12856 }
12857 }
12858 };
12859
12860 // Do not cache `Buffer.isEncoding` when checking encoding names as some
12861 // modules monkey-patch it to support additional encodings
12862 function normalizeEncoding(enc) {
12863 var nenc = _normalizeEncoding(enc);
12864 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12865 return nenc || enc;
12866 }
12867
12868 // StringDecoder provides an interface for efficiently splitting a series of
12869 // buffers into a series of JS strings without breaking apart multi-byte
12870 // characters.
12871 exports.StringDecoder = StringDecoder;
12872 function StringDecoder(encoding) {
12873 this.encoding = normalizeEncoding(encoding);
12874 var nb;
12875 switch (this.encoding) {
12876 case 'utf16le':
12877 this.text = utf16Text;
12878 this.end = utf16End;
12879 nb = 4;
12880 break;
12881 case 'utf8':
12882 this.fillLast = utf8FillLast;
12883 nb = 4;
12884 break;
12885 case 'base64':
12886 this.text = base64Text;
12887 this.end = base64End;
12888 nb = 3;
12889 break;
12890 default:
12891 this.write = simpleWrite;
12892 this.end = simpleEnd;
12893 return;
12894 }
12895 this.lastNeed = 0;
12896 this.lastTotal = 0;
12897 this.lastChar = Buffer.allocUnsafe(nb);
12898 }
12899
12900 StringDecoder.prototype.write = function (buf) {
12901 if (buf.length === 0) return '';
12902 var r;
12903 var i;
12904 if (this.lastNeed) {
12905 r = this.fillLast(buf);
12906 if (r === undefined) return '';
12907 i = this.lastNeed;
12908 this.lastNeed = 0;
12909 } else {
12910 i = 0;
12911 }
12912 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12913 return r || '';
12914 };
12915
12916 StringDecoder.prototype.end = utf8End;
12917
12918 // Returns only complete characters in a Buffer
12919 StringDecoder.prototype.text = utf8Text;
12920
12921 // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
12922 StringDecoder.prototype.fillLast = function (buf) {
12923 if (this.lastNeed <= buf.length) {
12924 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
12925 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
12926 }
12927 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
12928 this.lastNeed -= buf.length;
12929 };
12930
12931 // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
12932 // continuation byte.
12933 function utf8CheckByte(byte) {
12934 if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
12935 return -1;
12936 }
12937
12938 // Checks at most 3 bytes at the end of a Buffer in order to detect an
12939 // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
12940 // needed to complete the UTF-8 character (if applicable) are returned.
12941 function utf8CheckIncomplete(self, buf, i) {
12942 var j = buf.length - 1;
12943 if (j < i) return 0;
12944 var nb = utf8CheckByte(buf[j]);
12945 if (nb >= 0) {
12946 if (nb > 0) self.lastNeed = nb - 1;
12947 return nb;
12948 }
12949 if (--j < i) return 0;
12950 nb = utf8CheckByte(buf[j]);
12951 if (nb >= 0) {
12952 if (nb > 0) self.lastNeed = nb - 2;
12953 return nb;
12954 }
12955 if (--j < i) return 0;
12956 nb = utf8CheckByte(buf[j]);
12957 if (nb >= 0) {
12958 if (nb > 0) {
12959 if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
12960 }
12961 return nb;
12962 }
12963 return 0;
12964 }
12965
12966 // Validates as many continuation bytes for a multi-byte UTF-8 character as
12967 // needed or are available. If we see a non-continuation byte where we expect
12968 // one, we "replace" the validated continuation bytes we've seen so far with
12969 // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
12970 // behavior. The continuation byte check is included three times in the case
12971 // where all of the continuation bytes for a character exist in the same buffer.
12972 // It is also done this way as a slight performance increase instead of using a
12973 // loop.
12974 function utf8CheckExtraBytes(self, buf, p) {
12975 if ((buf[0] & 0xC0) !== 0x80) {
12976 self.lastNeed = 0;
12977 return '\ufffd'.repeat(p);
12978 }
12979 if (self.lastNeed > 1 && buf.length > 1) {
12980 if ((buf[1] & 0xC0) !== 0x80) {
12981 self.lastNeed = 1;
12982 return '\ufffd'.repeat(p + 1);
12983 }
12984 if (self.lastNeed > 2 && buf.length > 2) {
12985 if ((buf[2] & 0xC0) !== 0x80) {
12986 self.lastNeed = 2;
12987 return '\ufffd'.repeat(p + 2);
12988 }
12989 }
12990 }
12991 }
12992
12993 // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
12994 function utf8FillLast(buf) {
12995 var p = this.lastTotal - this.lastNeed;
12996 var r = utf8CheckExtraBytes(this, buf, p);
12997 if (r !== undefined) return r;
12998 if (this.lastNeed <= buf.length) {
12999 buf.copy(this.lastChar, p, 0, this.lastNeed);
13000 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
13001 }
13002 buf.copy(this.lastChar, p, 0, buf.length);
13003 this.lastNeed -= buf.length;
13004 }
13005
13006 // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
13007 // partial character, the character's bytes are buffered until the required
13008 // number of bytes are available.
13009 function utf8Text(buf, i) {
13010 var total = utf8CheckIncomplete(this, buf, i);
13011 if (!this.lastNeed) return buf.toString('utf8', i);
13012 this.lastTotal = total;
13013 var end = buf.length - (total - this.lastNeed);
13014 buf.copy(this.lastChar, 0, end);
13015 return buf.toString('utf8', i, end);
13016 }
13017
13018 // For UTF-8, a replacement character for each buffered byte of a (partial)
13019 // character needs to be added to the output.
13020 function utf8End(buf) {
13021 var r = buf && buf.length ? this.write(buf) : '';
13022 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
13023 return r;
13024 }
13025
13026 // UTF-16LE typically needs two bytes per character, but even if we have an even
13027 // number of bytes available, we need to check if we end on a leading/high
13028 // surrogate. In that case, we need to wait for the next two bytes in order to
13029 // decode the last character properly.
13030 function utf16Text(buf, i) {
13031 if ((buf.length - i) % 2 === 0) {
13032 var r = buf.toString('utf16le', i);
13033 if (r) {
13034 var c = r.charCodeAt(r.length - 1);
13035 if (c >= 0xD800 && c <= 0xDBFF) {
13036 this.lastNeed = 2;
13037 this.lastTotal = 4;
13038 this.lastChar[0] = buf[buf.length - 2];
13039 this.lastChar[1] = buf[buf.length - 1];
13040 return r.slice(0, -1);
13041 }
13042 }
13043 return r;
13044 }
13045 this.lastNeed = 1;
13046 this.lastTotal = 2;
13047 this.lastChar[0] = buf[buf.length - 1];
13048 return buf.toString('utf16le', i, buf.length - 1);
13049 }
13050
13051 // For UTF-16LE we do not explicitly append special replacement characters if we
13052 // end on a partial character, we simply let v8 handle that.
13053 function utf16End(buf) {
13054 var r = buf && buf.length ? this.write(buf) : '';
13055 if (this.lastNeed) {
13056 var end = this.lastTotal - this.lastNeed;
13057 return r + this.lastChar.toString('utf16le', 0, end);
13058 }
13059 return r;
13060 }
13061
13062 function base64Text(buf, i) {
13063 var n = (buf.length - i) % 3;
13064 if (n === 0) return buf.toString('base64', i);
13065 this.lastNeed = 3 - n;
13066 this.lastTotal = 3;
13067 if (n === 1) {
13068 this.lastChar[0] = buf[buf.length - 1];
13069 } else {
13070 this.lastChar[0] = buf[buf.length - 2];
13071 this.lastChar[1] = buf[buf.length - 1];
13072 }
13073 return buf.toString('base64', i, buf.length - n);
13074 }
13075
13076 function base64End(buf) {
13077 var r = buf && buf.length ? this.write(buf) : '';
13078 if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
13079 return r;
13080 }
13081
13082 // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
13083 function simpleWrite(buf) {
13084 return buf.toString(this.encoding);
13085 }
13086
13087 function simpleEnd(buf) {
13088 return buf && buf.length ? this.write(buf) : '';
13089 }
13090 },{"safe-buffer":26}],29:[function(require,module,exports){
13091 (function (global){
13092
13093 /**
13094 * Module exports.
13095 */
13096
13097 module.exports = deprecate;
13098
13099 /**
13100 * Mark that a method should not be used.
13101 * Returns a modified function which warns once by default.
13102 *
13103 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13104 *
13105 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13106 * will throw an Error when invoked.
13107 *
13108 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13109 * will invoke `console.trace()` instead of `console.error()`.
13110 *
13111 * @param {Function} fn - the function to deprecate
13112 * @param {String} msg - the string to print to the console when `fn` is invoked
13113 * @returns {Function} a new "deprecated" version of `fn`
13114 * @api public
13115 */
13116
13117 function deprecate (fn, msg) {
13118 if (config('noDeprecation')) {
13119 return fn;
13120 }
13121
13122 var warned = false;
13123 function deprecated() {
13124 if (!warned) {
13125 if (config('throwDeprecation')) {
13126 throw new Error(msg);
13127 } else if (config('traceDeprecation')) {
13128 console.trace(msg);
13129 } else {
13130 console.warn(msg);
13131 }
13132 warned = true;
13133 }
13134 return fn.apply(this, arguments);
13135 }
13136
13137 return deprecated;
13138 }
13139
13140 /**
13141 * Checks `localStorage` for boolean values for the given `name`.
13142 *
13143 * @param {String} name
13144 * @returns {Boolean}
13145 * @api private
13146 */
13147
13148 function config (name) {
13149 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13150 try {
13151 if (!global.localStorage) return false;
13152 } catch (_) {
13153 return false;
13154 }
13155 var val = global.localStorage[name];
13156 if (null == val) return false;
13157 return String(val).toLowerCase() === 'true';
13158 }
13159
13160 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13161 },{}],30:[function(require,module,exports){
13162 arguments[4][8][0].apply(exports,arguments)
13163 },{"dup":8}],31:[function(require,module,exports){
13164 module.exports = function isBuffer(arg) {
13165 return arg && typeof arg === 'object'
13166 && typeof arg.copy === 'function'
13167 && typeof arg.fill === 'function'
13168 && typeof arg.readUInt8 === 'function';
13169 }
13170 },{}],32:[function(require,module,exports){
13171 (function (process,global){
13172 // Copyright Joyent, Inc. and other Node contributors.
13173 //
13174 // Permission is hereby granted, free of charge, to any person obtaining a
13175 // copy of this software and associated documentation files (the
13176 // "Software"), to deal in the Software without restriction, including
13177 // without limitation the rights to use, copy, modify, merge, publish,
13178 // distribute, sublicense, and/or sell copies of the Software, and to permit
13179 // persons to whom the Software is furnished to do so, subject to the
13180 // following conditions:
13181 //
13182 // The above copyright notice and this permission notice shall be included
13183 // in all copies or substantial portions of the Software.
13184 //
13185 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13186 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13187 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13188 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13189 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13190 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13191 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13192
13193 var formatRegExp = /%[sdj%]/g;
13194 exports.format = function(f) {
13195 if (!isString(f)) {
13196 var objects = [];
13197 for (var i = 0; i < arguments.length; i++) {
13198 objects.push(inspect(arguments[i]));
13199 }
13200 return objects.join(' ');
13201 }
13202
13203 var i = 1;
13204 var args = arguments;
13205 var len = args.length;
13206 var str = String(f).replace(formatRegExp, function(x) {
13207 if (x === '%%') return '%';
13208 if (i >= len) return x;
13209 switch (x) {
13210 case '%s': return String(args[i++]);
13211 case '%d': return Number(args[i++]);
13212 case '%j':
13213 try {
13214 return JSON.stringify(args[i++]);
13215 } catch (_) {
13216 return '[Circular]';
13217 }
13218 default:
13219 return x;
13220 }
13221 });
13222 for (var x = args[i]; i < len; x = args[++i]) {
13223 if (isNull(x) || !isObject(x)) {
13224 str += ' ' + x;
13225 } else {
13226 str += ' ' + inspect(x);
13227 }
13228 }
13229 return str;
13230 };
13231
13232
13233 // Mark that a method should not be used.
13234 // Returns a modified function which warns once by default.
13235 // If --no-deprecation is set, then it is a no-op.
13236 exports.deprecate = function(fn, msg) {
13237 // Allow for deprecating things in the process of starting up.
13238 if (isUndefined(global.process)) {
13239 return function() {
13240 return exports.deprecate(fn, msg).apply(this, arguments);
13241 };
13242 }
13243
13244 if (process.noDeprecation === true) {
13245 return fn;
13246 }
13247
13248 var warned = false;
13249 function deprecated() {
13250 if (!warned) {
13251 if (process.throwDeprecation) {
13252 throw new Error(msg);
13253 } else if (process.traceDeprecation) {
13254 console.trace(msg);
13255 } else {
13256 console.error(msg);
13257 }
13258 warned = true;
13259 }
13260 return fn.apply(this, arguments);
13261 }
13262
13263 return deprecated;
13264 };
13265
13266
13267 var debugs = {};
13268 var debugEnviron;
13269 exports.debuglog = function(set) {
13270 if (isUndefined(debugEnviron))
13271 debugEnviron = process.env.NODE_DEBUG || '';
13272 set = set.toUpperCase();
13273 if (!debugs[set]) {
13274 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13275 var pid = process.pid;
13276 debugs[set] = function() {
13277 var msg = exports.format.apply(exports, arguments);
13278 console.error('%s %d: %s', set, pid, msg);
13279 };
13280 } else {
13281 debugs[set] = function() {};
13282 }
13283 }
13284 return debugs[set];
13285 };
13286
13287
13288 /**
13289 * Echos the value of a value. Trys to print the value out
13290 * in the best way possible given the different types.
13291 *
13292 * @param {Object} obj The object to print out.
13293 * @param {Object} opts Optional options object that alters the output.
13294 */
13295 /* legacy: obj, showHidden, depth, colors*/
13296 function inspect(obj, opts) {
13297 // default options
13298 var ctx = {
13299 seen: [],
13300 stylize: stylizeNoColor
13301 };
13302 // legacy...
13303 if (arguments.length >= 3) ctx.depth = arguments[2];
13304 if (arguments.length >= 4) ctx.colors = arguments[3];
13305 if (isBoolean(opts)) {
13306 // legacy...
13307 ctx.showHidden = opts;
13308 } else if (opts) {
13309 // got an "options" object
13310 exports._extend(ctx, opts);
13311 }
13312 // set default options
13313 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13314 if (isUndefined(ctx.depth)) ctx.depth = 2;
13315 if (isUndefined(ctx.colors)) ctx.colors = false;
13316 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13317 if (ctx.colors) ctx.stylize = stylizeWithColor;
13318 return formatValue(ctx, obj, ctx.depth);
13319 }
13320 exports.inspect = inspect;
13321
13322
13323 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13324 inspect.colors = {
13325 'bold' : [1, 22],
13326 'italic' : [3, 23],
13327 'underline' : [4, 24],
13328 'inverse' : [7, 27],
13329 'white' : [37, 39],
13330 'grey' : [90, 39],
13331 'black' : [30, 39],
13332 'blue' : [34, 39],
13333 'cyan' : [36, 39],
13334 'green' : [32, 39],
13335 'magenta' : [35, 39],
13336 'red' : [31, 39],
13337 'yellow' : [33, 39]
13338 };
13339
13340 // Don't use 'blue' not visible on cmd.exe
13341 inspect.styles = {
13342 'special': 'cyan',
13343 'number': 'yellow',
13344 'boolean': 'yellow',
13345 'undefined': 'grey',
13346 'null': 'bold',
13347 'string': 'green',
13348 'date': 'magenta',
13349 // "name": intentionally not styling
13350 'regexp': 'red'
13351 };
13352
13353
13354 function stylizeWithColor(str, styleType) {
13355 var style = inspect.styles[styleType];
13356
13357 if (style) {
13358 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13359 '\u001b[' + inspect.colors[style][1] + 'm';
13360 } else {
13361 return str;
13362 }
13363 }
13364
13365
13366 function stylizeNoColor(str, styleType) {
13367 return str;
13368 }
13369
13370
13371 function arrayToHash(array) {
13372 var hash = {};
13373
13374 array.forEach(function(val, idx) {
13375 hash[val] = true;
13376 });
13377
13378 return hash;
13379 }
13380
13381
13382 function formatValue(ctx, value, recurseTimes) {
13383 // Provide a hook for user-specified inspect functions.
13384 // Check that value is an object with an inspect function on it
13385 if (ctx.customInspect &&
13386 value &&
13387 isFunction(value.inspect) &&
13388 // Filter out the util module, it's inspect function is special
13389 value.inspect !== exports.inspect &&
13390 // Also filter out any prototype objects using the circular check.
13391 !(value.constructor && value.constructor.prototype === value)) {
13392 var ret = value.inspect(recurseTimes, ctx);
13393 if (!isString(ret)) {
13394 ret = formatValue(ctx, ret, recurseTimes);
13395 }
13396 return ret;
13397 }
13398
13399 // Primitive types cannot have properties
13400 var primitive = formatPrimitive(ctx, value);
13401 if (primitive) {
13402 return primitive;
13403 }
13404
13405 // Look up the keys of the object.
13406 var keys = Object.keys(value);
13407 var visibleKeys = arrayToHash(keys);
13408
13409 if (ctx.showHidden) {
13410 keys = Object.getOwnPropertyNames(value);
13411 }
13412
13413 // IE doesn't make error fields non-enumerable
13414 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13415 if (isError(value)
13416 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13417 return formatError(value);
13418 }
13419
13420 // Some type of object without properties can be shortcutted.
13421 if (keys.length === 0) {
13422 if (isFunction(value)) {
13423 var name = value.name ? ': ' + value.name : '';
13424 return ctx.stylize('[Function' + name + ']', 'special');
13425 }
13426 if (isRegExp(value)) {
13427 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13428 }
13429 if (isDate(value)) {
13430 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13431 }
13432 if (isError(value)) {
13433 return formatError(value);
13434 }
13435 }
13436
13437 var base = '', array = false, braces = ['{', '}'];
13438
13439 // Make Array say that they are Array
13440 if (isArray(value)) {
13441 array = true;
13442 braces = ['[', ']'];
13443 }
13444
13445 // Make functions say that they are functions
13446 if (isFunction(value)) {
13447 var n = value.name ? ': ' + value.name : '';
13448 base = ' [Function' + n + ']';
13449 }
13450
13451 // Make RegExps say that they are RegExps
13452 if (isRegExp(value)) {
13453 base = ' ' + RegExp.prototype.toString.call(value);
13454 }
13455
13456 // Make dates with properties first say the date
13457 if (isDate(value)) {
13458 base = ' ' + Date.prototype.toUTCString.call(value);
13459 }
13460
13461 // Make error with message first say the error
13462 if (isError(value)) {
13463 base = ' ' + formatError(value);
13464 }
13465
13466 if (keys.length === 0 && (!array || value.length == 0)) {
13467 return braces[0] + base + braces[1];
13468 }
13469
13470 if (recurseTimes < 0) {
13471 if (isRegExp(value)) {
13472 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13473 } else {
13474 return ctx.stylize('[Object]', 'special');
13475 }
13476 }
13477
13478 ctx.seen.push(value);
13479
13480 var output;
13481 if (array) {
13482 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13483 } else {
13484 output = keys.map(function(key) {
13485 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13486 });
13487 }
13488
13489 ctx.seen.pop();
13490
13491 return reduceToSingleString(output, base, braces);
13492 }
13493
13494
13495 function formatPrimitive(ctx, value) {
13496 if (isUndefined(value))
13497 return ctx.stylize('undefined', 'undefined');
13498 if (isString(value)) {
13499 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13500 .replace(/'/g, "\\'")
13501 .replace(/\\"/g, '"') + '\'';
13502 return ctx.stylize(simple, 'string');
13503 }
13504 if (isNumber(value))
13505 return ctx.stylize('' + value, 'number');
13506 if (isBoolean(value))
13507 return ctx.stylize('' + value, 'boolean');
13508 // For some reason typeof null is "object", so special case here.
13509 if (isNull(value))
13510 return ctx.stylize('null', 'null');
13511 }
13512
13513
13514 function formatError(value) {
13515 return '[' + Error.prototype.toString.call(value) + ']';
13516 }
13517
13518
13519 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13520 var output = [];
13521 for (var i = 0, l = value.length; i < l; ++i) {
13522 if (hasOwnProperty(value, String(i))) {
13523 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13524 String(i), true));
13525 } else {
13526 output.push('');
13527 }
13528 }
13529 keys.forEach(function(key) {
13530 if (!key.match(/^\d+$/)) {
13531 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13532 key, true));
13533 }
13534 });
13535 return output;
13536 }
13537
13538
13539 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13540 var name, str, desc;
13541 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13542 if (desc.get) {
13543 if (desc.set) {
13544 str = ctx.stylize('[Getter/Setter]', 'special');
13545 } else {
13546 str = ctx.stylize('[Getter]', 'special');
13547 }
13548 } else {
13549 if (desc.set) {
13550 str = ctx.stylize('[Setter]', 'special');
13551 }
13552 }
13553 if (!hasOwnProperty(visibleKeys, key)) {
13554 name = '[' + key + ']';
13555 }
13556 if (!str) {
13557 if (ctx.seen.indexOf(desc.value) < 0) {
13558 if (isNull(recurseTimes)) {
13559 str = formatValue(ctx, desc.value, null);
13560 } else {
13561 str = formatValue(ctx, desc.value, recurseTimes - 1);
13562 }
13563 if (str.indexOf('\n') > -1) {
13564 if (array) {
13565 str = str.split('\n').map(function(line) {
13566 return ' ' + line;
13567 }).join('\n').substr(2);
13568 } else {
13569 str = '\n' + str.split('\n').map(function(line) {
13570 return ' ' + line;
13571 }).join('\n');
13572 }
13573 }
13574 } else {
13575 str = ctx.stylize('[Circular]', 'special');
13576 }
13577 }
13578 if (isUndefined(name)) {
13579 if (array && key.match(/^\d+$/)) {
13580 return str;
13581 }
13582 name = JSON.stringify('' + key);
13583 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
13584 name = name.substr(1, name.length - 2);
13585 name = ctx.stylize(name, 'name');
13586 } else {
13587 name = name.replace(/'/g, "\\'")
13588 .replace(/\\"/g, '"')
13589 .replace(/(^"|"$)/g, "'");
13590 name = ctx.stylize(name, 'string');
13591 }
13592 }
13593
13594 return name + ': ' + str;
13595 }
13596
13597
13598 function reduceToSingleString(output, base, braces) {
13599 var numLinesEst = 0;
13600 var length = output.reduce(function(prev, cur) {
13601 numLinesEst++;
13602 if (cur.indexOf('\n') >= 0) numLinesEst++;
13603 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
13604 }, 0);
13605
13606 if (length > 60) {
13607 return braces[0] +
13608 (base === '' ? '' : base + '\n ') +
13609 ' ' +
13610 output.join(',\n ') +
13611 ' ' +
13612 braces[1];
13613 }
13614
13615 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
13616 }
13617
13618
13619 // NOTE: These type checking functions intentionally don't use `instanceof`
13620 // because it is fragile and can be easily faked with `Object.create()`.
13621 function isArray(ar) {
13622 return Array.isArray(ar);
13623 }
13624 exports.isArray = isArray;
13625
13626 function isBoolean(arg) {
13627 return typeof arg === 'boolean';
13628 }
13629 exports.isBoolean = isBoolean;
13630
13631 function isNull(arg) {
13632 return arg === null;
13633 }
13634 exports.isNull = isNull;
13635
13636 function isNullOrUndefined(arg) {
13637 return arg == null;
13638 }
13639 exports.isNullOrUndefined = isNullOrUndefined;
13640
13641 function isNumber(arg) {
13642 return typeof arg === 'number';
13643 }
13644 exports.isNumber = isNumber;
13645
13646 function isString(arg) {
13647 return typeof arg === 'string';
13648 }
13649 exports.isString = isString;
13650
13651 function isSymbol(arg) {
13652 return typeof arg === 'symbol';
13653 }
13654 exports.isSymbol = isSymbol;
13655
13656 function isUndefined(arg) {
13657 return arg === void 0;
13658 }
13659 exports.isUndefined = isUndefined;
13660
13661 function isRegExp(re) {
13662 return isObject(re) && objectToString(re) === '[object RegExp]';
13663 }
13664 exports.isRegExp = isRegExp;
13665
13666 function isObject(arg) {
13667 return typeof arg === 'object' && arg !== null;
13668 }
13669 exports.isObject = isObject;
13670
13671 function isDate(d) {
13672 return isObject(d) && objectToString(d) === '[object Date]';
13673 }
13674 exports.isDate = isDate;
13675
13676 function isError(e) {
13677 return isObject(e) &&
13678 (objectToString(e) === '[object Error]' || e instanceof Error);
13679 }
13680 exports.isError = isError;
13681
13682 function isFunction(arg) {
13683 return typeof arg === 'function';
13684 }
13685 exports.isFunction = isFunction;
13686
13687 function isPrimitive(arg) {
13688 return arg === null ||
13689 typeof arg === 'boolean' ||
13690 typeof arg === 'number' ||
13691 typeof arg === 'string' ||
13692 typeof arg === 'symbol' || // ES6 symbol
13693 typeof arg === 'undefined';
13694 }
13695 exports.isPrimitive = isPrimitive;
13696
13697 exports.isBuffer = require('./support/isBuffer');
13698
13699 function objectToString(o) {
13700 return Object.prototype.toString.call(o);
13701 }
13702
13703
13704 function pad(n) {
13705 return n < 10 ? '0' + n.toString(10) : n.toString(10);
13706 }
13707
13708
13709 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13710 'Oct', 'Nov', 'Dec'];
13711
13712 // 26 Feb 16:19:34
13713 function timestamp() {
13714 var d = new Date();
13715 var time = [pad(d.getHours()),
13716 pad(d.getMinutes()),
13717 pad(d.getSeconds())].join(':');
13718 return [d.getDate(), months[d.getMonth()], time].join(' ');
13719 }
13720
13721
13722 // log is just a thin wrapper to console.log that prepends a timestamp
13723 exports.log = function() {
13724 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
13725 };
13726
13727
13728 /**
13729 * Inherit the prototype methods from one constructor into another.
13730 *
13731 * The Function.prototype.inherits from lang.js rewritten as a standalone
13732 * function (not on Function.prototype). NOTE: If this file is to be loaded
13733 * during bootstrapping this function needs to be rewritten using some native
13734 * functions as prototype setup using normal JavaScript does not work as
13735 * expected during bootstrapping (see mirror.js in r114903).
13736 *
13737 * @param {function} ctor Constructor function which needs to inherit the
13738 * prototype.
13739 * @param {function} superCtor Constructor function to inherit prototype from.
13740 */
13741 exports.inherits = require('inherits');
13742
13743 exports._extend = function(origin, add) {
13744 // Don't do anything if add isn't an object
13745 if (!add || !isObject(add)) return origin;
13746
13747 var keys = Object.keys(add);
13748 var i = keys.length;
13749 while (i--) {
13750 origin[keys[i]] = add[keys[i]];
13751 }
13752 return origin;
13753 };
13754
13755 function hasOwnProperty(obj, prop) {
13756 return Object.prototype.hasOwnProperty.call(obj, prop);
13757 }
13758
13759 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13760 },{"./support/isBuffer":31,"_process":12,"inherits":30}],33:[function(require,module,exports){
13761 module.exports = {
13762 base58: require('bs58'),
13763 bitcoin: require('bitcoinjs-lib'),
13764 ecurve: require('ecurve'),
13765 BigInteger: require('bigi')
13766 }
13767
13768 },{"bigi":37,"bitcoinjs-lib":50,"bs58":79,"ecurve":89}],34:[function(require,module,exports){
13769 // base-x encoding
13770 // Forked from https://github.com/cryptocoinjs/bs58
13771 // Originally written by Mike Hearn for BitcoinJ
13772 // Copyright (c) 2011 Google Inc
13773 // Ported to JavaScript by Stefan Thomas
13774 // Merged Buffer refactorings from base58-native by Stephen Pair
13775 // Copyright (c) 2013 BitPay Inc
13776
13777 var Buffer = require('safe-buffer').Buffer
13778
13779 module.exports = function base (ALPHABET) {
13780 var ALPHABET_MAP = {}
13781 var BASE = ALPHABET.length
13782 var LEADER = ALPHABET.charAt(0)
13783
13784 // pre-compute lookup table
13785 for (var z = 0; z < ALPHABET.length; z++) {
13786 var x = ALPHABET.charAt(z)
13787
13788 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13789 ALPHABET_MAP[x] = z
13790 }
13791
13792 function encode (source) {
13793 if (source.length === 0) return ''
13794
13795 var digits = [0]
13796 for (var i = 0; i < source.length; ++i) {
13797 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
13798 carry += digits[j] << 8
13799 digits[j] = carry % BASE
13800 carry = (carry / BASE) | 0
13801 }
13802
13803 while (carry > 0) {
13804 digits.push(carry % BASE)
13805 carry = (carry / BASE) | 0
13806 }
13807 }
13808
13809 var string = ''
13810
13811 // deal with leading zeros
13812 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
13813 // convert digits to a string
13814 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
13815
13816 return string
13817 }
13818
13819 function decodeUnsafe (string) {
13820 if (string.length === 0) return Buffer.allocUnsafe(0)
13821
13822 var bytes = [0]
13823 for (var i = 0; i < string.length; i++) {
13824 var value = ALPHABET_MAP[string[i]]
13825 if (value === undefined) return
13826
13827 for (var j = 0, carry = value; j < bytes.length; ++j) {
13828 carry += bytes[j] * BASE
13829 bytes[j] = carry & 0xff
13830 carry >>= 8
13831 }
13832
13833 while (carry > 0) {
13834 bytes.push(carry & 0xff)
13835 carry >>= 8
13836 }
13837 }
13838
13839 // deal with leading zeros
13840 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
13841 bytes.push(0)
13842 }
13843
13844 return Buffer.from(bytes.reverse())
13845 }
13846
13847 function decode (string) {
13848 var buffer = decodeUnsafe(string)
13849 if (buffer) return buffer
13850
13851 throw new Error('Non-base' + BASE + ' character')
13852 }
13853
13854 return {
13855 encode: encode,
13856 decodeUnsafe: decodeUnsafe,
13857 decode: decode
13858 }
13859 }
13860
13861 },{"safe-buffer":98}],35:[function(require,module,exports){
13862 // (public) Constructor
13863 function BigInteger(a, b, c) {
13864 if (!(this instanceof BigInteger))
13865 return new BigInteger(a, b, c)
13866
13867 if (a != null) {
13868 if ("number" == typeof a) this.fromNumber(a, b, c)
13869 else if (b == null && "string" != typeof a) this.fromString(a, 256)
13870 else this.fromString(a, b)
13871 }
13872 }
13873
13874 var proto = BigInteger.prototype
13875
13876 // duck-typed isBigInteger
13877 proto.__bigi = require('../package.json').version
13878 BigInteger.isBigInteger = function (obj, check_ver) {
13879 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
13880 }
13881
13882 // Bits per digit
13883 var dbits
13884
13885 // am: Compute w_j += (x*this_i), propagate carries,
13886 // c is initial carry, returns final carry.
13887 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
13888 // We need to select the fastest one that works in this environment.
13889
13890 // am1: use a single mult and divide to get the high bits,
13891 // max digit bits should be 26 because
13892 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
13893 function am1(i, x, w, j, c, n) {
13894 while (--n >= 0) {
13895 var v = x * this[i++] + w[j] + c
13896 c = Math.floor(v / 0x4000000)
13897 w[j++] = v & 0x3ffffff
13898 }
13899 return c
13900 }
13901 // am2 avoids a big mult-and-extract completely.
13902 // Max digit bits should be <= 30 because we do bitwise ops
13903 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
13904 function am2(i, x, w, j, c, n) {
13905 var xl = x & 0x7fff,
13906 xh = x >> 15
13907 while (--n >= 0) {
13908 var l = this[i] & 0x7fff
13909 var h = this[i++] >> 15
13910 var m = xh * l + h * xl
13911 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
13912 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
13913 w[j++] = l & 0x3fffffff
13914 }
13915 return c
13916 }
13917 // Alternately, set max digit bits to 28 since some
13918 // browsers slow down when dealing with 32-bit numbers.
13919 function am3(i, x, w, j, c, n) {
13920 var xl = x & 0x3fff,
13921 xh = x >> 14
13922 while (--n >= 0) {
13923 var l = this[i] & 0x3fff
13924 var h = this[i++] >> 14
13925 var m = xh * l + h * xl
13926 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
13927 c = (l >> 28) + (m >> 14) + xh * h
13928 w[j++] = l & 0xfffffff
13929 }
13930 return c
13931 }
13932
13933 // wtf?
13934 BigInteger.prototype.am = am1
13935 dbits = 26
13936
13937 BigInteger.prototype.DB = dbits
13938 BigInteger.prototype.DM = ((1 << dbits) - 1)
13939 var DV = BigInteger.prototype.DV = (1 << dbits)
13940
13941 var BI_FP = 52
13942 BigInteger.prototype.FV = Math.pow(2, BI_FP)
13943 BigInteger.prototype.F1 = BI_FP - dbits
13944 BigInteger.prototype.F2 = 2 * dbits - BI_FP
13945
13946 // Digit conversions
13947 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
13948 var BI_RC = new Array()
13949 var rr, vv
13950 rr = "0".charCodeAt(0)
13951 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
13952 rr = "a".charCodeAt(0)
13953 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13954 rr = "A".charCodeAt(0)
13955 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13956
13957 function int2char(n) {
13958 return BI_RM.charAt(n)
13959 }
13960
13961 function intAt(s, i) {
13962 var c = BI_RC[s.charCodeAt(i)]
13963 return (c == null) ? -1 : c
13964 }
13965
13966 // (protected) copy this to r
13967 function bnpCopyTo(r) {
13968 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
13969 r.t = this.t
13970 r.s = this.s
13971 }
13972
13973 // (protected) set from integer value x, -DV <= x < DV
13974 function bnpFromInt(x) {
13975 this.t = 1
13976 this.s = (x < 0) ? -1 : 0
13977 if (x > 0) this[0] = x
13978 else if (x < -1) this[0] = x + DV
13979 else this.t = 0
13980 }
13981
13982 // return bigint initialized to value
13983 function nbv(i) {
13984 var r = new BigInteger()
13985 r.fromInt(i)
13986 return r
13987 }
13988
13989 // (protected) set from string and radix
13990 function bnpFromString(s, b) {
13991 var self = this
13992
13993 var k
13994 if (b == 16) k = 4
13995 else if (b == 8) k = 3
13996 else if (b == 256) k = 8; // byte array
13997 else if (b == 2) k = 1
13998 else if (b == 32) k = 5
13999 else if (b == 4) k = 2
14000 else {
14001 self.fromRadix(s, b)
14002 return
14003 }
14004 self.t = 0
14005 self.s = 0
14006 var i = s.length,
14007 mi = false,
14008 sh = 0
14009 while (--i >= 0) {
14010 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
14011 if (x < 0) {
14012 if (s.charAt(i) == "-") mi = true
14013 continue
14014 }
14015 mi = false
14016 if (sh == 0)
14017 self[self.t++] = x
14018 else if (sh + k > self.DB) {
14019 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
14020 self[self.t++] = (x >> (self.DB - sh))
14021 } else
14022 self[self.t - 1] |= x << sh
14023 sh += k
14024 if (sh >= self.DB) sh -= self.DB
14025 }
14026 if (k == 8 && (s[0] & 0x80) != 0) {
14027 self.s = -1
14028 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
14029 }
14030 self.clamp()
14031 if (mi) BigInteger.ZERO.subTo(self, self)
14032 }
14033
14034 // (protected) clamp off excess high words
14035 function bnpClamp() {
14036 var c = this.s & this.DM
14037 while (this.t > 0 && this[this.t - 1] == c)--this.t
14038 }
14039
14040 // (public) return string representation in given radix
14041 function bnToString(b) {
14042 var self = this
14043 if (self.s < 0) return "-" + self.negate()
14044 .toString(b)
14045 var k
14046 if (b == 16) k = 4
14047 else if (b == 8) k = 3
14048 else if (b == 2) k = 1
14049 else if (b == 32) k = 5
14050 else if (b == 4) k = 2
14051 else return self.toRadix(b)
14052 var km = (1 << k) - 1,
14053 d, m = false,
14054 r = "",
14055 i = self.t
14056 var p = self.DB - (i * self.DB) % k
14057 if (i-- > 0) {
14058 if (p < self.DB && (d = self[i] >> p) > 0) {
14059 m = true
14060 r = int2char(d)
14061 }
14062 while (i >= 0) {
14063 if (p < k) {
14064 d = (self[i] & ((1 << p) - 1)) << (k - p)
14065 d |= self[--i] >> (p += self.DB - k)
14066 } else {
14067 d = (self[i] >> (p -= k)) & km
14068 if (p <= 0) {
14069 p += self.DB
14070 --i
14071 }
14072 }
14073 if (d > 0) m = true
14074 if (m) r += int2char(d)
14075 }
14076 }
14077 return m ? r : "0"
14078 }
14079
14080 // (public) -this
14081 function bnNegate() {
14082 var r = new BigInteger()
14083 BigInteger.ZERO.subTo(this, r)
14084 return r
14085 }
14086
14087 // (public) |this|
14088 function bnAbs() {
14089 return (this.s < 0) ? this.negate() : this
14090 }
14091
14092 // (public) return + if this > a, - if this < a, 0 if equal
14093 function bnCompareTo(a) {
14094 var r = this.s - a.s
14095 if (r != 0) return r
14096 var i = this.t
14097 r = i - a.t
14098 if (r != 0) return (this.s < 0) ? -r : r
14099 while (--i >= 0)
14100 if ((r = this[i] - a[i]) != 0) return r
14101 return 0
14102 }
14103
14104 // returns bit length of the integer x
14105 function nbits(x) {
14106 var r = 1,
14107 t
14108 if ((t = x >>> 16) != 0) {
14109 x = t
14110 r += 16
14111 }
14112 if ((t = x >> 8) != 0) {
14113 x = t
14114 r += 8
14115 }
14116 if ((t = x >> 4) != 0) {
14117 x = t
14118 r += 4
14119 }
14120 if ((t = x >> 2) != 0) {
14121 x = t
14122 r += 2
14123 }
14124 if ((t = x >> 1) != 0) {
14125 x = t
14126 r += 1
14127 }
14128 return r
14129 }
14130
14131 // (public) return the number of bits in "this"
14132 function bnBitLength() {
14133 if (this.t <= 0) return 0
14134 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
14135 }
14136
14137 // (public) return the number of bytes in "this"
14138 function bnByteLength() {
14139 return this.bitLength() >> 3
14140 }
14141
14142 // (protected) r = this << n*DB
14143 function bnpDLShiftTo(n, r) {
14144 var i
14145 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
14146 for (i = n - 1; i >= 0; --i) r[i] = 0
14147 r.t = this.t + n
14148 r.s = this.s
14149 }
14150
14151 // (protected) r = this >> n*DB
14152 function bnpDRShiftTo(n, r) {
14153 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14154 r.t = Math.max(this.t - n, 0)
14155 r.s = this.s
14156 }
14157
14158 // (protected) r = this << n
14159 function bnpLShiftTo(n, r) {
14160 var self = this
14161 var bs = n % self.DB
14162 var cbs = self.DB - bs
14163 var bm = (1 << cbs) - 1
14164 var ds = Math.floor(n / self.DB),
14165 c = (self.s << bs) & self.DM,
14166 i
14167 for (i = self.t - 1; i >= 0; --i) {
14168 r[i + ds + 1] = (self[i] >> cbs) | c
14169 c = (self[i] & bm) << bs
14170 }
14171 for (i = ds - 1; i >= 0; --i) r[i] = 0
14172 r[ds] = c
14173 r.t = self.t + ds + 1
14174 r.s = self.s
14175 r.clamp()
14176 }
14177
14178 // (protected) r = this >> n
14179 function bnpRShiftTo(n, r) {
14180 var self = this
14181 r.s = self.s
14182 var ds = Math.floor(n / self.DB)
14183 if (ds >= self.t) {
14184 r.t = 0
14185 return
14186 }
14187 var bs = n % self.DB
14188 var cbs = self.DB - bs
14189 var bm = (1 << bs) - 1
14190 r[0] = self[ds] >> bs
14191 for (var i = ds + 1; i < self.t; ++i) {
14192 r[i - ds - 1] |= (self[i] & bm) << cbs
14193 r[i - ds] = self[i] >> bs
14194 }
14195 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
14196 r.t = self.t - ds
14197 r.clamp()
14198 }
14199
14200 // (protected) r = this - a
14201 function bnpSubTo(a, r) {
14202 var self = this
14203 var i = 0,
14204 c = 0,
14205 m = Math.min(a.t, self.t)
14206 while (i < m) {
14207 c += self[i] - a[i]
14208 r[i++] = c & self.DM
14209 c >>= self.DB
14210 }
14211 if (a.t < self.t) {
14212 c -= a.s
14213 while (i < self.t) {
14214 c += self[i]
14215 r[i++] = c & self.DM
14216 c >>= self.DB
14217 }
14218 c += self.s
14219 } else {
14220 c += self.s
14221 while (i < a.t) {
14222 c -= a[i]
14223 r[i++] = c & self.DM
14224 c >>= self.DB
14225 }
14226 c -= a.s
14227 }
14228 r.s = (c < 0) ? -1 : 0
14229 if (c < -1) r[i++] = self.DV + c
14230 else if (c > 0) r[i++] = c
14231 r.t = i
14232 r.clamp()
14233 }
14234
14235 // (protected) r = this * a, r != this,a (HAC 14.12)
14236 // "this" should be the larger one if appropriate.
14237 function bnpMultiplyTo(a, r) {
14238 var x = this.abs(),
14239 y = a.abs()
14240 var i = x.t
14241 r.t = i + y.t
14242 while (--i >= 0) r[i] = 0
14243 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
14244 r.s = 0
14245 r.clamp()
14246 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14247 }
14248
14249 // (protected) r = this^2, r != this (HAC 14.16)
14250 function bnpSquareTo(r) {
14251 var x = this.abs()
14252 var i = r.t = 2 * x.t
14253 while (--i >= 0) r[i] = 0
14254 for (i = 0; i < x.t - 1; ++i) {
14255 var c = x.am(i, x[i], r, 2 * i, 0, 1)
14256 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
14257 r[i + x.t] -= x.DV
14258 r[i + x.t + 1] = 1
14259 }
14260 }
14261 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
14262 r.s = 0
14263 r.clamp()
14264 }
14265
14266 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
14267 // r != q, this != m. q or r may be null.
14268 function bnpDivRemTo(m, q, r) {
14269 var self = this
14270 var pm = m.abs()
14271 if (pm.t <= 0) return
14272 var pt = self.abs()
14273 if (pt.t < pm.t) {
14274 if (q != null) q.fromInt(0)
14275 if (r != null) self.copyTo(r)
14276 return
14277 }
14278 if (r == null) r = new BigInteger()
14279 var y = new BigInteger(),
14280 ts = self.s,
14281 ms = m.s
14282 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
14283 if (nsh > 0) {
14284 pm.lShiftTo(nsh, y)
14285 pt.lShiftTo(nsh, r)
14286 } else {
14287 pm.copyTo(y)
14288 pt.copyTo(r)
14289 }
14290 var ys = y.t
14291 var y0 = y[ys - 1]
14292 if (y0 == 0) return
14293 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
14294 var d1 = self.FV / yt,
14295 d2 = (1 << self.F1) / yt,
14296 e = 1 << self.F2
14297 var i = r.t,
14298 j = i - ys,
14299 t = (q == null) ? new BigInteger() : q
14300 y.dlShiftTo(j, t)
14301 if (r.compareTo(t) >= 0) {
14302 r[r.t++] = 1
14303 r.subTo(t, r)
14304 }
14305 BigInteger.ONE.dlShiftTo(ys, t)
14306 t.subTo(y, y); // "negative" y so we can replace sub with am later
14307 while (y.t < ys) y[y.t++] = 0
14308 while (--j >= 0) {
14309 // Estimate quotient digit
14310 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
14311 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
14312 y.dlShiftTo(j, t)
14313 r.subTo(t, r)
14314 while (r[i] < --qd) r.subTo(t, r)
14315 }
14316 }
14317 if (q != null) {
14318 r.drShiftTo(ys, q)
14319 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14320 }
14321 r.t = ys
14322 r.clamp()
14323 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
14324 if (ts < 0) BigInteger.ZERO.subTo(r, r)
14325 }
14326
14327 // (public) this mod a
14328 function bnMod(a) {
14329 var r = new BigInteger()
14330 this.abs()
14331 .divRemTo(a, null, r)
14332 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
14333 return r
14334 }
14335
14336 // Modular reduction using "classic" algorithm
14337 function Classic(m) {
14338 this.m = m
14339 }
14340
14341 function cConvert(x) {
14342 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
14343 else return x
14344 }
14345
14346 function cRevert(x) {
14347 return x
14348 }
14349
14350 function cReduce(x) {
14351 x.divRemTo(this.m, null, x)
14352 }
14353
14354 function cMulTo(x, y, r) {
14355 x.multiplyTo(y, r)
14356 this.reduce(r)
14357 }
14358
14359 function cSqrTo(x, r) {
14360 x.squareTo(r)
14361 this.reduce(r)
14362 }
14363
14364 Classic.prototype.convert = cConvert
14365 Classic.prototype.revert = cRevert
14366 Classic.prototype.reduce = cReduce
14367 Classic.prototype.mulTo = cMulTo
14368 Classic.prototype.sqrTo = cSqrTo
14369
14370 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
14371 // justification:
14372 // xy == 1 (mod m)
14373 // xy = 1+km
14374 // xy(2-xy) = (1+km)(1-km)
14375 // x[y(2-xy)] = 1-k^2m^2
14376 // x[y(2-xy)] == 1 (mod m^2)
14377 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
14378 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
14379 // JS multiply "overflows" differently from C/C++, so care is needed here.
14380 function bnpInvDigit() {
14381 if (this.t < 1) return 0
14382 var x = this[0]
14383 if ((x & 1) == 0) return 0
14384 var y = x & 3; // y == 1/x mod 2^2
14385 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
14386 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
14387 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
14388 // last step - calculate inverse mod DV directly
14389 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
14390 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
14391 // we really want the negative inverse, and -DV < y < DV
14392 return (y > 0) ? this.DV - y : -y
14393 }
14394
14395 // Montgomery reduction
14396 function Montgomery(m) {
14397 this.m = m
14398 this.mp = m.invDigit()
14399 this.mpl = this.mp & 0x7fff
14400 this.mph = this.mp >> 15
14401 this.um = (1 << (m.DB - 15)) - 1
14402 this.mt2 = 2 * m.t
14403 }
14404
14405 // xR mod m
14406 function montConvert(x) {
14407 var r = new BigInteger()
14408 x.abs()
14409 .dlShiftTo(this.m.t, r)
14410 r.divRemTo(this.m, null, r)
14411 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
14412 return r
14413 }
14414
14415 // x/R mod m
14416 function montRevert(x) {
14417 var r = new BigInteger()
14418 x.copyTo(r)
14419 this.reduce(r)
14420 return r
14421 }
14422
14423 // x = x/R mod m (HAC 14.32)
14424 function montReduce(x) {
14425 while (x.t <= this.mt2) // pad x so am has enough room later
14426 x[x.t++] = 0
14427 for (var i = 0; i < this.m.t; ++i) {
14428 // faster way of calculating u0 = x[i]*mp mod DV
14429 var j = x[i] & 0x7fff
14430 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
14431 // use am to combine the multiply-shift-add into one call
14432 j = i + this.m.t
14433 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
14434 // propagate carry
14435 while (x[j] >= x.DV) {
14436 x[j] -= x.DV
14437 x[++j]++
14438 }
14439 }
14440 x.clamp()
14441 x.drShiftTo(this.m.t, x)
14442 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
14443 }
14444
14445 // r = "x^2/R mod m"; x != r
14446 function montSqrTo(x, r) {
14447 x.squareTo(r)
14448 this.reduce(r)
14449 }
14450
14451 // r = "xy/R mod m"; x,y != r
14452 function montMulTo(x, y, r) {
14453 x.multiplyTo(y, r)
14454 this.reduce(r)
14455 }
14456
14457 Montgomery.prototype.convert = montConvert
14458 Montgomery.prototype.revert = montRevert
14459 Montgomery.prototype.reduce = montReduce
14460 Montgomery.prototype.mulTo = montMulTo
14461 Montgomery.prototype.sqrTo = montSqrTo
14462
14463 // (protected) true iff this is even
14464 function bnpIsEven() {
14465 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
14466 }
14467
14468 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
14469 function bnpExp(e, z) {
14470 if (e > 0xffffffff || e < 1) return BigInteger.ONE
14471 var r = new BigInteger(),
14472 r2 = new BigInteger(),
14473 g = z.convert(this),
14474 i = nbits(e) - 1
14475 g.copyTo(r)
14476 while (--i >= 0) {
14477 z.sqrTo(r, r2)
14478 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
14479 else {
14480 var t = r
14481 r = r2
14482 r2 = t
14483 }
14484 }
14485 return z.revert(r)
14486 }
14487
14488 // (public) this^e % m, 0 <= e < 2^32
14489 function bnModPowInt(e, m) {
14490 var z
14491 if (e < 256 || m.isEven()) z = new Classic(m)
14492 else z = new Montgomery(m)
14493 return this.exp(e, z)
14494 }
14495
14496 // protected
14497 proto.copyTo = bnpCopyTo
14498 proto.fromInt = bnpFromInt
14499 proto.fromString = bnpFromString
14500 proto.clamp = bnpClamp
14501 proto.dlShiftTo = bnpDLShiftTo
14502 proto.drShiftTo = bnpDRShiftTo
14503 proto.lShiftTo = bnpLShiftTo
14504 proto.rShiftTo = bnpRShiftTo
14505 proto.subTo = bnpSubTo
14506 proto.multiplyTo = bnpMultiplyTo
14507 proto.squareTo = bnpSquareTo
14508 proto.divRemTo = bnpDivRemTo
14509 proto.invDigit = bnpInvDigit
14510 proto.isEven = bnpIsEven
14511 proto.exp = bnpExp
14512
14513 // public
14514 proto.toString = bnToString
14515 proto.negate = bnNegate
14516 proto.abs = bnAbs
14517 proto.compareTo = bnCompareTo
14518 proto.bitLength = bnBitLength
14519 proto.byteLength = bnByteLength
14520 proto.mod = bnMod
14521 proto.modPowInt = bnModPowInt
14522
14523 // (public)
14524 function bnClone() {
14525 var r = new BigInteger()
14526 this.copyTo(r)
14527 return r
14528 }
14529
14530 // (public) return value as integer
14531 function bnIntValue() {
14532 if (this.s < 0) {
14533 if (this.t == 1) return this[0] - this.DV
14534 else if (this.t == 0) return -1
14535 } else if (this.t == 1) return this[0]
14536 else if (this.t == 0) return 0
14537 // assumes 16 < DB < 32
14538 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
14539 }
14540
14541 // (public) return value as byte
14542 function bnByteValue() {
14543 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
14544 }
14545
14546 // (public) return value as short (assumes DB>=16)
14547 function bnShortValue() {
14548 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
14549 }
14550
14551 // (protected) return x s.t. r^x < DV
14552 function bnpChunkSize(r) {
14553 return Math.floor(Math.LN2 * this.DB / Math.log(r))
14554 }
14555
14556 // (public) 0 if this == 0, 1 if this > 0
14557 function bnSigNum() {
14558 if (this.s < 0) return -1
14559 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
14560 else return 1
14561 }
14562
14563 // (protected) convert to radix string
14564 function bnpToRadix(b) {
14565 if (b == null) b = 10
14566 if (this.signum() == 0 || b < 2 || b > 36) return "0"
14567 var cs = this.chunkSize(b)
14568 var a = Math.pow(b, cs)
14569 var d = nbv(a),
14570 y = new BigInteger(),
14571 z = new BigInteger(),
14572 r = ""
14573 this.divRemTo(d, y, z)
14574 while (y.signum() > 0) {
14575 r = (a + z.intValue())
14576 .toString(b)
14577 .substr(1) + r
14578 y.divRemTo(d, y, z)
14579 }
14580 return z.intValue()
14581 .toString(b) + r
14582 }
14583
14584 // (protected) convert from radix string
14585 function bnpFromRadix(s, b) {
14586 var self = this
14587 self.fromInt(0)
14588 if (b == null) b = 10
14589 var cs = self.chunkSize(b)
14590 var d = Math.pow(b, cs),
14591 mi = false,
14592 j = 0,
14593 w = 0
14594 for (var i = 0; i < s.length; ++i) {
14595 var x = intAt(s, i)
14596 if (x < 0) {
14597 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
14598 continue
14599 }
14600 w = b * w + x
14601 if (++j >= cs) {
14602 self.dMultiply(d)
14603 self.dAddOffset(w, 0)
14604 j = 0
14605 w = 0
14606 }
14607 }
14608 if (j > 0) {
14609 self.dMultiply(Math.pow(b, j))
14610 self.dAddOffset(w, 0)
14611 }
14612 if (mi) BigInteger.ZERO.subTo(self, self)
14613 }
14614
14615 // (protected) alternate constructor
14616 function bnpFromNumber(a, b, c) {
14617 var self = this
14618 if ("number" == typeof b) {
14619 // new BigInteger(int,int,RNG)
14620 if (a < 2) self.fromInt(1)
14621 else {
14622 self.fromNumber(a, c)
14623 if (!self.testBit(a - 1)) // force MSB set
14624 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
14625 if (self.isEven()) self.dAddOffset(1, 0); // force odd
14626 while (!self.isProbablePrime(b)) {
14627 self.dAddOffset(2, 0)
14628 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
14629 }
14630 }
14631 } else {
14632 // new BigInteger(int,RNG)
14633 var x = new Array(),
14634 t = a & 7
14635 x.length = (a >> 3) + 1
14636 b.nextBytes(x)
14637 if (t > 0) x[0] &= ((1 << t) - 1)
14638 else x[0] = 0
14639 self.fromString(x, 256)
14640 }
14641 }
14642
14643 // (public) convert to bigendian byte array
14644 function bnToByteArray() {
14645 var self = this
14646 var i = self.t,
14647 r = new Array()
14648 r[0] = self.s
14649 var p = self.DB - (i * self.DB) % 8,
14650 d, k = 0
14651 if (i-- > 0) {
14652 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
14653 r[k++] = d | (self.s << (self.DB - p))
14654 while (i >= 0) {
14655 if (p < 8) {
14656 d = (self[i] & ((1 << p) - 1)) << (8 - p)
14657 d |= self[--i] >> (p += self.DB - 8)
14658 } else {
14659 d = (self[i] >> (p -= 8)) & 0xff
14660 if (p <= 0) {
14661 p += self.DB
14662 --i
14663 }
14664 }
14665 if ((d & 0x80) != 0) d |= -256
14666 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
14667 if (k > 0 || d != self.s) r[k++] = d
14668 }
14669 }
14670 return r
14671 }
14672
14673 function bnEquals(a) {
14674 return (this.compareTo(a) == 0)
14675 }
14676
14677 function bnMin(a) {
14678 return (this.compareTo(a) < 0) ? this : a
14679 }
14680
14681 function bnMax(a) {
14682 return (this.compareTo(a) > 0) ? this : a
14683 }
14684
14685 // (protected) r = this op a (bitwise)
14686 function bnpBitwiseTo(a, op, r) {
14687 var self = this
14688 var i, f, m = Math.min(a.t, self.t)
14689 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
14690 if (a.t < self.t) {
14691 f = a.s & self.DM
14692 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14693 r.t = self.t
14694 } else {
14695 f = self.s & self.DM
14696 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14697 r.t = a.t
14698 }
14699 r.s = op(self.s, a.s)
14700 r.clamp()
14701 }
14702
14703 // (public) this & a
14704 function op_and(x, y) {
14705 return x & y
14706 }
14707
14708 function bnAnd(a) {
14709 var r = new BigInteger()
14710 this.bitwiseTo(a, op_and, r)
14711 return r
14712 }
14713
14714 // (public) this | a
14715 function op_or(x, y) {
14716 return x | y
14717 }
14718
14719 function bnOr(a) {
14720 var r = new BigInteger()
14721 this.bitwiseTo(a, op_or, r)
14722 return r
14723 }
14724
14725 // (public) this ^ a
14726 function op_xor(x, y) {
14727 return x ^ y
14728 }
14729
14730 function bnXor(a) {
14731 var r = new BigInteger()
14732 this.bitwiseTo(a, op_xor, r)
14733 return r
14734 }
14735
14736 // (public) this & ~a
14737 function op_andnot(x, y) {
14738 return x & ~y
14739 }
14740
14741 function bnAndNot(a) {
14742 var r = new BigInteger()
14743 this.bitwiseTo(a, op_andnot, r)
14744 return r
14745 }
14746
14747 // (public) ~this
14748 function bnNot() {
14749 var r = new BigInteger()
14750 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14751 r.t = this.t
14752 r.s = ~this.s
14753 return r
14754 }
14755
14756 // (public) this << n
14757 function bnShiftLeft(n) {
14758 var r = new BigInteger()
14759 if (n < 0) this.rShiftTo(-n, r)
14760 else this.lShiftTo(n, r)
14761 return r
14762 }
14763
14764 // (public) this >> n
14765 function bnShiftRight(n) {
14766 var r = new BigInteger()
14767 if (n < 0) this.lShiftTo(-n, r)
14768 else this.rShiftTo(n, r)
14769 return r
14770 }
14771
14772 // return index of lowest 1-bit in x, x < 2^31
14773 function lbit(x) {
14774 if (x == 0) return -1
14775 var r = 0
14776 if ((x & 0xffff) == 0) {
14777 x >>= 16
14778 r += 16
14779 }
14780 if ((x & 0xff) == 0) {
14781 x >>= 8
14782 r += 8
14783 }
14784 if ((x & 0xf) == 0) {
14785 x >>= 4
14786 r += 4
14787 }
14788 if ((x & 3) == 0) {
14789 x >>= 2
14790 r += 2
14791 }
14792 if ((x & 1) == 0)++r
14793 return r
14794 }
14795
14796 // (public) returns index of lowest 1-bit (or -1 if none)
14797 function bnGetLowestSetBit() {
14798 for (var i = 0; i < this.t; ++i)
14799 if (this[i] != 0) return i * this.DB + lbit(this[i])
14800 if (this.s < 0) return this.t * this.DB
14801 return -1
14802 }
14803
14804 // return number of 1 bits in x
14805 function cbit(x) {
14806 var r = 0
14807 while (x != 0) {
14808 x &= x - 1
14809 ++r
14810 }
14811 return r
14812 }
14813
14814 // (public) return number of set bits
14815 function bnBitCount() {
14816 var r = 0,
14817 x = this.s & this.DM
14818 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
14819 return r
14820 }
14821
14822 // (public) true iff nth bit is set
14823 function bnTestBit(n) {
14824 var j = Math.floor(n / this.DB)
14825 if (j >= this.t) return (this.s != 0)
14826 return ((this[j] & (1 << (n % this.DB))) != 0)
14827 }
14828
14829 // (protected) this op (1<<n)
14830 function bnpChangeBit(n, op) {
14831 var r = BigInteger.ONE.shiftLeft(n)
14832 this.bitwiseTo(r, op, r)
14833 return r
14834 }
14835
14836 // (public) this | (1<<n)
14837 function bnSetBit(n) {
14838 return this.changeBit(n, op_or)
14839 }
14840
14841 // (public) this & ~(1<<n)
14842 function bnClearBit(n) {
14843 return this.changeBit(n, op_andnot)
14844 }
14845
14846 // (public) this ^ (1<<n)
14847 function bnFlipBit(n) {
14848 return this.changeBit(n, op_xor)
14849 }
14850
14851 // (protected) r = this + a
14852 function bnpAddTo(a, r) {
14853 var self = this
14854
14855 var i = 0,
14856 c = 0,
14857 m = Math.min(a.t, self.t)
14858 while (i < m) {
14859 c += self[i] + a[i]
14860 r[i++] = c & self.DM
14861 c >>= self.DB
14862 }
14863 if (a.t < self.t) {
14864 c += a.s
14865 while (i < self.t) {
14866 c += self[i]
14867 r[i++] = c & self.DM
14868 c >>= self.DB
14869 }
14870 c += self.s
14871 } else {
14872 c += self.s
14873 while (i < a.t) {
14874 c += a[i]
14875 r[i++] = c & self.DM
14876 c >>= self.DB
14877 }
14878 c += a.s
14879 }
14880 r.s = (c < 0) ? -1 : 0
14881 if (c > 0) r[i++] = c
14882 else if (c < -1) r[i++] = self.DV + c
14883 r.t = i
14884 r.clamp()
14885 }
14886
14887 // (public) this + a
14888 function bnAdd(a) {
14889 var r = new BigInteger()
14890 this.addTo(a, r)
14891 return r
14892 }
14893
14894 // (public) this - a
14895 function bnSubtract(a) {
14896 var r = new BigInteger()
14897 this.subTo(a, r)
14898 return r
14899 }
14900
14901 // (public) this * a
14902 function bnMultiply(a) {
14903 var r = new BigInteger()
14904 this.multiplyTo(a, r)
14905 return r
14906 }
14907
14908 // (public) this^2
14909 function bnSquare() {
14910 var r = new BigInteger()
14911 this.squareTo(r)
14912 return r
14913 }
14914
14915 // (public) this / a
14916 function bnDivide(a) {
14917 var r = new BigInteger()
14918 this.divRemTo(a, r, null)
14919 return r
14920 }
14921
14922 // (public) this % a
14923 function bnRemainder(a) {
14924 var r = new BigInteger()
14925 this.divRemTo(a, null, r)
14926 return r
14927 }
14928
14929 // (public) [this/a,this%a]
14930 function bnDivideAndRemainder(a) {
14931 var q = new BigInteger(),
14932 r = new BigInteger()
14933 this.divRemTo(a, q, r)
14934 return new Array(q, r)
14935 }
14936
14937 // (protected) this *= n, this >= 0, 1 < n < DV
14938 function bnpDMultiply(n) {
14939 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
14940 ++this.t
14941 this.clamp()
14942 }
14943
14944 // (protected) this += n << w words, this >= 0
14945 function bnpDAddOffset(n, w) {
14946 if (n == 0) return
14947 while (this.t <= w) this[this.t++] = 0
14948 this[w] += n
14949 while (this[w] >= this.DV) {
14950 this[w] -= this.DV
14951 if (++w >= this.t) this[this.t++] = 0
14952 ++this[w]
14953 }
14954 }
14955
14956 // A "null" reducer
14957 function NullExp() {}
14958
14959 function nNop(x) {
14960 return x
14961 }
14962
14963 function nMulTo(x, y, r) {
14964 x.multiplyTo(y, r)
14965 }
14966
14967 function nSqrTo(x, r) {
14968 x.squareTo(r)
14969 }
14970
14971 NullExp.prototype.convert = nNop
14972 NullExp.prototype.revert = nNop
14973 NullExp.prototype.mulTo = nMulTo
14974 NullExp.prototype.sqrTo = nSqrTo
14975
14976 // (public) this^e
14977 function bnPow(e) {
14978 return this.exp(e, new NullExp())
14979 }
14980
14981 // (protected) r = lower n words of "this * a", a.t <= n
14982 // "this" should be the larger one if appropriate.
14983 function bnpMultiplyLowerTo(a, n, r) {
14984 var i = Math.min(this.t + a.t, n)
14985 r.s = 0; // assumes a,this >= 0
14986 r.t = i
14987 while (i > 0) r[--i] = 0
14988 var j
14989 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
14990 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
14991 r.clamp()
14992 }
14993
14994 // (protected) r = "this * a" without lower n words, n > 0
14995 // "this" should be the larger one if appropriate.
14996 function bnpMultiplyUpperTo(a, n, r) {
14997 --n
14998 var i = r.t = this.t + a.t - n
14999 r.s = 0; // assumes a,this >= 0
15000 while (--i >= 0) r[i] = 0
15001 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
15002 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
15003 r.clamp()
15004 r.drShiftTo(1, r)
15005 }
15006
15007 // Barrett modular reduction
15008 function Barrett(m) {
15009 // setup Barrett
15010 this.r2 = new BigInteger()
15011 this.q3 = new BigInteger()
15012 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
15013 this.mu = this.r2.divide(m)
15014 this.m = m
15015 }
15016
15017 function barrettConvert(x) {
15018 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
15019 else if (x.compareTo(this.m) < 0) return x
15020 else {
15021 var r = new BigInteger()
15022 x.copyTo(r)
15023 this.reduce(r)
15024 return r
15025 }
15026 }
15027
15028 function barrettRevert(x) {
15029 return x
15030 }
15031
15032 // x = x mod m (HAC 14.42)
15033 function barrettReduce(x) {
15034 var self = this
15035 x.drShiftTo(self.m.t - 1, self.r2)
15036 if (x.t > self.m.t + 1) {
15037 x.t = self.m.t + 1
15038 x.clamp()
15039 }
15040 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
15041 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
15042 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
15043 x.subTo(self.r2, x)
15044 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
15045 }
15046
15047 // r = x^2 mod m; x != r
15048 function barrettSqrTo(x, r) {
15049 x.squareTo(r)
15050 this.reduce(r)
15051 }
15052
15053 // r = x*y mod m; x,y != r
15054 function barrettMulTo(x, y, r) {
15055 x.multiplyTo(y, r)
15056 this.reduce(r)
15057 }
15058
15059 Barrett.prototype.convert = barrettConvert
15060 Barrett.prototype.revert = barrettRevert
15061 Barrett.prototype.reduce = barrettReduce
15062 Barrett.prototype.mulTo = barrettMulTo
15063 Barrett.prototype.sqrTo = barrettSqrTo
15064
15065 // (public) this^e % m (HAC 14.85)
15066 function bnModPow(e, m) {
15067 var i = e.bitLength(),
15068 k, r = nbv(1),
15069 z
15070 if (i <= 0) return r
15071 else if (i < 18) k = 1
15072 else if (i < 48) k = 3
15073 else if (i < 144) k = 4
15074 else if (i < 768) k = 5
15075 else k = 6
15076 if (i < 8)
15077 z = new Classic(m)
15078 else if (m.isEven())
15079 z = new Barrett(m)
15080 else
15081 z = new Montgomery(m)
15082
15083 // precomputation
15084 var g = new Array(),
15085 n = 3,
15086 k1 = k - 1,
15087 km = (1 << k) - 1
15088 g[1] = z.convert(this)
15089 if (k > 1) {
15090 var g2 = new BigInteger()
15091 z.sqrTo(g[1], g2)
15092 while (n <= km) {
15093 g[n] = new BigInteger()
15094 z.mulTo(g2, g[n - 2], g[n])
15095 n += 2
15096 }
15097 }
15098
15099 var j = e.t - 1,
15100 w, is1 = true,
15101 r2 = new BigInteger(),
15102 t
15103 i = nbits(e[j]) - 1
15104 while (j >= 0) {
15105 if (i >= k1) w = (e[j] >> (i - k1)) & km
15106 else {
15107 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
15108 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
15109 }
15110
15111 n = k
15112 while ((w & 1) == 0) {
15113 w >>= 1
15114 --n
15115 }
15116 if ((i -= n) < 0) {
15117 i += this.DB
15118 --j
15119 }
15120 if (is1) { // ret == 1, don't bother squaring or multiplying it
15121 g[w].copyTo(r)
15122 is1 = false
15123 } else {
15124 while (n > 1) {
15125 z.sqrTo(r, r2)
15126 z.sqrTo(r2, r)
15127 n -= 2
15128 }
15129 if (n > 0) z.sqrTo(r, r2)
15130 else {
15131 t = r
15132 r = r2
15133 r2 = t
15134 }
15135 z.mulTo(r2, g[w], r)
15136 }
15137
15138 while (j >= 0 && (e[j] & (1 << i)) == 0) {
15139 z.sqrTo(r, r2)
15140 t = r
15141 r = r2
15142 r2 = t
15143 if (--i < 0) {
15144 i = this.DB - 1
15145 --j
15146 }
15147 }
15148 }
15149 return z.revert(r)
15150 }
15151
15152 // (public) gcd(this,a) (HAC 14.54)
15153 function bnGCD(a) {
15154 var x = (this.s < 0) ? this.negate() : this.clone()
15155 var y = (a.s < 0) ? a.negate() : a.clone()
15156 if (x.compareTo(y) < 0) {
15157 var t = x
15158 x = y
15159 y = t
15160 }
15161 var i = x.getLowestSetBit(),
15162 g = y.getLowestSetBit()
15163 if (g < 0) return x
15164 if (i < g) g = i
15165 if (g > 0) {
15166 x.rShiftTo(g, x)
15167 y.rShiftTo(g, y)
15168 }
15169 while (x.signum() > 0) {
15170 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
15171 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
15172 if (x.compareTo(y) >= 0) {
15173 x.subTo(y, x)
15174 x.rShiftTo(1, x)
15175 } else {
15176 y.subTo(x, y)
15177 y.rShiftTo(1, y)
15178 }
15179 }
15180 if (g > 0) y.lShiftTo(g, y)
15181 return y
15182 }
15183
15184 // (protected) this % n, n < 2^26
15185 function bnpModInt(n) {
15186 if (n <= 0) return 0
15187 var d = this.DV % n,
15188 r = (this.s < 0) ? n - 1 : 0
15189 if (this.t > 0)
15190 if (d == 0) r = this[0] % n
15191 else
15192 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
15193 return r
15194 }
15195
15196 // (public) 1/this % m (HAC 14.61)
15197 function bnModInverse(m) {
15198 var ac = m.isEven()
15199 if (this.signum() === 0) throw new Error('division by zero')
15200 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
15201 var u = m.clone(),
15202 v = this.clone()
15203 var a = nbv(1),
15204 b = nbv(0),
15205 c = nbv(0),
15206 d = nbv(1)
15207 while (u.signum() != 0) {
15208 while (u.isEven()) {
15209 u.rShiftTo(1, u)
15210 if (ac) {
15211 if (!a.isEven() || !b.isEven()) {
15212 a.addTo(this, a)
15213 b.subTo(m, b)
15214 }
15215 a.rShiftTo(1, a)
15216 } else if (!b.isEven()) b.subTo(m, b)
15217 b.rShiftTo(1, b)
15218 }
15219 while (v.isEven()) {
15220 v.rShiftTo(1, v)
15221 if (ac) {
15222 if (!c.isEven() || !d.isEven()) {
15223 c.addTo(this, c)
15224 d.subTo(m, d)
15225 }
15226 c.rShiftTo(1, c)
15227 } else if (!d.isEven()) d.subTo(m, d)
15228 d.rShiftTo(1, d)
15229 }
15230 if (u.compareTo(v) >= 0) {
15231 u.subTo(v, u)
15232 if (ac) a.subTo(c, a)
15233 b.subTo(d, b)
15234 } else {
15235 v.subTo(u, v)
15236 if (ac) c.subTo(a, c)
15237 d.subTo(b, d)
15238 }
15239 }
15240 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
15241 while (d.compareTo(m) >= 0) d.subTo(m, d)
15242 while (d.signum() < 0) d.addTo(m, d)
15243 return d
15244 }
15245
15246 var lowprimes = [
15247 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
15248 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
15249 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
15250 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
15251 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
15252 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
15253 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
15254 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
15255 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
15256 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
15257 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
15258 ]
15259
15260 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
15261
15262 // (public) test primality with certainty >= 1-.5^t
15263 function bnIsProbablePrime(t) {
15264 var i, x = this.abs()
15265 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
15266 for (i = 0; i < lowprimes.length; ++i)
15267 if (x[0] == lowprimes[i]) return true
15268 return false
15269 }
15270 if (x.isEven()) return false
15271 i = 1
15272 while (i < lowprimes.length) {
15273 var m = lowprimes[i],
15274 j = i + 1
15275 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15276 m = x.modInt(m)
15277 while (i < j) if (m % lowprimes[i++] == 0) return false
15278 }
15279 return x.millerRabin(t)
15280 }
15281
15282 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
15283 function bnpMillerRabin(t) {
15284 var n1 = this.subtract(BigInteger.ONE)
15285 var k = n1.getLowestSetBit()
15286 if (k <= 0) return false
15287 var r = n1.shiftRight(k)
15288 t = (t + 1) >> 1
15289 if (t > lowprimes.length) t = lowprimes.length
15290 var a = new BigInteger(null)
15291 var j, bases = []
15292 for (var i = 0; i < t; ++i) {
15293 for (;;) {
15294 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15295 if (bases.indexOf(j) == -1) break
15296 }
15297 bases.push(j)
15298 a.fromInt(j)
15299 var y = a.modPow(r, this)
15300 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
15301 var j = 1
15302 while (j++ < k && y.compareTo(n1) != 0) {
15303 y = y.modPowInt(2, this)
15304 if (y.compareTo(BigInteger.ONE) == 0) return false
15305 }
15306 if (y.compareTo(n1) != 0) return false
15307 }
15308 }
15309 return true
15310 }
15311
15312 // protected
15313 proto.chunkSize = bnpChunkSize
15314 proto.toRadix = bnpToRadix
15315 proto.fromRadix = bnpFromRadix
15316 proto.fromNumber = bnpFromNumber
15317 proto.bitwiseTo = bnpBitwiseTo
15318 proto.changeBit = bnpChangeBit
15319 proto.addTo = bnpAddTo
15320 proto.dMultiply = bnpDMultiply
15321 proto.dAddOffset = bnpDAddOffset
15322 proto.multiplyLowerTo = bnpMultiplyLowerTo
15323 proto.multiplyUpperTo = bnpMultiplyUpperTo
15324 proto.modInt = bnpModInt
15325 proto.millerRabin = bnpMillerRabin
15326
15327 // public
15328 proto.clone = bnClone
15329 proto.intValue = bnIntValue
15330 proto.byteValue = bnByteValue
15331 proto.shortValue = bnShortValue
15332 proto.signum = bnSigNum
15333 proto.toByteArray = bnToByteArray
15334 proto.equals = bnEquals
15335 proto.min = bnMin
15336 proto.max = bnMax
15337 proto.and = bnAnd
15338 proto.or = bnOr
15339 proto.xor = bnXor
15340 proto.andNot = bnAndNot
15341 proto.not = bnNot
15342 proto.shiftLeft = bnShiftLeft
15343 proto.shiftRight = bnShiftRight
15344 proto.getLowestSetBit = bnGetLowestSetBit
15345 proto.bitCount = bnBitCount
15346 proto.testBit = bnTestBit
15347 proto.setBit = bnSetBit
15348 proto.clearBit = bnClearBit
15349 proto.flipBit = bnFlipBit
15350 proto.add = bnAdd
15351 proto.subtract = bnSubtract
15352 proto.multiply = bnMultiply
15353 proto.divide = bnDivide
15354 proto.remainder = bnRemainder
15355 proto.divideAndRemainder = bnDivideAndRemainder
15356 proto.modPow = bnModPow
15357 proto.modInverse = bnModInverse
15358 proto.pow = bnPow
15359 proto.gcd = bnGCD
15360 proto.isProbablePrime = bnIsProbablePrime
15361
15362 // JSBN-specific extension
15363 proto.square = bnSquare
15364
15365 // constants
15366 BigInteger.ZERO = nbv(0)
15367 BigInteger.ONE = nbv(1)
15368 BigInteger.valueOf = nbv
15369
15370 module.exports = BigInteger
15371
15372 },{"../package.json":38}],36:[function(require,module,exports){
15373 (function (Buffer){
15374 // FIXME: Kind of a weird way to throw exceptions, consider removing
15375 var assert = require('assert')
15376 var BigInteger = require('./bigi')
15377
15378 /**
15379 * Turns a byte array into a big integer.
15380 *
15381 * This function will interpret a byte array as a big integer in big
15382 * endian notation.
15383 */
15384 BigInteger.fromByteArrayUnsigned = function(byteArray) {
15385 // BigInteger expects a DER integer conformant byte array
15386 if (byteArray[0] & 0x80) {
15387 return new BigInteger([0].concat(byteArray))
15388 }
15389
15390 return new BigInteger(byteArray)
15391 }
15392
15393 /**
15394 * Returns a byte array representation of the big integer.
15395 *
15396 * This returns the absolute of the contained value in big endian
15397 * form. A value of zero results in an empty array.
15398 */
15399 BigInteger.prototype.toByteArrayUnsigned = function() {
15400 var byteArray = this.toByteArray()
15401 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
15402 }
15403
15404 BigInteger.fromDERInteger = function(byteArray) {
15405 return new BigInteger(byteArray)
15406 }
15407
15408 /*
15409 * Converts BigInteger to a DER integer representation.
15410 *
15411 * The format for this value uses the most significant bit as a sign
15412 * bit. If the most significant bit is already set and the integer is
15413 * positive, a 0x00 is prepended.
15414 *
15415 * Examples:
15416 *
15417 * 0 => 0x00
15418 * 1 => 0x01
15419 * -1 => 0xff
15420 * 127 => 0x7f
15421 * -127 => 0x81
15422 * 128 => 0x0080
15423 * -128 => 0x80
15424 * 255 => 0x00ff
15425 * -255 => 0xff01
15426 * 16300 => 0x3fac
15427 * -16300 => 0xc054
15428 * 62300 => 0x00f35c
15429 * -62300 => 0xff0ca4
15430 */
15431 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
15432
15433 BigInteger.fromBuffer = function(buffer) {
15434 // BigInteger expects a DER integer conformant byte array
15435 if (buffer[0] & 0x80) {
15436 var byteArray = Array.prototype.slice.call(buffer)
15437
15438 return new BigInteger([0].concat(byteArray))
15439 }
15440
15441 return new BigInteger(buffer)
15442 }
15443
15444 BigInteger.fromHex = function(hex) {
15445 if (hex === '') return BigInteger.ZERO
15446
15447 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
15448 assert.equal(hex.length % 2, 0, 'Incomplete hex')
15449 return new BigInteger(hex, 16)
15450 }
15451
15452 BigInteger.prototype.toBuffer = function(size) {
15453 var byteArray = this.toByteArrayUnsigned()
15454 var zeros = []
15455
15456 var padding = size - byteArray.length
15457 while (zeros.length < padding) zeros.push(0)
15458
15459 return new Buffer(zeros.concat(byteArray))
15460 }
15461
15462 BigInteger.prototype.toHex = function(size) {
15463 return this.toBuffer(size).toString('hex')
15464 }
15465
15466 }).call(this,require("buffer").Buffer)
15467 },{"./bigi":35,"assert":1,"buffer":4}],37:[function(require,module,exports){
15468 var BigInteger = require('./bigi')
15469
15470 //addons
15471 require('./convert')
15472
15473 module.exports = BigInteger
15474 },{"./bigi":35,"./convert":36}],38:[function(require,module,exports){
15475 module.exports={
15476 "_args": [
15477 [
15478 "bigi",
15479 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15480 ]
15481 ],
15482 "_from": "bigi@latest",
15483 "_id": "bigi@1.4.2",
15484 "_inCache": true,
15485 "_installable": true,
15486 "_location": "/bigi",
15487 "_nodeVersion": "6.1.0",
15488 "_npmOperationalInternal": {
15489 "host": "packages-12-west.internal.npmjs.com",
15490 "tmp": "tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15491 },
15492 "_npmUser": {
15493 "email": "jprichardson@gmail.com",
15494 "name": "jprichardson"
15495 },
15496 "_npmVersion": "3.8.6",
15497 "_phantomChildren": {},
15498 "_requested": {
15499 "name": "bigi",
15500 "raw": "bigi",
15501 "rawSpec": "",
15502 "scope": null,
15503 "spec": "latest",
15504 "type": "tag"
15505 },
15506 "_requiredBy": [
15507 "#USER",
15508 "/bitcoinjs-lib",
15509 "/ecurve"
15510 ],
15511 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15512 "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15513 "_shrinkwrap": null,
15514 "_spec": "bigi",
15515 "_where": "/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15516 "bugs": {
15517 "url": "https://github.com/cryptocoinjs/bigi/issues"
15518 },
15519 "dependencies": {},
15520 "description": "Big integers.",
15521 "devDependencies": {
15522 "coveralls": "^2.11.2",
15523 "istanbul": "^0.3.5",
15524 "jshint": "^2.5.1",
15525 "mocha": "^2.1.0",
15526 "mochify": "^2.1.0"
15527 },
15528 "directories": {},
15529 "dist": {
15530 "shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15531 "tarball": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15532 },
15533 "gitHead": "c25308081c896ff84702303722bf5ecd8b3f78e3",
15534 "homepage": "https://github.com/cryptocoinjs/bigi#readme",
15535 "keywords": [
15536 "cryptography",
15537 "math",
15538 "bitcoin",
15539 "arbitrary",
15540 "precision",
15541 "arithmetic",
15542 "big",
15543 "integer",
15544 "int",
15545 "number",
15546 "biginteger",
15547 "bigint",
15548 "bignumber",
15549 "decimal",
15550 "float"
15551 ],
15552 "main": "./lib/index.js",
15553 "maintainers": [
15554 {
15555 "email": "boydb@midnightdesign.ws",
15556 "name": "midnightlightning"
15557 },
15558 {
15559 "email": "sidazhang89@gmail.com",
15560 "name": "sidazhang"
15561 },
15562 {
15563 "email": "npm@shesek.info",
15564 "name": "nadav"
15565 },
15566 {
15567 "email": "jprichardson@gmail.com",
15568 "name": "jprichardson"
15569 }
15570 ],
15571 "name": "bigi",
15572 "optionalDependencies": {},
15573 "readme": "ERROR: No README data found!",
15574 "repository": {
15575 "type": "git",
15576 "url": "git+https://github.com/cryptocoinjs/bigi.git"
15577 },
15578 "scripts": {
15579 "browser-test": "mochify --wd -R spec",
15580 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15581 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15582 "jshint": "jshint --config jshint.json lib/*.js ; true",
15583 "test": "_mocha -- test/*.js",
15584 "unit": "mocha"
15585 },
15586 "testling": {
15587 "browsers": [
15588 "ie/9..latest",
15589 "firefox/latest",
15590 "chrome/latest",
15591 "safari/6.0..latest",
15592 "iphone/6.0..latest",
15593 "android-browser/4.2..latest"
15594 ],
15595 "files": "test/*.js",
15596 "harness": "mocha"
15597 },
15598 "version": "1.4.2"
15599 }
15600
15601 },{}],39:[function(require,module,exports){
15602 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
15603 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15604 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
15605
15606 var Buffer = require('safe-buffer').Buffer
15607
15608 function check (buffer) {
15609 if (buffer.length < 8) return false
15610 if (buffer.length > 72) return false
15611 if (buffer[0] !== 0x30) return false
15612 if (buffer[1] !== buffer.length - 2) return false
15613 if (buffer[2] !== 0x02) return false
15614
15615 var lenR = buffer[3]
15616 if (lenR === 0) return false
15617 if (5 + lenR >= buffer.length) return false
15618 if (buffer[4 + lenR] !== 0x02) return false
15619
15620 var lenS = buffer[5 + lenR]
15621 if (lenS === 0) return false
15622 if ((6 + lenR + lenS) !== buffer.length) return false
15623
15624 if (buffer[4] & 0x80) return false
15625 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
15626
15627 if (buffer[lenR + 6] & 0x80) return false
15628 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
15629 return true
15630 }
15631
15632 function decode (buffer) {
15633 if (buffer.length < 8) throw new Error('DER sequence length is too short')
15634 if (buffer.length > 72) throw new Error('DER sequence length is too long')
15635 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
15636 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
15637 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
15638
15639 var lenR = buffer[3]
15640 if (lenR === 0) throw new Error('R length is zero')
15641 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
15642 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
15643
15644 var lenS = buffer[5 + lenR]
15645 if (lenS === 0) throw new Error('S length is zero')
15646 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
15647
15648 if (buffer[4] & 0x80) throw new Error('R value is negative')
15649 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
15650
15651 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
15652 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
15653
15654 // non-BIP66 - extract R, S values
15655 return {
15656 r: buffer.slice(4, 4 + lenR),
15657 s: buffer.slice(6 + lenR)
15658 }
15659 }
15660
15661 /*
15662 * Expects r and s to be positive DER integers.
15663 *
15664 * The DER format uses the most significant bit as a sign bit (& 0x80).
15665 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
15666 *
15667 * Examples:
15668 *
15669 * 0 => 0x00
15670 * 1 => 0x01
15671 * -1 => 0xff
15672 * 127 => 0x7f
15673 * -127 => 0x81
15674 * 128 => 0x0080
15675 * -128 => 0x80
15676 * 255 => 0x00ff
15677 * -255 => 0xff01
15678 * 16300 => 0x3fac
15679 * -16300 => 0xc054
15680 * 62300 => 0x00f35c
15681 * -62300 => 0xff0ca4
15682 */
15683 function encode (r, s) {
15684 var lenR = r.length
15685 var lenS = s.length
15686 if (lenR === 0) throw new Error('R length is zero')
15687 if (lenS === 0) throw new Error('S length is zero')
15688 if (lenR > 33) throw new Error('R length is too long')
15689 if (lenS > 33) throw new Error('S length is too long')
15690 if (r[0] & 0x80) throw new Error('R value is negative')
15691 if (s[0] & 0x80) throw new Error('S value is negative')
15692 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
15693 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
15694
15695 var signature = Buffer.allocUnsafe(6 + lenR + lenS)
15696
15697 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15698 signature[0] = 0x30
15699 signature[1] = signature.length - 2
15700 signature[2] = 0x02
15701 signature[3] = r.length
15702 r.copy(signature, 4)
15703 signature[4 + lenR] = 0x02
15704 signature[5 + lenR] = s.length
15705 s.copy(signature, 6 + lenR)
15706
15707 return signature
15708 }
15709
15710 module.exports = {
15711 check: check,
15712 decode: decode,
15713 encode: encode
15714 }
15715
15716 },{"safe-buffer":98}],40:[function(require,module,exports){
15717 module.exports={
15718 "OP_FALSE": 0,
15719 "OP_0": 0,
15720 "OP_PUSHDATA1": 76,
15721 "OP_PUSHDATA2": 77,
15722 "OP_PUSHDATA4": 78,
15723 "OP_1NEGATE": 79,
15724 "OP_RESERVED": 80,
15725 "OP_1": 81,
15726 "OP_TRUE": 81,
15727 "OP_2": 82,
15728 "OP_3": 83,
15729 "OP_4": 84,
15730 "OP_5": 85,
15731 "OP_6": 86,
15732 "OP_7": 87,
15733 "OP_8": 88,
15734 "OP_9": 89,
15735 "OP_10": 90,
15736 "OP_11": 91,
15737 "OP_12": 92,
15738 "OP_13": 93,
15739 "OP_14": 94,
15740 "OP_15": 95,
15741 "OP_16": 96,
15742
15743 "OP_NOP": 97,
15744 "OP_VER": 98,
15745 "OP_IF": 99,
15746 "OP_NOTIF": 100,
15747 "OP_VERIF": 101,
15748 "OP_VERNOTIF": 102,
15749 "OP_ELSE": 103,
15750 "OP_ENDIF": 104,
15751 "OP_VERIFY": 105,
15752 "OP_RETURN": 106,
15753
15754 "OP_TOALTSTACK": 107,
15755 "OP_FROMALTSTACK": 108,
15756 "OP_2DROP": 109,
15757 "OP_2DUP": 110,
15758 "OP_3DUP": 111,
15759 "OP_2OVER": 112,
15760 "OP_2ROT": 113,
15761 "OP_2SWAP": 114,
15762 "OP_IFDUP": 115,
15763 "OP_DEPTH": 116,
15764 "OP_DROP": 117,
15765 "OP_DUP": 118,
15766 "OP_NIP": 119,
15767 "OP_OVER": 120,
15768 "OP_PICK": 121,
15769 "OP_ROLL": 122,
15770 "OP_ROT": 123,
15771 "OP_SWAP": 124,
15772 "OP_TUCK": 125,
15773
15774 "OP_CAT": 126,
15775 "OP_SUBSTR": 127,
15776 "OP_LEFT": 128,
15777 "OP_RIGHT": 129,
15778 "OP_SIZE": 130,
15779
15780 "OP_INVERT": 131,
15781 "OP_AND": 132,
15782 "OP_OR": 133,
15783 "OP_XOR": 134,
15784 "OP_EQUAL": 135,
15785 "OP_EQUALVERIFY": 136,
15786 "OP_RESERVED1": 137,
15787 "OP_RESERVED2": 138,
15788
15789 "OP_1ADD": 139,
15790 "OP_1SUB": 140,
15791 "OP_2MUL": 141,
15792 "OP_2DIV": 142,
15793 "OP_NEGATE": 143,
15794 "OP_ABS": 144,
15795 "OP_NOT": 145,
15796 "OP_0NOTEQUAL": 146,
15797 "OP_ADD": 147,
15798 "OP_SUB": 148,
15799 "OP_MUL": 149,
15800 "OP_DIV": 150,
15801 "OP_MOD": 151,
15802 "OP_LSHIFT": 152,
15803 "OP_RSHIFT": 153,
15804
15805 "OP_BOOLAND": 154,
15806 "OP_BOOLOR": 155,
15807 "OP_NUMEQUAL": 156,
15808 "OP_NUMEQUALVERIFY": 157,
15809 "OP_NUMNOTEQUAL": 158,
15810 "OP_LESSTHAN": 159,
15811 "OP_GREATERTHAN": 160,
15812 "OP_LESSTHANOREQUAL": 161,
15813 "OP_GREATERTHANOREQUAL": 162,
15814 "OP_MIN": 163,
15815 "OP_MAX": 164,
15816
15817 "OP_WITHIN": 165,
15818
15819 "OP_RIPEMD160": 166,
15820 "OP_SHA1": 167,
15821 "OP_SHA256": 168,
15822 "OP_HASH160": 169,
15823 "OP_HASH256": 170,
15824 "OP_CODESEPARATOR": 171,
15825 "OP_CHECKSIG": 172,
15826 "OP_CHECKSIGVERIFY": 173,
15827 "OP_CHECKMULTISIG": 174,
15828 "OP_CHECKMULTISIGVERIFY": 175,
15829
15830 "OP_NOP1": 176,
15831 "OP_NOP2": 177,
15832 "OP_CHECKLOCKTIMEVERIFY": 177,
15833
15834 "OP_NOP3": 178,
15835 "OP_NOP4": 179,
15836 "OP_NOP5": 180,
15837 "OP_NOP6": 181,
15838 "OP_NOP7": 182,
15839 "OP_NOP8": 183,
15840 "OP_NOP9": 184,
15841 "OP_NOP10": 185,
15842
15843 "OP_PUBKEYHASH": 253,
15844 "OP_PUBKEY": 254,
15845 "OP_INVALIDOPCODE": 255
15846 }
15847
15848 },{}],41:[function(require,module,exports){
15849 var OPS = require('./index.json')
15850
15851 var map = {}
15852 for (var op in OPS) {
15853 var code = OPS[op]
15854 map[code] = op
15855 }
15856
15857 module.exports = map
15858
15859 },{"./index.json":40}],42:[function(require,module,exports){
15860 var Buffer = require('safe-buffer').Buffer
15861 var bs58check = require('bs58check')
15862 var bscript = require('./script')
15863 var networks = require('./networks')
15864 var typeforce = require('typeforce')
15865 var types = require('./types')
15866
15867 function fromBase58Check (address) {
15868 var payload = bs58check.decode(address)
15869 if (payload.length < 21) throw new TypeError(address + ' is too short')
15870 if (payload.length > 21) throw new TypeError(address + ' is too long')
15871
15872 var version = payload.readUInt8(0)
15873 var hash = payload.slice(1)
15874
15875 return { hash: hash, version: version }
15876 }
15877
15878 function toBase58Check (hash, version) {
15879 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
15880
15881 var payload = Buffer.allocUnsafe(21)
15882 payload.writeUInt8(version, 0)
15883 hash.copy(payload, 1)
15884
15885 return bs58check.encode(payload)
15886 }
15887
15888 function fromOutputScript (outputScript, network) {
15889 network = network || networks.bitcoin
15890
15891 if (bscript.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash)
15892 if (bscript.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash)
15893
15894 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
15895 }
15896
15897 function toOutputScript (address, network) {
15898 network = network || networks.bitcoin
15899
15900 var decode = fromBase58Check(address)
15901 if (decode.version === network.pubKeyHash) return bscript.pubKeyHash.output.encode(decode.hash)
15902 if (decode.version === network.scriptHash) return bscript.scriptHash.output.encode(decode.hash)
15903
15904 throw new Error(address + ' has no matching Script')
15905 }
15906
15907 module.exports = {
15908 fromBase58Check: fromBase58Check,
15909 fromOutputScript: fromOutputScript,
15910 toBase58Check: toBase58Check,
15911 toOutputScript: toOutputScript
15912 }
15913
15914 },{"./networks":51,"./script":52,"./types":78,"bs58check":80,"safe-buffer":98,"typeforce":109}],43:[function(require,module,exports){
15915 var Buffer = require('safe-buffer').Buffer
15916 var bcrypto = require('./crypto')
15917 var fastMerkleRoot = require('merkle-lib/fastRoot')
15918 var typeforce = require('typeforce')
15919 var types = require('./types')
15920 var varuint = require('varuint-bitcoin')
15921
15922 var Transaction = require('./transaction')
15923
15924 function Block () {
15925 this.version = 1
15926 this.prevHash = null
15927 this.merkleRoot = null
15928 this.timestamp = 0
15929 this.bits = 0
15930 this.nonce = 0
15931 }
15932
15933 Block.fromBuffer = function (buffer) {
15934 if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)')
15935
15936 var offset = 0
15937 function readSlice (n) {
15938 offset += n
15939 return buffer.slice(offset - n, offset)
15940 }
15941
15942 function readUInt32 () {
15943 var i = buffer.readUInt32LE(offset)
15944 offset += 4
15945 return i
15946 }
15947
15948 function readInt32 () {
15949 var i = buffer.readInt32LE(offset)
15950 offset += 4
15951 return i
15952 }
15953
15954 var block = new Block()
15955 block.version = readInt32()
15956 block.prevHash = readSlice(32)
15957 block.merkleRoot = readSlice(32)
15958 block.timestamp = readUInt32()
15959 block.bits = readUInt32()
15960 block.nonce = readUInt32()
15961
15962 if (buffer.length === 80) return block
15963
15964 function readVarInt () {
15965 var vi = varuint.decode(buffer, offset)
15966 offset += varuint.decode.bytes
15967 return vi
15968 }
15969
15970 function readTransaction () {
15971 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
15972 offset += tx.byteLength()
15973 return tx
15974 }
15975
15976 var nTransactions = readVarInt()
15977 block.transactions = []
15978
15979 for (var i = 0; i < nTransactions; ++i) {
15980 var tx = readTransaction()
15981 block.transactions.push(tx)
15982 }
15983
15984 return block
15985 }
15986
15987 Block.prototype.byteLength = function (headersOnly) {
15988 if (headersOnly || !this.transactions) return 80
15989
15990 return 80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
15991 return a + x.byteLength()
15992 }, 0)
15993 }
15994
15995 Block.fromHex = function (hex) {
15996 return Block.fromBuffer(Buffer.from(hex, 'hex'))
15997 }
15998
15999 Block.prototype.getHash = function () {
16000 return bcrypto.hash256(this.toBuffer(true))
16001 }
16002
16003 Block.prototype.getId = function () {
16004 return this.getHash().reverse().toString('hex')
16005 }
16006
16007 Block.prototype.getUTCDate = function () {
16008 var date = new Date(0) // epoch
16009 date.setUTCSeconds(this.timestamp)
16010
16011 return date
16012 }
16013
16014 // TODO: buffer, offset compatibility
16015 Block.prototype.toBuffer = function (headersOnly) {
16016 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16017
16018 var offset = 0
16019 function writeSlice (slice) {
16020 slice.copy(buffer, offset)
16021 offset += slice.length
16022 }
16023
16024 function writeInt32 (i) {
16025 buffer.writeInt32LE(i, offset)
16026 offset += 4
16027 }
16028 function writeUInt32 (i) {
16029 buffer.writeUInt32LE(i, offset)
16030 offset += 4
16031 }
16032
16033 writeInt32(this.version)
16034 writeSlice(this.prevHash)
16035 writeSlice(this.merkleRoot)
16036 writeUInt32(this.timestamp)
16037 writeUInt32(this.bits)
16038 writeUInt32(this.nonce)
16039
16040 if (headersOnly || !this.transactions) return buffer
16041
16042 varuint.encode(this.transactions.length, buffer, offset)
16043 offset += varuint.encode.bytes
16044
16045 this.transactions.forEach(function (tx) {
16046 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16047 tx.toBuffer(buffer, offset)
16048 offset += txSize
16049 })
16050
16051 return buffer
16052 }
16053
16054 Block.prototype.toHex = function (headersOnly) {
16055 return this.toBuffer(headersOnly).toString('hex')
16056 }
16057
16058 Block.calculateTarget = function (bits) {
16059 var exponent = ((bits & 0xff000000) >> 24) - 3
16060 var mantissa = bits & 0x007fffff
16061 var target = Buffer.alloc(32, 0)
16062 target.writeUInt32BE(mantissa, 28 - exponent)
16063 return target
16064 }
16065
16066 Block.calculateMerkleRoot = function (transactions) {
16067 typeforce([{ getHash: types.Function }], transactions)
16068 if (transactions.length === 0) throw TypeError('Cannot compute merkle root for zero transactions')
16069
16070 var hashes = transactions.map(function (transaction) {
16071 return transaction.getHash()
16072 })
16073
16074 return fastMerkleRoot(hashes, bcrypto.hash256)
16075 }
16076
16077 Block.prototype.checkMerkleRoot = function () {
16078 if (!this.transactions) return false
16079
16080 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16081 return this.merkleRoot.compare(actualMerkleRoot) === 0
16082 }
16083
16084 Block.prototype.checkProofOfWork = function () {
16085 var hash = this.getHash().reverse()
16086 var target = Block.calculateTarget(this.bits)
16087
16088 return hash.compare(target) <= 0
16089 }
16090
16091 module.exports = Block
16092
16093 },{"./crypto":45,"./transaction":76,"./types":78,"merkle-lib/fastRoot":94,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],44:[function(require,module,exports){
16094 var pushdata = require('pushdata-bitcoin')
16095 var varuint = require('varuint-bitcoin')
16096
16097 // https://github.com/feross/buffer/blob/master/index.js#L1127
16098 function verifuint (value, max) {
16099 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16100 if (value < 0) throw new Error('specified a negative value for writing an unsigned value')
16101 if (value > max) throw new Error('RangeError: value out of range')
16102 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
16103 }
16104
16105 function readUInt64LE (buffer, offset) {
16106 var a = buffer.readUInt32LE(offset)
16107 var b = buffer.readUInt32LE(offset + 4)
16108 b *= 0x100000000
16109
16110 verifuint(b + a, 0x001fffffffffffff)
16111
16112 return b + a
16113 }
16114
16115 function writeUInt64LE (buffer, value, offset) {
16116 verifuint(value, 0x001fffffffffffff)
16117
16118 buffer.writeInt32LE(value & -1, offset)
16119 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16120 return offset + 8
16121 }
16122
16123 // TODO: remove in 4.0.0?
16124 function readVarInt (buffer, offset) {
16125 var result = varuint.decode(buffer, offset)
16126
16127 return {
16128 number: result,
16129 size: varuint.decode.bytes
16130 }
16131 }
16132
16133 // TODO: remove in 4.0.0?
16134 function writeVarInt (buffer, number, offset) {
16135 varuint.encode(number, buffer, offset)
16136 return varuint.encode.bytes
16137 }
16138
16139 module.exports = {
16140 pushDataSize: pushdata.encodingLength,
16141 readPushDataInt: pushdata.decode,
16142 readUInt64LE: readUInt64LE,
16143 readVarInt: readVarInt,
16144 varIntBuffer: varuint.encode,
16145 varIntSize: varuint.encodingLength,
16146 writePushDataInt: pushdata.encode,
16147 writeUInt64LE: writeUInt64LE,
16148 writeVarInt: writeVarInt
16149 }
16150
16151 },{"pushdata-bitcoin":95,"varuint-bitcoin":111}],45:[function(require,module,exports){
16152 var createHash = require('create-hash')
16153
16154 function ripemd160 (buffer) {
16155 return createHash('rmd160').update(buffer).digest()
16156 }
16157
16158 function sha1 (buffer) {
16159 return createHash('sha1').update(buffer).digest()
16160 }
16161
16162 function sha256 (buffer) {
16163 return createHash('sha256').update(buffer).digest()
16164 }
16165
16166 function hash160 (buffer) {
16167 return ripemd160(sha256(buffer))
16168 }
16169
16170 function hash256 (buffer) {
16171 return sha256(sha256(buffer))
16172 }
16173
16174 module.exports = {
16175 hash160: hash160,
16176 hash256: hash256,
16177 ripemd160: ripemd160,
16178 sha1: sha1,
16179 sha256: sha256
16180 }
16181
16182 },{"create-hash":82}],46:[function(require,module,exports){
16183 var Buffer = require('safe-buffer').Buffer
16184 var createHmac = require('create-hmac')
16185 var typeforce = require('typeforce')
16186 var types = require('./types')
16187
16188 var BigInteger = require('bigi')
16189 var ECSignature = require('./ecsignature')
16190
16191 var ZERO = Buffer.alloc(1, 0)
16192 var ONE = Buffer.alloc(1, 1)
16193
16194 var ecurve = require('ecurve')
16195 var secp256k1 = ecurve.getCurveByName('secp256k1')
16196
16197 // https://tools.ietf.org/html/rfc6979#section-3.2
16198 function deterministicGenerateK (hash, x, checkSig) {
16199 typeforce(types.tuple(
16200 types.Hash256bit,
16201 types.Buffer256bit,
16202 types.Function
16203 ), arguments)
16204
16205 // Step A, ignored as hash already provided
16206 // Step B
16207 // Step C
16208 var k = Buffer.alloc(32, 0)
16209 var v = Buffer.alloc(32, 1)
16210
16211 // Step D
16212 k = createHmac('sha256', k)
16213 .update(v)
16214 .update(ZERO)
16215 .update(x)
16216 .update(hash)
16217 .digest()
16218
16219 // Step E
16220 v = createHmac('sha256', k).update(v).digest()
16221
16222 // Step F
16223 k = createHmac('sha256', k)
16224 .update(v)
16225 .update(ONE)
16226 .update(x)
16227 .update(hash)
16228 .digest()
16229
16230 // Step G
16231 v = createHmac('sha256', k).update(v).digest()
16232
16233 // Step H1/H2a, ignored as tlen === qlen (256 bit)
16234 // Step H2b
16235 v = createHmac('sha256', k).update(v).digest()
16236
16237 var T = BigInteger.fromBuffer(v)
16238
16239 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
16240 while (T.signum() <= 0 || T.compareTo(secp256k1.n) >= 0 || !checkSig(T)) {
16241 k = createHmac('sha256', k)
16242 .update(v)
16243 .update(ZERO)
16244 .digest()
16245
16246 v = createHmac('sha256', k).update(v).digest()
16247
16248 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
16249 // Step H2b again
16250 v = createHmac('sha256', k).update(v).digest()
16251 T = BigInteger.fromBuffer(v)
16252 }
16253
16254 return T
16255 }
16256
16257 var N_OVER_TWO = secp256k1.n.shiftRight(1)
16258
16259 function sign (hash, d) {
16260 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
16261
16262 var x = d.toBuffer(32)
16263 var e = BigInteger.fromBuffer(hash)
16264 var n = secp256k1.n
16265 var G = secp256k1.G
16266
16267 var r, s
16268 deterministicGenerateK(hash, x, function (k) {
16269 var Q = G.multiply(k)
16270
16271 if (secp256k1.isInfinity(Q)) return false
16272
16273 r = Q.affineX.mod(n)
16274 if (r.signum() === 0) return false
16275
16276 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16277 if (s.signum() === 0) return false
16278
16279 return true
16280 })
16281
16282 // enforce low S values, see bip62: 'low s values in signatures'
16283 if (s.compareTo(N_OVER_TWO) > 0) {
16284 s = n.subtract(s)
16285 }
16286
16287 return new ECSignature(r, s)
16288 }
16289
16290 function verify (hash, signature, Q) {
16291 typeforce(types.tuple(
16292 types.Hash256bit,
16293 types.ECSignature,
16294 types.ECPoint
16295 ), arguments)
16296
16297 var n = secp256k1.n
16298 var G = secp256k1.G
16299
16300 var r = signature.r
16301 var s = signature.s
16302
16303 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
16304 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
16305 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
16306
16307 // 1.4.2 H = Hash(M), already done by the user
16308 // 1.4.3 e = H
16309 var e = BigInteger.fromBuffer(hash)
16310
16311 // Compute s^-1
16312 var sInv = s.modInverse(n)
16313
16314 // 1.4.4 Compute u1 = es^−1 mod n
16315 // u2 = rs^−1 mod n
16316 var u1 = e.multiply(sInv).mod(n)
16317 var u2 = r.multiply(sInv).mod(n)
16318
16319 // 1.4.5 Compute R = (xR, yR)
16320 // R = u1G + u2Q
16321 var R = G.multiplyTwo(u1, Q, u2)
16322
16323 // 1.4.5 (cont.) Enforce R is not at infinity
16324 if (secp256k1.isInfinity(R)) return false
16325
16326 // 1.4.6 Convert the field element R.x to an integer
16327 var xR = R.affineX
16328
16329 // 1.4.7 Set v = xR mod n
16330 var v = xR.mod(n)
16331
16332 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16333 return v.equals(r)
16334 }
16335
16336 module.exports = {
16337 deterministicGenerateK: deterministicGenerateK,
16338 sign: sign,
16339 verify: verify,
16340
16341 // TODO: remove
16342 __curve: secp256k1
16343 }
16344
16345 },{"./ecsignature":48,"./types":78,"bigi":37,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],47:[function(require,module,exports){
16346 var baddress = require('./address')
16347 var bcrypto = require('./crypto')
16348 var ecdsa = require('./ecdsa')
16349 var randomBytes = require('randombytes')
16350 var typeforce = require('typeforce')
16351 var types = require('./types')
16352 var wif = require('wif')
16353
16354 var NETWORKS = require('./networks')
16355 var BigInteger = require('bigi')
16356
16357 var ecurve = require('ecurve')
16358 var secp256k1 = ecdsa.__curve
16359
16360 function ECPair (d, Q, options) {
16361 if (options) {
16362 typeforce({
16363 compressed: types.maybe(types.Boolean),
16364 network: types.maybe(types.Network)
16365 }, options)
16366 }
16367
16368 options = options || {}
16369
16370 if (d) {
16371 if (d.signum() <= 0) throw new Error('Private key must be greater than 0')
16372 if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order')
16373 if (Q) throw new TypeError('Unexpected publicKey parameter')
16374
16375 this.d = d
16376 } else {
16377 typeforce(types.ECPoint, Q)
16378
16379 this.__Q = Q
16380 }
16381
16382 this.compressed = options.compressed === undefined ? true : options.compressed
16383 this.network = options.network || NETWORKS.bitcoin
16384 }
16385
16386 Object.defineProperty(ECPair.prototype, 'Q', {
16387 get: function () {
16388 if (!this.__Q && this.d) {
16389 this.__Q = secp256k1.G.multiply(this.d)
16390 }
16391
16392 return this.__Q
16393 }
16394 })
16395
16396 ECPair.fromPublicKeyBuffer = function (buffer, network) {
16397 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
16398
16399 return new ECPair(null, Q, {
16400 compressed: Q.compressed,
16401 network: network
16402 })
16403 }
16404
16405 ECPair.fromWIF = function (string, network) {
16406 var decoded = wif.decode(string)
16407 var version = decoded.version
16408
16409 // list of networks?
16410 if (types.Array(network)) {
16411 network = network.filter(function (x) {
16412 return version === x.wif
16413 }).pop()
16414
16415 if (!network) throw new Error('Unknown network version')
16416
16417 // otherwise, assume a network object (or default to bitcoin)
16418 } else {
16419 network = network || NETWORKS.bitcoin
16420
16421 if (version !== network.wif) throw new Error('Invalid network version')
16422 }
16423
16424 var d = BigInteger.fromBuffer(decoded.privateKey)
16425
16426 return new ECPair(d, null, {
16427 compressed: decoded.compressed,
16428 network: network
16429 })
16430 }
16431
16432 ECPair.makeRandom = function (options) {
16433 options = options || {}
16434
16435 var rng = options.rng || randomBytes
16436
16437 var d
16438 do {
16439 var buffer = rng(32)
16440 typeforce(types.Buffer256bit, buffer)
16441
16442 d = BigInteger.fromBuffer(buffer)
16443 } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0)
16444
16445 return new ECPair(d, null, options)
16446 }
16447
16448 ECPair.prototype.getAddress = function () {
16449 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
16450 }
16451
16452 ECPair.prototype.getNetwork = function () {
16453 return this.network
16454 }
16455
16456 ECPair.prototype.getPublicKeyBuffer = function () {
16457 return this.Q.getEncoded(this.compressed)
16458 }
16459
16460 ECPair.prototype.sign = function (hash) {
16461 if (!this.d) throw new Error('Missing private key')
16462
16463 return ecdsa.sign(hash, this.d)
16464 }
16465
16466 ECPair.prototype.toWIF = function () {
16467 if (!this.d) throw new Error('Missing private key')
16468
16469 return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed)
16470 }
16471
16472 ECPair.prototype.verify = function (hash, signature) {
16473 return ecdsa.verify(hash, signature, this.Q)
16474 }
16475
16476 module.exports = ECPair
16477
16478 },{"./address":42,"./crypto":45,"./ecdsa":46,"./networks":51,"./types":78,"bigi":37,"ecurve":89,"randombytes":96,"typeforce":109,"wif":112}],48:[function(require,module,exports){
16479 (function (Buffer){
16480 var bip66 = require('bip66')
16481 var typeforce = require('typeforce')
16482 var types = require('./types')
16483
16484 var BigInteger = require('bigi')
16485
16486 function ECSignature (r, s) {
16487 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
16488
16489 this.r = r
16490 this.s = s
16491 }
16492
16493 ECSignature.parseCompact = function (buffer) {
16494 if (buffer.length !== 65) throw new Error('Invalid signature length')
16495
16496 var flagByte = buffer.readUInt8(0) - 27
16497 if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter')
16498
16499 var compressed = !!(flagByte & 4)
16500 var recoveryParam = flagByte & 3
16501
16502 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
16503 var s = BigInteger.fromBuffer(buffer.slice(33))
16504
16505 return {
16506 compressed: compressed,
16507 i: recoveryParam,
16508 signature: new ECSignature(r, s)
16509 }
16510 }
16511
16512 ECSignature.fromDER = function (buffer) {
16513 var decode = bip66.decode(buffer)
16514 var r = BigInteger.fromDERInteger(decode.r)
16515 var s = BigInteger.fromDERInteger(decode.s)
16516
16517 return new ECSignature(r, s)
16518 }
16519
16520 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
16521 ECSignature.parseScriptSignature = function (buffer) {
16522 var hashType = buffer.readUInt8(buffer.length - 1)
16523 var hashTypeMod = hashType & ~0x80
16524
16525 if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType)
16526
16527 return {
16528 signature: ECSignature.fromDER(buffer.slice(0, -1)),
16529 hashType: hashType
16530 }
16531 }
16532
16533 ECSignature.prototype.toCompact = function (i, compressed) {
16534 if (compressed) {
16535 i += 4
16536 }
16537
16538 i += 27
16539
16540 var buffer = Buffer.alloc(65)
16541 buffer.writeUInt8(i, 0)
16542 this.r.toBuffer(32).copy(buffer, 1)
16543 this.s.toBuffer(32).copy(buffer, 33)
16544
16545 return buffer
16546 }
16547
16548 ECSignature.prototype.toDER = function () {
16549 var r = Buffer.from(this.r.toDERInteger())
16550 var s = Buffer.from(this.s.toDERInteger())
16551
16552 return bip66.encode(r, s)
16553 }
16554
16555 ECSignature.prototype.toScriptSignature = function (hashType) {
16556 var hashTypeMod = hashType & ~0x80
16557 if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType)
16558
16559 var hashTypeBuffer = Buffer.alloc(1)
16560 hashTypeBuffer.writeUInt8(hashType, 0)
16561
16562 return Buffer.concat([this.toDER(), hashTypeBuffer])
16563 }
16564
16565 module.exports = ECSignature
16566
16567 }).call(this,require("buffer").Buffer)
16568 },{"./types":78,"bigi":37,"bip66":39,"buffer":4,"typeforce":109}],49:[function(require,module,exports){
16569 var Buffer = require('safe-buffer').Buffer
16570 var base58check = require('bs58check')
16571 var bcrypto = require('./crypto')
16572 var createHmac = require('create-hmac')
16573 var typeforce = require('typeforce')
16574 var types = require('./types')
16575 var NETWORKS = require('./networks')
16576
16577 var BigInteger = require('bigi')
16578 var ECPair = require('./ecpair')
16579
16580 var ecurve = require('ecurve')
16581 var curve = ecurve.getCurveByName('secp256k1')
16582
16583 function HDNode (keyPair, chainCode) {
16584 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16585
16586 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16587
16588 this.keyPair = keyPair
16589 this.chainCode = chainCode
16590 this.depth = 0
16591 this.index = 0
16592 this.parentFingerprint = 0x00000000
16593 }
16594
16595 HDNode.HIGHEST_BIT = 0x80000000
16596 HDNode.LENGTH = 78
16597 HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
16598
16599 HDNode.fromSeedBuffer = function (seed, network) {
16600 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
16601
16602 if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits')
16603 if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits')
16604
16605 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16606 var IL = I.slice(0, 32)
16607 var IR = I.slice(32)
16608
16609 // In case IL is 0 or >= n, the master key is invalid
16610 // This is handled by the ECPair constructor
16611 var pIL = BigInteger.fromBuffer(IL)
16612 var keyPair = new ECPair(pIL, null, {
16613 network: network
16614 })
16615
16616 return new HDNode(keyPair, IR)
16617 }
16618
16619 HDNode.fromSeedHex = function (hex, network) {
16620 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
16621 }
16622
16623 HDNode.fromBase58 = function (string, networks) {
16624 var buffer = base58check.decode(string)
16625 if (buffer.length !== 78) throw new Error('Invalid buffer length')
16626
16627 // 4 bytes: version bytes
16628 var version = buffer.readUInt32BE(0)
16629 var network
16630
16631 // list of networks?
16632 if (Array.isArray(networks)) {
16633 network = networks.filter(function (x) {
16634 return version === x.bip32.private ||
16635 version === x.bip32.public
16636 }).pop()
16637
16638 if (!network) throw new Error('Unknown network version')
16639
16640 // otherwise, assume a network object (or default to bitcoin)
16641 } else {
16642 network = networks || NETWORKS.bitcoin
16643 }
16644
16645 if (version !== network.bip32.private &&
16646 version !== network.bip32.public) throw new Error('Invalid network version')
16647
16648 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
16649 var depth = buffer[4]
16650
16651 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16652 var parentFingerprint = buffer.readUInt32BE(5)
16653 if (depth === 0) {
16654 if (parentFingerprint !== 0x00000000) throw new Error('Invalid parent fingerprint')
16655 }
16656
16657 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16658 // This is encoded in MSB order. (0x00000000 if master key)
16659 var index = buffer.readUInt32BE(9)
16660 if (depth === 0 && index !== 0) throw new Error('Invalid index')
16661
16662 // 32 bytes: the chain code
16663 var chainCode = buffer.slice(13, 45)
16664 var keyPair
16665
16666 // 33 bytes: private key data (0x00 + k)
16667 if (version === network.bip32.private) {
16668 if (buffer.readUInt8(45) !== 0x00) throw new Error('Invalid private key')
16669
16670 var d = BigInteger.fromBuffer(buffer.slice(46, 78))
16671 keyPair = new ECPair(d, null, { network: network })
16672
16673 // 33 bytes: public key data (0x02 + X or 0x03 + X)
16674 } else {
16675 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(45, 78))
16676 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16677
16678 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16679 // If not, the extended public key is invalid.
16680 curve.validate(Q)
16681
16682 keyPair = new ECPair(null, Q, { network: network })
16683 }
16684
16685 var hd = new HDNode(keyPair, chainCode)
16686 hd.depth = depth
16687 hd.index = index
16688 hd.parentFingerprint = parentFingerprint
16689
16690 return hd
16691 }
16692
16693 HDNode.prototype.getAddress = function () {
16694 return this.keyPair.getAddress()
16695 }
16696
16697 HDNode.prototype.getIdentifier = function () {
16698 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16699 }
16700
16701 HDNode.prototype.getFingerprint = function () {
16702 return this.getIdentifier().slice(0, 4)
16703 }
16704
16705 HDNode.prototype.getNetwork = function () {
16706 return this.keyPair.getNetwork()
16707 }
16708
16709 HDNode.prototype.getPublicKeyBuffer = function () {
16710 return this.keyPair.getPublicKeyBuffer()
16711 }
16712
16713 HDNode.prototype.neutered = function () {
16714 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16715 network: this.keyPair.network
16716 })
16717
16718 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16719 neutered.depth = this.depth
16720 neutered.index = this.index
16721 neutered.parentFingerprint = this.parentFingerprint
16722
16723 return neutered
16724 }
16725
16726 HDNode.prototype.sign = function (hash) {
16727 return this.keyPair.sign(hash)
16728 }
16729
16730 HDNode.prototype.verify = function (hash, signature) {
16731 return this.keyPair.verify(hash, signature)
16732 }
16733
16734 HDNode.prototype.toBase58 = function (__isPrivate) {
16735 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in 2.0.0')
16736
16737 // Version
16738 var network = this.keyPair.network
16739 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16740 var buffer = Buffer.allocUnsafe(78)
16741
16742 // 4 bytes: version bytes
16743 buffer.writeUInt32BE(version, 0)
16744
16745 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
16746 buffer.writeUInt8(this.depth, 4)
16747
16748 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16749 buffer.writeUInt32BE(this.parentFingerprint, 5)
16750
16751 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16752 // This is encoded in big endian. (0x00000000 if master key)
16753 buffer.writeUInt32BE(this.index, 9)
16754
16755 // 32 bytes: the chain code
16756 this.chainCode.copy(buffer, 13)
16757
16758 // 33 bytes: the public key or private key data
16759 if (!this.isNeutered()) {
16760 // 0x00 + k for private keys
16761 buffer.writeUInt8(0, 45)
16762 this.keyPair.d.toBuffer(32).copy(buffer, 46)
16763
16764 // 33 bytes: the public key
16765 } else {
16766 // X9.62 encoding for public keys
16767 this.keyPair.getPublicKeyBuffer().copy(buffer, 45)
16768 }
16769
16770 return base58check.encode(buffer)
16771 }
16772
16773 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
16774 HDNode.prototype.derive = function (index) {
16775 typeforce(types.UInt32, index)
16776
16777 var isHardened = index >= HDNode.HIGHEST_BIT
16778 var data = Buffer.allocUnsafe(37)
16779
16780 // Hardened child
16781 if (isHardened) {
16782 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
16783
16784 // data = 0x00 || ser256(kpar) || ser32(index)
16785 data[0] = 0x00
16786 this.keyPair.d.toBuffer(32).copy(data, 1)
16787 data.writeUInt32BE(index, 33)
16788
16789 // Normal child
16790 } else {
16791 // data = serP(point(kpar)) || ser32(index)
16792 // = serP(Kpar) || ser32(index)
16793 this.keyPair.getPublicKeyBuffer().copy(data, 0)
16794 data.writeUInt32BE(index, 33)
16795 }
16796
16797 var I = createHmac('sha512', this.chainCode).update(data).digest()
16798 var IL = I.slice(0, 32)
16799 var IR = I.slice(32)
16800
16801 var pIL = BigInteger.fromBuffer(IL)
16802
16803 // In case parse256(IL) >= n, proceed with the next value for i
16804 if (pIL.compareTo(curve.n) >= 0) {
16805 return this.derive(index + 1)
16806 }
16807
16808 // Private parent key -> private child key
16809 var derivedKeyPair
16810 if (!this.isNeutered()) {
16811 // ki = parse256(IL) + kpar (mod n)
16812 var ki = pIL.add(this.keyPair.d).mod(curve.n)
16813
16814 // In case ki == 0, proceed with the next value for i
16815 if (ki.signum() === 0) {
16816 return this.derive(index + 1)
16817 }
16818
16819 derivedKeyPair = new ECPair(ki, null, {
16820 network: this.keyPair.network
16821 })
16822
16823 // Public parent key -> public child key
16824 } else {
16825 // Ki = point(parse256(IL)) + Kpar
16826 // = G*IL + Kpar
16827 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
16828
16829 // In case Ki is the point at infinity, proceed with the next value for i
16830 if (curve.isInfinity(Ki)) {
16831 return this.derive(index + 1)
16832 }
16833
16834 derivedKeyPair = new ECPair(null, Ki, {
16835 network: this.keyPair.network
16836 })
16837 }
16838
16839 var hd = new HDNode(derivedKeyPair, IR)
16840 hd.depth = this.depth + 1
16841 hd.index = index
16842 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
16843
16844 return hd
16845 }
16846
16847 HDNode.prototype.deriveHardened = function (index) {
16848 typeforce(types.UInt31, index)
16849
16850 // Only derives hardened private keys by default
16851 return this.derive(index + HDNode.HIGHEST_BIT)
16852 }
16853
16854 // Private === not neutered
16855 // Public === neutered
16856 HDNode.prototype.isNeutered = function () {
16857 return !(this.keyPair.d)
16858 }
16859
16860 HDNode.prototype.derivePath = function (path) {
16861 typeforce(types.BIP32Path, path)
16862
16863 var splitPath = path.split('/')
16864 if (splitPath[0] === 'm') {
16865 if (this.parentFingerprint) {
16866 throw new Error('Not a master node')
16867 }
16868
16869 splitPath = splitPath.slice(1)
16870 }
16871
16872 return splitPath.reduce(function (prevHd, indexStr) {
16873 var index
16874 if (indexStr.slice(-1) === "'") {
16875 index = parseInt(indexStr.slice(0, -1), 10)
16876 return prevHd.deriveHardened(index)
16877 } else {
16878 index = parseInt(indexStr, 10)
16879 return prevHd.derive(index)
16880 }
16881 }, this)
16882 }
16883
16884 module.exports = HDNode
16885
16886 },{"./crypto":45,"./ecpair":47,"./networks":51,"./types":78,"bigi":37,"bs58check":80,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],50:[function(require,module,exports){
16887 module.exports = {
16888 Block: require('./block'),
16889 ECPair: require('./ecpair'),
16890 ECSignature: require('./ecsignature'),
16891 HDNode: require('./hdnode'),
16892 Transaction: require('./transaction'),
16893 TransactionBuilder: require('./transaction_builder'),
16894
16895 address: require('./address'),
16896 bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
16897 crypto: require('./crypto'),
16898 networks: require('./networks'),
16899 opcodes: require('bitcoin-ops'),
16900 script: require('./script')
16901 }
16902
16903 },{"./address":42,"./block":43,"./bufferutils":44,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./hdnode":49,"./networks":51,"./script":52,"./transaction":76,"./transaction_builder":77,"bitcoin-ops":40}],51:[function(require,module,exports){
16904 // https://en.bitcoin.it/wiki/List_of_address_prefixes
16905 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
16906
16907 module.exports = {
16908 bitcoin: {
16909 messagePrefix: '\x18Bitcoin Signed Message:\n',
16910 bip32: {
16911 public: 0x0488b21e,
16912 private: 0x0488ade4
16913 },
16914 pubKeyHash: 0x00,
16915 scriptHash: 0x05,
16916 wif: 0x80
16917 },
16918 testnet: {
16919 messagePrefix: '\x18Bitcoin Signed Message:\n',
16920 bip32: {
16921 public: 0x043587cf,
16922 private: 0x04358394
16923 },
16924 pubKeyHash: 0x6f,
16925 scriptHash: 0xc4,
16926 wif: 0xef
16927 },
16928 litecoin: {
16929 messagePrefix: '\x19Litecoin Signed Message:\n',
16930 bip32: {
16931 public: 0x019da462,
16932 private: 0x019d9cfe
16933 },
16934 pubKeyHash: 0x30,
16935 scriptHash: 0x32,
16936 wif: 0xb0
16937 }
16938 }
16939
16940 },{}],52:[function(require,module,exports){
16941 var Buffer = require('safe-buffer').Buffer
16942 var bip66 = require('bip66')
16943 var pushdata = require('pushdata-bitcoin')
16944 var typeforce = require('typeforce')
16945 var types = require('./types')
16946 var scriptNumber = require('./script_number')
16947
16948 var OPS = require('bitcoin-ops')
16949 var REVERSE_OPS = require('bitcoin-ops/map')
16950 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
16951
16952 function isOPInt (value) {
16953 return types.Number(value) &&
16954 ((value === OPS.OP_0) ||
16955 (value >= OPS.OP_1 && value <= OPS.OP_16) ||
16956 (value === OPS.OP_1NEGATE))
16957 }
16958
16959 function isPushOnlyChunk (value) {
16960 return types.Buffer(value) || isOPInt(value)
16961 }
16962
16963 function isPushOnly (value) {
16964 return types.Array(value) && value.every(isPushOnlyChunk)
16965 }
16966
16967 function compile (chunks) {
16968 // TODO: remove me
16969 if (Buffer.isBuffer(chunks)) return chunks
16970
16971 typeforce(types.Array, chunks)
16972
16973 var bufferSize = chunks.reduce(function (accum, chunk) {
16974 // data chunk
16975 if (Buffer.isBuffer(chunk)) {
16976 // adhere to BIP62.3, minimal push policy
16977 if (chunk.length === 1 && (chunk[0] === 0x81 || (chunk[0] >= 1 && chunk[0] <= 16))) {
16978 return accum + 1
16979 }
16980
16981 return accum + pushdata.encodingLength(chunk.length) + chunk.length
16982 }
16983
16984 // opcode
16985 return accum + 1
16986 }, 0.0)
16987
16988 var buffer = Buffer.allocUnsafe(bufferSize)
16989 var offset = 0
16990
16991 chunks.forEach(function (chunk) {
16992 // data chunk
16993 if (Buffer.isBuffer(chunk)) {
16994 // adhere to BIP62.3, minimal push policy
16995 if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) {
16996 var opcode = OP_INT_BASE + chunk[0]
16997 buffer.writeUInt8(opcode, offset)
16998 offset += 1
16999 return
17000 }
17001
17002 if (chunk.length === 1 && chunk[0] === 0x81) {
17003 buffer.writeUInt8(OPS.OP_1NEGATE, offset)
17004 offset += 1
17005 return
17006 }
17007
17008 offset += pushdata.encode(buffer, chunk.length, offset)
17009
17010 chunk.copy(buffer, offset)
17011 offset += chunk.length
17012
17013 // opcode
17014 } else {
17015 buffer.writeUInt8(chunk, offset)
17016 offset += 1
17017 }
17018 })
17019
17020 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17021 return buffer
17022 }
17023
17024 function decompile (buffer) {
17025 // TODO: remove me
17026 if (types.Array(buffer)) return buffer
17027
17028 typeforce(types.Buffer, buffer)
17029
17030 var chunks = []
17031 var i = 0
17032
17033 while (i < buffer.length) {
17034 var opcode = buffer[i]
17035
17036 // data chunk
17037 if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17038 var d = pushdata.decode(buffer, i)
17039
17040 // did reading a pushDataInt fail? empty script
17041 if (d === null) return []
17042 i += d.size
17043
17044 // attempt to read too much data? empty script
17045 if (i + d.number > buffer.length) return []
17046
17047 var data = buffer.slice(i, i + d.number)
17048 i += d.number
17049
17050 chunks.push(data)
17051
17052 // opcode
17053 } else {
17054 chunks.push(opcode)
17055
17056 i += 1
17057 }
17058 }
17059
17060 return chunks
17061 }
17062
17063 function toASM (chunks) {
17064 if (Buffer.isBuffer(chunks)) {
17065 chunks = decompile(chunks)
17066 }
17067
17068 return chunks.map(function (chunk) {
17069 // data?
17070 if (Buffer.isBuffer(chunk)) return chunk.toString('hex')
17071
17072 // opcode!
17073 return REVERSE_OPS[chunk]
17074 }).join(' ')
17075 }
17076
17077 function fromASM (asm) {
17078 typeforce(types.String, asm)
17079
17080 return compile(asm.split(' ').map(function (chunkStr) {
17081 // opcode?
17082 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17083 typeforce(types.Hex, chunkStr)
17084
17085 // data!
17086 return Buffer.from(chunkStr, 'hex')
17087 }))
17088 }
17089
17090 function toStack (chunks) {
17091 chunks = decompile(chunks)
17092 typeforce(isPushOnly, chunks)
17093
17094 return chunks.map(function (op) {
17095 if (Buffer.isBuffer(op)) return op
17096 if (op === OPS.OP_0) return Buffer.allocUnsafe(0)
17097
17098 return scriptNumber.encode(op - OP_INT_BASE)
17099 })
17100 }
17101
17102 function isCanonicalPubKey (buffer) {
17103 if (!Buffer.isBuffer(buffer)) return false
17104 if (buffer.length < 33) return false
17105
17106 switch (buffer[0]) {
17107 case 0x02:
17108 case 0x03:
17109 return buffer.length === 33
17110 case 0x04:
17111 return buffer.length === 65
17112 }
17113
17114 return false
17115 }
17116
17117 function isDefinedHashType (hashType) {
17118 var hashTypeMod = hashType & ~0x80
17119
17120 // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17121 return hashTypeMod > 0x00 && hashTypeMod < 0x04
17122 }
17123
17124 function isCanonicalSignature (buffer) {
17125 if (!Buffer.isBuffer(buffer)) return false
17126 if (!isDefinedHashType(buffer[buffer.length - 1])) return false
17127
17128 return bip66.check(buffer.slice(0, -1))
17129 }
17130
17131 module.exports = {
17132 compile: compile,
17133 decompile: decompile,
17134 fromASM: fromASM,
17135 toASM: toASM,
17136 toStack: toStack,
17137
17138 number: require('./script_number'),
17139
17140 isCanonicalPubKey: isCanonicalPubKey,
17141 isCanonicalSignature: isCanonicalSignature,
17142 isPushOnly: isPushOnly,
17143 isDefinedHashType: isDefinedHashType
17144 }
17145
17146 var templates = require('./templates')
17147 for (var key in templates) {
17148 module.exports[key] = templates[key]
17149 }
17150
17151 },{"./script_number":53,"./templates":54,"./types":78,"bip66":39,"bitcoin-ops":40,"bitcoin-ops/map":41,"pushdata-bitcoin":95,"safe-buffer":98,"typeforce":109}],53:[function(require,module,exports){
17152 var Buffer = require('safe-buffer').Buffer
17153
17154 function decode (buffer, maxLength, minimal) {
17155 maxLength = maxLength || 4
17156 minimal = minimal === undefined ? true : minimal
17157
17158 var length = buffer.length
17159 if (length === 0) return 0
17160 if (length > maxLength) throw new TypeError('Script number overflow')
17161 if (minimal) {
17162 if ((buffer[length - 1] & 0x7f) === 0) {
17163 if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number')
17164 }
17165 }
17166
17167 // 40-bit
17168 if (length === 5) {
17169 var a = buffer.readUInt32LE(0)
17170 var b = buffer.readUInt8(4)
17171
17172 if (b & 0x80) return -(((b & ~0x80) * 0x100000000) + a)
17173 return (b * 0x100000000) + a
17174 }
17175
17176 var result = 0
17177
17178 // 32-bit / 24-bit / 16-bit / 8-bit
17179 for (var i = 0; i < length; ++i) {
17180 result |= buffer[i] << (8 * i)
17181 }
17182
17183 if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
17184 return result
17185 }
17186
17187 function scriptNumSize (i) {
17188 return i > 0x7fffffff ? 5
17189 : i > 0x7fffff ? 4
17190 : i > 0x7fff ? 3
17191 : i > 0x7f ? 2
17192 : i > 0x00 ? 1
17193 : 0
17194 }
17195
17196 function encode (number) {
17197 var value = Math.abs(number)
17198 var size = scriptNumSize(value)
17199 var buffer = Buffer.allocUnsafe(size)
17200 var negative = number < 0
17201
17202 for (var i = 0; i < size; ++i) {
17203 buffer.writeUInt8(value & 0xff, i)
17204 value >>= 8
17205 }
17206
17207 if (buffer[size - 1] & 0x80) {
17208 buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1)
17209 } else if (negative) {
17210 buffer[size - 1] |= 0x80
17211 }
17212
17213 return buffer
17214 }
17215
17216 module.exports = {
17217 decode: decode,
17218 encode: encode
17219 }
17220
17221 },{"safe-buffer":98}],54:[function(require,module,exports){
17222 var decompile = require('../script').decompile
17223 var multisig = require('./multisig')
17224 var nullData = require('./nulldata')
17225 var pubKey = require('./pubkey')
17226 var pubKeyHash = require('./pubkeyhash')
17227 var scriptHash = require('./scripthash')
17228 var witnessPubKeyHash = require('./witnesspubkeyhash')
17229 var witnessScriptHash = require('./witnessscripthash')
17230 var witnessCommitment = require('./witnesscommitment')
17231
17232 var types = {
17233 MULTISIG: 'multisig',
17234 NONSTANDARD: 'nonstandard',
17235 NULLDATA: 'nulldata',
17236 P2PK: 'pubkey',
17237 P2PKH: 'pubkeyhash',
17238 P2SH: 'scripthash',
17239 P2WPKH: 'witnesspubkeyhash',
17240 P2WSH: 'witnessscripthash',
17241 WITNESS_COMMITMENT: 'witnesscommitment'
17242 }
17243
17244 function classifyOutput (script) {
17245 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17246 if (witnessScriptHash.output.check(script)) return types.P2WSH
17247 if (pubKeyHash.output.check(script)) return types.P2PKH
17248 if (scriptHash.output.check(script)) return types.P2SH
17249
17250 // XXX: optimization, below functions .decompile before use
17251 var chunks = decompile(script)
17252 if (multisig.output.check(chunks)) return types.MULTISIG
17253 if (pubKey.output.check(chunks)) return types.P2PK
17254 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17255 if (nullData.output.check(chunks)) return types.NULLDATA
17256
17257 return types.NONSTANDARD
17258 }
17259
17260 function classifyInput (script, allowIncomplete) {
17261 // XXX: optimization, below functions .decompile before use
17262 var chunks = decompile(script)
17263
17264 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17265 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17266 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17267 if (pubKey.input.check(chunks)) return types.P2PK
17268
17269 return types.NONSTANDARD
17270 }
17271
17272 function classifyWitness (script, allowIncomplete) {
17273 // XXX: optimization, below functions .decompile before use
17274 var chunks = decompile(script)
17275
17276 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17277 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
17278
17279 return types.NONSTANDARD
17280 }
17281
17282 module.exports = {
17283 classifyInput: classifyInput,
17284 classifyOutput: classifyOutput,
17285 classifyWitness: classifyWitness,
17286 multisig: multisig,
17287 nullData: nullData,
17288 pubKey: pubKey,
17289 pubKeyHash: pubKeyHash,
17290 scriptHash: scriptHash,
17291 witnessPubKeyHash: witnessPubKeyHash,
17292 witnessScriptHash: witnessScriptHash,
17293 witnessCommitment: witnessCommitment,
17294 types: types
17295 }
17296
17297 },{"../script":52,"./multisig":55,"./nulldata":58,"./pubkey":59,"./pubkeyhash":62,"./scripthash":65,"./witnesscommitment":68,"./witnesspubkeyhash":70,"./witnessscripthash":73}],55:[function(require,module,exports){
17298 module.exports = {
17299 input: require('./input'),
17300 output: require('./output')
17301 }
17302
17303 },{"./input":56,"./output":57}],56:[function(require,module,exports){
17304 // OP_0 [signatures ...]
17305
17306 var Buffer = require('safe-buffer').Buffer
17307 var bscript = require('../../script')
17308 var typeforce = require('typeforce')
17309 var OPS = require('bitcoin-ops')
17310
17311 function partialSignature (value) {
17312 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17313 }
17314
17315 function check (script, allowIncomplete) {
17316 var chunks = bscript.decompile(script)
17317 if (chunks.length < 2) return false
17318 if (chunks[0] !== OPS.OP_0) return false
17319
17320 if (allowIncomplete) {
17321 return chunks.slice(1).every(partialSignature)
17322 }
17323
17324 return chunks.slice(1).every(bscript.isCanonicalSignature)
17325 }
17326 check.toJSON = function () { return 'multisig input' }
17327
17328 var EMPTY_BUFFER = Buffer.allocUnsafe(0)
17329
17330 function encodeStack (signatures, scriptPubKey) {
17331 typeforce([partialSignature], signatures)
17332
17333 if (scriptPubKey) {
17334 var scriptData = bscript.multisig.output.decode(scriptPubKey)
17335
17336 if (signatures.length < scriptData.m) {
17337 throw new TypeError('Not enough signatures provided')
17338 }
17339
17340 if (signatures.length > scriptData.pubKeys.length) {
17341 throw new TypeError('Too many signatures provided')
17342 }
17343 }
17344
17345 return [].concat(EMPTY_BUFFER, signatures)
17346 }
17347
17348 function encode (signatures, scriptPubKey) {
17349 return bscript.compile(encodeStack(signatures, scriptPubKey))
17350 }
17351
17352 function decodeStack (stack, allowIncomplete) {
17353 typeforce(check, stack, allowIncomplete)
17354 return stack.slice(1)
17355 }
17356
17357 function decode (buffer, allowIncomplete) {
17358 var stack = bscript.decompile(buffer)
17359 return decodeStack(stack, allowIncomplete)
17360 }
17361
17362 module.exports = {
17363 check: check,
17364 decode: decode,
17365 decodeStack: decodeStack,
17366 encode: encode,
17367 encodeStack: encodeStack
17368 }
17369
17370 },{"../../script":52,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],57:[function(require,module,exports){
17371 // m [pubKeys ...] n OP_CHECKMULTISIG
17372
17373 var bscript = require('../../script')
17374 var types = require('../../types')
17375 var typeforce = require('typeforce')
17376 var OPS = require('bitcoin-ops')
17377 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17378
17379 function check (script, allowIncomplete) {
17380 var chunks = bscript.decompile(script)
17381
17382 if (chunks.length < 4) return false
17383 if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
17384 if (!types.Number(chunks[0])) return false
17385 if (!types.Number(chunks[chunks.length - 2])) return false
17386 var m = chunks[0] - OP_INT_BASE
17387 var n = chunks[chunks.length - 2] - OP_INT_BASE
17388
17389 if (m <= 0) return false
17390 if (n > 16) return false
17391 if (m > n) return false
17392 if (n !== chunks.length - 3) return false
17393 if (allowIncomplete) return true
17394
17395 var keys = chunks.slice(1, -2)
17396 return keys.every(bscript.isCanonicalPubKey)
17397 }
17398 check.toJSON = function () { return 'multi-sig output' }
17399
17400 function encode (m, pubKeys) {
17401 typeforce({
17402 m: types.Number,
17403 pubKeys: [bscript.isCanonicalPubKey]
17404 }, {
17405 m: m,
17406 pubKeys: pubKeys
17407 })
17408
17409 var n = pubKeys.length
17410 if (n < m) throw new TypeError('Not enough pubKeys provided')
17411
17412 return bscript.compile([].concat(
17413 OP_INT_BASE + m,
17414 pubKeys,
17415 OP_INT_BASE + n,
17416 OPS.OP_CHECKMULTISIG
17417 ))
17418 }
17419
17420 function decode (buffer, allowIncomplete) {
17421 var chunks = bscript.decompile(buffer)
17422 typeforce(check, chunks, allowIncomplete)
17423
17424 return {
17425 m: chunks[0] - OP_INT_BASE,
17426 pubKeys: chunks.slice(1, -2)
17427 }
17428 }
17429
17430 module.exports = {
17431 check: check,
17432 decode: decode,
17433 encode: encode
17434 }
17435
17436 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],58:[function(require,module,exports){
17437 // OP_RETURN {data}
17438
17439 var bscript = require('../script')
17440 var types = require('../types')
17441 var typeforce = require('typeforce')
17442 var OPS = require('bitcoin-ops')
17443
17444 function check (script) {
17445 var buffer = bscript.compile(script)
17446
17447 return buffer.length > 1 &&
17448 buffer[0] === OPS.OP_RETURN
17449 }
17450 check.toJSON = function () { return 'null data output' }
17451
17452 function encode (data) {
17453 typeforce(types.Buffer, data)
17454
17455 return bscript.compile([OPS.OP_RETURN, data])
17456 }
17457
17458 function decode (buffer) {
17459 typeforce(check, buffer)
17460
17461 return buffer.slice(2)
17462 }
17463
17464 module.exports = {
17465 output: {
17466 check: check,
17467 decode: decode,
17468 encode: encode
17469 }
17470 }
17471
17472 },{"../script":52,"../types":78,"bitcoin-ops":40,"typeforce":109}],59:[function(require,module,exports){
17473 arguments[4][55][0].apply(exports,arguments)
17474 },{"./input":60,"./output":61,"dup":55}],60:[function(require,module,exports){
17475 // {signature}
17476
17477 var bscript = require('../../script')
17478 var types = require('../../types')
17479 var typeforce = require('typeforce')
17480
17481 function check (script) {
17482 var chunks = bscript.decompile(script)
17483
17484 return chunks.length === 1 &&
17485 bscript.isCanonicalSignature(chunks[0])
17486 }
17487 check.toJSON = function () { return 'pubKey input' }
17488
17489 function encodeStack (signature) {
17490 typeforce(types.Buffer, signature)
17491 return [signature]
17492 }
17493
17494 function encode (signature) {
17495 return bscript.compile(encodeStack(signature))
17496 }
17497
17498 function decodeStack (stack) {
17499 typeforce(check, stack)
17500 return stack[0]
17501 }
17502
17503 function decode (buffer) {
17504 var stack = bscript.decompile(buffer)
17505 return decodeStack(stack)
17506 }
17507
17508 module.exports = {
17509 check: check,
17510 decode: decode,
17511 decodeStack: decodeStack,
17512 encode: encode,
17513 encodeStack: encodeStack
17514 }
17515
17516 },{"../../script":52,"../../types":78,"typeforce":109}],61:[function(require,module,exports){
17517 // {pubKey} OP_CHECKSIG
17518
17519 var bscript = require('../../script')
17520 var typeforce = require('typeforce')
17521 var OPS = require('bitcoin-ops')
17522
17523 function check (script) {
17524 var chunks = bscript.decompile(script)
17525
17526 return chunks.length === 2 &&
17527 bscript.isCanonicalPubKey(chunks[0]) &&
17528 chunks[1] === OPS.OP_CHECKSIG
17529 }
17530 check.toJSON = function () { return 'pubKey output' }
17531
17532 function encode (pubKey) {
17533 typeforce(bscript.isCanonicalPubKey, pubKey)
17534
17535 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17536 }
17537
17538 function decode (buffer) {
17539 var chunks = bscript.decompile(buffer)
17540 typeforce(check, chunks)
17541
17542 return chunks[0]
17543 }
17544
17545 module.exports = {
17546 check: check,
17547 decode: decode,
17548 encode: encode
17549 }
17550
17551 },{"../../script":52,"bitcoin-ops":40,"typeforce":109}],62:[function(require,module,exports){
17552 arguments[4][55][0].apply(exports,arguments)
17553 },{"./input":63,"./output":64,"dup":55}],63:[function(require,module,exports){
17554 // {signature} {pubKey}
17555
17556 var bscript = require('../../script')
17557 var types = require('../../types')
17558 var typeforce = require('typeforce')
17559
17560 function check (script) {
17561 var chunks = bscript.decompile(script)
17562
17563 return chunks.length === 2 &&
17564 bscript.isCanonicalSignature(chunks[0]) &&
17565 bscript.isCanonicalPubKey(chunks[1])
17566 }
17567 check.toJSON = function () { return 'pubKeyHash input' }
17568
17569 function encodeStack (signature, pubKey) {
17570 typeforce({
17571 signature: types.Buffer, pubKey: types.Buffer
17572 }, {
17573 signature: signature, pubKey: pubKey
17574 })
17575
17576 return [signature, pubKey]
17577 }
17578
17579 function encode (signature, pubKey) {
17580 return bscript.compile(encodeStack(signature, pubKey))
17581 }
17582
17583 function decodeStack (stack) {
17584 typeforce(check, stack)
17585
17586 return {
17587 signature: stack[0],
17588 pubKey: stack[1]
17589 }
17590 }
17591
17592 function decode (buffer) {
17593 var stack = bscript.decompile(buffer)
17594 return decodeStack(stack)
17595 }
17596
17597 module.exports = {
17598 check: check,
17599 decode: decode,
17600 decodeStack: decodeStack,
17601 encode: encode,
17602 encodeStack: encodeStack
17603 }
17604
17605 },{"../../script":52,"../../types":78,"typeforce":109}],64:[function(require,module,exports){
17606 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
17607
17608 var bscript = require('../../script')
17609 var types = require('../../types')
17610 var typeforce = require('typeforce')
17611 var OPS = require('bitcoin-ops')
17612
17613 function check (script) {
17614 var buffer = bscript.compile(script)
17615
17616 return buffer.length === 25 &&
17617 buffer[0] === OPS.OP_DUP &&
17618 buffer[1] === OPS.OP_HASH160 &&
17619 buffer[2] === 0x14 &&
17620 buffer[23] === OPS.OP_EQUALVERIFY &&
17621 buffer[24] === OPS.OP_CHECKSIG
17622 }
17623 check.toJSON = function () { return 'pubKeyHash output' }
17624
17625 function encode (pubKeyHash) {
17626 typeforce(types.Hash160bit, pubKeyHash)
17627
17628 return bscript.compile([
17629 OPS.OP_DUP,
17630 OPS.OP_HASH160,
17631 pubKeyHash,
17632 OPS.OP_EQUALVERIFY,
17633 OPS.OP_CHECKSIG
17634 ])
17635 }
17636
17637 function decode (buffer) {
17638 typeforce(check, buffer)
17639
17640 return buffer.slice(3, 23)
17641 }
17642
17643 module.exports = {
17644 check: check,
17645 decode: decode,
17646 encode: encode
17647 }
17648
17649 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],65:[function(require,module,exports){
17650 arguments[4][55][0].apply(exports,arguments)
17651 },{"./input":66,"./output":67,"dup":55}],66:[function(require,module,exports){
17652 // <scriptSig> {serialized scriptPubKey script}
17653
17654 var Buffer = require('safe-buffer').Buffer
17655 var bscript = require('../../script')
17656 var typeforce = require('typeforce')
17657
17658 function check (script, allowIncomplete) {
17659 var chunks = bscript.decompile(script)
17660 if (chunks.length < 1) return false
17661
17662 var lastChunk = chunks[chunks.length - 1]
17663 if (!Buffer.isBuffer(lastChunk)) return false
17664
17665 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(0, -1)))
17666 var redeemScriptChunks = bscript.decompile(lastChunk)
17667
17668 // is redeemScript a valid script?
17669 if (redeemScriptChunks.length === 0) return false
17670
17671 // is redeemScriptSig push only?
17672 if (!bscript.isPushOnly(scriptSigChunks)) return false
17673
17674 var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete)
17675 var outputType = bscript.classifyOutput(redeemScriptChunks)
17676 if (chunks.length === 1) {
17677 return outputType === bscript.types.P2WSH || outputType === bscript.types.P2WPKH
17678 }
17679 return inputType === outputType
17680 }
17681 check.toJSON = function () { return 'scriptHash input' }
17682
17683 function encodeStack (redeemScriptStack, redeemScript) {
17684 var serializedScriptPubKey = bscript.compile(redeemScript)
17685
17686 return [].concat(redeemScriptStack, serializedScriptPubKey)
17687 }
17688
17689 function encode (redeemScriptSig, redeemScript) {
17690 var redeemScriptStack = bscript.decompile(redeemScriptSig)
17691
17692 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17693 }
17694
17695 function decodeStack (stack) {
17696 typeforce(check, stack)
17697
17698 return {
17699 redeemScriptStack: stack.slice(0, -1),
17700 redeemScript: stack[stack.length - 1]
17701 }
17702 }
17703
17704 function decode (buffer) {
17705 var stack = bscript.decompile(buffer)
17706 var result = decodeStack(stack)
17707 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17708 delete result.redeemScriptStack
17709 return result
17710 }
17711
17712 module.exports = {
17713 check: check,
17714 decode: decode,
17715 decodeStack: decodeStack,
17716 encode: encode,
17717 encodeStack: encodeStack
17718 }
17719
17720 },{"../../script":52,"safe-buffer":98,"typeforce":109}],67:[function(require,module,exports){
17721 // OP_HASH160 {scriptHash} OP_EQUAL
17722
17723 var bscript = require('../../script')
17724 var types = require('../../types')
17725 var typeforce = require('typeforce')
17726 var OPS = require('bitcoin-ops')
17727
17728 function check (script) {
17729 var buffer = bscript.compile(script)
17730
17731 return buffer.length === 23 &&
17732 buffer[0] === OPS.OP_HASH160 &&
17733 buffer[1] === 0x14 &&
17734 buffer[22] === OPS.OP_EQUAL
17735 }
17736 check.toJSON = function () { return 'scriptHash output' }
17737
17738 function encode (scriptHash) {
17739 typeforce(types.Hash160bit, scriptHash)
17740
17741 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17742 }
17743
17744 function decode (buffer) {
17745 typeforce(check, buffer)
17746
17747 return buffer.slice(2, 22)
17748 }
17749
17750 module.exports = {
17751 check: check,
17752 decode: decode,
17753 encode: encode
17754 }
17755
17756 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],68:[function(require,module,exports){
17757 module.exports = {
17758 output: require('./output')
17759 }
17760
17761 },{"./output":69}],69:[function(require,module,exports){
17762 // OP_RETURN {aa21a9ed} {commitment}
17763
17764 var Buffer = require('safe-buffer').Buffer
17765 var bscript = require('../../script')
17766 var types = require('../../types')
17767 var typeforce = require('typeforce')
17768 var OPS = require('bitcoin-ops')
17769
17770 var HEADER = Buffer.from('aa21a9ed', 'hex')
17771
17772 function check (script) {
17773 var buffer = bscript.compile(script)
17774
17775 return buffer.length > 37 &&
17776 buffer[0] === OPS.OP_RETURN &&
17777 buffer[1] === 0x24 &&
17778 buffer.slice(2, 6).equals(HEADER)
17779 }
17780
17781 check.toJSON = function () { return 'Witness commitment output' }
17782
17783 function encode (commitment) {
17784 typeforce(types.Hash256bit, commitment)
17785
17786 var buffer = Buffer.allocUnsafe(36)
17787 HEADER.copy(buffer, 0)
17788 commitment.copy(buffer, 4)
17789
17790 return bscript.compile([OPS.OP_RETURN, buffer])
17791 }
17792
17793 function decode (buffer) {
17794 typeforce(check, buffer)
17795
17796 return bscript.decompile(buffer)[1].slice(4, 36)
17797 }
17798
17799 module.exports = {
17800 check: check,
17801 decode: decode,
17802 encode: encode
17803 }
17804
17805 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],70:[function(require,module,exports){
17806 arguments[4][55][0].apply(exports,arguments)
17807 },{"./input":71,"./output":72,"dup":55}],71:[function(require,module,exports){
17808 // {signature} {pubKey}
17809
17810 var pkh = require('../pubkeyhash/input')
17811
17812 module.exports = {
17813 check: pkh.check,
17814 decodeStack: pkh.decodeStack,
17815 encodeStack: pkh.encodeStack
17816 }
17817
17818 },{"../pubkeyhash/input":63}],72:[function(require,module,exports){
17819 // OP_0 {pubKeyHash}
17820
17821 var bscript = require('../../script')
17822 var types = require('../../types')
17823 var typeforce = require('typeforce')
17824 var OPS = require('bitcoin-ops')
17825
17826 function check (script) {
17827 var buffer = bscript.compile(script)
17828
17829 return buffer.length === 22 &&
17830 buffer[0] === OPS.OP_0 &&
17831 buffer[1] === 0x14
17832 }
17833 check.toJSON = function () { return 'Witness pubKeyHash output' }
17834
17835 function encode (pubKeyHash) {
17836 typeforce(types.Hash160bit, pubKeyHash)
17837
17838 return bscript.compile([OPS.OP_0, pubKeyHash])
17839 }
17840
17841 function decode (buffer) {
17842 typeforce(check, buffer)
17843
17844 return buffer.slice(2)
17845 }
17846
17847 module.exports = {
17848 check: check,
17849 decode: decode,
17850 encode: encode
17851 }
17852
17853 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],73:[function(require,module,exports){
17854 arguments[4][55][0].apply(exports,arguments)
17855 },{"./input":74,"./output":75,"dup":55}],74:[function(require,module,exports){
17856 // {signature} {pubKey}
17857
17858 var p2sh = require('../scripthash/input')
17859
17860 module.exports = {
17861 check: p2sh.check,
17862 decodeStack: p2sh.decodeStack,
17863 encodeStack: p2sh.encodeStack
17864 }
17865
17866 },{"../scripthash/input":66}],75:[function(require,module,exports){
17867 // OP_0 {scriptHash}
17868
17869 var bscript = require('../../script')
17870 var types = require('../../types')
17871 var typeforce = require('typeforce')
17872 var OPS = require('bitcoin-ops')
17873
17874 function check (script) {
17875 var buffer = bscript.compile(script)
17876
17877 return buffer.length === 34 &&
17878 buffer[0] === OPS.OP_0 &&
17879 buffer[1] === 0x20
17880 }
17881 check.toJSON = function () { return 'Witness scriptHash output' }
17882
17883 function encode (scriptHash) {
17884 typeforce(types.Hash256bit, scriptHash)
17885
17886 return bscript.compile([OPS.OP_0, scriptHash])
17887 }
17888
17889 function decode (buffer) {
17890 typeforce(check, buffer)
17891
17892 return buffer.slice(2)
17893 }
17894
17895 module.exports = {
17896 check: check,
17897 decode: decode,
17898 encode: encode
17899 }
17900
17901 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],76:[function(require,module,exports){
17902 var Buffer = require('safe-buffer').Buffer
17903 var bcrypto = require('./crypto')
17904 var bscript = require('./script')
17905 var bufferutils = require('./bufferutils')
17906 var opcodes = require('bitcoin-ops')
17907 var typeforce = require('typeforce')
17908 var types = require('./types')
17909 var varuint = require('varuint-bitcoin')
17910
17911 function varSliceSize (someScript) {
17912 var length = someScript.length
17913
17914 return varuint.encodingLength(length) + length
17915 }
17916
17917 function vectorSize (someVector) {
17918 var length = someVector.length
17919
17920 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
17921 return sum + varSliceSize(witness)
17922 }, 0)
17923 }
17924
17925 function Transaction () {
17926 this.version = 1
17927 this.locktime = 0
17928 this.ins = []
17929 this.outs = []
17930 }
17931
17932 Transaction.DEFAULT_SEQUENCE = 0xffffffff
17933 Transaction.SIGHASH_ALL = 0x01
17934 Transaction.SIGHASH_NONE = 0x02
17935 Transaction.SIGHASH_SINGLE = 0x03
17936 Transaction.SIGHASH_ANYONECANPAY = 0x80
17937 Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
17938 Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
17939
17940 var EMPTY_SCRIPT = Buffer.allocUnsafe(0)
17941 var EMPTY_WITNESS = []
17942 var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex')
17943 var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex')
17944 var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
17945 var BLANK_OUTPUT = {
17946 script: EMPTY_SCRIPT,
17947 valueBuffer: VALUE_UINT64_MAX
17948 }
17949
17950 Transaction.fromBuffer = function (buffer, __noStrict) {
17951 var offset = 0
17952 function readSlice (n) {
17953 offset += n
17954 return buffer.slice(offset - n, offset)
17955 }
17956
17957 function readUInt32 () {
17958 var i = buffer.readUInt32LE(offset)
17959 offset += 4
17960 return i
17961 }
17962
17963 function readInt32 () {
17964 var i = buffer.readInt32LE(offset)
17965 offset += 4
17966 return i
17967 }
17968
17969 function readUInt64 () {
17970 var i = bufferutils.readUInt64LE(buffer, offset)
17971 offset += 8
17972 return i
17973 }
17974
17975 function readVarInt () {
17976 var vi = varuint.decode(buffer, offset)
17977 offset += varuint.decode.bytes
17978 return vi
17979 }
17980
17981 function readVarSlice () {
17982 return readSlice(readVarInt())
17983 }
17984
17985 function readVector () {
17986 var count = readVarInt()
17987 var vector = []
17988 for (var i = 0; i < count; i++) vector.push(readVarSlice())
17989 return vector
17990 }
17991
17992 var tx = new Transaction()
17993 tx.version = readInt32()
17994
17995 var marker = buffer.readUInt8(offset)
17996 var flag = buffer.readUInt8(offset + 1)
17997
17998 var hasWitnesses = false
17999 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18000 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18001 offset += 2
18002 hasWitnesses = true
18003 }
18004
18005 var vinLen = readVarInt()
18006 for (var i = 0; i < vinLen; ++i) {
18007 tx.ins.push({
18008 hash: readSlice(32),
18009 index: readUInt32(),
18010 script: readVarSlice(),
18011 sequence: readUInt32(),
18012 witness: EMPTY_WITNESS
18013 })
18014 }
18015
18016 var voutLen = readVarInt()
18017 for (i = 0; i < voutLen; ++i) {
18018 tx.outs.push({
18019 value: readUInt64(),
18020 script: readVarSlice()
18021 })
18022 }
18023
18024 if (hasWitnesses) {
18025 for (i = 0; i < vinLen; ++i) {
18026 tx.ins[i].witness = readVector()
18027 }
18028
18029 // was this pointless?
18030 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18031 }
18032
18033 tx.locktime = readUInt32()
18034
18035 if (__noStrict) return tx
18036 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
18037
18038 return tx
18039 }
18040
18041 Transaction.fromHex = function (hex) {
18042 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
18043 }
18044
18045 Transaction.isCoinbaseHash = function (buffer) {
18046 typeforce(types.Hash256bit, buffer)
18047 for (var i = 0; i < 32; ++i) {
18048 if (buffer[i] !== 0) return false
18049 }
18050 return true
18051 }
18052
18053 Transaction.prototype.isCoinbase = function () {
18054 return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)
18055 }
18056
18057 Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18058 typeforce(types.tuple(
18059 types.Hash256bit,
18060 types.UInt32,
18061 types.maybe(types.UInt32),
18062 types.maybe(types.Buffer)
18063 ), arguments)
18064
18065 if (types.Null(sequence)) {
18066 sequence = Transaction.DEFAULT_SEQUENCE
18067 }
18068
18069 // Add the input and return the input's index
18070 return (this.ins.push({
18071 hash: hash,
18072 index: index,
18073 script: scriptSig || EMPTY_SCRIPT,
18074 sequence: sequence,
18075 witness: EMPTY_WITNESS
18076 }) - 1)
18077 }
18078
18079 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18080 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
18081
18082 // Add the output and return the output's index
18083 return (this.outs.push({
18084 script: scriptPubKey,
18085 value: value
18086 }) - 1)
18087 }
18088
18089 Transaction.prototype.hasWitnesses = function () {
18090 return this.ins.some(function (x) {
18091 return x.witness.length !== 0
18092 })
18093 }
18094
18095 Transaction.prototype.weight = function () {
18096 var base = this.__byteLength(false)
18097 var total = this.__byteLength(true)
18098 return base * 3 + total
18099 }
18100
18101 Transaction.prototype.virtualSize = function () {
18102 return Math.ceil(this.weight() / 4)
18103 }
18104
18105 Transaction.prototype.byteLength = function () {
18106 return this.__byteLength(true)
18107 }
18108
18109 Transaction.prototype.__byteLength = function (__allowWitness) {
18110 var hasWitnesses = __allowWitness && this.hasWitnesses()
18111
18112 return (
18113 (hasWitnesses ? 10 : 8) +
18114 varuint.encodingLength(this.ins.length) +
18115 varuint.encodingLength(this.outs.length) +
18116 this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
18117 this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
18118 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
18119 )
18120 }
18121
18122 Transaction.prototype.clone = function () {
18123 var newTx = new Transaction()
18124 newTx.version = this.version
18125 newTx.locktime = this.locktime
18126
18127 newTx.ins = this.ins.map(function (txIn) {
18128 return {
18129 hash: txIn.hash,
18130 index: txIn.index,
18131 script: txIn.script,
18132 sequence: txIn.sequence,
18133 witness: txIn.witness
18134 }
18135 })
18136
18137 newTx.outs = this.outs.map(function (txOut) {
18138 return {
18139 script: txOut.script,
18140 value: txOut.value
18141 }
18142 })
18143
18144 return newTx
18145 }
18146
18147 /**
18148 * Hash transaction for signing a specific input.
18149 *
18150 * Bitcoin uses a different hash for each signed transaction input.
18151 * This method copies the transaction, makes the necessary changes based on the
18152 * hashType, and then hashes the result.
18153 * This hash can then be used to sign the provided transaction input.
18154 */
18155 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18156 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18157
18158 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18159 if (inIndex >= this.ins.length) return ONE
18160
18161 // ignore OP_CODESEPARATOR
18162 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18163 return x !== opcodes.OP_CODESEPARATOR
18164 }))
18165
18166 var txTmp = this.clone()
18167
18168 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18169 if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {
18170 txTmp.outs = []
18171
18172 // ignore sequence numbers (except at inIndex)
18173 txTmp.ins.forEach(function (input, i) {
18174 if (i === inIndex) return
18175
18176 input.sequence = 0
18177 })
18178
18179 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18180 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {
18181 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18182 if (inIndex >= this.outs.length) return ONE
18183
18184 // truncate outputs after
18185 txTmp.outs.length = inIndex + 1
18186
18187 // "blank" outputs before
18188 for (var i = 0; i < inIndex; i++) {
18189 txTmp.outs[i] = BLANK_OUTPUT
18190 }
18191
18192 // ignore sequence numbers (except at inIndex)
18193 txTmp.ins.forEach(function (input, y) {
18194 if (y === inIndex) return
18195
18196 input.sequence = 0
18197 })
18198 }
18199
18200 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18201 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18202 txTmp.ins = [txTmp.ins[inIndex]]
18203 txTmp.ins[0].script = ourScript
18204
18205 // SIGHASH_ALL: only ignore input scripts
18206 } else {
18207 // "blank" others input scripts
18208 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18209 txTmp.ins[inIndex].script = ourScript
18210 }
18211
18212 // serialize and hash
18213 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4)
18214 buffer.writeInt32LE(hashType, buffer.length - 4)
18215 txTmp.__toBuffer(buffer, 0, false)
18216
18217 return bcrypto.hash256(buffer)
18218 }
18219
18220 Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18221 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18222
18223 var tbuffer, toffset
18224 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18225 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18226 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18227 function writeVarInt (i) {
18228 varuint.encode(i, tbuffer, toffset)
18229 toffset += varuint.encode.bytes
18230 }
18231 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18232
18233 var hashOutputs = ZERO
18234 var hashPrevouts = ZERO
18235 var hashSequence = ZERO
18236
18237 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18238 tbuffer = Buffer.allocUnsafe(36 * this.ins.length)
18239 toffset = 0
18240
18241 this.ins.forEach(function (txIn) {
18242 writeSlice(txIn.hash)
18243 writeUInt32(txIn.index)
18244 })
18245
18246 hashPrevouts = bcrypto.hash256(tbuffer)
18247 }
18248
18249 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18250 (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18251 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18252 tbuffer = Buffer.allocUnsafe(4 * this.ins.length)
18253 toffset = 0
18254
18255 this.ins.forEach(function (txIn) {
18256 writeUInt32(txIn.sequence)
18257 })
18258
18259 hashSequence = bcrypto.hash256(tbuffer)
18260 }
18261
18262 if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18263 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18264 var txOutsSize = this.outs.reduce(function (sum, output) {
18265 return sum + 8 + varSliceSize(output.script)
18266 }, 0)
18267
18268 tbuffer = Buffer.allocUnsafe(txOutsSize)
18269 toffset = 0
18270
18271 this.outs.forEach(function (out) {
18272 writeUInt64(out.value)
18273 writeVarSlice(out.script)
18274 })
18275
18276 hashOutputs = bcrypto.hash256(tbuffer)
18277 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18278 var output = this.outs[inIndex]
18279
18280 tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script))
18281 toffset = 0
18282 writeUInt64(output.value)
18283 writeVarSlice(output.script)
18284
18285 hashOutputs = bcrypto.hash256(tbuffer)
18286 }
18287
18288 tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript))
18289 toffset = 0
18290
18291 var input = this.ins[inIndex]
18292 writeUInt32(this.version)
18293 writeSlice(hashPrevouts)
18294 writeSlice(hashSequence)
18295 writeSlice(input.hash)
18296 writeUInt32(input.index)
18297 writeVarSlice(prevOutScript)
18298 writeUInt64(value)
18299 writeUInt32(input.sequence)
18300 writeSlice(hashOutputs)
18301 writeUInt32(this.locktime)
18302 writeUInt32(hashType)
18303 return bcrypto.hash256(tbuffer)
18304 }
18305
18306 Transaction.prototype.getHash = function () {
18307 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18308 }
18309
18310 Transaction.prototype.getId = function () {
18311 // transaction hash's are displayed in reverse order
18312 return this.getHash().reverse().toString('hex')
18313 }
18314
18315 Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18316 return this.__toBuffer(buffer, initialOffset, true)
18317 }
18318
18319 Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18320 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
18321
18322 var offset = initialOffset || 0
18323 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18324 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18325 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18326 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18327 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18328 function writeVarInt (i) {
18329 varuint.encode(i, buffer, offset)
18330 offset += varuint.encode.bytes
18331 }
18332 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18333 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
18334
18335 writeInt32(this.version)
18336
18337 var hasWitnesses = __allowWitness && this.hasWitnesses()
18338
18339 if (hasWitnesses) {
18340 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18341 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18342 }
18343
18344 writeVarInt(this.ins.length)
18345
18346 this.ins.forEach(function (txIn) {
18347 writeSlice(txIn.hash)
18348 writeUInt32(txIn.index)
18349 writeVarSlice(txIn.script)
18350 writeUInt32(txIn.sequence)
18351 })
18352
18353 writeVarInt(this.outs.length)
18354 this.outs.forEach(function (txOut) {
18355 if (!txOut.valueBuffer) {
18356 writeUInt64(txOut.value)
18357 } else {
18358 writeSlice(txOut.valueBuffer)
18359 }
18360
18361 writeVarSlice(txOut.script)
18362 })
18363
18364 if (hasWitnesses) {
18365 this.ins.forEach(function (input) {
18366 writeVector(input.witness)
18367 })
18368 }
18369
18370 writeUInt32(this.locktime)
18371
18372 // avoid slicing unless necessary
18373 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18374 return buffer
18375 }
18376
18377 Transaction.prototype.toHex = function () {
18378 return this.toBuffer().toString('hex')
18379 }
18380
18381 Transaction.prototype.setInputScript = function (index, scriptSig) {
18382 typeforce(types.tuple(types.Number, types.Buffer), arguments)
18383
18384 this.ins[index].script = scriptSig
18385 }
18386
18387 Transaction.prototype.setWitness = function (index, witness) {
18388 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18389
18390 this.ins[index].witness = witness
18391 }
18392
18393 module.exports = Transaction
18394
18395 },{"./bufferutils":44,"./crypto":45,"./script":52,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],77:[function(require,module,exports){
18396 var Buffer = require('safe-buffer').Buffer
18397 var baddress = require('./address')
18398 var bcrypto = require('./crypto')
18399 var bscript = require('./script')
18400 var networks = require('./networks')
18401 var ops = require('bitcoin-ops')
18402 var typeforce = require('typeforce')
18403 var types = require('./types')
18404 var scriptTypes = bscript.types
18405 var SIGNABLE = [bscript.types.P2PKH, bscript.types.P2PK, bscript.types.MULTISIG]
18406 var P2SH = SIGNABLE.concat([bscript.types.P2WPKH, bscript.types.P2WSH])
18407
18408 var ECPair = require('./ecpair')
18409 var ECSignature = require('./ecsignature')
18410 var Transaction = require('./transaction')
18411
18412 function extractChunks (type, chunks, script) {
18413 var pubKeys = []
18414 var signatures = []
18415 switch (type) {
18416 case scriptTypes.P2PKH:
18417 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18418 pubKeys = chunks.slice(1)
18419 signatures = chunks.slice(0, 1)
18420 break
18421
18422 case scriptTypes.P2PK:
18423 pubKeys[0] = script ? bscript.pubKey.output.decode(script) : undefined
18424 signatures = chunks.slice(0, 1)
18425 break
18426
18427 case scriptTypes.MULTISIG:
18428 if (script) {
18429 var multisig = bscript.multisig.output.decode(script)
18430 pubKeys = multisig.pubKeys
18431 }
18432
18433 signatures = chunks.slice(1).map(function (chunk) {
18434 return chunk.length === 0 ? undefined : chunk
18435 })
18436 break
18437 }
18438
18439 return {
18440 pubKeys: pubKeys,
18441 signatures: signatures
18442 }
18443 }
18444 function expandInput (scriptSig, witnessStack) {
18445 if (scriptSig.length === 0 && witnessStack.length === 0) return {}
18446
18447 var prevOutScript
18448 var prevOutType
18449 var scriptType
18450 var script
18451 var redeemScript
18452 var witnessScript
18453 var witnessScriptType
18454 var redeemScriptType
18455 var witness = false
18456 var p2wsh = false
18457 var p2sh = false
18458 var witnessProgram
18459 var chunks
18460
18461 var scriptSigChunks = bscript.decompile(scriptSig)
18462 var sigType = bscript.classifyInput(scriptSigChunks, true)
18463 if (sigType === scriptTypes.P2SH) {
18464 p2sh = true
18465 redeemScript = scriptSigChunks[scriptSigChunks.length - 1]
18466 redeemScriptType = bscript.classifyOutput(redeemScript)
18467 prevOutScript = bscript.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18468 prevOutType = scriptTypes.P2SH
18469 script = redeemScript
18470 }
18471
18472 var classifyWitness = bscript.classifyWitness(witnessStack)
18473 if (classifyWitness === scriptTypes.P2WSH) {
18474 witnessScript = witnessStack[witnessStack.length - 1]
18475 witnessScriptType = bscript.classifyOutput(witnessScript)
18476 p2wsh = true
18477 if (scriptSig.length === 0) {
18478 prevOutScript = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18479 prevOutType = scriptTypes.P2WSH
18480 if (typeof redeemScript !== 'undefined') {
18481 throw new Error('Redeem script given when unnecessary')
18482 }
18483 // bare witness
18484 } else {
18485 if (!redeemScript) {
18486 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18487 }
18488 witnessProgram = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18489 if (!redeemScript.equals(witnessProgram)) {
18490 throw new Error('Redeem script didn\'t match witnessScript')
18491 }
18492 }
18493
18494 if (SIGNABLE.indexOf(bscript.classifyOutput(witnessScript)) === -1) {
18495 throw new Error('unsupported witness script')
18496 }
18497 script = witnessScript
18498 scriptType = witnessScriptType
18499 chunks = witnessStack.slice(0, -1)
18500 } else if (classifyWitness === scriptTypes.P2WPKH) {
18501 var key = witnessStack[witnessStack.length - 1]
18502 var keyHash = bcrypto.hash160(key)
18503 if (scriptSig.length === 0) {
18504 prevOutScript = bscript.witnessPubKeyHash.output.encode(keyHash)
18505 prevOutType = scriptTypes.P2WPKH
18506 if (typeof redeemScript !== 'undefined') {
18507 throw new Error('Redeem script given when unnecessary')
18508 }
18509 } else {
18510 if (!redeemScript) {
18511 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18512 }
18513 witnessProgram = bscript.witnessPubKeyHash.output.encode(keyHash)
18514 if (!redeemScript.equals(witnessProgram)) {
18515 throw new Error('Redeem script did not have the right witness program')
18516 }
18517 }
18518
18519 scriptType = scriptTypes.P2PKH
18520 chunks = witnessStack
18521 } else if (redeemScript) {
18522 if (P2SH.indexOf(redeemScriptType) === -1) {
18523 throw new Error('Bad redeemscript!')
18524 }
18525
18526 script = redeemScript
18527 scriptType = redeemScriptType
18528 chunks = scriptSigChunks.slice(0, -1)
18529 } else {
18530 prevOutType = scriptType = bscript.classifyInput(scriptSig)
18531 chunks = scriptSigChunks
18532 }
18533
18534 var expanded = extractChunks(scriptType, chunks, script)
18535
18536 var result = {
18537 pubKeys: expanded.pubKeys,
18538 signatures: expanded.signatures,
18539 prevOutScript: prevOutScript,
18540 prevOutType: prevOutType,
18541 signType: scriptType,
18542 signScript: script,
18543 witness: Boolean(witness)
18544 }
18545
18546 if (p2sh) {
18547 result.redeemScript = redeemScript
18548 result.redeemScriptType = redeemScriptType
18549 }
18550
18551 if (p2wsh) {
18552 result.witnessScript = witnessScript
18553 result.witnessScriptType = witnessScriptType
18554 }
18555
18556 return result
18557 }
18558
18559 // could be done in expandInput, but requires the original Transaction for hashForSignature
18560 function fixMultisigOrder (input, transaction, vin) {
18561 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18562 if (input.pubKeys.length === input.signatures.length) return
18563
18564 var unmatched = input.signatures.concat()
18565
18566 input.signatures = input.pubKeys.map(function (pubKey) {
18567 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18568 var match
18569
18570 // check for a signature
18571 unmatched.some(function (signature, i) {
18572 // skip if undefined || OP_0
18573 if (!signature) return false
18574
18575 // TODO: avoid O(n) hashForSignature
18576 var parsed = ECSignature.parseScriptSignature(signature)
18577 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
18578
18579 // skip if signature does not match pubKey
18580 if (!keyPair.verify(hash, parsed.signature)) return false
18581
18582 // remove matched signature from unmatched
18583 unmatched[i] = undefined
18584 match = signature
18585
18586 return true
18587 })
18588
18589 return match
18590 })
18591 }
18592
18593 function expandOutput (script, scriptType, ourPubKey) {
18594 typeforce(types.Buffer, script)
18595
18596 var scriptChunks = bscript.decompile(script)
18597 if (!scriptType) {
18598 scriptType = bscript.classifyOutput(script)
18599 }
18600
18601 var pubKeys = []
18602
18603 switch (scriptType) {
18604 // does our hash160(pubKey) match the output scripts?
18605 case scriptTypes.P2PKH:
18606 if (!ourPubKey) break
18607
18608 var pkh1 = scriptChunks[2]
18609 var pkh2 = bcrypto.hash160(ourPubKey)
18610 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18611 break
18612
18613 // does our hash160(pubKey) match the output scripts?
18614 case scriptTypes.P2WPKH:
18615 if (!ourPubKey) break
18616
18617 var wpkh1 = scriptChunks[1]
18618 var wpkh2 = bcrypto.hash160(ourPubKey)
18619 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18620 break
18621
18622 case scriptTypes.P2PK:
18623 pubKeys = scriptChunks.slice(0, 1)
18624 break
18625
18626 case scriptTypes.MULTISIG:
18627 pubKeys = scriptChunks.slice(1, -2)
18628 break
18629
18630 default: return { scriptType: scriptType }
18631 }
18632
18633 return {
18634 pubKeys: pubKeys,
18635 scriptType: scriptType,
18636 signatures: pubKeys.map(function () { return undefined })
18637 }
18638 }
18639
18640 function checkP2shInput (input, redeemScriptHash) {
18641 if (input.prevOutType) {
18642 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
18643
18644 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[1]
18645 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18646 }
18647 }
18648
18649 function checkP2WSHInput (input, witnessScriptHash) {
18650 if (input.prevOutType) {
18651 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
18652
18653 var scriptHash = bscript.decompile(input.prevOutScript)[1]
18654 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18655 }
18656 }
18657
18658 function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18659 var expanded
18660 var prevOutType
18661 var prevOutScript
18662
18663 var p2sh = false
18664 var p2shType
18665 var redeemScriptHash
18666
18667 var witness = false
18668 var p2wsh = false
18669 var witnessType
18670 var witnessScriptHash
18671
18672 var signType
18673 var signScript
18674
18675 if (redeemScript && witnessScript) {
18676 redeemScriptHash = bcrypto.hash160(redeemScript)
18677 witnessScriptHash = bcrypto.sha256(witnessScript)
18678 checkP2shInput(input, redeemScriptHash)
18679
18680 if (!redeemScript.equals(bscript.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
18681
18682 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18683 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18684 prevOutType = bscript.types.P2SH
18685 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18686 p2sh = witness = p2wsh = true
18687 p2shType = bscript.types.P2WSH
18688 signType = witnessType = expanded.scriptType
18689 signScript = witnessScript
18690 } else if (redeemScript) {
18691 redeemScriptHash = bcrypto.hash160(redeemScript)
18692 checkP2shInput(input, redeemScriptHash)
18693
18694 expanded = expandOutput(redeemScript, undefined, kpPubKey)
18695 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
18696
18697 prevOutType = bscript.types.P2SH
18698 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18699 p2sh = true
18700 signType = p2shType = expanded.scriptType
18701 signScript = redeemScript
18702 witness = signType === bscript.types.P2WPKH
18703 } else if (witnessScript) {
18704 witnessScriptHash = bcrypto.sha256(witnessScript)
18705 checkP2WSHInput(input, witnessScriptHash)
18706
18707 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18708 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18709
18710 prevOutType = bscript.types.P2WSH
18711 prevOutScript = bscript.witnessScriptHash.output.encode(witnessScriptHash)
18712 witness = p2wsh = true
18713 signType = witnessType = expanded.scriptType
18714 signScript = witnessScript
18715 } else if (input.prevOutType) {
18716 // embedded scripts are not possible without a redeemScript
18717 if (input.prevOutType === scriptTypes.P2SH ||
18718 input.prevOutType === scriptTypes.P2WSH) {
18719 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
18720 }
18721
18722 prevOutType = input.prevOutType
18723 prevOutScript = input.prevOutScript
18724 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
18725 if (!expanded.pubKeys) return
18726
18727 witness = (input.prevOutType === scriptTypes.P2WPKH)
18728 signType = prevOutType
18729 signScript = prevOutScript
18730 } else {
18731 prevOutScript = bscript.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
18732 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
18733 prevOutType = scriptTypes.P2PKH
18734 witness = false
18735 signType = prevOutType
18736 signScript = prevOutScript
18737 }
18738
18739 if (witness && !types.Satoshi(witnessValue)) {
18740 throw new Error('Input was witness but not given witness value')
18741 }
18742
18743 if (signType === scriptTypes.P2WPKH) {
18744 signScript = bscript.pubKeyHash.output.encode(bscript.witnessPubKeyHash.output.decode(signScript))
18745 }
18746
18747 if (p2sh) {
18748 input.redeemScript = redeemScript
18749 input.redeemScriptType = p2shType
18750 }
18751
18752 if (p2wsh) {
18753 input.witnessScript = witnessScript
18754 input.witnessScriptType = witnessType
18755 }
18756
18757 input.pubKeys = expanded.pubKeys
18758 input.signatures = expanded.signatures
18759 input.signScript = signScript
18760 input.signType = signType
18761 input.prevOutScript = prevOutScript
18762 input.prevOutType = prevOutType
18763 input.witness = witness
18764 }
18765
18766 function buildStack (type, signatures, pubKeys, allowIncomplete) {
18767 if (type === scriptTypes.P2PKH) {
18768 if (signatures.length === 1 && Buffer.isBuffer(signatures[0]) && pubKeys.length === 1) return bscript.pubKeyHash.input.encodeStack(signatures[0], pubKeys[0])
18769 } else if (type === scriptTypes.P2PK) {
18770 if (signatures.length === 1 && Buffer.isBuffer(signatures[0])) return bscript.pubKey.input.encodeStack(signatures[0])
18771 } else if (type === scriptTypes.MULTISIG) {
18772 if (signatures.length > 0) {
18773 signatures = signatures.map(function (signature) {
18774 return signature || ops.OP_0
18775 })
18776 if (!allowIncomplete) {
18777 // remove blank signatures
18778 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
18779 }
18780
18781 return bscript.multisig.input.encodeStack(signatures /* see if it's necessary first */)
18782 }
18783 } else {
18784 throw new Error('Not yet supported')
18785 }
18786
18787 if (!allowIncomplete) throw new Error('Not enough signatures provided')
18788
18789 return []
18790 }
18791
18792 function buildInput (input, allowIncomplete) {
18793 var scriptType = input.prevOutType
18794 var sig = []
18795 var witness = []
18796 if (SIGNABLE.indexOf(scriptType) !== -1) {
18797 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
18798 }
18799
18800 var p2sh = false
18801 if (scriptType === bscript.types.P2SH) {
18802 // We can remove this error later when we have a guarantee prepareInput
18803 // rejects unsignable scripts - it MUST be signable at this point.
18804 if (P2SH.indexOf(input.redeemScriptType) === -1) {
18805 throw new Error('Impossible to sign this type')
18806 }
18807 p2sh = true
18808 if (SIGNABLE.indexOf(input.redeemScriptType) !== -1) {
18809 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
18810 }
18811 // If it wasn't SIGNABLE, it's witness, defer to that
18812 scriptType = input.redeemScriptType
18813 }
18814
18815 if (scriptType === bscript.types.P2WPKH) {
18816 // P2WPKH is a special case of P2PKH
18817 witness = buildStack(bscript.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
18818 } else if (scriptType === bscript.types.P2WSH) {
18819 // We can remove this check later
18820 if (SIGNABLE.indexOf(input.witnessScriptType) !== -1) {
18821 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
18822 witness.push(input.witnessScript)
18823 } else {
18824 // We can remove this error later when we have a guarantee prepareInput
18825 // rejects unsignble scripts - it MUST be signable at this point.
18826 throw new Error()
18827 }
18828
18829 scriptType = input.witnessScriptType
18830 }
18831
18832 // append redeemScript if necessary
18833 if (p2sh) {
18834 sig.push(input.redeemScript)
18835 }
18836
18837 return {
18838 type: scriptType,
18839 script: bscript.compile(sig),
18840 witness: witness
18841 }
18842 }
18843
18844 function TransactionBuilder (network, maximumFeeRate) {
18845 this.prevTxMap = {}
18846 this.network = network || networks.bitcoin
18847
18848 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
18849 this.maximumFeeRate = maximumFeeRate || 1000
18850
18851 this.inputs = []
18852 this.tx = new Transaction()
18853 }
18854
18855 TransactionBuilder.prototype.setLockTime = function (locktime) {
18856 typeforce(types.UInt32, locktime)
18857
18858 // if any signatures exist, throw
18859 if (this.inputs.some(function (input) {
18860 if (!input.signatures) return false
18861
18862 return input.signatures.some(function (s) { return s })
18863 })) {
18864 throw new Error('No, this would invalidate signatures')
18865 }
18866
18867 this.tx.locktime = locktime
18868 }
18869
18870 TransactionBuilder.prototype.setVersion = function (version) {
18871 typeforce(types.UInt32, version)
18872
18873 // XXX: this might eventually become more complex depending on what the versions represent
18874 this.tx.version = version
18875 }
18876
18877 TransactionBuilder.fromTransaction = function (transaction, network) {
18878 var txb = new TransactionBuilder(network)
18879
18880 // Copy transaction fields
18881 txb.setVersion(transaction.version)
18882 txb.setLockTime(transaction.locktime)
18883
18884 // Copy outputs (done first to avoid signature invalidation)
18885 transaction.outs.forEach(function (txOut) {
18886 txb.addOutput(txOut.script, txOut.value)
18887 })
18888
18889 // Copy inputs
18890 transaction.ins.forEach(function (txIn) {
18891 txb.__addInputUnsafe(txIn.hash, txIn.index, {
18892 sequence: txIn.sequence,
18893 script: txIn.script,
18894 witness: txIn.witness
18895 })
18896 })
18897
18898 // fix some things not possible through the public API
18899 txb.inputs.forEach(function (input, i) {
18900 fixMultisigOrder(input, transaction, i)
18901 })
18902
18903 return txb
18904 }
18905
18906 TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
18907 if (!this.__canModifyInputs()) {
18908 throw new Error('No, this would invalidate signatures')
18909 }
18910
18911 var value
18912
18913 // is it a hex string?
18914 if (typeof txHash === 'string') {
18915 // transaction hashs's are displayed in reverse order, un-reverse it
18916 txHash = Buffer.from(txHash, 'hex').reverse()
18917
18918 // is it a Transaction object?
18919 } else if (txHash instanceof Transaction) {
18920 var txOut = txHash.outs[vout]
18921 prevOutScript = txOut.script
18922 value = txOut.value
18923
18924 txHash = txHash.getHash()
18925 }
18926
18927 return this.__addInputUnsafe(txHash, vout, {
18928 sequence: sequence,
18929 prevOutScript: prevOutScript,
18930 value: value
18931 })
18932 }
18933
18934 TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
18935 if (Transaction.isCoinbaseHash(txHash)) {
18936 throw new Error('coinbase inputs not supported')
18937 }
18938
18939 var prevTxOut = txHash.toString('hex') + ':' + vout
18940 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
18941
18942 var input = {}
18943
18944 // derive what we can from the scriptSig
18945 if (options.script !== undefined) {
18946 input = expandInput(options.script, options.witness || [])
18947 }
18948
18949 // if an input value was given, retain it
18950 if (options.value !== undefined) {
18951 input.value = options.value
18952 }
18953
18954 // derive what we can from the previous transactions output script
18955 if (!input.prevOutScript && options.prevOutScript) {
18956 var prevOutType
18957
18958 if (!input.pubKeys && !input.signatures) {
18959 var expanded = expandOutput(options.prevOutScript)
18960
18961 if (expanded.pubKeys) {
18962 input.pubKeys = expanded.pubKeys
18963 input.signatures = expanded.signatures
18964 }
18965
18966 prevOutType = expanded.scriptType
18967 }
18968
18969 input.prevOutScript = options.prevOutScript
18970 input.prevOutType = prevOutType || bscript.classifyOutput(options.prevOutScript)
18971 }
18972
18973 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
18974 this.inputs[vin] = input
18975 this.prevTxMap[prevTxOut] = vin
18976
18977 return vin
18978 }
18979
18980 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
18981 if (!this.__canModifyOutputs()) {
18982 throw new Error('No, this would invalidate signatures')
18983 }
18984
18985 // Attempt to get a script if it's a base58 address string
18986 if (typeof scriptPubKey === 'string') {
18987 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
18988 }
18989
18990 return this.tx.addOutput(scriptPubKey, value)
18991 }
18992
18993 TransactionBuilder.prototype.build = function () {
18994 return this.__build(false)
18995 }
18996 TransactionBuilder.prototype.buildIncomplete = function () {
18997 return this.__build(true)
18998 }
18999
19000 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19001 if (!allowIncomplete) {
19002 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19003 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19004 }
19005
19006 var tx = this.tx.clone()
19007 // Create script signatures from inputs
19008 this.inputs.forEach(function (input, i) {
19009 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19010 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19011 var result = buildInput(input, allowIncomplete)
19012
19013 // skip if no result
19014 if (!allowIncomplete) {
19015 if (SIGNABLE.indexOf(result.type) === -1 && result.type !== bscript.types.P2WPKH) {
19016 throw new Error(result.type + ' not supported')
19017 }
19018 }
19019
19020 tx.setInputScript(i, result.script)
19021 tx.setWitness(i, result.witness)
19022 })
19023
19024 if (!allowIncomplete) {
19025 // do not rely on this, its merely a last resort
19026 if (this.__overMaximumFees(tx.byteLength())) {
19027 throw new Error('Transaction has absurd fees')
19028 }
19029 }
19030
19031 return tx
19032 }
19033
19034 function canSign (input) {
19035 return input.prevOutScript !== undefined &&
19036 input.signScript !== undefined &&
19037 input.pubKeys !== undefined &&
19038 input.signatures !== undefined &&
19039 input.signatures.length === input.pubKeys.length &&
19040 input.pubKeys.length > 0 &&
19041 input.witness !== undefined
19042 }
19043
19044 TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19045 if (keyPair.network !== this.network) throw new Error('Inconsistent network')
19046 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19047 hashType = hashType || Transaction.SIGHASH_ALL
19048
19049 var input = this.inputs[vin]
19050
19051 // if redeemScript was previously provided, enforce consistency
19052 if (input.redeemScript !== undefined &&
19053 redeemScript &&
19054 !input.redeemScript.equals(redeemScript)) {
19055 throw new Error('Inconsistent redeemScript')
19056 }
19057
19058 var kpPubKey = keyPair.getPublicKeyBuffer()
19059 if (!canSign(input)) {
19060 prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19061 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19062 }
19063
19064 // ready to sign
19065 var signatureHash
19066 if (input.witness) {
19067 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, witnessValue, hashType)
19068 } else {
19069 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
19070 }
19071 // enforce in order signing of public keys
19072 var signed = input.pubKeys.some(function (pubKey, i) {
19073 if (!kpPubKey.equals(pubKey)) return false
19074 if (input.signatures[i]) throw new Error('Signature already exists')
19075
19076 input.signatures[i] = keyPair.sign(signatureHash).toScriptSignature(hashType)
19077 return true
19078 })
19079
19080 if (!signed) throw new Error('Key pair cannot sign for this input')
19081 }
19082
19083 function signatureHashType (buffer) {
19084 return buffer.readUInt8(buffer.length - 1)
19085 }
19086
19087 TransactionBuilder.prototype.__canModifyInputs = function () {
19088 return this.inputs.every(function (input) {
19089 // any signatures?
19090 if (input.signatures === undefined) return true
19091
19092 return input.signatures.every(function (signature) {
19093 if (!signature) return true
19094 var hashType = signatureHashType(signature)
19095
19096 // if SIGHASH_ANYONECANPAY is set, signatures would not
19097 // be invalidated by more inputs
19098 return hashType & Transaction.SIGHASH_ANYONECANPAY
19099 })
19100 })
19101 }
19102
19103 TransactionBuilder.prototype.__canModifyOutputs = function () {
19104 var nInputs = this.tx.ins.length
19105 var nOutputs = this.tx.outs.length
19106
19107 return this.inputs.every(function (input) {
19108 if (input.signatures === undefined) return true
19109
19110 return input.signatures.every(function (signature) {
19111 if (!signature) return true
19112 var hashType = signatureHashType(signature)
19113
19114 var hashTypeMod = hashType & 0x1f
19115 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19116 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19117 // if SIGHASH_SINGLE is set, and nInputs > nOutputs
19118 // some signatures would be invalidated by the addition
19119 // of more outputs
19120 return nInputs <= nOutputs
19121 }
19122 })
19123 })
19124 }
19125
19126 TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19127 // not all inputs will have .value defined
19128 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value >>> 0) }, 0)
19129
19130 // but all outputs do, and if we have any input value
19131 // we can immediately determine if the outputs are too small
19132 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value }, 0)
19133 var fee = incoming - outgoing
19134 var feeRate = fee / bytes
19135
19136 return feeRate > this.maximumFeeRate
19137 }
19138
19139 module.exports = TransactionBuilder
19140
19141 },{"./address":42,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./networks":51,"./script":52,"./transaction":76,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],78:[function(require,module,exports){
19142 var typeforce = require('typeforce')
19143
19144 var UINT31_MAX = Math.pow(2, 31) - 1
19145 function UInt31 (value) {
19146 return typeforce.UInt32(value) && value <= UINT31_MAX
19147 }
19148
19149 function BIP32Path (value) {
19150 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19151 }
19152 BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
19153
19154 var SATOSHI_MAX = 21 * 1e14
19155 function Satoshi (value) {
19156 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19157 }
19158
19159 // external dependent types
19160 var BigInt = typeforce.quacksLike('BigInteger')
19161 var ECPoint = typeforce.quacksLike('Point')
19162
19163 // exposed, external API
19164 var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19165 var Network = typeforce.compile({
19166 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19167 bip32: {
19168 public: typeforce.UInt32,
19169 private: typeforce.UInt32
19170 },
19171 pubKeyHash: typeforce.UInt8,
19172 scriptHash: typeforce.UInt8,
19173 wif: typeforce.UInt8
19174 })
19175
19176 // extend typeforce types with ours
19177 var types = {
19178 BigInt: BigInt,
19179 BIP32Path: BIP32Path,
19180 Buffer256bit: typeforce.BufferN(32),
19181 ECPoint: ECPoint,
19182 ECSignature: ECSignature,
19183 Hash160bit: typeforce.BufferN(20),
19184 Hash256bit: typeforce.BufferN(32),
19185 Network: Network,
19186 Satoshi: Satoshi,
19187 UInt31: UInt31
19188 }
19189
19190 for (var typeName in typeforce) {
19191 types[typeName] = typeforce[typeName]
19192 }
19193
19194 module.exports = types
19195
19196 },{"typeforce":109}],79:[function(require,module,exports){
19197 var basex = require('base-x')
19198 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
19199
19200 module.exports = basex(ALPHABET)
19201
19202 },{"base-x":34}],80:[function(require,module,exports){
19203 (function (Buffer){
19204 'use strict'
19205
19206 var base58 = require('bs58')
19207 var createHash = require('create-hash')
19208
19209 // SHA256(SHA256(buffer))
19210 function sha256x2 (buffer) {
19211 var tmp = createHash('sha256').update(buffer).digest()
19212 return createHash('sha256').update(tmp).digest()
19213 }
19214
19215 // Encode a buffer as a base58-check encoded string
19216 function encode (payload) {
19217 var checksum = sha256x2(payload)
19218
19219 return base58.encode(Buffer.concat([
19220 payload,
19221 checksum
19222 ], payload.length + 4))
19223 }
19224
19225 function decodeRaw (buffer) {
19226 var payload = buffer.slice(0, -4)
19227 var checksum = buffer.slice(-4)
19228 var newChecksum = sha256x2(payload)
19229
19230 if (checksum[0] ^ newChecksum[0] |
19231 checksum[1] ^ newChecksum[1] |
19232 checksum[2] ^ newChecksum[2] |
19233 checksum[3] ^ newChecksum[3]) return
19234
19235 return payload
19236 }
19237
19238 // Decode a base58-check encoded string to a buffer, no result if checksum is wrong
19239 function decodeUnsafe (string) {
19240 var buffer = base58.decodeUnsafe(string)
19241 if (!buffer) return
19242
19243 return decodeRaw(buffer)
19244 }
19245
19246 function decode (string) {
19247 var buffer = base58.decode(string)
19248 var payload = decodeRaw(buffer)
19249 if (!payload) throw new Error('Invalid checksum')
19250 return payload
19251 }
19252
19253 module.exports = {
19254 encode: encode,
19255 decode: decode,
19256 decodeUnsafe: decodeUnsafe
19257 }
19258
19259 }).call(this,require("buffer").Buffer)
19260 },{"bs58":79,"buffer":4,"create-hash":82}],81:[function(require,module,exports){
19261 var Buffer = require('safe-buffer').Buffer
19262 var Transform = require('stream').Transform
19263 var StringDecoder = require('string_decoder').StringDecoder
19264 var inherits = require('inherits')
19265
19266 function CipherBase (hashMode) {
19267 Transform.call(this)
19268 this.hashMode = typeof hashMode === 'string'
19269 if (this.hashMode) {
19270 this[hashMode] = this._finalOrDigest
19271 } else {
19272 this.final = this._finalOrDigest
19273 }
19274 if (this._final) {
19275 this.__final = this._final
19276 this._final = null
19277 }
19278 this._decoder = null
19279 this._encoding = null
19280 }
19281 inherits(CipherBase, Transform)
19282
19283 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
19284 if (typeof data === 'string') {
19285 data = Buffer.from(data, inputEnc)
19286 }
19287
19288 var outData = this._update(data)
19289 if (this.hashMode) return this
19290
19291 if (outputEnc) {
19292 outData = this._toString(outData, outputEnc)
19293 }
19294
19295 return outData
19296 }
19297
19298 CipherBase.prototype.setAutoPadding = function () {}
19299 CipherBase.prototype.getAuthTag = function () {
19300 throw new Error('trying to get auth tag in unsupported state')
19301 }
19302
19303 CipherBase.prototype.setAuthTag = function () {
19304 throw new Error('trying to set auth tag in unsupported state')
19305 }
19306
19307 CipherBase.prototype.setAAD = function () {
19308 throw new Error('trying to set aad in unsupported state')
19309 }
19310
19311 CipherBase.prototype._transform = function (data, _, next) {
19312 var err
19313 try {
19314 if (this.hashMode) {
19315 this._update(data)
19316 } else {
19317 this.push(this._update(data))
19318 }
19319 } catch (e) {
19320 err = e
19321 } finally {
19322 next(err)
19323 }
19324 }
19325 CipherBase.prototype._flush = function (done) {
19326 var err
19327 try {
19328 this.push(this.__final())
19329 } catch (e) {
19330 err = e
19331 }
19332
19333 done(err)
19334 }
19335 CipherBase.prototype._finalOrDigest = function (outputEnc) {
19336 var outData = this.__final() || Buffer.alloc(0)
19337 if (outputEnc) {
19338 outData = this._toString(outData, outputEnc, true)
19339 }
19340 return outData
19341 }
19342
19343 CipherBase.prototype._toString = function (value, enc, fin) {
19344 if (!this._decoder) {
19345 this._decoder = new StringDecoder(enc)
19346 this._encoding = enc
19347 }
19348
19349 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
19350
19351 var out = this._decoder.write(value)
19352 if (fin) {
19353 out += this._decoder.end()
19354 }
19355
19356 return out
19357 }
19358
19359 module.exports = CipherBase
19360
19361 },{"inherits":93,"safe-buffer":98,"stream":27,"string_decoder":28}],82:[function(require,module,exports){
19362 (function (Buffer){
19363 'use strict'
19364 var inherits = require('inherits')
19365 var md5 = require('./md5')
19366 var RIPEMD160 = require('ripemd160')
19367 var sha = require('sha.js')
19368
19369 var Base = require('cipher-base')
19370
19371 function HashNoConstructor (hash) {
19372 Base.call(this, 'digest')
19373
19374 this._hash = hash
19375 this.buffers = []
19376 }
19377
19378 inherits(HashNoConstructor, Base)
19379
19380 HashNoConstructor.prototype._update = function (data) {
19381 this.buffers.push(data)
19382 }
19383
19384 HashNoConstructor.prototype._final = function () {
19385 var buf = Buffer.concat(this.buffers)
19386 var r = this._hash(buf)
19387 this.buffers = null
19388
19389 return r
19390 }
19391
19392 function Hash (hash) {
19393 Base.call(this, 'digest')
19394
19395 this._hash = hash
19396 }
19397
19398 inherits(Hash, Base)
19399
19400 Hash.prototype._update = function (data) {
19401 this._hash.update(data)
19402 }
19403
19404 Hash.prototype._final = function () {
19405 return this._hash.digest()
19406 }
19407
19408 module.exports = function createHash (alg) {
19409 alg = alg.toLowerCase()
19410 if (alg === 'md5') return new HashNoConstructor(md5)
19411 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
19412
19413 return new Hash(sha(alg))
19414 }
19415
19416 }).call(this,require("buffer").Buffer)
19417 },{"./md5":84,"buffer":4,"cipher-base":81,"inherits":93,"ripemd160":97,"sha.js":100}],83:[function(require,module,exports){
19418 (function (Buffer){
19419 'use strict'
19420 var intSize = 4
19421 var zeroBuffer = new Buffer(intSize)
19422 zeroBuffer.fill(0)
19423
19424 var charSize = 8
19425 var hashSize = 16
19426
19427 function toArray (buf) {
19428 if ((buf.length % intSize) !== 0) {
19429 var len = buf.length + (intSize - (buf.length % intSize))
19430 buf = Buffer.concat([buf, zeroBuffer], len)
19431 }
19432
19433 var arr = new Array(buf.length >>> 2)
19434 for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
19435 arr[j] = buf.readInt32LE(i)
19436 }
19437
19438 return arr
19439 }
19440
19441 module.exports = function hash (buf, fn) {
19442 var arr = fn(toArray(buf), buf.length * charSize)
19443 buf = new Buffer(hashSize)
19444 for (var i = 0; i < arr.length; i++) {
19445 buf.writeInt32LE(arr[i], i << 2, true)
19446 }
19447 return buf
19448 }
19449
19450 }).call(this,require("buffer").Buffer)
19451 },{"buffer":4}],84:[function(require,module,exports){
19452 'use strict'
19453 /*
19454 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
19455 * Digest Algorithm, as defined in RFC 1321.
19456 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
19457 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
19458 * Distributed under the BSD License
19459 * See http://pajhome.org.uk/crypt/md5 for more info.
19460 */
19461
19462 var makeHash = require('./make-hash')
19463
19464 /*
19465 * Calculate the MD5 of an array of little-endian words, and a bit length
19466 */
19467 function core_md5 (x, len) {
19468 /* append padding */
19469 x[len >> 5] |= 0x80 << ((len) % 32)
19470 x[(((len + 64) >>> 9) << 4) + 14] = len
19471
19472 var a = 1732584193
19473 var b = -271733879
19474 var c = -1732584194
19475 var d = 271733878
19476
19477 for (var i = 0; i < x.length; i += 16) {
19478 var olda = a
19479 var oldb = b
19480 var oldc = c
19481 var oldd = d
19482
19483 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
19484 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
19485 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
19486 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
19487 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
19488 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
19489 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
19490 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
19491 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
19492 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
19493 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
19494 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
19495 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
19496 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
19497 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
19498 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
19499
19500 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
19501 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
19502 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
19503 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
19504 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
19505 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
19506 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
19507 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
19508 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
19509 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
19510 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
19511 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
19512 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
19513 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
19514 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
19515 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
19516
19517 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
19518 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
19519 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
19520 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
19521 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
19522 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
19523 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
19524 b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
19525 a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
19526 d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
19527 c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
19528 b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
19529 a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
19530 d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
19531 c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
19532 b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
19533
19534 a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
19535 d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
19536 c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
19537 b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
19538 a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
19539 d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
19540 c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
19541 b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
19542 a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
19543 d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
19544 c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
19545 b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
19546 a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
19547 d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
19548 c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
19549 b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
19550
19551 a = safe_add(a, olda)
19552 b = safe_add(b, oldb)
19553 c = safe_add(c, oldc)
19554 d = safe_add(d, oldd)
19555 }
19556
19557 return [a, b, c, d]
19558 }
19559
19560 /*
19561 * These functions implement the four basic operations the algorithm uses.
19562 */
19563 function md5_cmn (q, a, b, x, s, t) {
19564 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
19565 }
19566
19567 function md5_ff (a, b, c, d, x, s, t) {
19568 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
19569 }
19570
19571 function md5_gg (a, b, c, d, x, s, t) {
19572 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
19573 }
19574
19575 function md5_hh (a, b, c, d, x, s, t) {
19576 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
19577 }
19578
19579 function md5_ii (a, b, c, d, x, s, t) {
19580 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
19581 }
19582
19583 /*
19584 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
19585 * to work around bugs in some JS interpreters.
19586 */
19587 function safe_add (x, y) {
19588 var lsw = (x & 0xFFFF) + (y & 0xFFFF)
19589 var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
19590 return (msw << 16) | (lsw & 0xFFFF)
19591 }
19592
19593 /*
19594 * Bitwise rotate a 32-bit number to the left.
19595 */
19596 function bit_rol (num, cnt) {
19597 return (num << cnt) | (num >>> (32 - cnt))
19598 }
19599
19600 module.exports = function md5 (buf) {
19601 return makeHash(buf, core_md5)
19602 }
19603
19604 },{"./make-hash":83}],85:[function(require,module,exports){
19605 'use strict'
19606 var inherits = require('inherits')
19607 var Legacy = require('./legacy')
19608 var Base = require('cipher-base')
19609 var Buffer = require('safe-buffer').Buffer
19610 var md5 = require('create-hash/md5')
19611 var RIPEMD160 = require('ripemd160')
19612
19613 var sha = require('sha.js')
19614
19615 var ZEROS = Buffer.alloc(128)
19616
19617 function Hmac (alg, key) {
19618 Base.call(this, 'digest')
19619 if (typeof key === 'string') {
19620 key = Buffer.from(key)
19621 }
19622
19623 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
19624
19625 this._alg = alg
19626 this._key = key
19627 if (key.length > blocksize) {
19628 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19629 key = hash.update(key).digest()
19630 } else if (key.length < blocksize) {
19631 key = Buffer.concat([key, ZEROS], blocksize)
19632 }
19633
19634 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19635 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19636
19637 for (var i = 0; i < blocksize; i++) {
19638 ipad[i] = key[i] ^ 0x36
19639 opad[i] = key[i] ^ 0x5C
19640 }
19641 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19642 this._hash.update(ipad)
19643 }
19644
19645 inherits(Hmac, Base)
19646
19647 Hmac.prototype._update = function (data) {
19648 this._hash.update(data)
19649 }
19650
19651 Hmac.prototype._final = function () {
19652 var h = this._hash.digest()
19653 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
19654 return hash.update(this._opad).update(h).digest()
19655 }
19656
19657 module.exports = function createHmac (alg, key) {
19658 alg = alg.toLowerCase()
19659 if (alg === 'rmd160' || alg === 'ripemd160') {
19660 return new Hmac('rmd160', key)
19661 }
19662 if (alg === 'md5') {
19663 return new Legacy(md5, key)
19664 }
19665 return new Hmac(alg, key)
19666 }
19667
19668 },{"./legacy":86,"cipher-base":81,"create-hash/md5":84,"inherits":93,"ripemd160":97,"safe-buffer":98,"sha.js":100}],86:[function(require,module,exports){
19669 'use strict'
19670 var inherits = require('inherits')
19671 var Buffer = require('safe-buffer').Buffer
19672
19673 var Base = require('cipher-base')
19674
19675 var ZEROS = Buffer.alloc(128)
19676 var blocksize = 64
19677
19678 function Hmac (alg, key) {
19679 Base.call(this, 'digest')
19680 if (typeof key === 'string') {
19681 key = Buffer.from(key)
19682 }
19683
19684 this._alg = alg
19685 this._key = key
19686
19687 if (key.length > blocksize) {
19688 key = alg(key)
19689 } else if (key.length < blocksize) {
19690 key = Buffer.concat([key, ZEROS], blocksize)
19691 }
19692
19693 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19694 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19695
19696 for (var i = 0; i < blocksize; i++) {
19697 ipad[i] = key[i] ^ 0x36
19698 opad[i] = key[i] ^ 0x5C
19699 }
19700
19701 this._hash = [ipad]
19702 }
19703
19704 inherits(Hmac, Base)
19705
19706 Hmac.prototype._update = function (data) {
19707 this._hash.push(data)
19708 }
19709
19710 Hmac.prototype._final = function () {
19711 var h = this._alg(Buffer.concat(this._hash))
19712 return this._alg(Buffer.concat([this._opad, h]))
19713 }
19714 module.exports = Hmac
19715
19716 },{"cipher-base":81,"inherits":93,"safe-buffer":98}],87:[function(require,module,exports){
19717 var assert = require('assert')
19718 var BigInteger = require('bigi')
19719
19720 var Point = require('./point')
19721
19722 function Curve (p, a, b, Gx, Gy, n, h) {
19723 this.p = p
19724 this.a = a
19725 this.b = b
19726 this.G = Point.fromAffine(this, Gx, Gy)
19727 this.n = n
19728 this.h = h
19729
19730 this.infinity = new Point(this, null, null, BigInteger.ZERO)
19731
19732 // result caching
19733 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
19734
19735 // determine size of p in bytes
19736 this.pLength = Math.floor((this.p.bitLength() + 7) / 8)
19737 }
19738
19739 Curve.prototype.pointFromX = function (isOdd, x) {
19740 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
19741 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
19742
19743 var y = beta
19744 if (beta.isEven() ^ !isOdd) {
19745 y = this.p.subtract(y) // -y % p
19746 }
19747
19748 return Point.fromAffine(this, x, y)
19749 }
19750
19751 Curve.prototype.isInfinity = function (Q) {
19752 if (Q === this.infinity) return true
19753
19754 return Q.z.signum() === 0 && Q.y.signum() !== 0
19755 }
19756
19757 Curve.prototype.isOnCurve = function (Q) {
19758 if (this.isInfinity(Q)) return true
19759
19760 var x = Q.affineX
19761 var y = Q.affineY
19762 var a = this.a
19763 var b = this.b
19764 var p = this.p
19765
19766 // Check that xQ and yQ are integers in the interval [0, p - 1]
19767 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
19768 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
19769
19770 // and check that y^2 = x^3 + ax + b (mod p)
19771 var lhs = y.square().mod(p)
19772 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
19773 return lhs.equals(rhs)
19774 }
19775
19776 /**
19777 * Validate an elliptic curve point.
19778 *
19779 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
19780 */
19781 Curve.prototype.validate = function (Q) {
19782 // Check Q != O
19783 assert(!this.isInfinity(Q), 'Point is at infinity')
19784 assert(this.isOnCurve(Q), 'Point is not on the curve')
19785
19786 // Check nQ = O (where Q is a scalar multiple of G)
19787 var nQ = Q.multiply(this.n)
19788 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
19789
19790 return true
19791 }
19792
19793 module.exports = Curve
19794
19795 },{"./point":91,"assert":1,"bigi":37}],88:[function(require,module,exports){
19796 module.exports={
19797 "secp128r1": {
19798 "p": "fffffffdffffffffffffffffffffffff",
19799 "a": "fffffffdfffffffffffffffffffffffc",
19800 "b": "e87579c11079f43dd824993c2cee5ed3",
19801 "n": "fffffffe0000000075a30d1b9038a115",
19802 "h": "01",
19803 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
19804 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
19805 },
19806 "secp160k1": {
19807 "p": "fffffffffffffffffffffffffffffffeffffac73",
19808 "a": "00",
19809 "b": "07",
19810 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
19811 "h": "01",
19812 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
19813 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
19814 },
19815 "secp160r1": {
19816 "p": "ffffffffffffffffffffffffffffffff7fffffff",
19817 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
19818 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
19819 "n": "0100000000000000000001f4c8f927aed3ca752257",
19820 "h": "01",
19821 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
19822 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
19823 },
19824 "secp192k1": {
19825 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
19826 "a": "00",
19827 "b": "03",
19828 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
19829 "h": "01",
19830 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
19831 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
19832 },
19833 "secp192r1": {
19834 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
19835 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
19836 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
19837 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
19838 "h": "01",
19839 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
19840 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
19841 },
19842 "secp256k1": {
19843 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
19844 "a": "00",
19845 "b": "07",
19846 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
19847 "h": "01",
19848 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
19849 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
19850 },
19851 "secp256r1": {
19852 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
19853 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
19854 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
19855 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
19856 "h": "01",
19857 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
19858 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
19859 }
19860 }
19861
19862 },{}],89:[function(require,module,exports){
19863 var Point = require('./point')
19864 var Curve = require('./curve')
19865
19866 var getCurveByName = require('./names')
19867
19868 module.exports = {
19869 Curve: Curve,
19870 Point: Point,
19871 getCurveByName: getCurveByName
19872 }
19873
19874 },{"./curve":87,"./names":90,"./point":91}],90:[function(require,module,exports){
19875 var BigInteger = require('bigi')
19876
19877 var curves = require('./curves.json')
19878 var Curve = require('./curve')
19879
19880 function getCurveByName (name) {
19881 var curve = curves[name]
19882 if (!curve) return null
19883
19884 var p = new BigInteger(curve.p, 16)
19885 var a = new BigInteger(curve.a, 16)
19886 var b = new BigInteger(curve.b, 16)
19887 var n = new BigInteger(curve.n, 16)
19888 var h = new BigInteger(curve.h, 16)
19889 var Gx = new BigInteger(curve.Gx, 16)
19890 var Gy = new BigInteger(curve.Gy, 16)
19891
19892 return new Curve(p, a, b, Gx, Gy, n, h)
19893 }
19894
19895 module.exports = getCurveByName
19896
19897 },{"./curve":87,"./curves.json":88,"bigi":37}],91:[function(require,module,exports){
19898 (function (Buffer){
19899 var assert = require('assert')
19900 var BigInteger = require('bigi')
19901
19902 var THREE = BigInteger.valueOf(3)
19903
19904 function Point (curve, x, y, z) {
19905 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
19906
19907 this.curve = curve
19908 this.x = x
19909 this.y = y
19910 this.z = z
19911 this._zInv = null
19912
19913 this.compressed = true
19914 }
19915
19916 Object.defineProperty(Point.prototype, 'zInv', {
19917 get: function () {
19918 if (this._zInv === null) {
19919 this._zInv = this.z.modInverse(this.curve.p)
19920 }
19921
19922 return this._zInv
19923 }
19924 })
19925
19926 Object.defineProperty(Point.prototype, 'affineX', {
19927 get: function () {
19928 return this.x.multiply(this.zInv).mod(this.curve.p)
19929 }
19930 })
19931
19932 Object.defineProperty(Point.prototype, 'affineY', {
19933 get: function () {
19934 return this.y.multiply(this.zInv).mod(this.curve.p)
19935 }
19936 })
19937
19938 Point.fromAffine = function (curve, x, y) {
19939 return new Point(curve, x, y, BigInteger.ONE)
19940 }
19941
19942 Point.prototype.equals = function (other) {
19943 if (other === this) return true
19944 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
19945 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
19946
19947 // u = Y2 * Z1 - Y1 * Z2
19948 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
19949
19950 if (u.signum() !== 0) return false
19951
19952 // v = X2 * Z1 - X1 * Z2
19953 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
19954
19955 return v.signum() === 0
19956 }
19957
19958 Point.prototype.negate = function () {
19959 var y = this.curve.p.subtract(this.y)
19960
19961 return new Point(this.curve, this.x, y, this.z)
19962 }
19963
19964 Point.prototype.add = function (b) {
19965 if (this.curve.isInfinity(this)) return b
19966 if (this.curve.isInfinity(b)) return this
19967
19968 var x1 = this.x
19969 var y1 = this.y
19970 var x2 = b.x
19971 var y2 = b.y
19972
19973 // u = Y2 * Z1 - Y1 * Z2
19974 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
19975 // v = X2 * Z1 - X1 * Z2
19976 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
19977
19978 if (v.signum() === 0) {
19979 if (u.signum() === 0) {
19980 return this.twice() // this == b, so double
19981 }
19982
19983 return this.curve.infinity // this = -b, so infinity
19984 }
19985
19986 var v2 = v.square()
19987 var v3 = v2.multiply(v)
19988 var x1v2 = x1.multiply(v2)
19989 var zu2 = u.square().multiply(this.z)
19990
19991 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
19992 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
19993 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
19994 var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)
19995 // z3 = v^3 * z1 * z2
19996 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
19997
19998 return new Point(this.curve, x3, y3, z3)
19999 }
20000
20001 Point.prototype.twice = function () {
20002 if (this.curve.isInfinity(this)) return this
20003 if (this.y.signum() === 0) return this.curve.infinity
20004
20005 var x1 = this.x
20006 var y1 = this.y
20007
20008 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
20009 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
20010 var a = this.curve.a
20011
20012 // w = 3 * x1^2 + a * z1^2
20013 var w = x1.square().multiply(THREE)
20014
20015 if (a.signum() !== 0) {
20016 w = w.add(this.z.square().multiply(a))
20017 }
20018
20019 w = w.mod(this.curve.p)
20020 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
20021 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
20022 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
20023 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
20024 // z3 = 8 * (y1 * z1)^3
20025 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
20026
20027 return new Point(this.curve, x3, y3, z3)
20028 }
20029
20030 // Simple NAF (Non-Adjacent Form) multiplication algorithm
20031 // TODO: modularize the multiplication algorithm
20032 Point.prototype.multiply = function (k) {
20033 if (this.curve.isInfinity(this)) return this
20034 if (k.signum() === 0) return this.curve.infinity
20035
20036 var e = k
20037 var h = e.multiply(THREE)
20038
20039 var neg = this.negate()
20040 var R = this
20041
20042 for (var i = h.bitLength() - 2; i > 0; --i) {
20043 var hBit = h.testBit(i)
20044 var eBit = e.testBit(i)
20045
20046 R = R.twice()
20047
20048 if (hBit !== eBit) {
20049 R = R.add(hBit ? this : neg)
20050 }
20051 }
20052
20053 return R
20054 }
20055
20056 // Compute this*j + x*k (simultaneous multiplication)
20057 Point.prototype.multiplyTwo = function (j, x, k) {
20058 var i = Math.max(j.bitLength(), k.bitLength()) - 1
20059 var R = this.curve.infinity
20060 var both = this.add(x)
20061
20062 while (i >= 0) {
20063 var jBit = j.testBit(i)
20064 var kBit = k.testBit(i)
20065
20066 R = R.twice()
20067
20068 if (jBit) {
20069 if (kBit) {
20070 R = R.add(both)
20071 } else {
20072 R = R.add(this)
20073 }
20074 } else if (kBit) {
20075 R = R.add(x)
20076 }
20077 --i
20078 }
20079
20080 return R
20081 }
20082
20083 Point.prototype.getEncoded = function (compressed) {
20084 if (compressed == null) compressed = this.compressed
20085 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
20086
20087 var x = this.affineX
20088 var y = this.affineY
20089 var byteLength = this.curve.pLength
20090 var buffer
20091
20092 // 0x02/0x03 | X
20093 if (compressed) {
20094 buffer = new Buffer(1 + byteLength)
20095 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
20096
20097 // 0x04 | X | Y
20098 } else {
20099 buffer = new Buffer(1 + byteLength + byteLength)
20100 buffer.writeUInt8(0x04, 0)
20101
20102 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
20103 }
20104
20105 x.toBuffer(byteLength).copy(buffer, 1)
20106
20107 return buffer
20108 }
20109
20110 Point.decodeFrom = function (curve, buffer) {
20111 var type = buffer.readUInt8(0)
20112 var compressed = (type !== 4)
20113
20114 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
20115 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
20116
20117 var Q
20118 if (compressed) {
20119 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
20120 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
20121
20122 var isOdd = (type === 0x03)
20123 Q = curve.pointFromX(isOdd, x)
20124 } else {
20125 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
20126
20127 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
20128 Q = Point.fromAffine(curve, x, y)
20129 }
20130
20131 Q.compressed = compressed
20132 return Q
20133 }
20134
20135 Point.prototype.toString = function () {
20136 if (this.curve.isInfinity(this)) return '(INFINITY)'
20137
20138 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
20139 }
20140
20141 module.exports = Point
20142
20143 }).call(this,require("buffer").Buffer)
20144 },{"assert":1,"bigi":37,"buffer":4}],92:[function(require,module,exports){
20145 (function (Buffer){
20146 'use strict'
20147 var Transform = require('stream').Transform
20148 var inherits = require('inherits')
20149
20150 function HashBase (blockSize) {
20151 Transform.call(this)
20152
20153 this._block = new Buffer(blockSize)
20154 this._blockSize = blockSize
20155 this._blockOffset = 0
20156 this._length = [0, 0, 0, 0]
20157
20158 this._finalized = false
20159 }
20160
20161 inherits(HashBase, Transform)
20162
20163 HashBase.prototype._transform = function (chunk, encoding, callback) {
20164 var error = null
20165 try {
20166 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
20167 this.update(chunk)
20168 } catch (err) {
20169 error = err
20170 }
20171
20172 callback(error)
20173 }
20174
20175 HashBase.prototype._flush = function (callback) {
20176 var error = null
20177 try {
20178 this.push(this._digest())
20179 } catch (err) {
20180 error = err
20181 }
20182
20183 callback(error)
20184 }
20185
20186 HashBase.prototype.update = function (data, encoding) {
20187 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
20188 if (this._finalized) throw new Error('Digest already called')
20189 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
20190
20191 // consume data
20192 var block = this._block
20193 var offset = 0
20194 while (this._blockOffset + data.length - offset >= this._blockSize) {
20195 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
20196 this._update()
20197 this._blockOffset = 0
20198 }
20199 while (offset < data.length) block[this._blockOffset++] = data[offset++]
20200
20201 // update length
20202 for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
20203 this._length[j] += carry
20204 carry = (this._length[j] / 0x0100000000) | 0
20205 if (carry > 0) this._length[j] -= 0x0100000000 * carry
20206 }
20207
20208 return this
20209 }
20210
20211 HashBase.prototype._update = function (data) {
20212 throw new Error('_update is not implemented')
20213 }
20214
20215 HashBase.prototype.digest = function (encoding) {
20216 if (this._finalized) throw new Error('Digest already called')
20217 this._finalized = true
20218
20219 var digest = this._digest()
20220 if (encoding !== undefined) digest = digest.toString(encoding)
20221 return digest
20222 }
20223
20224 HashBase.prototype._digest = function () {
20225 throw new Error('_digest is not implemented')
20226 }
20227
20228 module.exports = HashBase
20229
20230 }).call(this,require("buffer").Buffer)
20231 },{"buffer":4,"inherits":93,"stream":27}],93:[function(require,module,exports){
20232 arguments[4][8][0].apply(exports,arguments)
20233 },{"dup":8}],94:[function(require,module,exports){
20234 (function (Buffer){
20235 // constant-space merkle root calculation algorithm
20236 module.exports = function fastRoot (values, digestFn) {
20237 if (!Array.isArray(values)) throw TypeError('Expected values Array')
20238 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
20239
20240 var length = values.length
20241 var results = values.concat()
20242
20243 while (length > 1) {
20244 var j = 0
20245
20246 for (var i = 0; i < length; i += 2, ++j) {
20247 var left = results[i]
20248 var right = i + 1 === length ? left : results[i + 1]
20249 var data = Buffer.concat([left, right])
20250
20251 results[j] = digestFn(data)
20252 }
20253
20254 length = j
20255 }
20256
20257 return results[0]
20258 }
20259
20260 }).call(this,require("buffer").Buffer)
20261 },{"buffer":4}],95:[function(require,module,exports){
20262 var OPS = require('bitcoin-ops')
20263
20264 function encodingLength (i) {
20265 return i < OPS.OP_PUSHDATA1 ? 1
20266 : i <= 0xff ? 2
20267 : i <= 0xffff ? 3
20268 : 5
20269 }
20270
20271 function encode (buffer, number, offset) {
20272 var size = encodingLength(number)
20273
20274 // ~6 bit
20275 if (size === 1) {
20276 buffer.writeUInt8(number, offset)
20277
20278 // 8 bit
20279 } else if (size === 2) {
20280 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
20281 buffer.writeUInt8(number, offset + 1)
20282
20283 // 16 bit
20284 } else if (size === 3) {
20285 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
20286 buffer.writeUInt16LE(number, offset + 1)
20287
20288 // 32 bit
20289 } else {
20290 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
20291 buffer.writeUInt32LE(number, offset + 1)
20292 }
20293
20294 return size
20295 }
20296
20297 function decode (buffer, offset) {
20298 var opcode = buffer.readUInt8(offset)
20299 var number, size
20300
20301 // ~6 bit
20302 if (opcode < OPS.OP_PUSHDATA1) {
20303 number = opcode
20304 size = 1
20305
20306 // 8 bit
20307 } else if (opcode === OPS.OP_PUSHDATA1) {
20308 if (offset + 2 > buffer.length) return null
20309 number = buffer.readUInt8(offset + 1)
20310 size = 2
20311
20312 // 16 bit
20313 } else if (opcode === OPS.OP_PUSHDATA2) {
20314 if (offset + 3 > buffer.length) return null
20315 number = buffer.readUInt16LE(offset + 1)
20316 size = 3
20317
20318 // 32 bit
20319 } else {
20320 if (offset + 5 > buffer.length) return null
20321 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
20322
20323 number = buffer.readUInt32LE(offset + 1)
20324 size = 5
20325 }
20326
20327 return {
20328 opcode: opcode,
20329 number: number,
20330 size: size
20331 }
20332 }
20333
20334 module.exports = {
20335 encodingLength: encodingLength,
20336 encode: encode,
20337 decode: decode
20338 }
20339
20340 },{"bitcoin-ops":40}],96:[function(require,module,exports){
20341 (function (process,global){
20342 'use strict'
20343
20344 function oldBrowser () {
20345 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
20346 }
20347
20348 var Buffer = require('safe-buffer').Buffer
20349 var crypto = global.crypto || global.msCrypto
20350
20351 if (crypto && crypto.getRandomValues) {
20352 module.exports = randomBytes
20353 } else {
20354 module.exports = oldBrowser
20355 }
20356
20357 function randomBytes (size, cb) {
20358 // phantomjs needs to throw
20359 if (size > 65536) throw new Error('requested too many random bytes')
20360 // in case browserify isn't using the Uint8Array version
20361 var rawBytes = new global.Uint8Array(size)
20362
20363 // This will not work in older browsers.
20364 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
20365 if (size > 0) { // getRandomValues fails on IE if size == 0
20366 crypto.getRandomValues(rawBytes)
20367 }
20368
20369 // XXX: phantomjs doesn't like a buffer being passed here
20370 var bytes = Buffer.from(rawBytes.buffer)
20371
20372 if (typeof cb === 'function') {
20373 return process.nextTick(function () {
20374 cb(null, bytes)
20375 })
20376 }
20377
20378 return bytes
20379 }
20380
20381 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20382 },{"_process":12,"safe-buffer":98}],97:[function(require,module,exports){
20383 (function (Buffer){
20384 'use strict'
20385 var inherits = require('inherits')
20386 var HashBase = require('hash-base')
20387
20388 function RIPEMD160 () {
20389 HashBase.call(this, 64)
20390
20391 // state
20392 this._a = 0x67452301
20393 this._b = 0xefcdab89
20394 this._c = 0x98badcfe
20395 this._d = 0x10325476
20396 this._e = 0xc3d2e1f0
20397 }
20398
20399 inherits(RIPEMD160, HashBase)
20400
20401 RIPEMD160.prototype._update = function () {
20402 var m = new Array(16)
20403 for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
20404
20405 var al = this._a
20406 var bl = this._b
20407 var cl = this._c
20408 var dl = this._d
20409 var el = this._e
20410
20411 // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
20412 // K = 0x00000000
20413 // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
20414 al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
20415 el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
20416 dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
20417 cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
20418 bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
20419 al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
20420 el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
20421 dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
20422 cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
20423 bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
20424 al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
20425 el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
20426 dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
20427 cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
20428 bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
20429 al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
20430
20431 // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
20432 // K = 0x5a827999
20433 // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
20434 el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
20435 dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
20436 cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
20437 bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
20438 al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
20439 el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
20440 dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
20441 cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
20442 bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
20443 al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
20444 el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
20445 dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
20446 cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
20447 bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
20448 al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
20449 el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
20450
20451 // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
20452 // K = 0x6ed9eba1
20453 // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
20454 dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
20455 cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
20456 bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
20457 al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
20458 el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
20459 dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
20460 cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
20461 bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
20462 al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
20463 el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
20464 dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
20465 cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
20466 bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
20467 al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
20468 el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
20469 dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
20470
20471 // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
20472 // K = 0x8f1bbcdc
20473 // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
20474 cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
20475 bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
20476 al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
20477 el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
20478 dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
20479 cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
20480 bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
20481 al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20482 el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
20483 dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
20484 cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
20485 bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
20486 al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20487 el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
20488 dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
20489 cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
20490
20491 // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
20492 // K = 0xa953fd4e
20493 // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
20494 bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
20495 al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
20496 el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
20497 dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
20498 cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
20499 bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
20500 al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
20501 el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
20502 dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
20503 cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
20504 bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
20505 al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
20506 el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
20507 dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
20508 cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
20509 bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
20510
20511 var ar = this._a
20512 var br = this._b
20513 var cr = this._c
20514 var dr = this._d
20515 var er = this._e
20516
20517 // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
20518 // K' = 0x50a28be6
20519 // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
20520 ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
20521 er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
20522 dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
20523 cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
20524 br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
20525 ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
20526 er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
20527 dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
20528 cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
20529 br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
20530 ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
20531 er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
20532 dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
20533 cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
20534 br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
20535 ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
20536
20537 // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
20538 // K' = 0x5c4dd124
20539 // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
20540 er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
20541 dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
20542 cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
20543 br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
20544 ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
20545 er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
20546 dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
20547 cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
20548 br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
20549 ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
20550 er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
20551 dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
20552 cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
20553 br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
20554 ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
20555 er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
20556
20557 // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
20558 // K' = 0x6d703ef3
20559 // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
20560 dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
20561 cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
20562 br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
20563 ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
20564 er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
20565 dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
20566 cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
20567 br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
20568 ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
20569 er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
20570 dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
20571 cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
20572 br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
20573 ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
20574 er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
20575 dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
20576
20577 // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
20578 // K' = 0x7a6d76e9
20579 // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
20580 cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
20581 br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
20582 ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
20583 er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
20584 dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
20585 cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
20586 br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
20587 ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
20588 er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
20589 dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
20590 cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
20591 br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
20592 ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
20593 er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
20594 dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
20595 cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
20596
20597 // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
20598 // K' = 0x00000000
20599 // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
20600 br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
20601 ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
20602 er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
20603 dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
20604 cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
20605 br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
20606 ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
20607 er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
20608 dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
20609 cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
20610 br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
20611 ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
20612 er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
20613 dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
20614 cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
20615 br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
20616
20617 // change state
20618 var t = (this._b + cl + dr) | 0
20619 this._b = (this._c + dl + er) | 0
20620 this._c = (this._d + el + ar) | 0
20621 this._d = (this._e + al + br) | 0
20622 this._e = (this._a + bl + cr) | 0
20623 this._a = t
20624 }
20625
20626 RIPEMD160.prototype._digest = function () {
20627 // create padding and handle blocks
20628 this._block[this._blockOffset++] = 0x80
20629 if (this._blockOffset > 56) {
20630 this._block.fill(0, this._blockOffset, 64)
20631 this._update()
20632 this._blockOffset = 0
20633 }
20634
20635 this._block.fill(0, this._blockOffset, 56)
20636 this._block.writeUInt32LE(this._length[0], 56)
20637 this._block.writeUInt32LE(this._length[1], 60)
20638 this._update()
20639
20640 // produce result
20641 var buffer = new Buffer(20)
20642 buffer.writeInt32LE(this._a, 0)
20643 buffer.writeInt32LE(this._b, 4)
20644 buffer.writeInt32LE(this._c, 8)
20645 buffer.writeInt32LE(this._d, 12)
20646 buffer.writeInt32LE(this._e, 16)
20647 return buffer
20648 }
20649
20650 function rotl (x, n) {
20651 return (x << n) | (x >>> (32 - n))
20652 }
20653
20654 function fn1 (a, b, c, d, e, m, k, s) {
20655 return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
20656 }
20657
20658 function fn2 (a, b, c, d, e, m, k, s) {
20659 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
20660 }
20661
20662 function fn3 (a, b, c, d, e, m, k, s) {
20663 return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
20664 }
20665
20666 function fn4 (a, b, c, d, e, m, k, s) {
20667 return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
20668 }
20669
20670 function fn5 (a, b, c, d, e, m, k, s) {
20671 return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
20672 }
20673
20674 module.exports = RIPEMD160
20675
20676 }).call(this,require("buffer").Buffer)
20677 },{"buffer":4,"hash-base":92,"inherits":93}],98:[function(require,module,exports){
20678 arguments[4][26][0].apply(exports,arguments)
20679 },{"buffer":4,"dup":26}],99:[function(require,module,exports){
20680 (function (Buffer){
20681 // prototype class for hash functions
20682 function Hash (blockSize, finalSize) {
20683 this._block = new Buffer(blockSize)
20684 this._finalSize = finalSize
20685 this._blockSize = blockSize
20686 this._len = 0
20687 this._s = 0
20688 }
20689
20690 Hash.prototype.update = function (data, enc) {
20691 if (typeof data === 'string') {
20692 enc = enc || 'utf8'
20693 data = new Buffer(data, enc)
20694 }
20695
20696 var l = this._len += data.length
20697 var s = this._s || 0
20698 var f = 0
20699 var buffer = this._block
20700
20701 while (s < l) {
20702 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
20703 var ch = (t - f)
20704
20705 for (var i = 0; i < ch; i++) {
20706 buffer[(s % this._blockSize) + i] = data[i + f]
20707 }
20708
20709 s += ch
20710 f += ch
20711
20712 if ((s % this._blockSize) === 0) {
20713 this._update(buffer)
20714 }
20715 }
20716 this._s = s
20717
20718 return this
20719 }
20720
20721 Hash.prototype.digest = function (enc) {
20722 // Suppose the length of the message M, in bits, is l
20723 var l = this._len * 8
20724
20725 // Append the bit 1 to the end of the message
20726 this._block[this._len % this._blockSize] = 0x80
20727
20728 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
20729 this._block.fill(0, this._len % this._blockSize + 1)
20730
20731 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
20732 this._update(this._block)
20733 this._block.fill(0)
20734 }
20735
20736 // to this append the block which is equal to the number l written in binary
20737 // TODO: handle case where l is > Math.pow(2, 29)
20738 this._block.writeInt32BE(l, this._blockSize - 4)
20739
20740 var hash = this._update(this._block) || this._hash()
20741
20742 return enc ? hash.toString(enc) : hash
20743 }
20744
20745 Hash.prototype._update = function () {
20746 throw new Error('_update must be implemented by subclass')
20747 }
20748
20749 module.exports = Hash
20750
20751 }).call(this,require("buffer").Buffer)
20752 },{"buffer":4}],100:[function(require,module,exports){
20753 var exports = module.exports = function SHA (algorithm) {
20754 algorithm = algorithm.toLowerCase()
20755
20756 var Algorithm = exports[algorithm]
20757 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
20758
20759 return new Algorithm()
20760 }
20761
20762 exports.sha = require('./sha')
20763 exports.sha1 = require('./sha1')
20764 exports.sha224 = require('./sha224')
20765 exports.sha256 = require('./sha256')
20766 exports.sha384 = require('./sha384')
20767 exports.sha512 = require('./sha512')
20768
20769 },{"./sha":101,"./sha1":102,"./sha224":103,"./sha256":104,"./sha384":105,"./sha512":106}],101:[function(require,module,exports){
20770 (function (Buffer){
20771 /*
20772 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
20773 * in FIPS PUB 180-1
20774 * This source code is derived from sha1.js of the same repository.
20775 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
20776 * operation was added.
20777 */
20778
20779 var inherits = require('inherits')
20780 var Hash = require('./hash')
20781
20782 var K = [
20783 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20784 ]
20785
20786 var W = new Array(80)
20787
20788 function Sha () {
20789 this.init()
20790 this._w = W
20791
20792 Hash.call(this, 64, 56)
20793 }
20794
20795 inherits(Sha, Hash)
20796
20797 Sha.prototype.init = function () {
20798 this._a = 0x67452301
20799 this._b = 0xefcdab89
20800 this._c = 0x98badcfe
20801 this._d = 0x10325476
20802 this._e = 0xc3d2e1f0
20803
20804 return this
20805 }
20806
20807 function rotl5 (num) {
20808 return (num << 5) | (num >>> 27)
20809 }
20810
20811 function rotl30 (num) {
20812 return (num << 30) | (num >>> 2)
20813 }
20814
20815 function ft (s, b, c, d) {
20816 if (s === 0) return (b & c) | ((~b) & d)
20817 if (s === 2) return (b & c) | (b & d) | (c & d)
20818 return b ^ c ^ d
20819 }
20820
20821 Sha.prototype._update = function (M) {
20822 var W = this._w
20823
20824 var a = this._a | 0
20825 var b = this._b | 0
20826 var c = this._c | 0
20827 var d = this._d | 0
20828 var e = this._e | 0
20829
20830 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20831 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
20832
20833 for (var j = 0; j < 80; ++j) {
20834 var s = ~~(j / 20)
20835 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20836
20837 e = d
20838 d = c
20839 c = rotl30(b)
20840 b = a
20841 a = t
20842 }
20843
20844 this._a = (a + this._a) | 0
20845 this._b = (b + this._b) | 0
20846 this._c = (c + this._c) | 0
20847 this._d = (d + this._d) | 0
20848 this._e = (e + this._e) | 0
20849 }
20850
20851 Sha.prototype._hash = function () {
20852 var H = new Buffer(20)
20853
20854 H.writeInt32BE(this._a | 0, 0)
20855 H.writeInt32BE(this._b | 0, 4)
20856 H.writeInt32BE(this._c | 0, 8)
20857 H.writeInt32BE(this._d | 0, 12)
20858 H.writeInt32BE(this._e | 0, 16)
20859
20860 return H
20861 }
20862
20863 module.exports = Sha
20864
20865 }).call(this,require("buffer").Buffer)
20866 },{"./hash":99,"buffer":4,"inherits":93}],102:[function(require,module,exports){
20867 (function (Buffer){
20868 /*
20869 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
20870 * in FIPS PUB 180-1
20871 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
20872 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20873 * Distributed under the BSD License
20874 * See http://pajhome.org.uk/crypt/md5 for details.
20875 */
20876
20877 var inherits = require('inherits')
20878 var Hash = require('./hash')
20879
20880 var K = [
20881 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20882 ]
20883
20884 var W = new Array(80)
20885
20886 function Sha1 () {
20887 this.init()
20888 this._w = W
20889
20890 Hash.call(this, 64, 56)
20891 }
20892
20893 inherits(Sha1, Hash)
20894
20895 Sha1.prototype.init = function () {
20896 this._a = 0x67452301
20897 this._b = 0xefcdab89
20898 this._c = 0x98badcfe
20899 this._d = 0x10325476
20900 this._e = 0xc3d2e1f0
20901
20902 return this
20903 }
20904
20905 function rotl1 (num) {
20906 return (num << 1) | (num >>> 31)
20907 }
20908
20909 function rotl5 (num) {
20910 return (num << 5) | (num >>> 27)
20911 }
20912
20913 function rotl30 (num) {
20914 return (num << 30) | (num >>> 2)
20915 }
20916
20917 function ft (s, b, c, d) {
20918 if (s === 0) return (b & c) | ((~b) & d)
20919 if (s === 2) return (b & c) | (b & d) | (c & d)
20920 return b ^ c ^ d
20921 }
20922
20923 Sha1.prototype._update = function (M) {
20924 var W = this._w
20925
20926 var a = this._a | 0
20927 var b = this._b | 0
20928 var c = this._c | 0
20929 var d = this._d | 0
20930 var e = this._e | 0
20931
20932 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20933 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
20934
20935 for (var j = 0; j < 80; ++j) {
20936 var s = ~~(j / 20)
20937 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20938
20939 e = d
20940 d = c
20941 c = rotl30(b)
20942 b = a
20943 a = t
20944 }
20945
20946 this._a = (a + this._a) | 0
20947 this._b = (b + this._b) | 0
20948 this._c = (c + this._c) | 0
20949 this._d = (d + this._d) | 0
20950 this._e = (e + this._e) | 0
20951 }
20952
20953 Sha1.prototype._hash = function () {
20954 var H = new Buffer(20)
20955
20956 H.writeInt32BE(this._a | 0, 0)
20957 H.writeInt32BE(this._b | 0, 4)
20958 H.writeInt32BE(this._c | 0, 8)
20959 H.writeInt32BE(this._d | 0, 12)
20960 H.writeInt32BE(this._e | 0, 16)
20961
20962 return H
20963 }
20964
20965 module.exports = Sha1
20966
20967 }).call(this,require("buffer").Buffer)
20968 },{"./hash":99,"buffer":4,"inherits":93}],103:[function(require,module,exports){
20969 (function (Buffer){
20970 /**
20971 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
20972 * in FIPS 180-2
20973 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
20974 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20975 *
20976 */
20977
20978 var inherits = require('inherits')
20979 var Sha256 = require('./sha256')
20980 var Hash = require('./hash')
20981
20982 var W = new Array(64)
20983
20984 function Sha224 () {
20985 this.init()
20986
20987 this._w = W // new Array(64)
20988
20989 Hash.call(this, 64, 56)
20990 }
20991
20992 inherits(Sha224, Sha256)
20993
20994 Sha224.prototype.init = function () {
20995 this._a = 0xc1059ed8
20996 this._b = 0x367cd507
20997 this._c = 0x3070dd17
20998 this._d = 0xf70e5939
20999 this._e = 0xffc00b31
21000 this._f = 0x68581511
21001 this._g = 0x64f98fa7
21002 this._h = 0xbefa4fa4
21003
21004 return this
21005 }
21006
21007 Sha224.prototype._hash = function () {
21008 var H = new Buffer(28)
21009
21010 H.writeInt32BE(this._a, 0)
21011 H.writeInt32BE(this._b, 4)
21012 H.writeInt32BE(this._c, 8)
21013 H.writeInt32BE(this._d, 12)
21014 H.writeInt32BE(this._e, 16)
21015 H.writeInt32BE(this._f, 20)
21016 H.writeInt32BE(this._g, 24)
21017
21018 return H
21019 }
21020
21021 module.exports = Sha224
21022
21023 }).call(this,require("buffer").Buffer)
21024 },{"./hash":99,"./sha256":104,"buffer":4,"inherits":93}],104:[function(require,module,exports){
21025 (function (Buffer){
21026 /**
21027 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21028 * in FIPS 180-2
21029 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21030 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21031 *
21032 */
21033
21034 var inherits = require('inherits')
21035 var Hash = require('./hash')
21036
21037 var K = [
21038 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
21039 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
21040 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
21041 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
21042 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
21043 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
21044 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
21045 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
21046 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
21047 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
21048 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
21049 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
21050 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
21051 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
21052 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
21053 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
21054 ]
21055
21056 var W = new Array(64)
21057
21058 function Sha256 () {
21059 this.init()
21060
21061 this._w = W // new Array(64)
21062
21063 Hash.call(this, 64, 56)
21064 }
21065
21066 inherits(Sha256, Hash)
21067
21068 Sha256.prototype.init = function () {
21069 this._a = 0x6a09e667
21070 this._b = 0xbb67ae85
21071 this._c = 0x3c6ef372
21072 this._d = 0xa54ff53a
21073 this._e = 0x510e527f
21074 this._f = 0x9b05688c
21075 this._g = 0x1f83d9ab
21076 this._h = 0x5be0cd19
21077
21078 return this
21079 }
21080
21081 function ch (x, y, z) {
21082 return z ^ (x & (y ^ z))
21083 }
21084
21085 function maj (x, y, z) {
21086 return (x & y) | (z & (x | y))
21087 }
21088
21089 function sigma0 (x) {
21090 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
21091 }
21092
21093 function sigma1 (x) {
21094 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
21095 }
21096
21097 function gamma0 (x) {
21098 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
21099 }
21100
21101 function gamma1 (x) {
21102 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
21103 }
21104
21105 Sha256.prototype._update = function (M) {
21106 var W = this._w
21107
21108 var a = this._a | 0
21109 var b = this._b | 0
21110 var c = this._c | 0
21111 var d = this._d | 0
21112 var e = this._e | 0
21113 var f = this._f | 0
21114 var g = this._g | 0
21115 var h = this._h | 0
21116
21117 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
21118 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
21119
21120 for (var j = 0; j < 64; ++j) {
21121 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
21122 var T2 = (sigma0(a) + maj(a, b, c)) | 0
21123
21124 h = g
21125 g = f
21126 f = e
21127 e = (d + T1) | 0
21128 d = c
21129 c = b
21130 b = a
21131 a = (T1 + T2) | 0
21132 }
21133
21134 this._a = (a + this._a) | 0
21135 this._b = (b + this._b) | 0
21136 this._c = (c + this._c) | 0
21137 this._d = (d + this._d) | 0
21138 this._e = (e + this._e) | 0
21139 this._f = (f + this._f) | 0
21140 this._g = (g + this._g) | 0
21141 this._h = (h + this._h) | 0
21142 }
21143
21144 Sha256.prototype._hash = function () {
21145 var H = new Buffer(32)
21146
21147 H.writeInt32BE(this._a, 0)
21148 H.writeInt32BE(this._b, 4)
21149 H.writeInt32BE(this._c, 8)
21150 H.writeInt32BE(this._d, 12)
21151 H.writeInt32BE(this._e, 16)
21152 H.writeInt32BE(this._f, 20)
21153 H.writeInt32BE(this._g, 24)
21154 H.writeInt32BE(this._h, 28)
21155
21156 return H
21157 }
21158
21159 module.exports = Sha256
21160
21161 }).call(this,require("buffer").Buffer)
21162 },{"./hash":99,"buffer":4,"inherits":93}],105:[function(require,module,exports){
21163 (function (Buffer){
21164 var inherits = require('inherits')
21165 var SHA512 = require('./sha512')
21166 var Hash = require('./hash')
21167
21168 var W = new Array(160)
21169
21170 function Sha384 () {
21171 this.init()
21172 this._w = W
21173
21174 Hash.call(this, 128, 112)
21175 }
21176
21177 inherits(Sha384, SHA512)
21178
21179 Sha384.prototype.init = function () {
21180 this._ah = 0xcbbb9d5d
21181 this._bh = 0x629a292a
21182 this._ch = 0x9159015a
21183 this._dh = 0x152fecd8
21184 this._eh = 0x67332667
21185 this._fh = 0x8eb44a87
21186 this._gh = 0xdb0c2e0d
21187 this._hh = 0x47b5481d
21188
21189 this._al = 0xc1059ed8
21190 this._bl = 0x367cd507
21191 this._cl = 0x3070dd17
21192 this._dl = 0xf70e5939
21193 this._el = 0xffc00b31
21194 this._fl = 0x68581511
21195 this._gl = 0x64f98fa7
21196 this._hl = 0xbefa4fa4
21197
21198 return this
21199 }
21200
21201 Sha384.prototype._hash = function () {
21202 var H = new Buffer(48)
21203
21204 function writeInt64BE (h, l, offset) {
21205 H.writeInt32BE(h, offset)
21206 H.writeInt32BE(l, offset + 4)
21207 }
21208
21209 writeInt64BE(this._ah, this._al, 0)
21210 writeInt64BE(this._bh, this._bl, 8)
21211 writeInt64BE(this._ch, this._cl, 16)
21212 writeInt64BE(this._dh, this._dl, 24)
21213 writeInt64BE(this._eh, this._el, 32)
21214 writeInt64BE(this._fh, this._fl, 40)
21215
21216 return H
21217 }
21218
21219 module.exports = Sha384
21220
21221 }).call(this,require("buffer").Buffer)
21222 },{"./hash":99,"./sha512":106,"buffer":4,"inherits":93}],106:[function(require,module,exports){
21223 (function (Buffer){
21224 var inherits = require('inherits')
21225 var Hash = require('./hash')
21226
21227 var K = [
21228 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
21229 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
21230 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
21231 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
21232 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
21233 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
21234 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
21235 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
21236 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
21237 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
21238 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
21239 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
21240 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
21241 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
21242 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
21243 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
21244 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
21245 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
21246 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
21247 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
21248 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
21249 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
21250 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
21251 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
21252 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
21253 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
21254 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
21255 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
21256 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
21257 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
21258 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
21259 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
21260 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
21261 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
21262 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
21263 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
21264 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
21265 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
21266 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
21267 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
21268 ]
21269
21270 var W = new Array(160)
21271
21272 function Sha512 () {
21273 this.init()
21274 this._w = W
21275
21276 Hash.call(this, 128, 112)
21277 }
21278
21279 inherits(Sha512, Hash)
21280
21281 Sha512.prototype.init = function () {
21282 this._ah = 0x6a09e667
21283 this._bh = 0xbb67ae85
21284 this._ch = 0x3c6ef372
21285 this._dh = 0xa54ff53a
21286 this._eh = 0x510e527f
21287 this._fh = 0x9b05688c
21288 this._gh = 0x1f83d9ab
21289 this._hh = 0x5be0cd19
21290
21291 this._al = 0xf3bcc908
21292 this._bl = 0x84caa73b
21293 this._cl = 0xfe94f82b
21294 this._dl = 0x5f1d36f1
21295 this._el = 0xade682d1
21296 this._fl = 0x2b3e6c1f
21297 this._gl = 0xfb41bd6b
21298 this._hl = 0x137e2179
21299
21300 return this
21301 }
21302
21303 function Ch (x, y, z) {
21304 return z ^ (x & (y ^ z))
21305 }
21306
21307 function maj (x, y, z) {
21308 return (x & y) | (z & (x | y))
21309 }
21310
21311 function sigma0 (x, xl) {
21312 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
21313 }
21314
21315 function sigma1 (x, xl) {
21316 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
21317 }
21318
21319 function Gamma0 (x, xl) {
21320 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
21321 }
21322
21323 function Gamma0l (x, xl) {
21324 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
21325 }
21326
21327 function Gamma1 (x, xl) {
21328 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
21329 }
21330
21331 function Gamma1l (x, xl) {
21332 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
21333 }
21334
21335 function getCarry (a, b) {
21336 return (a >>> 0) < (b >>> 0) ? 1 : 0
21337 }
21338
21339 Sha512.prototype._update = function (M) {
21340 var W = this._w
21341
21342 var ah = this._ah | 0
21343 var bh = this._bh | 0
21344 var ch = this._ch | 0
21345 var dh = this._dh | 0
21346 var eh = this._eh | 0
21347 var fh = this._fh | 0
21348 var gh = this._gh | 0
21349 var hh = this._hh | 0
21350
21351 var al = this._al | 0
21352 var bl = this._bl | 0
21353 var cl = this._cl | 0
21354 var dl = this._dl | 0
21355 var el = this._el | 0
21356 var fl = this._fl | 0
21357 var gl = this._gl | 0
21358 var hl = this._hl | 0
21359
21360 for (var i = 0; i < 32; i += 2) {
21361 W[i] = M.readInt32BE(i * 4)
21362 W[i + 1] = M.readInt32BE(i * 4 + 4)
21363 }
21364 for (; i < 160; i += 2) {
21365 var xh = W[i - 15 * 2]
21366 var xl = W[i - 15 * 2 + 1]
21367 var gamma0 = Gamma0(xh, xl)
21368 var gamma0l = Gamma0l(xl, xh)
21369
21370 xh = W[i - 2 * 2]
21371 xl = W[i - 2 * 2 + 1]
21372 var gamma1 = Gamma1(xh, xl)
21373 var gamma1l = Gamma1l(xl, xh)
21374
21375 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
21376 var Wi7h = W[i - 7 * 2]
21377 var Wi7l = W[i - 7 * 2 + 1]
21378
21379 var Wi16h = W[i - 16 * 2]
21380 var Wi16l = W[i - 16 * 2 + 1]
21381
21382 var Wil = (gamma0l + Wi7l) | 0
21383 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
21384 Wil = (Wil + gamma1l) | 0
21385 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
21386 Wil = (Wil + Wi16l) | 0
21387 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
21388
21389 W[i] = Wih
21390 W[i + 1] = Wil
21391 }
21392
21393 for (var j = 0; j < 160; j += 2) {
21394 Wih = W[j]
21395 Wil = W[j + 1]
21396
21397 var majh = maj(ah, bh, ch)
21398 var majl = maj(al, bl, cl)
21399
21400 var sigma0h = sigma0(ah, al)
21401 var sigma0l = sigma0(al, ah)
21402 var sigma1h = sigma1(eh, el)
21403 var sigma1l = sigma1(el, eh)
21404
21405 // t1 = h + sigma1 + ch + K[j] + W[j]
21406 var Kih = K[j]
21407 var Kil = K[j + 1]
21408
21409 var chh = Ch(eh, fh, gh)
21410 var chl = Ch(el, fl, gl)
21411
21412 var t1l = (hl + sigma1l) | 0
21413 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
21414 t1l = (t1l + chl) | 0
21415 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
21416 t1l = (t1l + Kil) | 0
21417 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
21418 t1l = (t1l + Wil) | 0
21419 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
21420
21421 // t2 = sigma0 + maj
21422 var t2l = (sigma0l + majl) | 0
21423 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
21424
21425 hh = gh
21426 hl = gl
21427 gh = fh
21428 gl = fl
21429 fh = eh
21430 fl = el
21431 el = (dl + t1l) | 0
21432 eh = (dh + t1h + getCarry(el, dl)) | 0
21433 dh = ch
21434 dl = cl
21435 ch = bh
21436 cl = bl
21437 bh = ah
21438 bl = al
21439 al = (t1l + t2l) | 0
21440 ah = (t1h + t2h + getCarry(al, t1l)) | 0
21441 }
21442
21443 this._al = (this._al + al) | 0
21444 this._bl = (this._bl + bl) | 0
21445 this._cl = (this._cl + cl) | 0
21446 this._dl = (this._dl + dl) | 0
21447 this._el = (this._el + el) | 0
21448 this._fl = (this._fl + fl) | 0
21449 this._gl = (this._gl + gl) | 0
21450 this._hl = (this._hl + hl) | 0
21451
21452 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
21453 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
21454 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
21455 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
21456 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
21457 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
21458 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
21459 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
21460 }
21461
21462 Sha512.prototype._hash = function () {
21463 var H = new Buffer(64)
21464
21465 function writeInt64BE (h, l, offset) {
21466 H.writeInt32BE(h, offset)
21467 H.writeInt32BE(l, offset + 4)
21468 }
21469
21470 writeInt64BE(this._ah, this._al, 0)
21471 writeInt64BE(this._bh, this._bl, 8)
21472 writeInt64BE(this._ch, this._cl, 16)
21473 writeInt64BE(this._dh, this._dl, 24)
21474 writeInt64BE(this._eh, this._el, 32)
21475 writeInt64BE(this._fh, this._fl, 40)
21476 writeInt64BE(this._gh, this._gl, 48)
21477 writeInt64BE(this._hh, this._hl, 56)
21478
21479 return H
21480 }
21481
21482 module.exports = Sha512
21483
21484 }).call(this,require("buffer").Buffer)
21485 },{"./hash":99,"buffer":4,"inherits":93}],107:[function(require,module,exports){
21486 var inherits = require('inherits')
21487 var native = require('./native')
21488
21489 function TfTypeError (type, value, valueTypeName) {
21490 this.__error = Error.call(this)
21491 this.__type = type
21492 this.__value = value
21493 this.__valueTypeName = valueTypeName
21494
21495 var message
21496 Object.defineProperty(this, 'message', {
21497 enumerable: true,
21498 get: function () {
21499 if (message) return message
21500
21501 valueTypeName = valueTypeName || getValueTypeName(value)
21502 message = tfErrorString(type, value, valueTypeName)
21503
21504 return message
21505 }
21506 })
21507 }
21508
21509 function TfPropertyTypeError (type, property, label, value, error, valueTypeName) {
21510 this.__error = error || Error.call(this)
21511 this.__label = label
21512 this.__property = property
21513 this.__type = type
21514 this.__value = value
21515 this.__valueTypeName = valueTypeName
21516
21517 var message
21518 Object.defineProperty(this, 'message', {
21519 enumerable: true,
21520 get: function () {
21521 if (message) return message
21522 if (type) {
21523 valueTypeName = valueTypeName || getValueTypeName(value)
21524 message = tfPropertyErrorString(type, label, property, value, valueTypeName)
21525 } else {
21526 message = 'Unexpected property "' + property + '"'
21527 }
21528
21529 return message
21530 }
21531 })
21532 }
21533
21534 // inherit from Error, assign stack
21535 [TfTypeError, TfPropertyTypeError].forEach(function (tfErrorType) {
21536 inherits(tfErrorType, Error)
21537 Object.defineProperty(tfErrorType, 'stack', {
21538 get: function () { return this.__error.stack }
21539 })
21540 })
21541
21542 function tfCustomError (expected, actual) {
21543 return new TfTypeError(expected, {}, actual)
21544 }
21545
21546 function tfSubError (e, property, label) {
21547 // sub child?
21548 if (e instanceof TfPropertyTypeError) {
21549 property = property + '.' + e.__property
21550 label = e.__label
21551
21552 return new TfPropertyTypeError(
21553 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21554 )
21555 }
21556
21557 // child?
21558 if (e instanceof TfTypeError) {
21559 return new TfPropertyTypeError(
21560 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21561 )
21562 }
21563
21564 return e
21565 }
21566
21567 function getTypeName (fn) {
21568 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]
21569 }
21570
21571 function getValueTypeName (value) {
21572 return native.Nil(value) ? '' : getTypeName(value.constructor)
21573 }
21574
21575 function getValue (value) {
21576 if (native.Function(value)) return ''
21577 if (native.String(value)) return JSON.stringify(value)
21578 if (value && native.Object(value)) return ''
21579 return value
21580 }
21581
21582 function tfJSON (type) {
21583 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
21584 if (native.Array(type)) return 'Array'
21585 if (type && native.Object(type)) return 'Object'
21586
21587 return type !== undefined ? type : ''
21588 }
21589
21590 function tfErrorString (type, value, valueTypeName) {
21591 var valueJson = getValue(value)
21592
21593 return 'Expected ' + tfJSON(type) + ', got' +
21594 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
21595 (valueJson !== '' ? ' ' + valueJson : '')
21596 }
21597
21598 function tfPropertyErrorString (type, label, name, value, valueTypeName) {
21599 var description = '" of type '
21600 if (label === 'key') description = '" with key type '
21601
21602 return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
21603 }
21604
21605 module.exports = {
21606 TfTypeError: TfTypeError,
21607 TfPropertyTypeError: TfPropertyTypeError,
21608 tfCustomError: tfCustomError,
21609 tfSubError: tfSubError,
21610 tfJSON: tfJSON,
21611 getValueTypeName: getValueTypeName
21612 }
21613
21614 },{"./native":110,"inherits":93}],108:[function(require,module,exports){
21615 (function (Buffer){
21616 var NATIVE = require('./native')
21617 var ERRORS = require('./errors')
21618
21619 function _Buffer (value) {
21620 return Buffer.isBuffer(value)
21621 }
21622
21623 function Hex (value) {
21624 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
21625 }
21626
21627 function _LengthN (type, length) {
21628 var name = type.toJSON()
21629
21630 function Length (value) {
21631 if (!type(value)) return false
21632 if (value.length === length) return true
21633
21634 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
21635 }
21636 Length.toJSON = function () { return name }
21637
21638 return Length
21639 }
21640
21641 var _ArrayN = _LengthN.bind(null, NATIVE.Array)
21642 var _BufferN = _LengthN.bind(null, _Buffer)
21643 var _HexN = _LengthN.bind(null, Hex)
21644
21645 var UINT53_MAX = Math.pow(2, 53) - 1
21646
21647 function Finite (value) {
21648 return typeof value === 'number' && isFinite(value)
21649 }
21650 function Int8 (value) { return ((value << 24) >> 24) === value }
21651 function Int16 (value) { return ((value << 16) >> 16) === value }
21652 function Int32 (value) { return (value | 0) === value }
21653 function UInt8 (value) { return (value & 0xff) === value }
21654 function UInt16 (value) { return (value & 0xffff) === value }
21655 function UInt32 (value) { return (value >>> 0) === value }
21656 function UInt53 (value) {
21657 return typeof value === 'number' &&
21658 value >= 0 &&
21659 value <= UINT53_MAX &&
21660 Math.floor(value) === value
21661 }
21662
21663 var types = {
21664 ArrayN: _ArrayN,
21665 Buffer: _Buffer,
21666 BufferN: _BufferN,
21667 Finite: Finite,
21668 Hex: Hex,
21669 HexN: _HexN,
21670 Int8: Int8,
21671 Int16: Int16,
21672 Int32: Int32,
21673 UInt8: UInt8,
21674 UInt16: UInt16,
21675 UInt32: UInt32,
21676 UInt53: UInt53
21677 }
21678
21679 for (var typeName in types) {
21680 types[typeName].toJSON = function (t) {
21681 return t
21682 }.bind(null, typeName)
21683 }
21684
21685 module.exports = types
21686
21687 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
21688 },{"../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":9,"./errors":107,"./native":110}],109:[function(require,module,exports){
21689 var ERRORS = require('./errors')
21690 var NATIVE = require('./native')
21691
21692 // short-hand
21693 var tfJSON = ERRORS.tfJSON
21694 var TfTypeError = ERRORS.TfTypeError
21695 var TfPropertyTypeError = ERRORS.TfPropertyTypeError
21696 var tfSubError = ERRORS.tfSubError
21697 var getValueTypeName = ERRORS.getValueTypeName
21698
21699 var TYPES = {
21700 arrayOf: function arrayOf (type) {
21701 type = compile(type)
21702
21703 function _arrayOf (array, strict) {
21704 if (!NATIVE.Array(array)) return false
21705
21706 return array.every(function (value, i) {
21707 try {
21708 return typeforce(type, value, strict)
21709 } catch (e) {
21710 throw tfSubError(e, i)
21711 }
21712 })
21713 }
21714 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
21715
21716 return _arrayOf
21717 },
21718
21719 maybe: function maybe (type) {
21720 type = compile(type)
21721
21722 function _maybe (value, strict) {
21723 return NATIVE.Nil(value) || type(value, strict, maybe)
21724 }
21725 _maybe.toJSON = function () { return '?' + tfJSON(type) }
21726
21727 return _maybe
21728 },
21729
21730 map: function map (propertyType, propertyKeyType) {
21731 propertyType = compile(propertyType)
21732 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
21733
21734 function _map (value, strict) {
21735 if (!NATIVE.Object(value, strict)) return false
21736 if (NATIVE.Nil(value, strict)) return false
21737
21738 for (var propertyName in value) {
21739 try {
21740 if (propertyKeyType) {
21741 typeforce(propertyKeyType, propertyName, strict)
21742 }
21743 } catch (e) {
21744 throw tfSubError(e, propertyName, 'key')
21745 }
21746
21747 try {
21748 var propertyValue = value[propertyName]
21749 typeforce(propertyType, propertyValue, strict)
21750 } catch (e) {
21751 throw tfSubError(e, propertyName)
21752 }
21753 }
21754
21755 return true
21756 }
21757
21758 if (propertyKeyType) {
21759 _map.toJSON = function () {
21760 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
21761 }
21762 } else {
21763 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
21764 }
21765
21766 return _map
21767 },
21768
21769 object: function object (uncompiled) {
21770 var type = {}
21771
21772 for (var typePropertyName in uncompiled) {
21773 type[typePropertyName] = compile(uncompiled[typePropertyName])
21774 }
21775
21776 function _object (value, strict) {
21777 if (!NATIVE.Object(value)) return false
21778 if (NATIVE.Nil(value)) return false
21779
21780 var propertyName
21781
21782 try {
21783 for (propertyName in type) {
21784 var propertyType = type[propertyName]
21785 var propertyValue = value[propertyName]
21786
21787 typeforce(propertyType, propertyValue, strict)
21788 }
21789 } catch (e) {
21790 throw tfSubError(e, propertyName)
21791 }
21792
21793 if (strict) {
21794 for (propertyName in value) {
21795 if (type[propertyName]) continue
21796
21797 throw new TfPropertyTypeError(undefined, propertyName)
21798 }
21799 }
21800
21801 return true
21802 }
21803 _object.toJSON = function () { return tfJSON(type) }
21804
21805 return _object
21806 },
21807
21808 oneOf: function oneOf () {
21809 var types = [].slice.call(arguments).map(compile)
21810
21811 function _oneOf (value, strict) {
21812 return types.some(function (type) {
21813 try {
21814 return typeforce(type, value, strict)
21815 } catch (e) {
21816 return false
21817 }
21818 })
21819 }
21820 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
21821
21822 return _oneOf
21823 },
21824
21825 quacksLike: function quacksLike (type) {
21826 function _quacksLike (value) {
21827 return type === getValueTypeName(value)
21828 }
21829 _quacksLike.toJSON = function () { return type }
21830
21831 return _quacksLike
21832 },
21833
21834 tuple: function tuple () {
21835 var types = [].slice.call(arguments).map(compile)
21836
21837 function _tuple (values, strict) {
21838 return types.every(function (type, i) {
21839 try {
21840 return typeforce(type, values[i], strict)
21841 } catch (e) {
21842 throw tfSubError(e, i)
21843 }
21844 }) && (!strict || values.length === arguments.length)
21845 }
21846 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
21847
21848 return _tuple
21849 },
21850
21851 value: function value (expected) {
21852 function _value (actual) {
21853 return actual === expected
21854 }
21855 _value.toJSON = function () { return expected }
21856
21857 return _value
21858 }
21859 }
21860
21861 function compile (type) {
21862 if (NATIVE.String(type)) {
21863 if (type[0] === '?') return TYPES.maybe(compile(type.slice(1)))
21864
21865 return NATIVE[type] || TYPES.quacksLike(type)
21866 } else if (type && NATIVE.Object(type)) {
21867 if (NATIVE.Array(type)) return TYPES.arrayOf(compile(type[0]))
21868
21869 return TYPES.object(type)
21870 } else if (NATIVE.Function(type)) {
21871 return type
21872 }
21873
21874 return TYPES.value(type)
21875 }
21876
21877 function typeforce (type, value, strict, surrogate) {
21878 if (NATIVE.Function(type)) {
21879 if (type(value, strict)) return true
21880
21881 throw new TfTypeError(surrogate || type, value)
21882 }
21883
21884 // JIT
21885 return typeforce(compile(type), value, strict)
21886 }
21887
21888 // assign types to typeforce function
21889 for (var typeName in NATIVE) {
21890 typeforce[typeName] = NATIVE[typeName]
21891 }
21892
21893 for (typeName in TYPES) {
21894 typeforce[typeName] = TYPES[typeName]
21895 }
21896
21897 var EXTRA = require('./extra')
21898 for (typeName in EXTRA) {
21899 typeforce[typeName] = EXTRA[typeName]
21900 }
21901
21902 // async wrapper
21903 function __async (type, value, strict, callback) {
21904 // default to falsy strict if using shorthand overload
21905 if (typeof strict === 'function') return __async(type, value, false, strict)
21906
21907 try {
21908 typeforce(type, value, strict)
21909 } catch (e) {
21910 return callback(e)
21911 }
21912
21913 callback()
21914 }
21915
21916 typeforce.async = __async
21917 typeforce.compile = compile
21918 typeforce.TfTypeError = TfTypeError
21919 typeforce.TfPropertyTypeError = TfPropertyTypeError
21920
21921 module.exports = typeforce
21922
21923 },{"./errors":107,"./extra":108,"./native":110}],110:[function(require,module,exports){
21924 var types = {
21925 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
21926 Boolean: function (value) { return typeof value === 'boolean' },
21927 Function: function (value) { return typeof value === 'function' },
21928 Nil: function (value) { return value === undefined || value === null },
21929 Number: function (value) { return typeof value === 'number' },
21930 Object: function (value) { return typeof value === 'object' },
21931 String: function (value) { return typeof value === 'string' },
21932 '': function () { return true }
21933 }
21934
21935 // TODO: deprecate
21936 types.Null = types.Nil
21937
21938 for (var typeName in types) {
21939 types[typeName].toJSON = function (t) {
21940 return t
21941 }.bind(null, typeName)
21942 }
21943
21944 module.exports = types
21945
21946 },{}],111:[function(require,module,exports){
21947 (function (Buffer){
21948 'use strict'
21949
21950 // Number.MAX_SAFE_INTEGER
21951 var MAX_SAFE_INTEGER = 9007199254740991
21952
21953 function checkUInt53 (n) {
21954 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
21955 }
21956
21957 function encode (number, buffer, offset) {
21958 checkUInt53(number)
21959
21960 if (!buffer) buffer = new Buffer(encodingLength(number))
21961 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
21962 if (!offset) offset = 0
21963
21964 // 8 bit
21965 if (number < 0xfd) {
21966 buffer.writeUInt8(number, offset)
21967 encode.bytes = 1
21968
21969 // 16 bit
21970 } else if (number <= 0xffff) {
21971 buffer.writeUInt8(0xfd, offset)
21972 buffer.writeUInt16LE(number, offset + 1)
21973 encode.bytes = 3
21974
21975 // 32 bit
21976 } else if (number <= 0xffffffff) {
21977 buffer.writeUInt8(0xfe, offset)
21978 buffer.writeUInt32LE(number, offset + 1)
21979 encode.bytes = 5
21980
21981 // 64 bit
21982 } else {
21983 buffer.writeUInt8(0xff, offset)
21984 buffer.writeUInt32LE(number >>> 0, offset + 1)
21985 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
21986 encode.bytes = 9
21987 }
21988
21989 return buffer
21990 }
21991
21992 function decode (buffer, offset) {
21993 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
21994 if (!offset) offset = 0
21995
21996 var first = buffer.readUInt8(offset)
21997
21998 // 8 bit
21999 if (first < 0xfd) {
22000 decode.bytes = 1
22001 return first
22002
22003 // 16 bit
22004 } else if (first === 0xfd) {
22005 decode.bytes = 3
22006 return buffer.readUInt16LE(offset + 1)
22007
22008 // 32 bit
22009 } else if (first === 0xfe) {
22010 decode.bytes = 5
22011 return buffer.readUInt32LE(offset + 1)
22012
22013 // 64 bit
22014 } else {
22015 decode.bytes = 9
22016 var lo = buffer.readUInt32LE(offset + 1)
22017 var hi = buffer.readUInt32LE(offset + 5)
22018 var number = hi * 0x0100000000 + lo
22019 checkUInt53(number)
22020
22021 return number
22022 }
22023 }
22024
22025 function encodingLength (number) {
22026 checkUInt53(number)
22027
22028 return (
22029 number < 0xfd ? 1
22030 : number <= 0xffff ? 3
22031 : number <= 0xffffffff ? 5
22032 : 9
22033 )
22034 }
22035
22036 module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
22037
22038 }).call(this,require("buffer").Buffer)
22039 },{"buffer":4}],112:[function(require,module,exports){
22040 (function (Buffer){
22041 var bs58check = require('bs58check')
22042
22043 function decodeRaw (buffer, version) {
22044 // check version only if defined
22045 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
22046
22047 // uncompressed
22048 if (buffer.length === 33) {
22049 return {
22050 version: buffer[0],
22051 privateKey: buffer.slice(1, 33),
22052 compressed: false
22053 }
22054 }
22055
22056 // invalid length
22057 if (buffer.length !== 34) throw new Error('Invalid WIF length')
22058
22059 // invalid compression flag
22060 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
22061
22062 return {
22063 version: buffer[0],
22064 privateKey: buffer.slice(1, 33),
22065 compressed: true
22066 }
22067 }
22068
22069 function encodeRaw (version, privateKey, compressed) {
22070 var result = new Buffer(compressed ? 34 : 33)
22071
22072 result.writeUInt8(version, 0)
22073 privateKey.copy(result, 1)
22074
22075 if (compressed) {
22076 result[33] = 0x01
22077 }
22078
22079 return result
22080 }
22081
22082 function decode (string, version) {
22083 return decodeRaw(bs58check.decode(string), version)
22084 }
22085
22086 function encode (version, privateKey, compressed) {
22087 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
22088
22089 return bs58check.encode(
22090 encodeRaw(
22091 version.version,
22092 version.privateKey,
22093 version.compressed
22094 )
22095 )
22096 }
22097
22098 module.exports = {
22099 decode: decode,
22100 decodeRaw: decodeRaw,
22101 encode: encode,
22102 encodeRaw: encodeRaw
22103 }
22104
22105 }).call(this,require("buffer").Buffer)
22106 },{"bs58check":80,"buffer":4}]},{},[33])(33)
22107 });</script>
22108 <script>bitcoinjs.bitcoin.networks.shadow = {
22109 messagePrefix: "unused",
22110 bip32: {
22111 public: 0xEE80286A,
22112 private: 0xEE8031E8
22113 },
22114 pubKeyHash: 0x3f,
22115 scriptHash: 0x7d,
22116 wif: 0xbf,
22117 };
22118
22119 bitcoinjs.bitcoin.networks.shadowtn = {
22120 messagePrefix: "unused",
22121 bip32: {
22122 public: 0x76C0FDFB,
22123 private: 0x76C1077A
22124 },
22125 pubKeyHash: 0x7f,
22126 scriptHash: 0xc4,
22127 wif: 0xff,
22128 };
22129
22130 bitcoinjs.bitcoin.networks.clam = {
22131 messagePrefix: "unused",
22132 bip32: {
22133 public: 0xa8c26d64,
22134 private: 0xa8c17826
22135 },
22136 pubKeyHash: 0x89,
22137 scriptHash: 0x00, // TODO set this correctly
22138 wif: 0x85,
22139 };
22140
22141 bitcoinjs.bitcoin.networks.crown = {
22142 messagePrefix: "unused",
22143 bip32: {
22144 public: 0x0488b21e,
22145 private: 0x0488ade4
22146 },
22147 pubKeyHash: 0x00,
22148 scriptHash: 0x05,
22149 wif: 0x80,
22150 };
22151
22152 bitcoinjs.bitcoin.networks.dash = {
22153 messagePrefix: "unused",
22154 bip32: {
22155 public: 0x0488b21e,
22156 private: 0x0488ade4
22157 },
22158 pubKeyHash: 0x4c,
22159 scriptHash: 0x10,
22160 wif: 0xcc,
22161 };
22162
22163 bitcoinjs.bitcoin.networks.maza = {
22164 messagePrefix: "unused",
22165 bip32: {
22166 public: 0x0488b21e,
22167 private: 0x0488ade4
22168 },
22169 pubKeyHash: 0x32,
22170 scriptHash: 0x09,
22171 wif: 0xe0,
22172 };
22173
22174 bitcoinjs.bitcoin.networks.dashtn = {
22175 messagePrefix: "unused",
22176 bip32: {
22177 public: 0x043587cf,
22178 private: 0x04358394
22179 },
22180 pubKeyHash: 0x8c,
22181 scriptHash: 0x13,
22182 wif: 0xef,
22183 };
22184
22185 bitcoinjs.bitcoin.networks.game = {
22186 messagePrefix: "unused",
22187 bip32: {
22188 public: 0x0488b21e,
22189 private: 0x0488ade4
22190 },
22191 pubKeyHash: 0x26,
22192 scriptHash: 0x05,
22193 wif: 0xa6,
22194 };
22195
22196 bitcoinjs.bitcoin.networks.namecoin = {
22197 messagePrefix: "unused",
22198 bip32: {
22199 public: 0x0488b21e,
22200 private: 0x0488ade4
22201 },
22202 pubKeyHash: 0x34,
22203 scriptHash: 0x00, // TODO set this correctly
22204 wif: 0x80,
22205 };
22206
22207 bitcoinjs.bitcoin.networks.peercoin = {
22208 messagePrefix: "unused",
22209 bip32: {
22210 public: 0x0488b21e,
22211 private: 0x0488ade4
22212 },
22213 pubKeyHash: 0x37,
22214 scriptHash: 0x00, // TODO set this correctly
22215 wif: 0xb7,
22216 };
22217
22218 bitcoinjs.bitcoin.networks.slimcoin = {
22219 messagePrefix: "unused",
22220 bip32: {
22221 public: 0xef6adf10,
22222 private: 0xef69ea80
22223 },
22224 pubKeyHash: 0x3f,
22225 scriptHash: 0x7d,
22226 wif: 0x46,
22227 };
22228
22229 bitcoinjs.bitcoin.networks.slimcointn = {
22230 messagePrefix: "unused",
22231 bip32: {
22232 public: 0x043587CF,
22233 private: 0x04358394
22234 },
22235 pubKeyHash: 0x6f,
22236 scriptHash: 0xc4,
22237 wif: 0x57,
22238 };
22239
22240 bitcoinjs.bitcoin.networks.dogecoin = {
22241 messagePrefix: '\x19Dogecoin Signed Message:\n',
22242 bip32: {
22243 public: 0x02facafd,
22244 private: 0x02fac398
22245 },
22246 pubKeyHash: 0x1e,
22247 scriptHash: 0x16,
22248 wif: 0x9e,
22249 },
22250
22251 bitcoinjs.bitcoin.networks.viacoin = {
22252 messagePrefix: '\x18Viacoin Signed Message:\n',
22253 bip32: {
22254 public: 0x0488b21e,
22255 private: 0x0488ade4
22256 },
22257 pubKeyHash: 0x47,
22258 scriptHash: 0x21,
22259 wif: 0xc7,
22260 },
22261
22262 bitcoinjs.bitcoin.networks.viacointestnet = {
22263 messagePrefix: '\x18Viacoin Signed Message:\n',
22264 bip32: {
22265 public: 0x043587cf,
22266 private: 0x04358394
22267 },
22268 pubKeyHash: 0x7f,
22269 scriptHash: 0xc4,
22270 wif: 0xff,
22271 },
22272
22273 bitcoinjs.bitcoin.networks.gamerscoin = {
22274 messagePrefix: '\x19Gamerscoin Signed Message:\n',
22275 bip32: {
22276 public: 0x019da462,
22277 private: 0x019d9cfe
22278 },
22279 pubKeyHash: 0x26,
22280 scriptHash: 0x05,
22281 wif: 0xA6,
22282 },
22283
22284 bitcoinjs.bitcoin.networks.jumbucks = {
22285 messagePrefix: '\x19Jumbucks Signed Message:\n',
22286 bip32: {
22287 public: 0x037a689a,
22288 private: 0x037a6460
22289 },
22290 pubKeyHash: 0x2b,
22291 scriptHash: 0x05,
22292 wif: 0xab,
22293 },
22294
22295 bitcoinjs.bitcoin.networks.zetacoin = {
22296 messagePrefix: '\x18Zetacoin Signed Message:\n',
22297 bip32: {
22298 public: 0x0488b21e,
22299 private: 0x0488ade4
22300 },
22301 pubKeyHash: 0x50,
22302 scriptHash: 0x09,
22303 wif: 0xe0,
22304 }
22305
22306 bitcoinjs.bitcoin.networks.myriadcoin = {
22307 messagePrefix: "unused",
22308 bip32: {
22309 public: 0x0488b21e,
22310 private: 0x0488ade4
22311 },
22312 pubKeyHash: 0x32,
22313 scriptHash: 0x00, // TODO set this correctly
22314 wif: 0xb2,
22315 };
22316
22317 bitcoinjs.bitcoin.networks.pivx = {
22318 messagePrefix: "unused",
22319 bip32: {
22320 public: 0x022d2533,
22321 private: 0x0221312b
22322 },
22323 pubKeyHash: 0x1e,
22324 scriptHash: 0x0d,
22325 wif: 0xd4,
22326 };
22327
22328 bitcoinjs.bitcoin.networks.pivxtestnet = {
22329 messagePrefix: "unused",
22330 bip32: {
22331 public: 0x3a8061a0,
22332 private: 0x3a805837
22333 },
22334 pubKeyHash: 0x8b,
22335 scriptHash: 0x13,
22336 wif: 0xef,
22337 };
22338 </script>
22339 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ethUtil = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
22340 (function (global){
22341 'use strict';
22342
22343 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
22344 // original notice:
22345
22346 /*!
22347 * The buffer module from node.js, for the browser.
22348 *
22349 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22350 * @license MIT
22351 */
22352 function compare(a, b) {
22353 if (a === b) {
22354 return 0;
22355 }
22356
22357 var x = a.length;
22358 var y = b.length;
22359
22360 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
22361 if (a[i] !== b[i]) {
22362 x = a[i];
22363 y = b[i];
22364 break;
22365 }
22366 }
22367
22368 if (x < y) {
22369 return -1;
22370 }
22371 if (y < x) {
22372 return 1;
22373 }
22374 return 0;
22375 }
22376 function isBuffer(b) {
22377 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
22378 return global.Buffer.isBuffer(b);
22379 }
22380 return !!(b != null && b._isBuffer);
22381 }
22382
22383 // based on node assert, original notice:
22384
22385 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
22386 //
22387 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
22388 //
22389 // Originally from narwhal.js (http://narwhaljs.org)
22390 // Copyright (c) 2009 Thomas Robinson <280north.com>
22391 //
22392 // Permission is hereby granted, free of charge, to any person obtaining a copy
22393 // of this software and associated documentation files (the 'Software'), to
22394 // deal in the Software without restriction, including without limitation the
22395 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22396 // sell copies of the Software, and to permit persons to whom the Software is
22397 // furnished to do so, subject to the following conditions:
22398 //
22399 // The above copyright notice and this permission notice shall be included in
22400 // all copies or substantial portions of the Software.
22401 //
22402 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22403 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22404 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22405 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22406 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22407 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22408
22409 var util = require('util/');
22410 var hasOwn = Object.prototype.hasOwnProperty;
22411 var pSlice = Array.prototype.slice;
22412 var functionsHaveNames = (function () {
22413 return function foo() {}.name === 'foo';
22414 }());
22415 function pToString (obj) {
22416 return Object.prototype.toString.call(obj);
22417 }
22418 function isView(arrbuf) {
22419 if (isBuffer(arrbuf)) {
22420 return false;
22421 }
22422 if (typeof global.ArrayBuffer !== 'function') {
22423 return false;
22424 }
22425 if (typeof ArrayBuffer.isView === 'function') {
22426 return ArrayBuffer.isView(arrbuf);
22427 }
22428 if (!arrbuf) {
22429 return false;
22430 }
22431 if (arrbuf instanceof DataView) {
22432 return true;
22433 }
22434 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
22435 return true;
22436 }
22437 return false;
22438 }
22439 // 1. The assert module provides functions that throw
22440 // AssertionError's when particular conditions are not met. The
22441 // assert module must conform to the following interface.
22442
22443 var assert = module.exports = ok;
22444
22445 // 2. The AssertionError is defined in assert.
22446 // new assert.AssertionError({ message: message,
22447 // actual: actual,
22448 // expected: expected })
22449
22450 var regex = /\s*function\s+([^\(\s]*)\s*/;
22451 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
22452 function getName(func) {
22453 if (!util.isFunction(func)) {
22454 return;
22455 }
22456 if (functionsHaveNames) {
22457 return func.name;
22458 }
22459 var str = func.toString();
22460 var match = str.match(regex);
22461 return match && match[1];
22462 }
22463 assert.AssertionError = function AssertionError(options) {
22464 this.name = 'AssertionError';
22465 this.actual = options.actual;
22466 this.expected = options.expected;
22467 this.operator = options.operator;
22468 if (options.message) {
22469 this.message = options.message;
22470 this.generatedMessage = false;
22471 } else {
22472 this.message = getMessage(this);
22473 this.generatedMessage = true;
22474 }
22475 var stackStartFunction = options.stackStartFunction || fail;
22476 if (Error.captureStackTrace) {
22477 Error.captureStackTrace(this, stackStartFunction);
22478 } else {
22479 // non v8 browsers so we can have a stacktrace
22480 var err = new Error();
22481 if (err.stack) {
22482 var out = err.stack;
22483
22484 // try to strip useless frames
22485 var fn_name = getName(stackStartFunction);
22486 var idx = out.indexOf('\n' + fn_name);
22487 if (idx >= 0) {
22488 // once we have located the function frame
22489 // we need to strip out everything before it (and its line)
22490 var next_line = out.indexOf('\n', idx + 1);
22491 out = out.substring(next_line + 1);
22492 }
22493
22494 this.stack = out;
22495 }
22496 }
22497 };
22498
22499 // assert.AssertionError instanceof Error
22500 util.inherits(assert.AssertionError, Error);
22501
22502 function truncate(s, n) {
22503 if (typeof s === 'string') {
22504 return s.length < n ? s : s.slice(0, n);
22505 } else {
22506 return s;
22507 }
22508 }
22509 function inspect(something) {
22510 if (functionsHaveNames || !util.isFunction(something)) {
22511 return util.inspect(something);
22512 }
22513 var rawname = getName(something);
22514 var name = rawname ? ': ' + rawname : '';
22515 return '[Function' + name + ']';
22516 }
22517 function getMessage(self) {
22518 return truncate(inspect(self.actual), 128) + ' ' +
22519 self.operator + ' ' +
22520 truncate(inspect(self.expected), 128);
22521 }
22522
22523 // At present only the three keys mentioned above are used and
22524 // understood by the spec. Implementations or sub modules can pass
22525 // other keys to the AssertionError's constructor - they will be
22526 // ignored.
22527
22528 // 3. All of the following functions must throw an AssertionError
22529 // when a corresponding condition is not met, with a message that
22530 // may be undefined if not provided. All assertion methods provide
22531 // both the actual and expected values to the assertion error for
22532 // display purposes.
22533
22534 function fail(actual, expected, message, operator, stackStartFunction) {
22535 throw new assert.AssertionError({
22536 message: message,
22537 actual: actual,
22538 expected: expected,
22539 operator: operator,
22540 stackStartFunction: stackStartFunction
22541 });
22542 }
22543
22544 // EXTENSION! allows for well behaved errors defined elsewhere.
22545 assert.fail = fail;
22546
22547 // 4. Pure assertion tests whether a value is truthy, as determined
22548 // by !!guard.
22549 // assert.ok(guard, message_opt);
22550 // This statement is equivalent to assert.equal(true, !!guard,
22551 // message_opt);. To test strictly for the value true, use
22552 // assert.strictEqual(true, guard, message_opt);.
22553
22554 function ok(value, message) {
22555 if (!value) fail(value, true, message, '==', assert.ok);
22556 }
22557 assert.ok = ok;
22558
22559 // 5. The equality assertion tests shallow, coercive equality with
22560 // ==.
22561 // assert.equal(actual, expected, message_opt);
22562
22563 assert.equal = function equal(actual, expected, message) {
22564 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
22565 };
22566
22567 // 6. The non-equality assertion tests for whether two objects are not equal
22568 // with != assert.notEqual(actual, expected, message_opt);
22569
22570 assert.notEqual = function notEqual(actual, expected, message) {
22571 if (actual == expected) {
22572 fail(actual, expected, message, '!=', assert.notEqual);
22573 }
22574 };
22575
22576 // 7. The equivalence assertion tests a deep equality relation.
22577 // assert.deepEqual(actual, expected, message_opt);
22578
22579 assert.deepEqual = function deepEqual(actual, expected, message) {
22580 if (!_deepEqual(actual, expected, false)) {
22581 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
22582 }
22583 };
22584
22585 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
22586 if (!_deepEqual(actual, expected, true)) {
22587 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
22588 }
22589 };
22590
22591 function _deepEqual(actual, expected, strict, memos) {
22592 // 7.1. All identical values are equivalent, as determined by ===.
22593 if (actual === expected) {
22594 return true;
22595 } else if (isBuffer(actual) && isBuffer(expected)) {
22596 return compare(actual, expected) === 0;
22597
22598 // 7.2. If the expected value is a Date object, the actual value is
22599 // equivalent if it is also a Date object that refers to the same time.
22600 } else if (util.isDate(actual) && util.isDate(expected)) {
22601 return actual.getTime() === expected.getTime();
22602
22603 // 7.3 If the expected value is a RegExp object, the actual value is
22604 // equivalent if it is also a RegExp object with the same source and
22605 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
22606 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
22607 return actual.source === expected.source &&
22608 actual.global === expected.global &&
22609 actual.multiline === expected.multiline &&
22610 actual.lastIndex === expected.lastIndex &&
22611 actual.ignoreCase === expected.ignoreCase;
22612
22613 // 7.4. Other pairs that do not both pass typeof value == 'object',
22614 // equivalence is determined by ==.
22615 } else if ((actual === null || typeof actual !== 'object') &&
22616 (expected === null || typeof expected !== 'object')) {
22617 return strict ? actual === expected : actual == expected;
22618
22619 // If both values are instances of typed arrays, wrap their underlying
22620 // ArrayBuffers in a Buffer each to increase performance
22621 // This optimization requires the arrays to have the same type as checked by
22622 // Object.prototype.toString (aka pToString). Never perform binary
22623 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
22624 // bit patterns are not identical.
22625 } else if (isView(actual) && isView(expected) &&
22626 pToString(actual) === pToString(expected) &&
22627 !(actual instanceof Float32Array ||
22628 actual instanceof Float64Array)) {
22629 return compare(new Uint8Array(actual.buffer),
22630 new Uint8Array(expected.buffer)) === 0;
22631
22632 // 7.5 For all other Object pairs, including Array objects, equivalence is
22633 // determined by having the same number of owned properties (as verified
22634 // with Object.prototype.hasOwnProperty.call), the same set of keys
22635 // (although not necessarily the same order), equivalent values for every
22636 // corresponding key, and an identical 'prototype' property. Note: this
22637 // accounts for both named and indexed properties on Arrays.
22638 } else if (isBuffer(actual) !== isBuffer(expected)) {
22639 return false;
22640 } else {
22641 memos = memos || {actual: [], expected: []};
22642
22643 var actualIndex = memos.actual.indexOf(actual);
22644 if (actualIndex !== -1) {
22645 if (actualIndex === memos.expected.indexOf(expected)) {
22646 return true;
22647 }
22648 }
22649
22650 memos.actual.push(actual);
22651 memos.expected.push(expected);
22652
22653 return objEquiv(actual, expected, strict, memos);
22654 }
22655 }
22656
22657 function isArguments(object) {
22658 return Object.prototype.toString.call(object) == '[object Arguments]';
22659 }
22660
22661 function objEquiv(a, b, strict, actualVisitedObjects) {
22662 if (a === null || a === undefined || b === null || b === undefined)
22663 return false;
22664 // if one is a primitive, the other must be same
22665 if (util.isPrimitive(a) || util.isPrimitive(b))
22666 return a === b;
22667 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
22668 return false;
22669 var aIsArgs = isArguments(a);
22670 var bIsArgs = isArguments(b);
22671 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
22672 return false;
22673 if (aIsArgs) {
22674 a = pSlice.call(a);
22675 b = pSlice.call(b);
22676 return _deepEqual(a, b, strict);
22677 }
22678 var ka = objectKeys(a);
22679 var kb = objectKeys(b);
22680 var key, i;
22681 // having the same number of owned properties (keys incorporates
22682 // hasOwnProperty)
22683 if (ka.length !== kb.length)
22684 return false;
22685 //the same set of keys (although not necessarily the same order),
22686 ka.sort();
22687 kb.sort();
22688 //~~~cheap key test
22689 for (i = ka.length - 1; i >= 0; i--) {
22690 if (ka[i] !== kb[i])
22691 return false;
22692 }
22693 //equivalent values for every corresponding key, and
22694 //~~~possibly expensive deep test
22695 for (i = ka.length - 1; i >= 0; i--) {
22696 key = ka[i];
22697 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
22698 return false;
22699 }
22700 return true;
22701 }
22702
22703 // 8. The non-equivalence assertion tests for any deep inequality.
22704 // assert.notDeepEqual(actual, expected, message_opt);
22705
22706 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
22707 if (_deepEqual(actual, expected, false)) {
22708 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
22709 }
22710 };
22711
22712 assert.notDeepStrictEqual = notDeepStrictEqual;
22713 function notDeepStrictEqual(actual, expected, message) {
22714 if (_deepEqual(actual, expected, true)) {
22715 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
22716 }
22717 }
22718
22719
22720 // 9. The strict equality assertion tests strict equality, as determined by ===.
22721 // assert.strictEqual(actual, expected, message_opt);
22722
22723 assert.strictEqual = function strictEqual(actual, expected, message) {
22724 if (actual !== expected) {
22725 fail(actual, expected, message, '===', assert.strictEqual);
22726 }
22727 };
22728
22729 // 10. The strict non-equality assertion tests for strict inequality, as
22730 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
22731
22732 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
22733 if (actual === expected) {
22734 fail(actual, expected, message, '!==', assert.notStrictEqual);
22735 }
22736 };
22737
22738 function expectedException(actual, expected) {
22739 if (!actual || !expected) {
22740 return false;
22741 }
22742
22743 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
22744 return expected.test(actual);
22745 }
22746
22747 try {
22748 if (actual instanceof expected) {
22749 return true;
22750 }
22751 } catch (e) {
22752 // Ignore. The instanceof check doesn't work for arrow functions.
22753 }
22754
22755 if (Error.isPrototypeOf(expected)) {
22756 return false;
22757 }
22758
22759 return expected.call({}, actual) === true;
22760 }
22761
22762 function _tryBlock(block) {
22763 var error;
22764 try {
22765 block();
22766 } catch (e) {
22767 error = e;
22768 }
22769 return error;
22770 }
22771
22772 function _throws(shouldThrow, block, expected, message) {
22773 var actual;
22774
22775 if (typeof block !== 'function') {
22776 throw new TypeError('"block" argument must be a function');
22777 }
22778
22779 if (typeof expected === 'string') {
22780 message = expected;
22781 expected = null;
22782 }
22783
22784 actual = _tryBlock(block);
22785
22786 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
22787 (message ? ' ' + message : '.');
22788
22789 if (shouldThrow && !actual) {
22790 fail(actual, expected, 'Missing expected exception' + message);
22791 }
22792
22793 var userProvidedMessage = typeof message === 'string';
22794 var isUnwantedException = !shouldThrow && util.isError(actual);
22795 var isUnexpectedException = !shouldThrow && actual && !expected;
22796
22797 if ((isUnwantedException &&
22798 userProvidedMessage &&
22799 expectedException(actual, expected)) ||
22800 isUnexpectedException) {
22801 fail(actual, expected, 'Got unwanted exception' + message);
22802 }
22803
22804 if ((shouldThrow && actual && expected &&
22805 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
22806 throw actual;
22807 }
22808 }
22809
22810 // 11. Expected to throw an error:
22811 // assert.throws(block, Error_opt, message_opt);
22812
22813 assert.throws = function(block, /*optional*/error, /*optional*/message) {
22814 _throws(true, block, error, message);
22815 };
22816
22817 // EXTENSION! This is annoying to write outside this module.
22818 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
22819 _throws(false, block, error, message);
22820 };
22821
22822 assert.ifError = function(err) { if (err) throw err; };
22823
22824 var objectKeys = Object.keys || function (obj) {
22825 var keys = [];
22826 for (var key in obj) {
22827 if (hasOwn.call(obj, key)) keys.push(key);
22828 }
22829 return keys;
22830 };
22831
22832 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22833 },{"util/":30}],2:[function(require,module,exports){
22834 'use strict'
22835
22836 exports.byteLength = byteLength
22837 exports.toByteArray = toByteArray
22838 exports.fromByteArray = fromByteArray
22839
22840 var lookup = []
22841 var revLookup = []
22842 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
22843
22844 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
22845 for (var i = 0, len = code.length; i < len; ++i) {
22846 lookup[i] = code[i]
22847 revLookup[code.charCodeAt(i)] = i
22848 }
22849
22850 revLookup['-'.charCodeAt(0)] = 62
22851 revLookup['_'.charCodeAt(0)] = 63
22852
22853 function placeHoldersCount (b64) {
22854 var len = b64.length
22855 if (len % 4 > 0) {
22856 throw new Error('Invalid string. Length must be a multiple of 4')
22857 }
22858
22859 // the number of equal signs (place holders)
22860 // if there are two placeholders, than the two characters before it
22861 // represent one byte
22862 // if there is only one, then the three characters before it represent 2 bytes
22863 // this is just a cheap hack to not do indexOf twice
22864 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
22865 }
22866
22867 function byteLength (b64) {
22868 // base64 is 4/3 + up to two characters of the original data
22869 return b64.length * 3 / 4 - placeHoldersCount(b64)
22870 }
22871
22872 function toByteArray (b64) {
22873 var i, j, l, tmp, placeHolders, arr
22874 var len = b64.length
22875 placeHolders = placeHoldersCount(b64)
22876
22877 arr = new Arr(len * 3 / 4 - placeHolders)
22878
22879 // if there are placeholders, only get up to the last complete 4 chars
22880 l = placeHolders > 0 ? len - 4 : len
22881
22882 var L = 0
22883
22884 for (i = 0, j = 0; i < l; i += 4, j += 3) {
22885 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
22886 arr[L++] = (tmp >> 16) & 0xFF
22887 arr[L++] = (tmp >> 8) & 0xFF
22888 arr[L++] = tmp & 0xFF
22889 }
22890
22891 if (placeHolders === 2) {
22892 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
22893 arr[L++] = tmp & 0xFF
22894 } else if (placeHolders === 1) {
22895 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
22896 arr[L++] = (tmp >> 8) & 0xFF
22897 arr[L++] = tmp & 0xFF
22898 }
22899
22900 return arr
22901 }
22902
22903 function tripletToBase64 (num) {
22904 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
22905 }
22906
22907 function encodeChunk (uint8, start, end) {
22908 var tmp
22909 var output = []
22910 for (var i = start; i < end; i += 3) {
22911 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
22912 output.push(tripletToBase64(tmp))
22913 }
22914 return output.join('')
22915 }
22916
22917 function fromByteArray (uint8) {
22918 var tmp
22919 var len = uint8.length
22920 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
22921 var output = ''
22922 var parts = []
22923 var maxChunkLength = 16383 // must be multiple of 3
22924
22925 // go through the array every three bytes, we'll deal with trailing stuff later
22926 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
22927 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
22928 }
22929
22930 // pad the end with zeros, but make sure to not forget the extra bytes
22931 if (extraBytes === 1) {
22932 tmp = uint8[len - 1]
22933 output += lookup[tmp >> 2]
22934 output += lookup[(tmp << 4) & 0x3F]
22935 output += '=='
22936 } else if (extraBytes === 2) {
22937 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
22938 output += lookup[tmp >> 10]
22939 output += lookup[(tmp >> 4) & 0x3F]
22940 output += lookup[(tmp << 2) & 0x3F]
22941 output += '='
22942 }
22943
22944 parts.push(output)
22945
22946 return parts.join('')
22947 }
22948
22949 },{}],3:[function(require,module,exports){
22950
22951 },{}],4:[function(require,module,exports){
22952 (function (global){
22953 'use strict';
22954
22955 var buffer = require('buffer');
22956 var Buffer = buffer.Buffer;
22957 var SlowBuffer = buffer.SlowBuffer;
22958 var MAX_LEN = buffer.kMaxLength || 2147483647;
22959 exports.alloc = function alloc(size, fill, encoding) {
22960 if (typeof Buffer.alloc === 'function') {
22961 return Buffer.alloc(size, fill, encoding);
22962 }
22963 if (typeof encoding === 'number') {
22964 throw new TypeError('encoding must not be number');
22965 }
22966 if (typeof size !== 'number') {
22967 throw new TypeError('size must be a number');
22968 }
22969 if (size > MAX_LEN) {
22970 throw new RangeError('size is too large');
22971 }
22972 var enc = encoding;
22973 var _fill = fill;
22974 if (_fill === undefined) {
22975 enc = undefined;
22976 _fill = 0;
22977 }
22978 var buf = new Buffer(size);
22979 if (typeof _fill === 'string') {
22980 var fillBuf = new Buffer(_fill, enc);
22981 var flen = fillBuf.length;
22982 var i = -1;
22983 while (++i < size) {
22984 buf[i] = fillBuf[i % flen];
22985 }
22986 } else {
22987 buf.fill(_fill);
22988 }
22989 return buf;
22990 }
22991 exports.allocUnsafe = function allocUnsafe(size) {
22992 if (typeof Buffer.allocUnsafe === 'function') {
22993 return Buffer.allocUnsafe(size);
22994 }
22995 if (typeof size !== 'number') {
22996 throw new TypeError('size must be a number');
22997 }
22998 if (size > MAX_LEN) {
22999 throw new RangeError('size is too large');
23000 }
23001 return new Buffer(size);
23002 }
23003 exports.from = function from(value, encodingOrOffset, length) {
23004 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
23005 return Buffer.from(value, encodingOrOffset, length);
23006 }
23007 if (typeof value === 'number') {
23008 throw new TypeError('"value" argument must not be a number');
23009 }
23010 if (typeof value === 'string') {
23011 return new Buffer(value, encodingOrOffset);
23012 }
23013 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
23014 var offset = encodingOrOffset;
23015 if (arguments.length === 1) {
23016 return new Buffer(value);
23017 }
23018 if (typeof offset === 'undefined') {
23019 offset = 0;
23020 }
23021 var len = length;
23022 if (typeof len === 'undefined') {
23023 len = value.byteLength - offset;
23024 }
23025 if (offset >= value.byteLength) {
23026 throw new RangeError('\'offset\' is out of bounds');
23027 }
23028 if (len > value.byteLength - offset) {
23029 throw new RangeError('\'length\' is out of bounds');
23030 }
23031 return new Buffer(value.slice(offset, offset + len));
23032 }
23033 if (Buffer.isBuffer(value)) {
23034 var out = new Buffer(value.length);
23035 value.copy(out, 0, 0, value.length);
23036 return out;
23037 }
23038 if (value) {
23039 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
23040 return new Buffer(value);
23041 }
23042 if (value.type === 'Buffer' && Array.isArray(value.data)) {
23043 return new Buffer(value.data);
23044 }
23045 }
23046
23047 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
23048 }
23049 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
23050 if (typeof Buffer.allocUnsafeSlow === 'function') {
23051 return Buffer.allocUnsafeSlow(size);
23052 }
23053 if (typeof size !== 'number') {
23054 throw new TypeError('size must be a number');
23055 }
23056 if (size >= MAX_LEN) {
23057 throw new RangeError('size is too large');
23058 }
23059 return new SlowBuffer(size);
23060 }
23061
23062 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23063 },{"buffer":5}],5:[function(require,module,exports){
23064 /*!
23065 * The buffer module from node.js, for the browser.
23066 *
23067 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
23068 * @license MIT
23069 */
23070 /* eslint-disable no-proto */
23071
23072 'use strict'
23073
23074 var base64 = require('base64-js')
23075 var ieee754 = require('ieee754')
23076
23077 exports.Buffer = Buffer
23078 exports.SlowBuffer = SlowBuffer
23079 exports.INSPECT_MAX_BYTES = 50
23080
23081 var K_MAX_LENGTH = 0x7fffffff
23082 exports.kMaxLength = K_MAX_LENGTH
23083
23084 /**
23085 * If `Buffer.TYPED_ARRAY_SUPPORT`:
23086 * === true Use Uint8Array implementation (fastest)
23087 * === false Print warning and recommend using `buffer` v4.x which has an Object
23088 * implementation (most compatible, even IE6)
23089 *
23090 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
23091 * Opera 11.6+, iOS 4.2+.
23092 *
23093 * We report that the browser does not support typed arrays if the are not subclassable
23094 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
23095 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
23096 * for __proto__ and has a buggy typed array implementation.
23097 */
23098 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
23099
23100 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
23101 typeof console.error === 'function') {
23102 console.error(
23103 'This browser lacks typed array (Uint8Array) support which is required by ' +
23104 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
23105 )
23106 }
23107
23108 function typedArraySupport () {
23109 // Can typed array instances can be augmented?
23110 try {
23111 var arr = new Uint8Array(1)
23112 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
23113 return arr.foo() === 42
23114 } catch (e) {
23115 return false
23116 }
23117 }
23118
23119 function createBuffer (length) {
23120 if (length > K_MAX_LENGTH) {
23121 throw new RangeError('Invalid typed array length')
23122 }
23123 // Return an augmented `Uint8Array` instance
23124 var buf = new Uint8Array(length)
23125 buf.__proto__ = Buffer.prototype
23126 return buf
23127 }
23128
23129 /**
23130 * The Buffer constructor returns instances of `Uint8Array` that have their
23131 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
23132 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
23133 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
23134 * returns a single octet.
23135 *
23136 * The `Uint8Array` prototype remains unmodified.
23137 */
23138
23139 function Buffer (arg, encodingOrOffset, length) {
23140 // Common case.
23141 if (typeof arg === 'number') {
23142 if (typeof encodingOrOffset === 'string') {
23143 throw new Error(
23144 'If encoding is specified then the first argument must be a string'
23145 )
23146 }
23147 return allocUnsafe(arg)
23148 }
23149 return from(arg, encodingOrOffset, length)
23150 }
23151
23152 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
23153 if (typeof Symbol !== 'undefined' && Symbol.species &&
23154 Buffer[Symbol.species] === Buffer) {
23155 Object.defineProperty(Buffer, Symbol.species, {
23156 value: null,
23157 configurable: true,
23158 enumerable: false,
23159 writable: false
23160 })
23161 }
23162
23163 Buffer.poolSize = 8192 // not used by this implementation
23164
23165 function from (value, encodingOrOffset, length) {
23166 if (typeof value === 'number') {
23167 throw new TypeError('"value" argument must not be a number')
23168 }
23169
23170 if (value instanceof ArrayBuffer) {
23171 return fromArrayBuffer(value, encodingOrOffset, length)
23172 }
23173
23174 if (typeof value === 'string') {
23175 return fromString(value, encodingOrOffset)
23176 }
23177
23178 return fromObject(value)
23179 }
23180
23181 /**
23182 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
23183 * if value is a number.
23184 * Buffer.from(str[, encoding])
23185 * Buffer.from(array)
23186 * Buffer.from(buffer)
23187 * Buffer.from(arrayBuffer[, byteOffset[, length]])
23188 **/
23189 Buffer.from = function (value, encodingOrOffset, length) {
23190 return from(value, encodingOrOffset, length)
23191 }
23192
23193 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
23194 // https://github.com/feross/buffer/pull/148
23195 Buffer.prototype.__proto__ = Uint8Array.prototype
23196 Buffer.__proto__ = Uint8Array
23197
23198 function assertSize (size) {
23199 if (typeof size !== 'number') {
23200 throw new TypeError('"size" argument must be a number')
23201 } else if (size < 0) {
23202 throw new RangeError('"size" argument must not be negative')
23203 }
23204 }
23205
23206 function alloc (size, fill, encoding) {
23207 assertSize(size)
23208 if (size <= 0) {
23209 return createBuffer(size)
23210 }
23211 if (fill !== undefined) {
23212 // Only pay attention to encoding if it's a string. This
23213 // prevents accidentally sending in a number that would
23214 // be interpretted as a start offset.
23215 return typeof encoding === 'string'
23216 ? createBuffer(size).fill(fill, encoding)
23217 : createBuffer(size).fill(fill)
23218 }
23219 return createBuffer(size)
23220 }
23221
23222 /**
23223 * Creates a new filled Buffer instance.
23224 * alloc(size[, fill[, encoding]])
23225 **/
23226 Buffer.alloc = function (size, fill, encoding) {
23227 return alloc(size, fill, encoding)
23228 }
23229
23230 function allocUnsafe (size) {
23231 assertSize(size)
23232 return createBuffer(size < 0 ? 0 : checked(size) | 0)
23233 }
23234
23235 /**
23236 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
23237 * */
23238 Buffer.allocUnsafe = function (size) {
23239 return allocUnsafe(size)
23240 }
23241 /**
23242 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
23243 */
23244 Buffer.allocUnsafeSlow = function (size) {
23245 return allocUnsafe(size)
23246 }
23247
23248 function fromString (string, encoding) {
23249 if (typeof encoding !== 'string' || encoding === '') {
23250 encoding = 'utf8'
23251 }
23252
23253 if (!Buffer.isEncoding(encoding)) {
23254 throw new TypeError('"encoding" must be a valid string encoding')
23255 }
23256
23257 var length = byteLength(string, encoding) | 0
23258 var buf = createBuffer(length)
23259
23260 var actual = buf.write(string, encoding)
23261
23262 if (actual !== length) {
23263 // Writing a hex string, for example, that contains invalid characters will
23264 // cause everything after the first invalid character to be ignored. (e.g.
23265 // 'abxxcd' will be treated as 'ab')
23266 buf = buf.slice(0, actual)
23267 }
23268
23269 return buf
23270 }
23271
23272 function fromArrayLike (array) {
23273 var length = array.length < 0 ? 0 : checked(array.length) | 0
23274 var buf = createBuffer(length)
23275 for (var i = 0; i < length; i += 1) {
23276 buf[i] = array[i] & 255
23277 }
23278 return buf
23279 }
23280
23281 function fromArrayBuffer (array, byteOffset, length) {
23282 if (byteOffset < 0 || array.byteLength < byteOffset) {
23283 throw new RangeError('\'offset\' is out of bounds')
23284 }
23285
23286 if (array.byteLength < byteOffset + (length || 0)) {
23287 throw new RangeError('\'length\' is out of bounds')
23288 }
23289
23290 var buf
23291 if (byteOffset === undefined && length === undefined) {
23292 buf = new Uint8Array(array)
23293 } else if (length === undefined) {
23294 buf = new Uint8Array(array, byteOffset)
23295 } else {
23296 buf = new Uint8Array(array, byteOffset, length)
23297 }
23298
23299 // Return an augmented `Uint8Array` instance
23300 buf.__proto__ = Buffer.prototype
23301 return buf
23302 }
23303
23304 function fromObject (obj) {
23305 if (Buffer.isBuffer(obj)) {
23306 var len = checked(obj.length) | 0
23307 var buf = createBuffer(len)
23308
23309 if (buf.length === 0) {
23310 return buf
23311 }
23312
23313 obj.copy(buf, 0, 0, len)
23314 return buf
23315 }
23316
23317 if (obj) {
23318 if (ArrayBuffer.isView(obj) || 'length' in obj) {
23319 if (typeof obj.length !== 'number' || isnan(obj.length)) {
23320 return createBuffer(0)
23321 }
23322 return fromArrayLike(obj)
23323 }
23324
23325 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
23326 return fromArrayLike(obj.data)
23327 }
23328 }
23329
23330 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
23331 }
23332
23333 function checked (length) {
23334 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
23335 // length is NaN (which is otherwise coerced to zero.)
23336 if (length >= K_MAX_LENGTH) {
23337 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
23338 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
23339 }
23340 return length | 0
23341 }
23342
23343 function SlowBuffer (length) {
23344 if (+length != length) { // eslint-disable-line eqeqeq
23345 length = 0
23346 }
23347 return Buffer.alloc(+length)
23348 }
23349
23350 Buffer.isBuffer = function isBuffer (b) {
23351 return b != null && b._isBuffer === true
23352 }
23353
23354 Buffer.compare = function compare (a, b) {
23355 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
23356 throw new TypeError('Arguments must be Buffers')
23357 }
23358
23359 if (a === b) return 0
23360
23361 var x = a.length
23362 var y = b.length
23363
23364 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
23365 if (a[i] !== b[i]) {
23366 x = a[i]
23367 y = b[i]
23368 break
23369 }
23370 }
23371
23372 if (x < y) return -1
23373 if (y < x) return 1
23374 return 0
23375 }
23376
23377 Buffer.isEncoding = function isEncoding (encoding) {
23378 switch (String(encoding).toLowerCase()) {
23379 case 'hex':
23380 case 'utf8':
23381 case 'utf-8':
23382 case 'ascii':
23383 case 'latin1':
23384 case 'binary':
23385 case 'base64':
23386 case 'ucs2':
23387 case 'ucs-2':
23388 case 'utf16le':
23389 case 'utf-16le':
23390 return true
23391 default:
23392 return false
23393 }
23394 }
23395
23396 Buffer.concat = function concat (list, length) {
23397 if (!Array.isArray(list)) {
23398 throw new TypeError('"list" argument must be an Array of Buffers')
23399 }
23400
23401 if (list.length === 0) {
23402 return Buffer.alloc(0)
23403 }
23404
23405 var i
23406 if (length === undefined) {
23407 length = 0
23408 for (i = 0; i < list.length; ++i) {
23409 length += list[i].length
23410 }
23411 }
23412
23413 var buffer = Buffer.allocUnsafe(length)
23414 var pos = 0
23415 for (i = 0; i < list.length; ++i) {
23416 var buf = list[i]
23417 if (!Buffer.isBuffer(buf)) {
23418 throw new TypeError('"list" argument must be an Array of Buffers')
23419 }
23420 buf.copy(buffer, pos)
23421 pos += buf.length
23422 }
23423 return buffer
23424 }
23425
23426 function byteLength (string, encoding) {
23427 if (Buffer.isBuffer(string)) {
23428 return string.length
23429 }
23430 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
23431 return string.byteLength
23432 }
23433 if (typeof string !== 'string') {
23434 string = '' + string
23435 }
23436
23437 var len = string.length
23438 if (len === 0) return 0
23439
23440 // Use a for loop to avoid recursion
23441 var loweredCase = false
23442 for (;;) {
23443 switch (encoding) {
23444 case 'ascii':
23445 case 'latin1':
23446 case 'binary':
23447 return len
23448 case 'utf8':
23449 case 'utf-8':
23450 case undefined:
23451 return utf8ToBytes(string).length
23452 case 'ucs2':
23453 case 'ucs-2':
23454 case 'utf16le':
23455 case 'utf-16le':
23456 return len * 2
23457 case 'hex':
23458 return len >>> 1
23459 case 'base64':
23460 return base64ToBytes(string).length
23461 default:
23462 if (loweredCase) return utf8ToBytes(string).length // assume utf8
23463 encoding = ('' + encoding).toLowerCase()
23464 loweredCase = true
23465 }
23466 }
23467 }
23468 Buffer.byteLength = byteLength
23469
23470 function slowToString (encoding, start, end) {
23471 var loweredCase = false
23472
23473 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
23474 // property of a typed array.
23475
23476 // This behaves neither like String nor Uint8Array in that we set start/end
23477 // to their upper/lower bounds if the value passed is out of range.
23478 // undefined is handled specially as per ECMA-262 6th Edition,
23479 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
23480 if (start === undefined || start < 0) {
23481 start = 0
23482 }
23483 // Return early if start > this.length. Done here to prevent potential uint32
23484 // coercion fail below.
23485 if (start > this.length) {
23486 return ''
23487 }
23488
23489 if (end === undefined || end > this.length) {
23490 end = this.length
23491 }
23492
23493 if (end <= 0) {
23494 return ''
23495 }
23496
23497 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
23498 end >>>= 0
23499 start >>>= 0
23500
23501 if (end <= start) {
23502 return ''
23503 }
23504
23505 if (!encoding) encoding = 'utf8'
23506
23507 while (true) {
23508 switch (encoding) {
23509 case 'hex':
23510 return hexSlice(this, start, end)
23511
23512 case 'utf8':
23513 case 'utf-8':
23514 return utf8Slice(this, start, end)
23515
23516 case 'ascii':
23517 return asciiSlice(this, start, end)
23518
23519 case 'latin1':
23520 case 'binary':
23521 return latin1Slice(this, start, end)
23522
23523 case 'base64':
23524 return base64Slice(this, start, end)
23525
23526 case 'ucs2':
23527 case 'ucs-2':
23528 case 'utf16le':
23529 case 'utf-16le':
23530 return utf16leSlice(this, start, end)
23531
23532 default:
23533 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23534 encoding = (encoding + '').toLowerCase()
23535 loweredCase = true
23536 }
23537 }
23538 }
23539
23540 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
23541 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
23542 // reliably in a browserify context because there could be multiple different
23543 // copies of the 'buffer' package in use. This method works even for Buffer
23544 // instances that were created from another copy of the `buffer` package.
23545 // See: https://github.com/feross/buffer/issues/154
23546 Buffer.prototype._isBuffer = true
23547
23548 function swap (b, n, m) {
23549 var i = b[n]
23550 b[n] = b[m]
23551 b[m] = i
23552 }
23553
23554 Buffer.prototype.swap16 = function swap16 () {
23555 var len = this.length
23556 if (len % 2 !== 0) {
23557 throw new RangeError('Buffer size must be a multiple of 16-bits')
23558 }
23559 for (var i = 0; i < len; i += 2) {
23560 swap(this, i, i + 1)
23561 }
23562 return this
23563 }
23564
23565 Buffer.prototype.swap32 = function swap32 () {
23566 var len = this.length
23567 if (len % 4 !== 0) {
23568 throw new RangeError('Buffer size must be a multiple of 32-bits')
23569 }
23570 for (var i = 0; i < len; i += 4) {
23571 swap(this, i, i + 3)
23572 swap(this, i + 1, i + 2)
23573 }
23574 return this
23575 }
23576
23577 Buffer.prototype.swap64 = function swap64 () {
23578 var len = this.length
23579 if (len % 8 !== 0) {
23580 throw new RangeError('Buffer size must be a multiple of 64-bits')
23581 }
23582 for (var i = 0; i < len; i += 8) {
23583 swap(this, i, i + 7)
23584 swap(this, i + 1, i + 6)
23585 swap(this, i + 2, i + 5)
23586 swap(this, i + 3, i + 4)
23587 }
23588 return this
23589 }
23590
23591 Buffer.prototype.toString = function toString () {
23592 var length = this.length
23593 if (length === 0) return ''
23594 if (arguments.length === 0) return utf8Slice(this, 0, length)
23595 return slowToString.apply(this, arguments)
23596 }
23597
23598 Buffer.prototype.equals = function equals (b) {
23599 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
23600 if (this === b) return true
23601 return Buffer.compare(this, b) === 0
23602 }
23603
23604 Buffer.prototype.inspect = function inspect () {
23605 var str = ''
23606 var max = exports.INSPECT_MAX_BYTES
23607 if (this.length > 0) {
23608 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
23609 if (this.length > max) str += ' ... '
23610 }
23611 return '<Buffer ' + str + '>'
23612 }
23613
23614 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
23615 if (!Buffer.isBuffer(target)) {
23616 throw new TypeError('Argument must be a Buffer')
23617 }
23618
23619 if (start === undefined) {
23620 start = 0
23621 }
23622 if (end === undefined) {
23623 end = target ? target.length : 0
23624 }
23625 if (thisStart === undefined) {
23626 thisStart = 0
23627 }
23628 if (thisEnd === undefined) {
23629 thisEnd = this.length
23630 }
23631
23632 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
23633 throw new RangeError('out of range index')
23634 }
23635
23636 if (thisStart >= thisEnd && start >= end) {
23637 return 0
23638 }
23639 if (thisStart >= thisEnd) {
23640 return -1
23641 }
23642 if (start >= end) {
23643 return 1
23644 }
23645
23646 start >>>= 0
23647 end >>>= 0
23648 thisStart >>>= 0
23649 thisEnd >>>= 0
23650
23651 if (this === target) return 0
23652
23653 var x = thisEnd - thisStart
23654 var y = end - start
23655 var len = Math.min(x, y)
23656
23657 var thisCopy = this.slice(thisStart, thisEnd)
23658 var targetCopy = target.slice(start, end)
23659
23660 for (var i = 0; i < len; ++i) {
23661 if (thisCopy[i] !== targetCopy[i]) {
23662 x = thisCopy[i]
23663 y = targetCopy[i]
23664 break
23665 }
23666 }
23667
23668 if (x < y) return -1
23669 if (y < x) return 1
23670 return 0
23671 }
23672
23673 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
23674 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
23675 //
23676 // Arguments:
23677 // - buffer - a Buffer to search
23678 // - val - a string, Buffer, or number
23679 // - byteOffset - an index into `buffer`; will be clamped to an int32
23680 // - encoding - an optional encoding, relevant is val is a string
23681 // - dir - true for indexOf, false for lastIndexOf
23682 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
23683 // Empty buffer means no match
23684 if (buffer.length === 0) return -1
23685
23686 // Normalize byteOffset
23687 if (typeof byteOffset === 'string') {
23688 encoding = byteOffset
23689 byteOffset = 0
23690 } else if (byteOffset > 0x7fffffff) {
23691 byteOffset = 0x7fffffff
23692 } else if (byteOffset < -0x80000000) {
23693 byteOffset = -0x80000000
23694 }
23695 byteOffset = +byteOffset // Coerce to Number.
23696 if (isNaN(byteOffset)) {
23697 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
23698 byteOffset = dir ? 0 : (buffer.length - 1)
23699 }
23700
23701 // Normalize byteOffset: negative offsets start from the end of the buffer
23702 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
23703 if (byteOffset >= buffer.length) {
23704 if (dir) return -1
23705 else byteOffset = buffer.length - 1
23706 } else if (byteOffset < 0) {
23707 if (dir) byteOffset = 0
23708 else return -1
23709 }
23710
23711 // Normalize val
23712 if (typeof val === 'string') {
23713 val = Buffer.from(val, encoding)
23714 }
23715
23716 // Finally, search either indexOf (if dir is true) or lastIndexOf
23717 if (Buffer.isBuffer(val)) {
23718 // Special case: looking for empty string/buffer always fails
23719 if (val.length === 0) {
23720 return -1
23721 }
23722 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
23723 } else if (typeof val === 'number') {
23724 val = val & 0xFF // Search for a byte value [0-255]
23725 if (typeof Uint8Array.prototype.indexOf === 'function') {
23726 if (dir) {
23727 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
23728 } else {
23729 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
23730 }
23731 }
23732 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
23733 }
23734
23735 throw new TypeError('val must be string, number or Buffer')
23736 }
23737
23738 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
23739 var indexSize = 1
23740 var arrLength = arr.length
23741 var valLength = val.length
23742
23743 if (encoding !== undefined) {
23744 encoding = String(encoding).toLowerCase()
23745 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
23746 encoding === 'utf16le' || encoding === 'utf-16le') {
23747 if (arr.length < 2 || val.length < 2) {
23748 return -1
23749 }
23750 indexSize = 2
23751 arrLength /= 2
23752 valLength /= 2
23753 byteOffset /= 2
23754 }
23755 }
23756
23757 function read (buf, i) {
23758 if (indexSize === 1) {
23759 return buf[i]
23760 } else {
23761 return buf.readUInt16BE(i * indexSize)
23762 }
23763 }
23764
23765 var i
23766 if (dir) {
23767 var foundIndex = -1
23768 for (i = byteOffset; i < arrLength; i++) {
23769 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
23770 if (foundIndex === -1) foundIndex = i
23771 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
23772 } else {
23773 if (foundIndex !== -1) i -= i - foundIndex
23774 foundIndex = -1
23775 }
23776 }
23777 } else {
23778 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
23779 for (i = byteOffset; i >= 0; i--) {
23780 var found = true
23781 for (var j = 0; j < valLength; j++) {
23782 if (read(arr, i + j) !== read(val, j)) {
23783 found = false
23784 break
23785 }
23786 }
23787 if (found) return i
23788 }
23789 }
23790
23791 return -1
23792 }
23793
23794 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
23795 return this.indexOf(val, byteOffset, encoding) !== -1
23796 }
23797
23798 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
23799 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
23800 }
23801
23802 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
23803 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
23804 }
23805
23806 function hexWrite (buf, string, offset, length) {
23807 offset = Number(offset) || 0
23808 var remaining = buf.length - offset
23809 if (!length) {
23810 length = remaining
23811 } else {
23812 length = Number(length)
23813 if (length > remaining) {
23814 length = remaining
23815 }
23816 }
23817
23818 // must be an even number of digits
23819 var strLen = string.length
23820 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
23821
23822 if (length > strLen / 2) {
23823 length = strLen / 2
23824 }
23825 for (var i = 0; i < length; ++i) {
23826 var parsed = parseInt(string.substr(i * 2, 2), 16)
23827 if (isNaN(parsed)) return i
23828 buf[offset + i] = parsed
23829 }
23830 return i
23831 }
23832
23833 function utf8Write (buf, string, offset, length) {
23834 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
23835 }
23836
23837 function asciiWrite (buf, string, offset, length) {
23838 return blitBuffer(asciiToBytes(string), buf, offset, length)
23839 }
23840
23841 function latin1Write (buf, string, offset, length) {
23842 return asciiWrite(buf, string, offset, length)
23843 }
23844
23845 function base64Write (buf, string, offset, length) {
23846 return blitBuffer(base64ToBytes(string), buf, offset, length)
23847 }
23848
23849 function ucs2Write (buf, string, offset, length) {
23850 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
23851 }
23852
23853 Buffer.prototype.write = function write (string, offset, length, encoding) {
23854 // Buffer#write(string)
23855 if (offset === undefined) {
23856 encoding = 'utf8'
23857 length = this.length
23858 offset = 0
23859 // Buffer#write(string, encoding)
23860 } else if (length === undefined && typeof offset === 'string') {
23861 encoding = offset
23862 length = this.length
23863 offset = 0
23864 // Buffer#write(string, offset[, length][, encoding])
23865 } else if (isFinite(offset)) {
23866 offset = offset >>> 0
23867 if (isFinite(length)) {
23868 length = length >>> 0
23869 if (encoding === undefined) encoding = 'utf8'
23870 } else {
23871 encoding = length
23872 length = undefined
23873 }
23874 } else {
23875 throw new Error(
23876 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
23877 )
23878 }
23879
23880 var remaining = this.length - offset
23881 if (length === undefined || length > remaining) length = remaining
23882
23883 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
23884 throw new RangeError('Attempt to write outside buffer bounds')
23885 }
23886
23887 if (!encoding) encoding = 'utf8'
23888
23889 var loweredCase = false
23890 for (;;) {
23891 switch (encoding) {
23892 case 'hex':
23893 return hexWrite(this, string, offset, length)
23894
23895 case 'utf8':
23896 case 'utf-8':
23897 return utf8Write(this, string, offset, length)
23898
23899 case 'ascii':
23900 return asciiWrite(this, string, offset, length)
23901
23902 case 'latin1':
23903 case 'binary':
23904 return latin1Write(this, string, offset, length)
23905
23906 case 'base64':
23907 // Warning: maxLength not taken into account in base64Write
23908 return base64Write(this, string, offset, length)
23909
23910 case 'ucs2':
23911 case 'ucs-2':
23912 case 'utf16le':
23913 case 'utf-16le':
23914 return ucs2Write(this, string, offset, length)
23915
23916 default:
23917 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23918 encoding = ('' + encoding).toLowerCase()
23919 loweredCase = true
23920 }
23921 }
23922 }
23923
23924 Buffer.prototype.toJSON = function toJSON () {
23925 return {
23926 type: 'Buffer',
23927 data: Array.prototype.slice.call(this._arr || this, 0)
23928 }
23929 }
23930
23931 function base64Slice (buf, start, end) {
23932 if (start === 0 && end === buf.length) {
23933 return base64.fromByteArray(buf)
23934 } else {
23935 return base64.fromByteArray(buf.slice(start, end))
23936 }
23937 }
23938
23939 function utf8Slice (buf, start, end) {
23940 end = Math.min(buf.length, end)
23941 var res = []
23942
23943 var i = start
23944 while (i < end) {
23945 var firstByte = buf[i]
23946 var codePoint = null
23947 var bytesPerSequence = (firstByte > 0xEF) ? 4
23948 : (firstByte > 0xDF) ? 3
23949 : (firstByte > 0xBF) ? 2
23950 : 1
23951
23952 if (i + bytesPerSequence <= end) {
23953 var secondByte, thirdByte, fourthByte, tempCodePoint
23954
23955 switch (bytesPerSequence) {
23956 case 1:
23957 if (firstByte < 0x80) {
23958 codePoint = firstByte
23959 }
23960 break
23961 case 2:
23962 secondByte = buf[i + 1]
23963 if ((secondByte & 0xC0) === 0x80) {
23964 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
23965 if (tempCodePoint > 0x7F) {
23966 codePoint = tempCodePoint
23967 }
23968 }
23969 break
23970 case 3:
23971 secondByte = buf[i + 1]
23972 thirdByte = buf[i + 2]
23973 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
23974 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
23975 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
23976 codePoint = tempCodePoint
23977 }
23978 }
23979 break
23980 case 4:
23981 secondByte = buf[i + 1]
23982 thirdByte = buf[i + 2]
23983 fourthByte = buf[i + 3]
23984 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
23985 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
23986 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
23987 codePoint = tempCodePoint
23988 }
23989 }
23990 }
23991 }
23992
23993 if (codePoint === null) {
23994 // we did not generate a valid codePoint so insert a
23995 // replacement char (U+FFFD) and advance only 1 byte
23996 codePoint = 0xFFFD
23997 bytesPerSequence = 1
23998 } else if (codePoint > 0xFFFF) {
23999 // encode to utf16 (surrogate pair dance)
24000 codePoint -= 0x10000
24001 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
24002 codePoint = 0xDC00 | codePoint & 0x3FF
24003 }
24004
24005 res.push(codePoint)
24006 i += bytesPerSequence
24007 }
24008
24009 return decodeCodePointsArray(res)
24010 }
24011
24012 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
24013 // the lowest limit is Chrome, with 0x10000 args.
24014 // We go 1 magnitude less, for safety
24015 var MAX_ARGUMENTS_LENGTH = 0x1000
24016
24017 function decodeCodePointsArray (codePoints) {
24018 var len = codePoints.length
24019 if (len <= MAX_ARGUMENTS_LENGTH) {
24020 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
24021 }
24022
24023 // Decode in chunks to avoid "call stack size exceeded".
24024 var res = ''
24025 var i = 0
24026 while (i < len) {
24027 res += String.fromCharCode.apply(
24028 String,
24029 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
24030 )
24031 }
24032 return res
24033 }
24034
24035 function asciiSlice (buf, start, end) {
24036 var ret = ''
24037 end = Math.min(buf.length, end)
24038
24039 for (var i = start; i < end; ++i) {
24040 ret += String.fromCharCode(buf[i] & 0x7F)
24041 }
24042 return ret
24043 }
24044
24045 function latin1Slice (buf, start, end) {
24046 var ret = ''
24047 end = Math.min(buf.length, end)
24048
24049 for (var i = start; i < end; ++i) {
24050 ret += String.fromCharCode(buf[i])
24051 }
24052 return ret
24053 }
24054
24055 function hexSlice (buf, start, end) {
24056 var len = buf.length
24057
24058 if (!start || start < 0) start = 0
24059 if (!end || end < 0 || end > len) end = len
24060
24061 var out = ''
24062 for (var i = start; i < end; ++i) {
24063 out += toHex(buf[i])
24064 }
24065 return out
24066 }
24067
24068 function utf16leSlice (buf, start, end) {
24069 var bytes = buf.slice(start, end)
24070 var res = ''
24071 for (var i = 0; i < bytes.length; i += 2) {
24072 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
24073 }
24074 return res
24075 }
24076
24077 Buffer.prototype.slice = function slice (start, end) {
24078 var len = this.length
24079 start = ~~start
24080 end = end === undefined ? len : ~~end
24081
24082 if (start < 0) {
24083 start += len
24084 if (start < 0) start = 0
24085 } else if (start > len) {
24086 start = len
24087 }
24088
24089 if (end < 0) {
24090 end += len
24091 if (end < 0) end = 0
24092 } else if (end > len) {
24093 end = len
24094 }
24095
24096 if (end < start) end = start
24097
24098 var newBuf = this.subarray(start, end)
24099 // Return an augmented `Uint8Array` instance
24100 newBuf.__proto__ = Buffer.prototype
24101 return newBuf
24102 }
24103
24104 /*
24105 * Need to make sure that buffer isn't trying to write out of bounds.
24106 */
24107 function checkOffset (offset, ext, length) {
24108 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
24109 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
24110 }
24111
24112 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
24113 offset = offset >>> 0
24114 byteLength = byteLength >>> 0
24115 if (!noAssert) checkOffset(offset, byteLength, this.length)
24116
24117 var val = this[offset]
24118 var mul = 1
24119 var i = 0
24120 while (++i < byteLength && (mul *= 0x100)) {
24121 val += this[offset + i] * mul
24122 }
24123
24124 return val
24125 }
24126
24127 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
24128 offset = offset >>> 0
24129 byteLength = byteLength >>> 0
24130 if (!noAssert) {
24131 checkOffset(offset, byteLength, this.length)
24132 }
24133
24134 var val = this[offset + --byteLength]
24135 var mul = 1
24136 while (byteLength > 0 && (mul *= 0x100)) {
24137 val += this[offset + --byteLength] * mul
24138 }
24139
24140 return val
24141 }
24142
24143 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
24144 offset = offset >>> 0
24145 if (!noAssert) checkOffset(offset, 1, this.length)
24146 return this[offset]
24147 }
24148
24149 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
24150 offset = offset >>> 0
24151 if (!noAssert) checkOffset(offset, 2, this.length)
24152 return this[offset] | (this[offset + 1] << 8)
24153 }
24154
24155 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
24156 offset = offset >>> 0
24157 if (!noAssert) checkOffset(offset, 2, this.length)
24158 return (this[offset] << 8) | this[offset + 1]
24159 }
24160
24161 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
24162 offset = offset >>> 0
24163 if (!noAssert) checkOffset(offset, 4, this.length)
24164
24165 return ((this[offset]) |
24166 (this[offset + 1] << 8) |
24167 (this[offset + 2] << 16)) +
24168 (this[offset + 3] * 0x1000000)
24169 }
24170
24171 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
24172 offset = offset >>> 0
24173 if (!noAssert) checkOffset(offset, 4, this.length)
24174
24175 return (this[offset] * 0x1000000) +
24176 ((this[offset + 1] << 16) |
24177 (this[offset + 2] << 8) |
24178 this[offset + 3])
24179 }
24180
24181 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
24182 offset = offset >>> 0
24183 byteLength = byteLength >>> 0
24184 if (!noAssert) checkOffset(offset, byteLength, this.length)
24185
24186 var val = this[offset]
24187 var mul = 1
24188 var i = 0
24189 while (++i < byteLength && (mul *= 0x100)) {
24190 val += this[offset + i] * mul
24191 }
24192 mul *= 0x80
24193
24194 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24195
24196 return val
24197 }
24198
24199 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
24200 offset = offset >>> 0
24201 byteLength = byteLength >>> 0
24202 if (!noAssert) checkOffset(offset, byteLength, this.length)
24203
24204 var i = byteLength
24205 var mul = 1
24206 var val = this[offset + --i]
24207 while (i > 0 && (mul *= 0x100)) {
24208 val += this[offset + --i] * mul
24209 }
24210 mul *= 0x80
24211
24212 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24213
24214 return val
24215 }
24216
24217 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
24218 offset = offset >>> 0
24219 if (!noAssert) checkOffset(offset, 1, this.length)
24220 if (!(this[offset] & 0x80)) return (this[offset])
24221 return ((0xff - this[offset] + 1) * -1)
24222 }
24223
24224 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
24225 offset = offset >>> 0
24226 if (!noAssert) checkOffset(offset, 2, this.length)
24227 var val = this[offset] | (this[offset + 1] << 8)
24228 return (val & 0x8000) ? val | 0xFFFF0000 : val
24229 }
24230
24231 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
24232 offset = offset >>> 0
24233 if (!noAssert) checkOffset(offset, 2, this.length)
24234 var val = this[offset + 1] | (this[offset] << 8)
24235 return (val & 0x8000) ? val | 0xFFFF0000 : val
24236 }
24237
24238 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
24239 offset = offset >>> 0
24240 if (!noAssert) checkOffset(offset, 4, this.length)
24241
24242 return (this[offset]) |
24243 (this[offset + 1] << 8) |
24244 (this[offset + 2] << 16) |
24245 (this[offset + 3] << 24)
24246 }
24247
24248 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
24249 offset = offset >>> 0
24250 if (!noAssert) checkOffset(offset, 4, this.length)
24251
24252 return (this[offset] << 24) |
24253 (this[offset + 1] << 16) |
24254 (this[offset + 2] << 8) |
24255 (this[offset + 3])
24256 }
24257
24258 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
24259 offset = offset >>> 0
24260 if (!noAssert) checkOffset(offset, 4, this.length)
24261 return ieee754.read(this, offset, true, 23, 4)
24262 }
24263
24264 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
24265 offset = offset >>> 0
24266 if (!noAssert) checkOffset(offset, 4, this.length)
24267 return ieee754.read(this, offset, false, 23, 4)
24268 }
24269
24270 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
24271 offset = offset >>> 0
24272 if (!noAssert) checkOffset(offset, 8, this.length)
24273 return ieee754.read(this, offset, true, 52, 8)
24274 }
24275
24276 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
24277 offset = offset >>> 0
24278 if (!noAssert) checkOffset(offset, 8, this.length)
24279 return ieee754.read(this, offset, false, 52, 8)
24280 }
24281
24282 function checkInt (buf, value, offset, ext, max, min) {
24283 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
24284 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
24285 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24286 }
24287
24288 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
24289 value = +value
24290 offset = offset >>> 0
24291 byteLength = byteLength >>> 0
24292 if (!noAssert) {
24293 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24294 checkInt(this, value, offset, byteLength, maxBytes, 0)
24295 }
24296
24297 var mul = 1
24298 var i = 0
24299 this[offset] = value & 0xFF
24300 while (++i < byteLength && (mul *= 0x100)) {
24301 this[offset + i] = (value / mul) & 0xFF
24302 }
24303
24304 return offset + byteLength
24305 }
24306
24307 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
24308 value = +value
24309 offset = offset >>> 0
24310 byteLength = byteLength >>> 0
24311 if (!noAssert) {
24312 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24313 checkInt(this, value, offset, byteLength, maxBytes, 0)
24314 }
24315
24316 var i = byteLength - 1
24317 var mul = 1
24318 this[offset + i] = value & 0xFF
24319 while (--i >= 0 && (mul *= 0x100)) {
24320 this[offset + i] = (value / mul) & 0xFF
24321 }
24322
24323 return offset + byteLength
24324 }
24325
24326 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
24327 value = +value
24328 offset = offset >>> 0
24329 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
24330 this[offset] = (value & 0xff)
24331 return offset + 1
24332 }
24333
24334 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
24335 value = +value
24336 offset = offset >>> 0
24337 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24338 this[offset] = (value & 0xff)
24339 this[offset + 1] = (value >>> 8)
24340 return offset + 2
24341 }
24342
24343 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
24344 value = +value
24345 offset = offset >>> 0
24346 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24347 this[offset] = (value >>> 8)
24348 this[offset + 1] = (value & 0xff)
24349 return offset + 2
24350 }
24351
24352 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
24353 value = +value
24354 offset = offset >>> 0
24355 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24356 this[offset + 3] = (value >>> 24)
24357 this[offset + 2] = (value >>> 16)
24358 this[offset + 1] = (value >>> 8)
24359 this[offset] = (value & 0xff)
24360 return offset + 4
24361 }
24362
24363 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
24364 value = +value
24365 offset = offset >>> 0
24366 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24367 this[offset] = (value >>> 24)
24368 this[offset + 1] = (value >>> 16)
24369 this[offset + 2] = (value >>> 8)
24370 this[offset + 3] = (value & 0xff)
24371 return offset + 4
24372 }
24373
24374 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
24375 value = +value
24376 offset = offset >>> 0
24377 if (!noAssert) {
24378 var limit = Math.pow(2, (8 * byteLength) - 1)
24379
24380 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24381 }
24382
24383 var i = 0
24384 var mul = 1
24385 var sub = 0
24386 this[offset] = value & 0xFF
24387 while (++i < byteLength && (mul *= 0x100)) {
24388 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
24389 sub = 1
24390 }
24391 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24392 }
24393
24394 return offset + byteLength
24395 }
24396
24397 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
24398 value = +value
24399 offset = offset >>> 0
24400 if (!noAssert) {
24401 var limit = Math.pow(2, (8 * byteLength) - 1)
24402
24403 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24404 }
24405
24406 var i = byteLength - 1
24407 var mul = 1
24408 var sub = 0
24409 this[offset + i] = value & 0xFF
24410 while (--i >= 0 && (mul *= 0x100)) {
24411 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
24412 sub = 1
24413 }
24414 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24415 }
24416
24417 return offset + byteLength
24418 }
24419
24420 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
24421 value = +value
24422 offset = offset >>> 0
24423 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
24424 if (value < 0) value = 0xff + value + 1
24425 this[offset] = (value & 0xff)
24426 return offset + 1
24427 }
24428
24429 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
24430 value = +value
24431 offset = offset >>> 0
24432 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24433 this[offset] = (value & 0xff)
24434 this[offset + 1] = (value >>> 8)
24435 return offset + 2
24436 }
24437
24438 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
24439 value = +value
24440 offset = offset >>> 0
24441 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24442 this[offset] = (value >>> 8)
24443 this[offset + 1] = (value & 0xff)
24444 return offset + 2
24445 }
24446
24447 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
24448 value = +value
24449 offset = offset >>> 0
24450 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24451 this[offset] = (value & 0xff)
24452 this[offset + 1] = (value >>> 8)
24453 this[offset + 2] = (value >>> 16)
24454 this[offset + 3] = (value >>> 24)
24455 return offset + 4
24456 }
24457
24458 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
24459 value = +value
24460 offset = offset >>> 0
24461 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24462 if (value < 0) value = 0xffffffff + value + 1
24463 this[offset] = (value >>> 24)
24464 this[offset + 1] = (value >>> 16)
24465 this[offset + 2] = (value >>> 8)
24466 this[offset + 3] = (value & 0xff)
24467 return offset + 4
24468 }
24469
24470 function checkIEEE754 (buf, value, offset, ext, max, min) {
24471 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24472 if (offset < 0) throw new RangeError('Index out of range')
24473 }
24474
24475 function writeFloat (buf, value, offset, littleEndian, noAssert) {
24476 value = +value
24477 offset = offset >>> 0
24478 if (!noAssert) {
24479 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
24480 }
24481 ieee754.write(buf, value, offset, littleEndian, 23, 4)
24482 return offset + 4
24483 }
24484
24485 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
24486 return writeFloat(this, value, offset, true, noAssert)
24487 }
24488
24489 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
24490 return writeFloat(this, value, offset, false, noAssert)
24491 }
24492
24493 function writeDouble (buf, value, offset, littleEndian, noAssert) {
24494 value = +value
24495 offset = offset >>> 0
24496 if (!noAssert) {
24497 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
24498 }
24499 ieee754.write(buf, value, offset, littleEndian, 52, 8)
24500 return offset + 8
24501 }
24502
24503 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
24504 return writeDouble(this, value, offset, true, noAssert)
24505 }
24506
24507 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
24508 return writeDouble(this, value, offset, false, noAssert)
24509 }
24510
24511 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
24512 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
24513 if (!start) start = 0
24514 if (!end && end !== 0) end = this.length
24515 if (targetStart >= target.length) targetStart = target.length
24516 if (!targetStart) targetStart = 0
24517 if (end > 0 && end < start) end = start
24518
24519 // Copy 0 bytes; we're done
24520 if (end === start) return 0
24521 if (target.length === 0 || this.length === 0) return 0
24522
24523 // Fatal error conditions
24524 if (targetStart < 0) {
24525 throw new RangeError('targetStart out of bounds')
24526 }
24527 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
24528 if (end < 0) throw new RangeError('sourceEnd out of bounds')
24529
24530 // Are we oob?
24531 if (end > this.length) end = this.length
24532 if (target.length - targetStart < end - start) {
24533 end = target.length - targetStart + start
24534 }
24535
24536 var len = end - start
24537 var i
24538
24539 if (this === target && start < targetStart && targetStart < end) {
24540 // descending copy from end
24541 for (i = len - 1; i >= 0; --i) {
24542 target[i + targetStart] = this[i + start]
24543 }
24544 } else if (len < 1000) {
24545 // ascending copy from start
24546 for (i = 0; i < len; ++i) {
24547 target[i + targetStart] = this[i + start]
24548 }
24549 } else {
24550 Uint8Array.prototype.set.call(
24551 target,
24552 this.subarray(start, start + len),
24553 targetStart
24554 )
24555 }
24556
24557 return len
24558 }
24559
24560 // Usage:
24561 // buffer.fill(number[, offset[, end]])
24562 // buffer.fill(buffer[, offset[, end]])
24563 // buffer.fill(string[, offset[, end]][, encoding])
24564 Buffer.prototype.fill = function fill (val, start, end, encoding) {
24565 // Handle string cases:
24566 if (typeof val === 'string') {
24567 if (typeof start === 'string') {
24568 encoding = start
24569 start = 0
24570 end = this.length
24571 } else if (typeof end === 'string') {
24572 encoding = end
24573 end = this.length
24574 }
24575 if (val.length === 1) {
24576 var code = val.charCodeAt(0)
24577 if (code < 256) {
24578 val = code
24579 }
24580 }
24581 if (encoding !== undefined && typeof encoding !== 'string') {
24582 throw new TypeError('encoding must be a string')
24583 }
24584 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
24585 throw new TypeError('Unknown encoding: ' + encoding)
24586 }
24587 } else if (typeof val === 'number') {
24588 val = val & 255
24589 }
24590
24591 // Invalid ranges are not set to a default, so can range check early.
24592 if (start < 0 || this.length < start || this.length < end) {
24593 throw new RangeError('Out of range index')
24594 }
24595
24596 if (end <= start) {
24597 return this
24598 }
24599
24600 start = start >>> 0
24601 end = end === undefined ? this.length : end >>> 0
24602
24603 if (!val) val = 0
24604
24605 var i
24606 if (typeof val === 'number') {
24607 for (i = start; i < end; ++i) {
24608 this[i] = val
24609 }
24610 } else {
24611 var bytes = Buffer.isBuffer(val)
24612 ? val
24613 : new Buffer(val, encoding)
24614 var len = bytes.length
24615 for (i = 0; i < end - start; ++i) {
24616 this[i + start] = bytes[i % len]
24617 }
24618 }
24619
24620 return this
24621 }
24622
24623 // HELPER FUNCTIONS
24624 // ================
24625
24626 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
24627
24628 function base64clean (str) {
24629 // Node strips out invalid characters like \n and \t from the string, base64-js does not
24630 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
24631 // Node converts strings with length < 2 to ''
24632 if (str.length < 2) return ''
24633 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
24634 while (str.length % 4 !== 0) {
24635 str = str + '='
24636 }
24637 return str
24638 }
24639
24640 function stringtrim (str) {
24641 if (str.trim) return str.trim()
24642 return str.replace(/^\s+|\s+$/g, '')
24643 }
24644
24645 function toHex (n) {
24646 if (n < 16) return '0' + n.toString(16)
24647 return n.toString(16)
24648 }
24649
24650 function utf8ToBytes (string, units) {
24651 units = units || Infinity
24652 var codePoint
24653 var length = string.length
24654 var leadSurrogate = null
24655 var bytes = []
24656
24657 for (var i = 0; i < length; ++i) {
24658 codePoint = string.charCodeAt(i)
24659
24660 // is surrogate component
24661 if (codePoint > 0xD7FF && codePoint < 0xE000) {
24662 // last char was a lead
24663 if (!leadSurrogate) {
24664 // no lead yet
24665 if (codePoint > 0xDBFF) {
24666 // unexpected trail
24667 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24668 continue
24669 } else if (i + 1 === length) {
24670 // unpaired lead
24671 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24672 continue
24673 }
24674
24675 // valid lead
24676 leadSurrogate = codePoint
24677
24678 continue
24679 }
24680
24681 // 2 leads in a row
24682 if (codePoint < 0xDC00) {
24683 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24684 leadSurrogate = codePoint
24685 continue
24686 }
24687
24688 // valid surrogate pair
24689 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
24690 } else if (leadSurrogate) {
24691 // valid bmp char, but last char was a lead
24692 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24693 }
24694
24695 leadSurrogate = null
24696
24697 // encode utf8
24698 if (codePoint < 0x80) {
24699 if ((units -= 1) < 0) break
24700 bytes.push(codePoint)
24701 } else if (codePoint < 0x800) {
24702 if ((units -= 2) < 0) break
24703 bytes.push(
24704 codePoint >> 0x6 | 0xC0,
24705 codePoint & 0x3F | 0x80
24706 )
24707 } else if (codePoint < 0x10000) {
24708 if ((units -= 3) < 0) break
24709 bytes.push(
24710 codePoint >> 0xC | 0xE0,
24711 codePoint >> 0x6 & 0x3F | 0x80,
24712 codePoint & 0x3F | 0x80
24713 )
24714 } else if (codePoint < 0x110000) {
24715 if ((units -= 4) < 0) break
24716 bytes.push(
24717 codePoint >> 0x12 | 0xF0,
24718 codePoint >> 0xC & 0x3F | 0x80,
24719 codePoint >> 0x6 & 0x3F | 0x80,
24720 codePoint & 0x3F | 0x80
24721 )
24722 } else {
24723 throw new Error('Invalid code point')
24724 }
24725 }
24726
24727 return bytes
24728 }
24729
24730 function asciiToBytes (str) {
24731 var byteArray = []
24732 for (var i = 0; i < str.length; ++i) {
24733 // Node's code seems to be doing this and not & 0x7F..
24734 byteArray.push(str.charCodeAt(i) & 0xFF)
24735 }
24736 return byteArray
24737 }
24738
24739 function utf16leToBytes (str, units) {
24740 var c, hi, lo
24741 var byteArray = []
24742 for (var i = 0; i < str.length; ++i) {
24743 if ((units -= 2) < 0) break
24744
24745 c = str.charCodeAt(i)
24746 hi = c >> 8
24747 lo = c % 256
24748 byteArray.push(lo)
24749 byteArray.push(hi)
24750 }
24751
24752 return byteArray
24753 }
24754
24755 function base64ToBytes (str) {
24756 return base64.toByteArray(base64clean(str))
24757 }
24758
24759 function blitBuffer (src, dst, offset, length) {
24760 for (var i = 0; i < length; ++i) {
24761 if ((i + offset >= dst.length) || (i >= src.length)) break
24762 dst[i + offset] = src[i]
24763 }
24764 return i
24765 }
24766
24767 function isnan (val) {
24768 return val !== val // eslint-disable-line no-self-compare
24769 }
24770
24771 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
24772 (function (Buffer){
24773 // Copyright Joyent, Inc. and other Node contributors.
24774 //
24775 // Permission is hereby granted, free of charge, to any person obtaining a
24776 // copy of this software and associated documentation files (the
24777 // "Software"), to deal in the Software without restriction, including
24778 // without limitation the rights to use, copy, modify, merge, publish,
24779 // distribute, sublicense, and/or sell copies of the Software, and to permit
24780 // persons to whom the Software is furnished to do so, subject to the
24781 // following conditions:
24782 //
24783 // The above copyright notice and this permission notice shall be included
24784 // in all copies or substantial portions of the Software.
24785 //
24786 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24787 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24788 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24789 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24790 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24791 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24792 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24793
24794 // NOTE: These type checking functions intentionally don't use `instanceof`
24795 // because it is fragile and can be easily faked with `Object.create()`.
24796
24797 function isArray(arg) {
24798 if (Array.isArray) {
24799 return Array.isArray(arg);
24800 }
24801 return objectToString(arg) === '[object Array]';
24802 }
24803 exports.isArray = isArray;
24804
24805 function isBoolean(arg) {
24806 return typeof arg === 'boolean';
24807 }
24808 exports.isBoolean = isBoolean;
24809
24810 function isNull(arg) {
24811 return arg === null;
24812 }
24813 exports.isNull = isNull;
24814
24815 function isNullOrUndefined(arg) {
24816 return arg == null;
24817 }
24818 exports.isNullOrUndefined = isNullOrUndefined;
24819
24820 function isNumber(arg) {
24821 return typeof arg === 'number';
24822 }
24823 exports.isNumber = isNumber;
24824
24825 function isString(arg) {
24826 return typeof arg === 'string';
24827 }
24828 exports.isString = isString;
24829
24830 function isSymbol(arg) {
24831 return typeof arg === 'symbol';
24832 }
24833 exports.isSymbol = isSymbol;
24834
24835 function isUndefined(arg) {
24836 return arg === void 0;
24837 }
24838 exports.isUndefined = isUndefined;
24839
24840 function isRegExp(re) {
24841 return objectToString(re) === '[object RegExp]';
24842 }
24843 exports.isRegExp = isRegExp;
24844
24845 function isObject(arg) {
24846 return typeof arg === 'object' && arg !== null;
24847 }
24848 exports.isObject = isObject;
24849
24850 function isDate(d) {
24851 return objectToString(d) === '[object Date]';
24852 }
24853 exports.isDate = isDate;
24854
24855 function isError(e) {
24856 return (objectToString(e) === '[object Error]' || e instanceof Error);
24857 }
24858 exports.isError = isError;
24859
24860 function isFunction(arg) {
24861 return typeof arg === 'function';
24862 }
24863 exports.isFunction = isFunction;
24864
24865 function isPrimitive(arg) {
24866 return arg === null ||
24867 typeof arg === 'boolean' ||
24868 typeof arg === 'number' ||
24869 typeof arg === 'string' ||
24870 typeof arg === 'symbol' || // ES6 symbol
24871 typeof arg === 'undefined';
24872 }
24873 exports.isPrimitive = isPrimitive;
24874
24875 exports.isBuffer = Buffer.isBuffer;
24876
24877 function objectToString(o) {
24878 return Object.prototype.toString.call(o);
24879 }
24880
24881 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
24882 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
24883 // Copyright Joyent, Inc. and other Node contributors.
24884 //
24885 // Permission is hereby granted, free of charge, to any person obtaining a
24886 // copy of this software and associated documentation files (the
24887 // "Software"), to deal in the Software without restriction, including
24888 // without limitation the rights to use, copy, modify, merge, publish,
24889 // distribute, sublicense, and/or sell copies of the Software, and to permit
24890 // persons to whom the Software is furnished to do so, subject to the
24891 // following conditions:
24892 //
24893 // The above copyright notice and this permission notice shall be included
24894 // in all copies or substantial portions of the Software.
24895 //
24896 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24897 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24898 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24899 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24900 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24901 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24902 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24903
24904 function EventEmitter() {
24905 this._events = this._events || {};
24906 this._maxListeners = this._maxListeners || undefined;
24907 }
24908 module.exports = EventEmitter;
24909
24910 // Backwards-compat with node 0.10.x
24911 EventEmitter.EventEmitter = EventEmitter;
24912
24913 EventEmitter.prototype._events = undefined;
24914 EventEmitter.prototype._maxListeners = undefined;
24915
24916 // By default EventEmitters will print a warning if more than 10 listeners are
24917 // added to it. This is a useful default which helps finding memory leaks.
24918 EventEmitter.defaultMaxListeners = 10;
24919
24920 // Obviously not all Emitters should be limited to 10. This function allows
24921 // that to be increased. Set to zero for unlimited.
24922 EventEmitter.prototype.setMaxListeners = function(n) {
24923 if (!isNumber(n) || n < 0 || isNaN(n))
24924 throw TypeError('n must be a positive number');
24925 this._maxListeners = n;
24926 return this;
24927 };
24928
24929 EventEmitter.prototype.emit = function(type) {
24930 var er, handler, len, args, i, listeners;
24931
24932 if (!this._events)
24933 this._events = {};
24934
24935 // If there is no 'error' event listener then throw.
24936 if (type === 'error') {
24937 if (!this._events.error ||
24938 (isObject(this._events.error) && !this._events.error.length)) {
24939 er = arguments[1];
24940 if (er instanceof Error) {
24941 throw er; // Unhandled 'error' event
24942 } else {
24943 // At least give some kind of context to the user
24944 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
24945 err.context = er;
24946 throw err;
24947 }
24948 }
24949 }
24950
24951 handler = this._events[type];
24952
24953 if (isUndefined(handler))
24954 return false;
24955
24956 if (isFunction(handler)) {
24957 switch (arguments.length) {
24958 // fast cases
24959 case 1:
24960 handler.call(this);
24961 break;
24962 case 2:
24963 handler.call(this, arguments[1]);
24964 break;
24965 case 3:
24966 handler.call(this, arguments[1], arguments[2]);
24967 break;
24968 // slower
24969 default:
24970 args = Array.prototype.slice.call(arguments, 1);
24971 handler.apply(this, args);
24972 }
24973 } else if (isObject(handler)) {
24974 args = Array.prototype.slice.call(arguments, 1);
24975 listeners = handler.slice();
24976 len = listeners.length;
24977 for (i = 0; i < len; i++)
24978 listeners[i].apply(this, args);
24979 }
24980
24981 return true;
24982 };
24983
24984 EventEmitter.prototype.addListener = function(type, listener) {
24985 var m;
24986
24987 if (!isFunction(listener))
24988 throw TypeError('listener must be a function');
24989
24990 if (!this._events)
24991 this._events = {};
24992
24993 // To avoid recursion in the case that type === "newListener"! Before
24994 // adding it to the listeners, first emit "newListener".
24995 if (this._events.newListener)
24996 this.emit('newListener', type,
24997 isFunction(listener.listener) ?
24998 listener.listener : listener);
24999
25000 if (!this._events[type])
25001 // Optimize the case of one listener. Don't need the extra array object.
25002 this._events[type] = listener;
25003 else if (isObject(this._events[type]))
25004 // If we've already got an array, just append.
25005 this._events[type].push(listener);
25006 else
25007 // Adding the second element, need to change to array.
25008 this._events[type] = [this._events[type], listener];
25009
25010 // Check for listener leak
25011 if (isObject(this._events[type]) && !this._events[type].warned) {
25012 if (!isUndefined(this._maxListeners)) {
25013 m = this._maxListeners;
25014 } else {
25015 m = EventEmitter.defaultMaxListeners;
25016 }
25017
25018 if (m && m > 0 && this._events[type].length > m) {
25019 this._events[type].warned = true;
25020 console.error('(node) warning: possible EventEmitter memory ' +
25021 'leak detected. %d listeners added. ' +
25022 'Use emitter.setMaxListeners() to increase limit.',
25023 this._events[type].length);
25024 if (typeof console.trace === 'function') {
25025 // not supported in IE 10
25026 console.trace();
25027 }
25028 }
25029 }
25030
25031 return this;
25032 };
25033
25034 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
25035
25036 EventEmitter.prototype.once = function(type, listener) {
25037 if (!isFunction(listener))
25038 throw TypeError('listener must be a function');
25039
25040 var fired = false;
25041
25042 function g() {
25043 this.removeListener(type, g);
25044
25045 if (!fired) {
25046 fired = true;
25047 listener.apply(this, arguments);
25048 }
25049 }
25050
25051 g.listener = listener;
25052 this.on(type, g);
25053
25054 return this;
25055 };
25056
25057 // emits a 'removeListener' event iff the listener was removed
25058 EventEmitter.prototype.removeListener = function(type, listener) {
25059 var list, position, length, i;
25060
25061 if (!isFunction(listener))
25062 throw TypeError('listener must be a function');
25063
25064 if (!this._events || !this._events[type])
25065 return this;
25066
25067 list = this._events[type];
25068 length = list.length;
25069 position = -1;
25070
25071 if (list === listener ||
25072 (isFunction(list.listener) && list.listener === listener)) {
25073 delete this._events[type];
25074 if (this._events.removeListener)
25075 this.emit('removeListener', type, listener);
25076
25077 } else if (isObject(list)) {
25078 for (i = length; i-- > 0;) {
25079 if (list[i] === listener ||
25080 (list[i].listener && list[i].listener === listener)) {
25081 position = i;
25082 break;
25083 }
25084 }
25085
25086 if (position < 0)
25087 return this;
25088
25089 if (list.length === 1) {
25090 list.length = 0;
25091 delete this._events[type];
25092 } else {
25093 list.splice(position, 1);
25094 }
25095
25096 if (this._events.removeListener)
25097 this.emit('removeListener', type, listener);
25098 }
25099
25100 return this;
25101 };
25102
25103 EventEmitter.prototype.removeAllListeners = function(type) {
25104 var key, listeners;
25105
25106 if (!this._events)
25107 return this;
25108
25109 // not listening for removeListener, no need to emit
25110 if (!this._events.removeListener) {
25111 if (arguments.length === 0)
25112 this._events = {};
25113 else if (this._events[type])
25114 delete this._events[type];
25115 return this;
25116 }
25117
25118 // emit removeListener for all listeners on all events
25119 if (arguments.length === 0) {
25120 for (key in this._events) {
25121 if (key === 'removeListener') continue;
25122 this.removeAllListeners(key);
25123 }
25124 this.removeAllListeners('removeListener');
25125 this._events = {};
25126 return this;
25127 }
25128
25129 listeners = this._events[type];
25130
25131 if (isFunction(listeners)) {
25132 this.removeListener(type, listeners);
25133 } else if (listeners) {
25134 // LIFO order
25135 while (listeners.length)
25136 this.removeListener(type, listeners[listeners.length - 1]);
25137 }
25138 delete this._events[type];
25139
25140 return this;
25141 };
25142
25143 EventEmitter.prototype.listeners = function(type) {
25144 var ret;
25145 if (!this._events || !this._events[type])
25146 ret = [];
25147 else if (isFunction(this._events[type]))
25148 ret = [this._events[type]];
25149 else
25150 ret = this._events[type].slice();
25151 return ret;
25152 };
25153
25154 EventEmitter.prototype.listenerCount = function(type) {
25155 if (this._events) {
25156 var evlistener = this._events[type];
25157
25158 if (isFunction(evlistener))
25159 return 1;
25160 else if (evlistener)
25161 return evlistener.length;
25162 }
25163 return 0;
25164 };
25165
25166 EventEmitter.listenerCount = function(emitter, type) {
25167 return emitter.listenerCount(type);
25168 };
25169
25170 function isFunction(arg) {
25171 return typeof arg === 'function';
25172 }
25173
25174 function isNumber(arg) {
25175 return typeof arg === 'number';
25176 }
25177
25178 function isObject(arg) {
25179 return typeof arg === 'object' && arg !== null;
25180 }
25181
25182 function isUndefined(arg) {
25183 return arg === void 0;
25184 }
25185
25186 },{}],8:[function(require,module,exports){
25187 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
25188 var e, m
25189 var eLen = nBytes * 8 - mLen - 1
25190 var eMax = (1 << eLen) - 1
25191 var eBias = eMax >> 1
25192 var nBits = -7
25193 var i = isLE ? (nBytes - 1) : 0
25194 var d = isLE ? -1 : 1
25195 var s = buffer[offset + i]
25196
25197 i += d
25198
25199 e = s & ((1 << (-nBits)) - 1)
25200 s >>= (-nBits)
25201 nBits += eLen
25202 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25203
25204 m = e & ((1 << (-nBits)) - 1)
25205 e >>= (-nBits)
25206 nBits += mLen
25207 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25208
25209 if (e === 0) {
25210 e = 1 - eBias
25211 } else if (e === eMax) {
25212 return m ? NaN : ((s ? -1 : 1) * Infinity)
25213 } else {
25214 m = m + Math.pow(2, mLen)
25215 e = e - eBias
25216 }
25217 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
25218 }
25219
25220 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
25221 var e, m, c
25222 var eLen = nBytes * 8 - mLen - 1
25223 var eMax = (1 << eLen) - 1
25224 var eBias = eMax >> 1
25225 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
25226 var i = isLE ? 0 : (nBytes - 1)
25227 var d = isLE ? 1 : -1
25228 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
25229
25230 value = Math.abs(value)
25231
25232 if (isNaN(value) || value === Infinity) {
25233 m = isNaN(value) ? 1 : 0
25234 e = eMax
25235 } else {
25236 e = Math.floor(Math.log(value) / Math.LN2)
25237 if (value * (c = Math.pow(2, -e)) < 1) {
25238 e--
25239 c *= 2
25240 }
25241 if (e + eBias >= 1) {
25242 value += rt / c
25243 } else {
25244 value += rt * Math.pow(2, 1 - eBias)
25245 }
25246 if (value * c >= 2) {
25247 e++
25248 c /= 2
25249 }
25250
25251 if (e + eBias >= eMax) {
25252 m = 0
25253 e = eMax
25254 } else if (e + eBias >= 1) {
25255 m = (value * c - 1) * Math.pow(2, mLen)
25256 e = e + eBias
25257 } else {
25258 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
25259 e = 0
25260 }
25261 }
25262
25263 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
25264
25265 e = (e << mLen) | m
25266 eLen += mLen
25267 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
25268
25269 buffer[offset + i - d] |= s * 128
25270 }
25271
25272 },{}],9:[function(require,module,exports){
25273 if (typeof Object.create === 'function') {
25274 // implementation from standard node.js 'util' module
25275 module.exports = function inherits(ctor, superCtor) {
25276 ctor.super_ = superCtor
25277 ctor.prototype = Object.create(superCtor.prototype, {
25278 constructor: {
25279 value: ctor,
25280 enumerable: false,
25281 writable: true,
25282 configurable: true
25283 }
25284 });
25285 };
25286 } else {
25287 // old school shim for old browsers
25288 module.exports = function inherits(ctor, superCtor) {
25289 ctor.super_ = superCtor
25290 var TempCtor = function () {}
25291 TempCtor.prototype = superCtor.prototype
25292 ctor.prototype = new TempCtor()
25293 ctor.prototype.constructor = ctor
25294 }
25295 }
25296
25297 },{}],10:[function(require,module,exports){
25298 /*!
25299 * Determine if an object is a Buffer
25300 *
25301 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
25302 * @license MIT
25303 */
25304
25305 // The _isBuffer check is for Safari 5-7 support, because it's missing
25306 // Object.prototype.constructor. Remove this eventually
25307 module.exports = function (obj) {
25308 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
25309 }
25310
25311 function isBuffer (obj) {
25312 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
25313 }
25314
25315 // For Node v0.10 support. Remove this eventually.
25316 function isSlowBuffer (obj) {
25317 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
25318 }
25319
25320 },{}],11:[function(require,module,exports){
25321 var toString = {}.toString;
25322
25323 module.exports = Array.isArray || function (arr) {
25324 return toString.call(arr) == '[object Array]';
25325 };
25326
25327 },{}],12:[function(require,module,exports){
25328 (function (process){
25329 'use strict';
25330
25331 if (!process.version ||
25332 process.version.indexOf('v0.') === 0 ||
25333 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
25334 module.exports = nextTick;
25335 } else {
25336 module.exports = process.nextTick;
25337 }
25338
25339 function nextTick(fn, arg1, arg2, arg3) {
25340 if (typeof fn !== 'function') {
25341 throw new TypeError('"callback" argument must be a function');
25342 }
25343 var len = arguments.length;
25344 var args, i;
25345 switch (len) {
25346 case 0:
25347 case 1:
25348 return process.nextTick(fn);
25349 case 2:
25350 return process.nextTick(function afterTickOne() {
25351 fn.call(null, arg1);
25352 });
25353 case 3:
25354 return process.nextTick(function afterTickTwo() {
25355 fn.call(null, arg1, arg2);
25356 });
25357 case 4:
25358 return process.nextTick(function afterTickThree() {
25359 fn.call(null, arg1, arg2, arg3);
25360 });
25361 default:
25362 args = new Array(len - 1);
25363 i = 0;
25364 while (i < args.length) {
25365 args[i++] = arguments[i];
25366 }
25367 return process.nextTick(function afterTick() {
25368 fn.apply(null, args);
25369 });
25370 }
25371 }
25372
25373 }).call(this,require('_process'))
25374 },{"_process":13}],13:[function(require,module,exports){
25375 // shim for using process in browser
25376 var process = module.exports = {};
25377
25378 // cached from whatever global is present so that test runners that stub it
25379 // don't break things. But we need to wrap it in a try catch in case it is
25380 // wrapped in strict mode code which doesn't define any globals. It's inside a
25381 // function because try/catches deoptimize in certain engines.
25382
25383 var cachedSetTimeout;
25384 var cachedClearTimeout;
25385
25386 function defaultSetTimout() {
25387 throw new Error('setTimeout has not been defined');
25388 }
25389 function defaultClearTimeout () {
25390 throw new Error('clearTimeout has not been defined');
25391 }
25392 (function () {
25393 try {
25394 if (typeof setTimeout === 'function') {
25395 cachedSetTimeout = setTimeout;
25396 } else {
25397 cachedSetTimeout = defaultSetTimout;
25398 }
25399 } catch (e) {
25400 cachedSetTimeout = defaultSetTimout;
25401 }
25402 try {
25403 if (typeof clearTimeout === 'function') {
25404 cachedClearTimeout = clearTimeout;
25405 } else {
25406 cachedClearTimeout = defaultClearTimeout;
25407 }
25408 } catch (e) {
25409 cachedClearTimeout = defaultClearTimeout;
25410 }
25411 } ())
25412 function runTimeout(fun) {
25413 if (cachedSetTimeout === setTimeout) {
25414 //normal enviroments in sane situations
25415 return setTimeout(fun, 0);
25416 }
25417 // if setTimeout wasn't available but was latter defined
25418 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
25419 cachedSetTimeout = setTimeout;
25420 return setTimeout(fun, 0);
25421 }
25422 try {
25423 // when when somebody has screwed with setTimeout but no I.E. maddness
25424 return cachedSetTimeout(fun, 0);
25425 } catch(e){
25426 try {
25427 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25428 return cachedSetTimeout.call(null, fun, 0);
25429 } catch(e){
25430 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
25431 return cachedSetTimeout.call(this, fun, 0);
25432 }
25433 }
25434
25435
25436 }
25437 function runClearTimeout(marker) {
25438 if (cachedClearTimeout === clearTimeout) {
25439 //normal enviroments in sane situations
25440 return clearTimeout(marker);
25441 }
25442 // if clearTimeout wasn't available but was latter defined
25443 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
25444 cachedClearTimeout = clearTimeout;
25445 return clearTimeout(marker);
25446 }
25447 try {
25448 // when when somebody has screwed with setTimeout but no I.E. maddness
25449 return cachedClearTimeout(marker);
25450 } catch (e){
25451 try {
25452 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25453 return cachedClearTimeout.call(null, marker);
25454 } catch (e){
25455 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
25456 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
25457 return cachedClearTimeout.call(this, marker);
25458 }
25459 }
25460
25461
25462
25463 }
25464 var queue = [];
25465 var draining = false;
25466 var currentQueue;
25467 var queueIndex = -1;
25468
25469 function cleanUpNextTick() {
25470 if (!draining || !currentQueue) {
25471 return;
25472 }
25473 draining = false;
25474 if (currentQueue.length) {
25475 queue = currentQueue.concat(queue);
25476 } else {
25477 queueIndex = -1;
25478 }
25479 if (queue.length) {
25480 drainQueue();
25481 }
25482 }
25483
25484 function drainQueue() {
25485 if (draining) {
25486 return;
25487 }
25488 var timeout = runTimeout(cleanUpNextTick);
25489 draining = true;
25490
25491 var len = queue.length;
25492 while(len) {
25493 currentQueue = queue;
25494 queue = [];
25495 while (++queueIndex < len) {
25496 if (currentQueue) {
25497 currentQueue[queueIndex].run();
25498 }
25499 }
25500 queueIndex = -1;
25501 len = queue.length;
25502 }
25503 currentQueue = null;
25504 draining = false;
25505 runClearTimeout(timeout);
25506 }
25507
25508 process.nextTick = function (fun) {
25509 var args = new Array(arguments.length - 1);
25510 if (arguments.length > 1) {
25511 for (var i = 1; i < arguments.length; i++) {
25512 args[i - 1] = arguments[i];
25513 }
25514 }
25515 queue.push(new Item(fun, args));
25516 if (queue.length === 1 && !draining) {
25517 runTimeout(drainQueue);
25518 }
25519 };
25520
25521 // v8 likes predictible objects
25522 function Item(fun, array) {
25523 this.fun = fun;
25524 this.array = array;
25525 }
25526 Item.prototype.run = function () {
25527 this.fun.apply(null, this.array);
25528 };
25529 process.title = 'browser';
25530 process.browser = true;
25531 process.env = {};
25532 process.argv = [];
25533 process.version = ''; // empty string to avoid regexp issues
25534 process.versions = {};
25535
25536 function noop() {}
25537
25538 process.on = noop;
25539 process.addListener = noop;
25540 process.once = noop;
25541 process.off = noop;
25542 process.removeListener = noop;
25543 process.removeAllListeners = noop;
25544 process.emit = noop;
25545
25546 process.binding = function (name) {
25547 throw new Error('process.binding is not supported');
25548 };
25549
25550 process.cwd = function () { return '/' };
25551 process.chdir = function (dir) {
25552 throw new Error('process.chdir is not supported');
25553 };
25554 process.umask = function() { return 0; };
25555
25556 },{}],14:[function(require,module,exports){
25557 module.exports = require("./lib/_stream_duplex.js")
25558
25559 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
25560 // a duplex stream is just a stream that is both readable and writable.
25561 // Since JS doesn't have multiple prototypal inheritance, this class
25562 // prototypally inherits from Readable, and then parasitically from
25563 // Writable.
25564
25565 'use strict';
25566
25567 /*<replacement>*/
25568
25569 var objectKeys = Object.keys || function (obj) {
25570 var keys = [];
25571 for (var key in obj) {
25572 keys.push(key);
25573 }return keys;
25574 };
25575 /*</replacement>*/
25576
25577 module.exports = Duplex;
25578
25579 /*<replacement>*/
25580 var processNextTick = require('process-nextick-args');
25581 /*</replacement>*/
25582
25583 /*<replacement>*/
25584 var util = require('core-util-is');
25585 util.inherits = require('inherits');
25586 /*</replacement>*/
25587
25588 var Readable = require('./_stream_readable');
25589 var Writable = require('./_stream_writable');
25590
25591 util.inherits(Duplex, Readable);
25592
25593 var keys = objectKeys(Writable.prototype);
25594 for (var v = 0; v < keys.length; v++) {
25595 var method = keys[v];
25596 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
25597 }
25598
25599 function Duplex(options) {
25600 if (!(this instanceof Duplex)) return new Duplex(options);
25601
25602 Readable.call(this, options);
25603 Writable.call(this, options);
25604
25605 if (options && options.readable === false) this.readable = false;
25606
25607 if (options && options.writable === false) this.writable = false;
25608
25609 this.allowHalfOpen = true;
25610 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
25611
25612 this.once('end', onend);
25613 }
25614
25615 // the no-half-open enforcer
25616 function onend() {
25617 // if we allow half-open state, or if the writable side ended,
25618 // then we're ok.
25619 if (this.allowHalfOpen || this._writableState.ended) return;
25620
25621 // no more data can be written.
25622 // But allow more writes to happen in this tick.
25623 processNextTick(onEndNT, this);
25624 }
25625
25626 function onEndNT(self) {
25627 self.end();
25628 }
25629
25630 function forEach(xs, f) {
25631 for (var i = 0, l = xs.length; i < l; i++) {
25632 f(xs[i], i);
25633 }
25634 }
25635 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
25636 // a passthrough stream.
25637 // basically just the most minimal sort of Transform stream.
25638 // Every written chunk gets output as-is.
25639
25640 'use strict';
25641
25642 module.exports = PassThrough;
25643
25644 var Transform = require('./_stream_transform');
25645
25646 /*<replacement>*/
25647 var util = require('core-util-is');
25648 util.inherits = require('inherits');
25649 /*</replacement>*/
25650
25651 util.inherits(PassThrough, Transform);
25652
25653 function PassThrough(options) {
25654 if (!(this instanceof PassThrough)) return new PassThrough(options);
25655
25656 Transform.call(this, options);
25657 }
25658
25659 PassThrough.prototype._transform = function (chunk, encoding, cb) {
25660 cb(null, chunk);
25661 };
25662 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
25663 (function (process){
25664 'use strict';
25665
25666 module.exports = Readable;
25667
25668 /*<replacement>*/
25669 var processNextTick = require('process-nextick-args');
25670 /*</replacement>*/
25671
25672 /*<replacement>*/
25673 var isArray = require('isarray');
25674 /*</replacement>*/
25675
25676 /*<replacement>*/
25677 var Duplex;
25678 /*</replacement>*/
25679
25680 Readable.ReadableState = ReadableState;
25681
25682 /*<replacement>*/
25683 var EE = require('events').EventEmitter;
25684
25685 var EElistenerCount = function (emitter, type) {
25686 return emitter.listeners(type).length;
25687 };
25688 /*</replacement>*/
25689
25690 /*<replacement>*/
25691 var Stream;
25692 (function () {
25693 try {
25694 Stream = require('st' + 'ream');
25695 } catch (_) {} finally {
25696 if (!Stream) Stream = require('events').EventEmitter;
25697 }
25698 })();
25699 /*</replacement>*/
25700
25701 var Buffer = require('buffer').Buffer;
25702 /*<replacement>*/
25703 var bufferShim = require('buffer-shims');
25704 /*</replacement>*/
25705
25706 /*<replacement>*/
25707 var util = require('core-util-is');
25708 util.inherits = require('inherits');
25709 /*</replacement>*/
25710
25711 /*<replacement>*/
25712 var debugUtil = require('util');
25713 var debug = void 0;
25714 if (debugUtil && debugUtil.debuglog) {
25715 debug = debugUtil.debuglog('stream');
25716 } else {
25717 debug = function () {};
25718 }
25719 /*</replacement>*/
25720
25721 var BufferList = require('./internal/streams/BufferList');
25722 var StringDecoder;
25723
25724 util.inherits(Readable, Stream);
25725
25726 function prependListener(emitter, event, fn) {
25727 // Sadly this is not cacheable as some libraries bundle their own
25728 // event emitter implementation with them.
25729 if (typeof emitter.prependListener === 'function') {
25730 return emitter.prependListener(event, fn);
25731 } else {
25732 // This is a hack to make sure that our error handler is attached before any
25733 // userland ones. NEVER DO THIS. This is here only because this code needs
25734 // to continue to work with older versions of Node.js that do not include
25735 // the prependListener() method. The goal is to eventually remove this hack.
25736 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
25737 }
25738 }
25739
25740 function ReadableState(options, stream) {
25741 Duplex = Duplex || require('./_stream_duplex');
25742
25743 options = options || {};
25744
25745 // object stream flag. Used to make read(n) ignore n and to
25746 // make all the buffer merging and length checks go away
25747 this.objectMode = !!options.objectMode;
25748
25749 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
25750
25751 // the point at which it stops calling _read() to fill the buffer
25752 // Note: 0 is a valid value, means "don't call _read preemptively ever"
25753 var hwm = options.highWaterMark;
25754 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
25755 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
25756
25757 // cast to ints.
25758 this.highWaterMark = ~ ~this.highWaterMark;
25759
25760 // A linked list is used to store data chunks instead of an array because the
25761 // linked list can remove elements from the beginning faster than
25762 // array.shift()
25763 this.buffer = new BufferList();
25764 this.length = 0;
25765 this.pipes = null;
25766 this.pipesCount = 0;
25767 this.flowing = null;
25768 this.ended = false;
25769 this.endEmitted = false;
25770 this.reading = false;
25771
25772 // a flag to be able to tell if the onwrite cb is called immediately,
25773 // or on a later tick. We set this to true at first, because any
25774 // actions that shouldn't happen until "later" should generally also
25775 // not happen before the first write call.
25776 this.sync = true;
25777
25778 // whenever we return null, then we set a flag to say
25779 // that we're awaiting a 'readable' event emission.
25780 this.needReadable = false;
25781 this.emittedReadable = false;
25782 this.readableListening = false;
25783 this.resumeScheduled = false;
25784
25785 // Crypto is kind of old and crusty. Historically, its default string
25786 // encoding is 'binary' so we have to make this configurable.
25787 // Everything else in the universe uses 'utf8', though.
25788 this.defaultEncoding = options.defaultEncoding || 'utf8';
25789
25790 // when piping, we only care about 'readable' events that happen
25791 // after read()ing all the bytes and not getting any pushback.
25792 this.ranOut = false;
25793
25794 // the number of writers that are awaiting a drain event in .pipe()s
25795 this.awaitDrain = 0;
25796
25797 // if true, a maybeReadMore has been scheduled
25798 this.readingMore = false;
25799
25800 this.decoder = null;
25801 this.encoding = null;
25802 if (options.encoding) {
25803 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25804 this.decoder = new StringDecoder(options.encoding);
25805 this.encoding = options.encoding;
25806 }
25807 }
25808
25809 function Readable(options) {
25810 Duplex = Duplex || require('./_stream_duplex');
25811
25812 if (!(this instanceof Readable)) return new Readable(options);
25813
25814 this._readableState = new ReadableState(options, this);
25815
25816 // legacy
25817 this.readable = true;
25818
25819 if (options && typeof options.read === 'function') this._read = options.read;
25820
25821 Stream.call(this);
25822 }
25823
25824 // Manually shove something into the read() buffer.
25825 // This returns true if the highWaterMark has not been hit yet,
25826 // similar to how Writable.write() returns true if you should
25827 // write() some more.
25828 Readable.prototype.push = function (chunk, encoding) {
25829 var state = this._readableState;
25830
25831 if (!state.objectMode && typeof chunk === 'string') {
25832 encoding = encoding || state.defaultEncoding;
25833 if (encoding !== state.encoding) {
25834 chunk = bufferShim.from(chunk, encoding);
25835 encoding = '';
25836 }
25837 }
25838
25839 return readableAddChunk(this, state, chunk, encoding, false);
25840 };
25841
25842 // Unshift should *always* be something directly out of read()
25843 Readable.prototype.unshift = function (chunk) {
25844 var state = this._readableState;
25845 return readableAddChunk(this, state, chunk, '', true);
25846 };
25847
25848 Readable.prototype.isPaused = function () {
25849 return this._readableState.flowing === false;
25850 };
25851
25852 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
25853 var er = chunkInvalid(state, chunk);
25854 if (er) {
25855 stream.emit('error', er);
25856 } else if (chunk === null) {
25857 state.reading = false;
25858 onEofChunk(stream, state);
25859 } else if (state.objectMode || chunk && chunk.length > 0) {
25860 if (state.ended && !addToFront) {
25861 var e = new Error('stream.push() after EOF');
25862 stream.emit('error', e);
25863 } else if (state.endEmitted && addToFront) {
25864 var _e = new Error('stream.unshift() after end event');
25865 stream.emit('error', _e);
25866 } else {
25867 var skipAdd;
25868 if (state.decoder && !addToFront && !encoding) {
25869 chunk = state.decoder.write(chunk);
25870 skipAdd = !state.objectMode && chunk.length === 0;
25871 }
25872
25873 if (!addToFront) state.reading = false;
25874
25875 // Don't add to the buffer if we've decoded to an empty string chunk and
25876 // we're not in object mode
25877 if (!skipAdd) {
25878 // if we want the data now, just emit it.
25879 if (state.flowing && state.length === 0 && !state.sync) {
25880 stream.emit('data', chunk);
25881 stream.read(0);
25882 } else {
25883 // update the buffer info.
25884 state.length += state.objectMode ? 1 : chunk.length;
25885 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
25886
25887 if (state.needReadable) emitReadable(stream);
25888 }
25889 }
25890
25891 maybeReadMore(stream, state);
25892 }
25893 } else if (!addToFront) {
25894 state.reading = false;
25895 }
25896
25897 return needMoreData(state);
25898 }
25899
25900 // if it's past the high water mark, we can push in some more.
25901 // Also, if we have no data yet, we can stand some
25902 // more bytes. This is to work around cases where hwm=0,
25903 // such as the repl. Also, if the push() triggered a
25904 // readable event, and the user called read(largeNumber) such that
25905 // needReadable was set, then we ought to push more, so that another
25906 // 'readable' event will be triggered.
25907 function needMoreData(state) {
25908 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
25909 }
25910
25911 // backwards compatibility.
25912 Readable.prototype.setEncoding = function (enc) {
25913 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25914 this._readableState.decoder = new StringDecoder(enc);
25915 this._readableState.encoding = enc;
25916 return this;
25917 };
25918
25919 // Don't raise the hwm > 8MB
25920 var MAX_HWM = 0x800000;
25921 function computeNewHighWaterMark(n) {
25922 if (n >= MAX_HWM) {
25923 n = MAX_HWM;
25924 } else {
25925 // Get the next highest power of 2 to prevent increasing hwm excessively in
25926 // tiny amounts
25927 n--;
25928 n |= n >>> 1;
25929 n |= n >>> 2;
25930 n |= n >>> 4;
25931 n |= n >>> 8;
25932 n |= n >>> 16;
25933 n++;
25934 }
25935 return n;
25936 }
25937
25938 // This function is designed to be inlinable, so please take care when making
25939 // changes to the function body.
25940 function howMuchToRead(n, state) {
25941 if (n <= 0 || state.length === 0 && state.ended) return 0;
25942 if (state.objectMode) return 1;
25943 if (n !== n) {
25944 // Only flow one buffer at a time
25945 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
25946 }
25947 // If we're asking for more than the current hwm, then raise the hwm.
25948 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
25949 if (n <= state.length) return n;
25950 // Don't have enough
25951 if (!state.ended) {
25952 state.needReadable = true;
25953 return 0;
25954 }
25955 return state.length;
25956 }
25957
25958 // you can override either this method, or the async _read(n) below.
25959 Readable.prototype.read = function (n) {
25960 debug('read', n);
25961 n = parseInt(n, 10);
25962 var state = this._readableState;
25963 var nOrig = n;
25964
25965 if (n !== 0) state.emittedReadable = false;
25966
25967 // if we're doing read(0) to trigger a readable event, but we
25968 // already have a bunch of data in the buffer, then just trigger
25969 // the 'readable' event and move on.
25970 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
25971 debug('read: emitReadable', state.length, state.ended);
25972 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
25973 return null;
25974 }
25975
25976 n = howMuchToRead(n, state);
25977
25978 // if we've ended, and we're now clear, then finish it up.
25979 if (n === 0 && state.ended) {
25980 if (state.length === 0) endReadable(this);
25981 return null;
25982 }
25983
25984 // All the actual chunk generation logic needs to be
25985 // *below* the call to _read. The reason is that in certain
25986 // synthetic stream cases, such as passthrough streams, _read
25987 // may be a completely synchronous operation which may change
25988 // the state of the read buffer, providing enough data when
25989 // before there was *not* enough.
25990 //
25991 // So, the steps are:
25992 // 1. Figure out what the state of things will be after we do
25993 // a read from the buffer.
25994 //
25995 // 2. If that resulting state will trigger a _read, then call _read.
25996 // Note that this may be asynchronous, or synchronous. Yes, it is
25997 // deeply ugly to write APIs this way, but that still doesn't mean
25998 // that the Readable class should behave improperly, as streams are
25999 // designed to be sync/async agnostic.
26000 // Take note if the _read call is sync or async (ie, if the read call
26001 // has returned yet), so that we know whether or not it's safe to emit
26002 // 'readable' etc.
26003 //
26004 // 3. Actually pull the requested chunks out of the buffer and return.
26005
26006 // if we need a readable event, then we need to do some reading.
26007 var doRead = state.needReadable;
26008 debug('need readable', doRead);
26009
26010 // if we currently have less than the highWaterMark, then also read some
26011 if (state.length === 0 || state.length - n < state.highWaterMark) {
26012 doRead = true;
26013 debug('length less than watermark', doRead);
26014 }
26015
26016 // however, if we've ended, then there's no point, and if we're already
26017 // reading, then it's unnecessary.
26018 if (state.ended || state.reading) {
26019 doRead = false;
26020 debug('reading or ended', doRead);
26021 } else if (doRead) {
26022 debug('do read');
26023 state.reading = true;
26024 state.sync = true;
26025 // if the length is currently zero, then we *need* a readable event.
26026 if (state.length === 0) state.needReadable = true;
26027 // call internal read method
26028 this._read(state.highWaterMark);
26029 state.sync = false;
26030 // If _read pushed data synchronously, then `reading` will be false,
26031 // and we need to re-evaluate how much data we can return to the user.
26032 if (!state.reading) n = howMuchToRead(nOrig, state);
26033 }
26034
26035 var ret;
26036 if (n > 0) ret = fromList(n, state);else ret = null;
26037
26038 if (ret === null) {
26039 state.needReadable = true;
26040 n = 0;
26041 } else {
26042 state.length -= n;
26043 }
26044
26045 if (state.length === 0) {
26046 // If we have nothing in the buffer, then we want to know
26047 // as soon as we *do* get something into the buffer.
26048 if (!state.ended) state.needReadable = true;
26049
26050 // If we tried to read() past the EOF, then emit end on the next tick.
26051 if (nOrig !== n && state.ended) endReadable(this);
26052 }
26053
26054 if (ret !== null) this.emit('data', ret);
26055
26056 return ret;
26057 };
26058
26059 function chunkInvalid(state, chunk) {
26060 var er = null;
26061 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
26062 er = new TypeError('Invalid non-string/buffer chunk');
26063 }
26064 return er;
26065 }
26066
26067 function onEofChunk(stream, state) {
26068 if (state.ended) return;
26069 if (state.decoder) {
26070 var chunk = state.decoder.end();
26071 if (chunk && chunk.length) {
26072 state.buffer.push(chunk);
26073 state.length += state.objectMode ? 1 : chunk.length;
26074 }
26075 }
26076 state.ended = true;
26077
26078 // emit 'readable' now to make sure it gets picked up.
26079 emitReadable(stream);
26080 }
26081
26082 // Don't emit readable right away in sync mode, because this can trigger
26083 // another read() call => stack overflow. This way, it might trigger
26084 // a nextTick recursion warning, but that's not so bad.
26085 function emitReadable(stream) {
26086 var state = stream._readableState;
26087 state.needReadable = false;
26088 if (!state.emittedReadable) {
26089 debug('emitReadable', state.flowing);
26090 state.emittedReadable = true;
26091 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
26092 }
26093 }
26094
26095 function emitReadable_(stream) {
26096 debug('emit readable');
26097 stream.emit('readable');
26098 flow(stream);
26099 }
26100
26101 // at this point, the user has presumably seen the 'readable' event,
26102 // and called read() to consume some data. that may have triggered
26103 // in turn another _read(n) call, in which case reading = true if
26104 // it's in progress.
26105 // However, if we're not ended, or reading, and the length < hwm,
26106 // then go ahead and try to read some more preemptively.
26107 function maybeReadMore(stream, state) {
26108 if (!state.readingMore) {
26109 state.readingMore = true;
26110 processNextTick(maybeReadMore_, stream, state);
26111 }
26112 }
26113
26114 function maybeReadMore_(stream, state) {
26115 var len = state.length;
26116 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
26117 debug('maybeReadMore read 0');
26118 stream.read(0);
26119 if (len === state.length)
26120 // didn't get any data, stop spinning.
26121 break;else len = state.length;
26122 }
26123 state.readingMore = false;
26124 }
26125
26126 // abstract method. to be overridden in specific implementation classes.
26127 // call cb(er, data) where data is <= n in length.
26128 // for virtual (non-string, non-buffer) streams, "length" is somewhat
26129 // arbitrary, and perhaps not very meaningful.
26130 Readable.prototype._read = function (n) {
26131 this.emit('error', new Error('_read() is not implemented'));
26132 };
26133
26134 Readable.prototype.pipe = function (dest, pipeOpts) {
26135 var src = this;
26136 var state = this._readableState;
26137
26138 switch (state.pipesCount) {
26139 case 0:
26140 state.pipes = dest;
26141 break;
26142 case 1:
26143 state.pipes = [state.pipes, dest];
26144 break;
26145 default:
26146 state.pipes.push(dest);
26147 break;
26148 }
26149 state.pipesCount += 1;
26150 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
26151
26152 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
26153
26154 var endFn = doEnd ? onend : cleanup;
26155 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
26156
26157 dest.on('unpipe', onunpipe);
26158 function onunpipe(readable) {
26159 debug('onunpipe');
26160 if (readable === src) {
26161 cleanup();
26162 }
26163 }
26164
26165 function onend() {
26166 debug('onend');
26167 dest.end();
26168 }
26169
26170 // when the dest drains, it reduces the awaitDrain counter
26171 // on the source. This would be more elegant with a .once()
26172 // handler in flow(), but adding and removing repeatedly is
26173 // too slow.
26174 var ondrain = pipeOnDrain(src);
26175 dest.on('drain', ondrain);
26176
26177 var cleanedUp = false;
26178 function cleanup() {
26179 debug('cleanup');
26180 // cleanup event handlers once the pipe is broken
26181 dest.removeListener('close', onclose);
26182 dest.removeListener('finish', onfinish);
26183 dest.removeListener('drain', ondrain);
26184 dest.removeListener('error', onerror);
26185 dest.removeListener('unpipe', onunpipe);
26186 src.removeListener('end', onend);
26187 src.removeListener('end', cleanup);
26188 src.removeListener('data', ondata);
26189
26190 cleanedUp = true;
26191
26192 // if the reader is waiting for a drain event from this
26193 // specific writer, then it would cause it to never start
26194 // flowing again.
26195 // So, if this is awaiting a drain, then we just call it now.
26196 // If we don't know, then assume that we are waiting for one.
26197 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
26198 }
26199
26200 // If the user pushes more data while we're writing to dest then we'll end up
26201 // in ondata again. However, we only want to increase awaitDrain once because
26202 // dest will only emit one 'drain' event for the multiple writes.
26203 // => Introduce a guard on increasing awaitDrain.
26204 var increasedAwaitDrain = false;
26205 src.on('data', ondata);
26206 function ondata(chunk) {
26207 debug('ondata');
26208 increasedAwaitDrain = false;
26209 var ret = dest.write(chunk);
26210 if (false === ret && !increasedAwaitDrain) {
26211 // If the user unpiped during `dest.write()`, it is possible
26212 // to get stuck in a permanently paused state if that write
26213 // also returned false.
26214 // => Check whether `dest` is still a piping destination.
26215 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
26216 debug('false write response, pause', src._readableState.awaitDrain);
26217 src._readableState.awaitDrain++;
26218 increasedAwaitDrain = true;
26219 }
26220 src.pause();
26221 }
26222 }
26223
26224 // if the dest has an error, then stop piping into it.
26225 // however, don't suppress the throwing behavior for this.
26226 function onerror(er) {
26227 debug('onerror', er);
26228 unpipe();
26229 dest.removeListener('error', onerror);
26230 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
26231 }
26232
26233 // Make sure our error handler is attached before userland ones.
26234 prependListener(dest, 'error', onerror);
26235
26236 // Both close and finish should trigger unpipe, but only once.
26237 function onclose() {
26238 dest.removeListener('finish', onfinish);
26239 unpipe();
26240 }
26241 dest.once('close', onclose);
26242 function onfinish() {
26243 debug('onfinish');
26244 dest.removeListener('close', onclose);
26245 unpipe();
26246 }
26247 dest.once('finish', onfinish);
26248
26249 function unpipe() {
26250 debug('unpipe');
26251 src.unpipe(dest);
26252 }
26253
26254 // tell the dest that it's being piped to
26255 dest.emit('pipe', src);
26256
26257 // start the flow if it hasn't been started already.
26258 if (!state.flowing) {
26259 debug('pipe resume');
26260 src.resume();
26261 }
26262
26263 return dest;
26264 };
26265
26266 function pipeOnDrain(src) {
26267 return function () {
26268 var state = src._readableState;
26269 debug('pipeOnDrain', state.awaitDrain);
26270 if (state.awaitDrain) state.awaitDrain--;
26271 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
26272 state.flowing = true;
26273 flow(src);
26274 }
26275 };
26276 }
26277
26278 Readable.prototype.unpipe = function (dest) {
26279 var state = this._readableState;
26280
26281 // if we're not piping anywhere, then do nothing.
26282 if (state.pipesCount === 0) return this;
26283
26284 // just one destination. most common case.
26285 if (state.pipesCount === 1) {
26286 // passed in one, but it's not the right one.
26287 if (dest && dest !== state.pipes) return this;
26288
26289 if (!dest) dest = state.pipes;
26290
26291 // got a match.
26292 state.pipes = null;
26293 state.pipesCount = 0;
26294 state.flowing = false;
26295 if (dest) dest.emit('unpipe', this);
26296 return this;
26297 }
26298
26299 // slow case. multiple pipe destinations.
26300
26301 if (!dest) {
26302 // remove all.
26303 var dests = state.pipes;
26304 var len = state.pipesCount;
26305 state.pipes = null;
26306 state.pipesCount = 0;
26307 state.flowing = false;
26308
26309 for (var i = 0; i < len; i++) {
26310 dests[i].emit('unpipe', this);
26311 }return this;
26312 }
26313
26314 // try to find the right one.
26315 var index = indexOf(state.pipes, dest);
26316 if (index === -1) return this;
26317
26318 state.pipes.splice(index, 1);
26319 state.pipesCount -= 1;
26320 if (state.pipesCount === 1) state.pipes = state.pipes[0];
26321
26322 dest.emit('unpipe', this);
26323
26324 return this;
26325 };
26326
26327 // set up data events if they are asked for
26328 // Ensure readable listeners eventually get something
26329 Readable.prototype.on = function (ev, fn) {
26330 var res = Stream.prototype.on.call(this, ev, fn);
26331
26332 if (ev === 'data') {
26333 // Start flowing on next tick if stream isn't explicitly paused
26334 if (this._readableState.flowing !== false) this.resume();
26335 } else if (ev === 'readable') {
26336 var state = this._readableState;
26337 if (!state.endEmitted && !state.readableListening) {
26338 state.readableListening = state.needReadable = true;
26339 state.emittedReadable = false;
26340 if (!state.reading) {
26341 processNextTick(nReadingNextTick, this);
26342 } else if (state.length) {
26343 emitReadable(this, state);
26344 }
26345 }
26346 }
26347
26348 return res;
26349 };
26350 Readable.prototype.addListener = Readable.prototype.on;
26351
26352 function nReadingNextTick(self) {
26353 debug('readable nexttick read 0');
26354 self.read(0);
26355 }
26356
26357 // pause() and resume() are remnants of the legacy readable stream API
26358 // If the user uses them, then switch into old mode.
26359 Readable.prototype.resume = function () {
26360 var state = this._readableState;
26361 if (!state.flowing) {
26362 debug('resume');
26363 state.flowing = true;
26364 resume(this, state);
26365 }
26366 return this;
26367 };
26368
26369 function resume(stream, state) {
26370 if (!state.resumeScheduled) {
26371 state.resumeScheduled = true;
26372 processNextTick(resume_, stream, state);
26373 }
26374 }
26375
26376 function resume_(stream, state) {
26377 if (!state.reading) {
26378 debug('resume read 0');
26379 stream.read(0);
26380 }
26381
26382 state.resumeScheduled = false;
26383 state.awaitDrain = 0;
26384 stream.emit('resume');
26385 flow(stream);
26386 if (state.flowing && !state.reading) stream.read(0);
26387 }
26388
26389 Readable.prototype.pause = function () {
26390 debug('call pause flowing=%j', this._readableState.flowing);
26391 if (false !== this._readableState.flowing) {
26392 debug('pause');
26393 this._readableState.flowing = false;
26394 this.emit('pause');
26395 }
26396 return this;
26397 };
26398
26399 function flow(stream) {
26400 var state = stream._readableState;
26401 debug('flow', state.flowing);
26402 while (state.flowing && stream.read() !== null) {}
26403 }
26404
26405 // wrap an old-style stream as the async data source.
26406 // This is *not* part of the readable stream interface.
26407 // It is an ugly unfortunate mess of history.
26408 Readable.prototype.wrap = function (stream) {
26409 var state = this._readableState;
26410 var paused = false;
26411
26412 var self = this;
26413 stream.on('end', function () {
26414 debug('wrapped end');
26415 if (state.decoder && !state.ended) {
26416 var chunk = state.decoder.end();
26417 if (chunk && chunk.length) self.push(chunk);
26418 }
26419
26420 self.push(null);
26421 });
26422
26423 stream.on('data', function (chunk) {
26424 debug('wrapped data');
26425 if (state.decoder) chunk = state.decoder.write(chunk);
26426
26427 // don't skip over falsy values in objectMode
26428 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
26429
26430 var ret = self.push(chunk);
26431 if (!ret) {
26432 paused = true;
26433 stream.pause();
26434 }
26435 });
26436
26437 // proxy all the other methods.
26438 // important when wrapping filters and duplexes.
26439 for (var i in stream) {
26440 if (this[i] === undefined && typeof stream[i] === 'function') {
26441 this[i] = function (method) {
26442 return function () {
26443 return stream[method].apply(stream, arguments);
26444 };
26445 }(i);
26446 }
26447 }
26448
26449 // proxy certain important events.
26450 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
26451 forEach(events, function (ev) {
26452 stream.on(ev, self.emit.bind(self, ev));
26453 });
26454
26455 // when we try to consume some more bytes, simply unpause the
26456 // underlying stream.
26457 self._read = function (n) {
26458 debug('wrapped _read', n);
26459 if (paused) {
26460 paused = false;
26461 stream.resume();
26462 }
26463 };
26464
26465 return self;
26466 };
26467
26468 // exposed for testing purposes only.
26469 Readable._fromList = fromList;
26470
26471 // Pluck off n bytes from an array of buffers.
26472 // Length is the combined lengths of all the buffers in the list.
26473 // This function is designed to be inlinable, so please take care when making
26474 // changes to the function body.
26475 function fromList(n, state) {
26476 // nothing buffered
26477 if (state.length === 0) return null;
26478
26479 var ret;
26480 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
26481 // read it all, truncate the list
26482 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
26483 state.buffer.clear();
26484 } else {
26485 // read part of list
26486 ret = fromListPartial(n, state.buffer, state.decoder);
26487 }
26488
26489 return ret;
26490 }
26491
26492 // Extracts only enough buffered data to satisfy the amount requested.
26493 // This function is designed to be inlinable, so please take care when making
26494 // changes to the function body.
26495 function fromListPartial(n, list, hasStrings) {
26496 var ret;
26497 if (n < list.head.data.length) {
26498 // slice is the same for buffers and strings
26499 ret = list.head.data.slice(0, n);
26500 list.head.data = list.head.data.slice(n);
26501 } else if (n === list.head.data.length) {
26502 // first chunk is a perfect match
26503 ret = list.shift();
26504 } else {
26505 // result spans more than one buffer
26506 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
26507 }
26508 return ret;
26509 }
26510
26511 // Copies a specified amount of characters from the list of buffered data
26512 // chunks.
26513 // This function is designed to be inlinable, so please take care when making
26514 // changes to the function body.
26515 function copyFromBufferString(n, list) {
26516 var p = list.head;
26517 var c = 1;
26518 var ret = p.data;
26519 n -= ret.length;
26520 while (p = p.next) {
26521 var str = p.data;
26522 var nb = n > str.length ? str.length : n;
26523 if (nb === str.length) ret += str;else ret += str.slice(0, n);
26524 n -= nb;
26525 if (n === 0) {
26526 if (nb === str.length) {
26527 ++c;
26528 if (p.next) list.head = p.next;else list.head = list.tail = null;
26529 } else {
26530 list.head = p;
26531 p.data = str.slice(nb);
26532 }
26533 break;
26534 }
26535 ++c;
26536 }
26537 list.length -= c;
26538 return ret;
26539 }
26540
26541 // Copies a specified amount of bytes from the list of buffered data chunks.
26542 // This function is designed to be inlinable, so please take care when making
26543 // changes to the function body.
26544 function copyFromBuffer(n, list) {
26545 var ret = bufferShim.allocUnsafe(n);
26546 var p = list.head;
26547 var c = 1;
26548 p.data.copy(ret);
26549 n -= p.data.length;
26550 while (p = p.next) {
26551 var buf = p.data;
26552 var nb = n > buf.length ? buf.length : n;
26553 buf.copy(ret, ret.length - n, 0, nb);
26554 n -= nb;
26555 if (n === 0) {
26556 if (nb === buf.length) {
26557 ++c;
26558 if (p.next) list.head = p.next;else list.head = list.tail = null;
26559 } else {
26560 list.head = p;
26561 p.data = buf.slice(nb);
26562 }
26563 break;
26564 }
26565 ++c;
26566 }
26567 list.length -= c;
26568 return ret;
26569 }
26570
26571 function endReadable(stream) {
26572 var state = stream._readableState;
26573
26574 // If we get here before consuming all the bytes, then that is a
26575 // bug in node. Should never happen.
26576 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
26577
26578 if (!state.endEmitted) {
26579 state.ended = true;
26580 processNextTick(endReadableNT, state, stream);
26581 }
26582 }
26583
26584 function endReadableNT(state, stream) {
26585 // Check that we didn't get one last unshift.
26586 if (!state.endEmitted && state.length === 0) {
26587 state.endEmitted = true;
26588 stream.readable = false;
26589 stream.emit('end');
26590 }
26591 }
26592
26593 function forEach(xs, f) {
26594 for (var i = 0, l = xs.length; i < l; i++) {
26595 f(xs[i], i);
26596 }
26597 }
26598
26599 function indexOf(xs, x) {
26600 for (var i = 0, l = xs.length; i < l; i++) {
26601 if (xs[i] === x) return i;
26602 }
26603 return -1;
26604 }
26605 }).call(this,require('_process'))
26606 },{"./_stream_duplex":15,"./internal/streams/BufferList":20,"_process":13,"buffer":5,"buffer-shims":4,"core-util-is":6,"events":7,"inherits":9,"isarray":11,"process-nextick-args":12,"string_decoder/":26,"util":3}],18:[function(require,module,exports){
26607 // a transform stream is a readable/writable stream where you do
26608 // something with the data. Sometimes it's called a "filter",
26609 // but that's not a great name for it, since that implies a thing where
26610 // some bits pass through, and others are simply ignored. (That would
26611 // be a valid example of a transform, of course.)
26612 //
26613 // While the output is causally related to the input, it's not a
26614 // necessarily symmetric or synchronous transformation. For example,
26615 // a zlib stream might take multiple plain-text writes(), and then
26616 // emit a single compressed chunk some time in the future.
26617 //
26618 // Here's how this works:
26619 //
26620 // The Transform stream has all the aspects of the readable and writable
26621 // stream classes. When you write(chunk), that calls _write(chunk,cb)
26622 // internally, and returns false if there's a lot of pending writes
26623 // buffered up. When you call read(), that calls _read(n) until
26624 // there's enough pending readable data buffered up.
26625 //
26626 // In a transform stream, the written data is placed in a buffer. When
26627 // _read(n) is called, it transforms the queued up data, calling the
26628 // buffered _write cb's as it consumes chunks. If consuming a single
26629 // written chunk would result in multiple output chunks, then the first
26630 // outputted bit calls the readcb, and subsequent chunks just go into
26631 // the read buffer, and will cause it to emit 'readable' if necessary.
26632 //
26633 // This way, back-pressure is actually determined by the reading side,
26634 // since _read has to be called to start processing a new chunk. However,
26635 // a pathological inflate type of transform can cause excessive buffering
26636 // here. For example, imagine a stream where every byte of input is
26637 // interpreted as an integer from 0-255, and then results in that many
26638 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
26639 // 1kb of data being output. In this case, you could write a very small
26640 // amount of input, and end up with a very large amount of output. In
26641 // such a pathological inflating mechanism, there'd be no way to tell
26642 // the system to stop doing the transform. A single 4MB write could
26643 // cause the system to run out of memory.
26644 //
26645 // However, even in such a pathological case, only a single written chunk
26646 // would be consumed, and then the rest would wait (un-transformed) until
26647 // the results of the previous transformed chunk were consumed.
26648
26649 'use strict';
26650
26651 module.exports = Transform;
26652
26653 var Duplex = require('./_stream_duplex');
26654
26655 /*<replacement>*/
26656 var util = require('core-util-is');
26657 util.inherits = require('inherits');
26658 /*</replacement>*/
26659
26660 util.inherits(Transform, Duplex);
26661
26662 function TransformState(stream) {
26663 this.afterTransform = function (er, data) {
26664 return afterTransform(stream, er, data);
26665 };
26666
26667 this.needTransform = false;
26668 this.transforming = false;
26669 this.writecb = null;
26670 this.writechunk = null;
26671 this.writeencoding = null;
26672 }
26673
26674 function afterTransform(stream, er, data) {
26675 var ts = stream._transformState;
26676 ts.transforming = false;
26677
26678 var cb = ts.writecb;
26679
26680 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
26681
26682 ts.writechunk = null;
26683 ts.writecb = null;
26684
26685 if (data !== null && data !== undefined) stream.push(data);
26686
26687 cb(er);
26688
26689 var rs = stream._readableState;
26690 rs.reading = false;
26691 if (rs.needReadable || rs.length < rs.highWaterMark) {
26692 stream._read(rs.highWaterMark);
26693 }
26694 }
26695
26696 function Transform(options) {
26697 if (!(this instanceof Transform)) return new Transform(options);
26698
26699 Duplex.call(this, options);
26700
26701 this._transformState = new TransformState(this);
26702
26703 var stream = this;
26704
26705 // start out asking for a readable event once data is transformed.
26706 this._readableState.needReadable = true;
26707
26708 // we have implemented the _read method, and done the other things
26709 // that Readable wants before the first _read call, so unset the
26710 // sync guard flag.
26711 this._readableState.sync = false;
26712
26713 if (options) {
26714 if (typeof options.transform === 'function') this._transform = options.transform;
26715
26716 if (typeof options.flush === 'function') this._flush = options.flush;
26717 }
26718
26719 // When the writable side finishes, then flush out anything remaining.
26720 this.once('prefinish', function () {
26721 if (typeof this._flush === 'function') this._flush(function (er, data) {
26722 done(stream, er, data);
26723 });else done(stream);
26724 });
26725 }
26726
26727 Transform.prototype.push = function (chunk, encoding) {
26728 this._transformState.needTransform = false;
26729 return Duplex.prototype.push.call(this, chunk, encoding);
26730 };
26731
26732 // This is the part where you do stuff!
26733 // override this function in implementation classes.
26734 // 'chunk' is an input chunk.
26735 //
26736 // Call `push(newChunk)` to pass along transformed output
26737 // to the readable side. You may call 'push' zero or more times.
26738 //
26739 // Call `cb(err)` when you are done with this chunk. If you pass
26740 // an error, then that'll put the hurt on the whole operation. If you
26741 // never call cb(), then you'll never get another chunk.
26742 Transform.prototype._transform = function (chunk, encoding, cb) {
26743 throw new Error('_transform() is not implemented');
26744 };
26745
26746 Transform.prototype._write = function (chunk, encoding, cb) {
26747 var ts = this._transformState;
26748 ts.writecb = cb;
26749 ts.writechunk = chunk;
26750 ts.writeencoding = encoding;
26751 if (!ts.transforming) {
26752 var rs = this._readableState;
26753 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
26754 }
26755 };
26756
26757 // Doesn't matter what the args are here.
26758 // _transform does all the work.
26759 // That we got here means that the readable side wants more data.
26760 Transform.prototype._read = function (n) {
26761 var ts = this._transformState;
26762
26763 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
26764 ts.transforming = true;
26765 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
26766 } else {
26767 // mark that we need a transform, so that any data that comes in
26768 // will get processed, now that we've asked for it.
26769 ts.needTransform = true;
26770 }
26771 };
26772
26773 function done(stream, er, data) {
26774 if (er) return stream.emit('error', er);
26775
26776 if (data !== null && data !== undefined) stream.push(data);
26777
26778 // if there's nothing in the write buffer, then that means
26779 // that nothing more will ever be provided
26780 var ws = stream._writableState;
26781 var ts = stream._transformState;
26782
26783 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
26784
26785 if (ts.transforming) throw new Error('Calling transform done when still transforming');
26786
26787 return stream.push(null);
26788 }
26789 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
26790 (function (process){
26791 // A bit simpler than readable streams.
26792 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
26793 // the drain event emission and buffering.
26794
26795 'use strict';
26796
26797 module.exports = Writable;
26798
26799 /*<replacement>*/
26800 var processNextTick = require('process-nextick-args');
26801 /*</replacement>*/
26802
26803 /*<replacement>*/
26804 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
26805 /*</replacement>*/
26806
26807 /*<replacement>*/
26808 var Duplex;
26809 /*</replacement>*/
26810
26811 Writable.WritableState = WritableState;
26812
26813 /*<replacement>*/
26814 var util = require('core-util-is');
26815 util.inherits = require('inherits');
26816 /*</replacement>*/
26817
26818 /*<replacement>*/
26819 var internalUtil = {
26820 deprecate: require('util-deprecate')
26821 };
26822 /*</replacement>*/
26823
26824 /*<replacement>*/
26825 var Stream;
26826 (function () {
26827 try {
26828 Stream = require('st' + 'ream');
26829 } catch (_) {} finally {
26830 if (!Stream) Stream = require('events').EventEmitter;
26831 }
26832 })();
26833 /*</replacement>*/
26834
26835 var Buffer = require('buffer').Buffer;
26836 /*<replacement>*/
26837 var bufferShim = require('buffer-shims');
26838 /*</replacement>*/
26839
26840 util.inherits(Writable, Stream);
26841
26842 function nop() {}
26843
26844 function WriteReq(chunk, encoding, cb) {
26845 this.chunk = chunk;
26846 this.encoding = encoding;
26847 this.callback = cb;
26848 this.next = null;
26849 }
26850
26851 function WritableState(options, stream) {
26852 Duplex = Duplex || require('./_stream_duplex');
26853
26854 options = options || {};
26855
26856 // object stream flag to indicate whether or not this stream
26857 // contains buffers or objects.
26858 this.objectMode = !!options.objectMode;
26859
26860 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
26861
26862 // the point at which write() starts returning false
26863 // Note: 0 is a valid value, means that we always return false if
26864 // the entire buffer is not flushed immediately on write()
26865 var hwm = options.highWaterMark;
26866 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
26867 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
26868
26869 // cast to ints.
26870 this.highWaterMark = ~ ~this.highWaterMark;
26871
26872 // drain event flag.
26873 this.needDrain = false;
26874 // at the start of calling end()
26875 this.ending = false;
26876 // when end() has been called, and returned
26877 this.ended = false;
26878 // when 'finish' is emitted
26879 this.finished = false;
26880
26881 // should we decode strings into buffers before passing to _write?
26882 // this is here so that some node-core streams can optimize string
26883 // handling at a lower level.
26884 var noDecode = options.decodeStrings === false;
26885 this.decodeStrings = !noDecode;
26886
26887 // Crypto is kind of old and crusty. Historically, its default string
26888 // encoding is 'binary' so we have to make this configurable.
26889 // Everything else in the universe uses 'utf8', though.
26890 this.defaultEncoding = options.defaultEncoding || 'utf8';
26891
26892 // not an actual buffer we keep track of, but a measurement
26893 // of how much we're waiting to get pushed to some underlying
26894 // socket or file.
26895 this.length = 0;
26896
26897 // a flag to see when we're in the middle of a write.
26898 this.writing = false;
26899
26900 // when true all writes will be buffered until .uncork() call
26901 this.corked = 0;
26902
26903 // a flag to be able to tell if the onwrite cb is called immediately,
26904 // or on a later tick. We set this to true at first, because any
26905 // actions that shouldn't happen until "later" should generally also
26906 // not happen before the first write call.
26907 this.sync = true;
26908
26909 // a flag to know if we're processing previously buffered items, which
26910 // may call the _write() callback in the same tick, so that we don't
26911 // end up in an overlapped onwrite situation.
26912 this.bufferProcessing = false;
26913
26914 // the callback that's passed to _write(chunk,cb)
26915 this.onwrite = function (er) {
26916 onwrite(stream, er);
26917 };
26918
26919 // the callback that the user supplies to write(chunk,encoding,cb)
26920 this.writecb = null;
26921
26922 // the amount that is being written when _write is called.
26923 this.writelen = 0;
26924
26925 this.bufferedRequest = null;
26926 this.lastBufferedRequest = null;
26927
26928 // number of pending user-supplied write callbacks
26929 // this must be 0 before 'finish' can be emitted
26930 this.pendingcb = 0;
26931
26932 // emit prefinish if the only thing we're waiting for is _write cbs
26933 // This is relevant for synchronous Transform streams
26934 this.prefinished = false;
26935
26936 // True if the error was already emitted and should not be thrown again
26937 this.errorEmitted = false;
26938
26939 // count buffered requests
26940 this.bufferedRequestCount = 0;
26941
26942 // allocate the first CorkedRequest, there is always
26943 // one allocated and free to use, and we maintain at most two
26944 this.corkedRequestsFree = new CorkedRequest(this);
26945 }
26946
26947 WritableState.prototype.getBuffer = function getBuffer() {
26948 var current = this.bufferedRequest;
26949 var out = [];
26950 while (current) {
26951 out.push(current);
26952 current = current.next;
26953 }
26954 return out;
26955 };
26956
26957 (function () {
26958 try {
26959 Object.defineProperty(WritableState.prototype, 'buffer', {
26960 get: internalUtil.deprecate(function () {
26961 return this.getBuffer();
26962 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
26963 });
26964 } catch (_) {}
26965 })();
26966
26967 // Test _writableState for inheritance to account for Duplex streams,
26968 // whose prototype chain only points to Readable.
26969 var realHasInstance;
26970 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
26971 realHasInstance = Function.prototype[Symbol.hasInstance];
26972 Object.defineProperty(Writable, Symbol.hasInstance, {
26973 value: function (object) {
26974 if (realHasInstance.call(this, object)) return true;
26975
26976 return object && object._writableState instanceof WritableState;
26977 }
26978 });
26979 } else {
26980 realHasInstance = function (object) {
26981 return object instanceof this;
26982 };
26983 }
26984
26985 function Writable(options) {
26986 Duplex = Duplex || require('./_stream_duplex');
26987
26988 // Writable ctor is applied to Duplexes, too.
26989 // `realHasInstance` is necessary because using plain `instanceof`
26990 // would return false, as no `_writableState` property is attached.
26991
26992 // Trying to use the custom `instanceof` for Writable here will also break the
26993 // Node.js LazyTransform implementation, which has a non-trivial getter for
26994 // `_writableState` that would lead to infinite recursion.
26995 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
26996 return new Writable(options);
26997 }
26998
26999 this._writableState = new WritableState(options, this);
27000
27001 // legacy.
27002 this.writable = true;
27003
27004 if (options) {
27005 if (typeof options.write === 'function') this._write = options.write;
27006
27007 if (typeof options.writev === 'function') this._writev = options.writev;
27008 }
27009
27010 Stream.call(this);
27011 }
27012
27013 // Otherwise people can pipe Writable streams, which is just wrong.
27014 Writable.prototype.pipe = function () {
27015 this.emit('error', new Error('Cannot pipe, not readable'));
27016 };
27017
27018 function writeAfterEnd(stream, cb) {
27019 var er = new Error('write after end');
27020 // TODO: defer error events consistently everywhere, not just the cb
27021 stream.emit('error', er);
27022 processNextTick(cb, er);
27023 }
27024
27025 // If we get something that is not a buffer, string, null, or undefined,
27026 // and we're not in objectMode, then that's an error.
27027 // Otherwise stream chunks are all considered to be of length=1, and the
27028 // watermarks determine how many objects to keep in the buffer, rather than
27029 // how many bytes or characters.
27030 function validChunk(stream, state, chunk, cb) {
27031 var valid = true;
27032 var er = false;
27033 // Always throw error if a null is written
27034 // if we are not in object mode then throw
27035 // if it is not a buffer, string, or undefined.
27036 if (chunk === null) {
27037 er = new TypeError('May not write null values to stream');
27038 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
27039 er = new TypeError('Invalid non-string/buffer chunk');
27040 }
27041 if (er) {
27042 stream.emit('error', er);
27043 processNextTick(cb, er);
27044 valid = false;
27045 }
27046 return valid;
27047 }
27048
27049 Writable.prototype.write = function (chunk, encoding, cb) {
27050 var state = this._writableState;
27051 var ret = false;
27052
27053 if (typeof encoding === 'function') {
27054 cb = encoding;
27055 encoding = null;
27056 }
27057
27058 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
27059
27060 if (typeof cb !== 'function') cb = nop;
27061
27062 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
27063 state.pendingcb++;
27064 ret = writeOrBuffer(this, state, chunk, encoding, cb);
27065 }
27066
27067 return ret;
27068 };
27069
27070 Writable.prototype.cork = function () {
27071 var state = this._writableState;
27072
27073 state.corked++;
27074 };
27075
27076 Writable.prototype.uncork = function () {
27077 var state = this._writableState;
27078
27079 if (state.corked) {
27080 state.corked--;
27081
27082 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
27083 }
27084 };
27085
27086 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
27087 // node::ParseEncoding() requires lower case.
27088 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
27089 if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
27090 this._writableState.defaultEncoding = encoding;
27091 return this;
27092 };
27093
27094 function decodeChunk(state, chunk, encoding) {
27095 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
27096 chunk = bufferShim.from(chunk, encoding);
27097 }
27098 return chunk;
27099 }
27100
27101 // if we're already writing something, then just put this
27102 // in the queue, and wait our turn. Otherwise, call _write
27103 // If we return false, then we need a drain event, so set that flag.
27104 function writeOrBuffer(stream, state, chunk, encoding, cb) {
27105 chunk = decodeChunk(state, chunk, encoding);
27106
27107 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
27108 var len = state.objectMode ? 1 : chunk.length;
27109
27110 state.length += len;
27111
27112 var ret = state.length < state.highWaterMark;
27113 // we must ensure that previous needDrain will not be reset to false.
27114 if (!ret) state.needDrain = true;
27115
27116 if (state.writing || state.corked) {
27117 var last = state.lastBufferedRequest;
27118 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
27119 if (last) {
27120 last.next = state.lastBufferedRequest;
27121 } else {
27122 state.bufferedRequest = state.lastBufferedRequest;
27123 }
27124 state.bufferedRequestCount += 1;
27125 } else {
27126 doWrite(stream, state, false, len, chunk, encoding, cb);
27127 }
27128
27129 return ret;
27130 }
27131
27132 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
27133 state.writelen = len;
27134 state.writecb = cb;
27135 state.writing = true;
27136 state.sync = true;
27137 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
27138 state.sync = false;
27139 }
27140
27141 function onwriteError(stream, state, sync, er, cb) {
27142 --state.pendingcb;
27143 if (sync) processNextTick(cb, er);else cb(er);
27144
27145 stream._writableState.errorEmitted = true;
27146 stream.emit('error', er);
27147 }
27148
27149 function onwriteStateUpdate(state) {
27150 state.writing = false;
27151 state.writecb = null;
27152 state.length -= state.writelen;
27153 state.writelen = 0;
27154 }
27155
27156 function onwrite(stream, er) {
27157 var state = stream._writableState;
27158 var sync = state.sync;
27159 var cb = state.writecb;
27160
27161 onwriteStateUpdate(state);
27162
27163 if (er) onwriteError(stream, state, sync, er, cb);else {
27164 // Check if we're actually ready to finish, but don't emit yet
27165 var finished = needFinish(state);
27166
27167 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
27168 clearBuffer(stream, state);
27169 }
27170
27171 if (sync) {
27172 /*<replacement>*/
27173 asyncWrite(afterWrite, stream, state, finished, cb);
27174 /*</replacement>*/
27175 } else {
27176 afterWrite(stream, state, finished, cb);
27177 }
27178 }
27179 }
27180
27181 function afterWrite(stream, state, finished, cb) {
27182 if (!finished) onwriteDrain(stream, state);
27183 state.pendingcb--;
27184 cb();
27185 finishMaybe(stream, state);
27186 }
27187
27188 // Must force callback to be called on nextTick, so that we don't
27189 // emit 'drain' before the write() consumer gets the 'false' return
27190 // value, and has a chance to attach a 'drain' listener.
27191 function onwriteDrain(stream, state) {
27192 if (state.length === 0 && state.needDrain) {
27193 state.needDrain = false;
27194 stream.emit('drain');
27195 }
27196 }
27197
27198 // if there's something in the buffer waiting, then process it
27199 function clearBuffer(stream, state) {
27200 state.bufferProcessing = true;
27201 var entry = state.bufferedRequest;
27202
27203 if (stream._writev && entry && entry.next) {
27204 // Fast case, write everything using _writev()
27205 var l = state.bufferedRequestCount;
27206 var buffer = new Array(l);
27207 var holder = state.corkedRequestsFree;
27208 holder.entry = entry;
27209
27210 var count = 0;
27211 while (entry) {
27212 buffer[count] = entry;
27213 entry = entry.next;
27214 count += 1;
27215 }
27216
27217 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
27218
27219 // doWrite is almost always async, defer these to save a bit of time
27220 // as the hot path ends with doWrite
27221 state.pendingcb++;
27222 state.lastBufferedRequest = null;
27223 if (holder.next) {
27224 state.corkedRequestsFree = holder.next;
27225 holder.next = null;
27226 } else {
27227 state.corkedRequestsFree = new CorkedRequest(state);
27228 }
27229 } else {
27230 // Slow case, write chunks one-by-one
27231 while (entry) {
27232 var chunk = entry.chunk;
27233 var encoding = entry.encoding;
27234 var cb = entry.callback;
27235 var len = state.objectMode ? 1 : chunk.length;
27236
27237 doWrite(stream, state, false, len, chunk, encoding, cb);
27238 entry = entry.next;
27239 // if we didn't call the onwrite immediately, then
27240 // it means that we need to wait until it does.
27241 // also, that means that the chunk and cb are currently
27242 // being processed, so move the buffer counter past them.
27243 if (state.writing) {
27244 break;
27245 }
27246 }
27247
27248 if (entry === null) state.lastBufferedRequest = null;
27249 }
27250
27251 state.bufferedRequestCount = 0;
27252 state.bufferedRequest = entry;
27253 state.bufferProcessing = false;
27254 }
27255
27256 Writable.prototype._write = function (chunk, encoding, cb) {
27257 cb(new Error('_write() is not implemented'));
27258 };
27259
27260 Writable.prototype._writev = null;
27261
27262 Writable.prototype.end = function (chunk, encoding, cb) {
27263 var state = this._writableState;
27264
27265 if (typeof chunk === 'function') {
27266 cb = chunk;
27267 chunk = null;
27268 encoding = null;
27269 } else if (typeof encoding === 'function') {
27270 cb = encoding;
27271 encoding = null;
27272 }
27273
27274 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
27275
27276 // .end() fully uncorks
27277 if (state.corked) {
27278 state.corked = 1;
27279 this.uncork();
27280 }
27281
27282 // ignore unnecessary end() calls.
27283 if (!state.ending && !state.finished) endWritable(this, state, cb);
27284 };
27285
27286 function needFinish(state) {
27287 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
27288 }
27289
27290 function prefinish(stream, state) {
27291 if (!state.prefinished) {
27292 state.prefinished = true;
27293 stream.emit('prefinish');
27294 }
27295 }
27296
27297 function finishMaybe(stream, state) {
27298 var need = needFinish(state);
27299 if (need) {
27300 if (state.pendingcb === 0) {
27301 prefinish(stream, state);
27302 state.finished = true;
27303 stream.emit('finish');
27304 } else {
27305 prefinish(stream, state);
27306 }
27307 }
27308 return need;
27309 }
27310
27311 function endWritable(stream, state, cb) {
27312 state.ending = true;
27313 finishMaybe(stream, state);
27314 if (cb) {
27315 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
27316 }
27317 state.ended = true;
27318 stream.writable = false;
27319 }
27320
27321 // It seems a linked list but it is not
27322 // there will be only 2 of these for each stream
27323 function CorkedRequest(state) {
27324 var _this = this;
27325
27326 this.next = null;
27327 this.entry = null;
27328
27329 this.finish = function (err) {
27330 var entry = _this.entry;
27331 _this.entry = null;
27332 while (entry) {
27333 var cb = entry.callback;
27334 state.pendingcb--;
27335 cb(err);
27336 entry = entry.next;
27337 }
27338 if (state.corkedRequestsFree) {
27339 state.corkedRequestsFree.next = _this;
27340 } else {
27341 state.corkedRequestsFree = _this;
27342 }
27343 };
27344 }
27345 }).call(this,require('_process'))
27346 },{"./_stream_duplex":15,"_process":13,"buffer":5,"buffer-shims":4,"core-util-is":6,"events":7,"inherits":9,"process-nextick-args":12,"util-deprecate":27}],20:[function(require,module,exports){
27347 'use strict';
27348
27349 var Buffer = require('buffer').Buffer;
27350 /*<replacement>*/
27351 var bufferShim = require('buffer-shims');
27352 /*</replacement>*/
27353
27354 module.exports = BufferList;
27355
27356 function BufferList() {
27357 this.head = null;
27358 this.tail = null;
27359 this.length = 0;
27360 }
27361
27362 BufferList.prototype.push = function (v) {
27363 var entry = { data: v, next: null };
27364 if (this.length > 0) this.tail.next = entry;else this.head = entry;
27365 this.tail = entry;
27366 ++this.length;
27367 };
27368
27369 BufferList.prototype.unshift = function (v) {
27370 var entry = { data: v, next: this.head };
27371 if (this.length === 0) this.tail = entry;
27372 this.head = entry;
27373 ++this.length;
27374 };
27375
27376 BufferList.prototype.shift = function () {
27377 if (this.length === 0) return;
27378 var ret = this.head.data;
27379 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
27380 --this.length;
27381 return ret;
27382 };
27383
27384 BufferList.prototype.clear = function () {
27385 this.head = this.tail = null;
27386 this.length = 0;
27387 };
27388
27389 BufferList.prototype.join = function (s) {
27390 if (this.length === 0) return '';
27391 var p = this.head;
27392 var ret = '' + p.data;
27393 while (p = p.next) {
27394 ret += s + p.data;
27395 }return ret;
27396 };
27397
27398 BufferList.prototype.concat = function (n) {
27399 if (this.length === 0) return bufferShim.alloc(0);
27400 if (this.length === 1) return this.head.data;
27401 var ret = bufferShim.allocUnsafe(n >>> 0);
27402 var p = this.head;
27403 var i = 0;
27404 while (p) {
27405 p.data.copy(ret, i);
27406 i += p.data.length;
27407 p = p.next;
27408 }
27409 return ret;
27410 };
27411 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
27412 module.exports = require("./lib/_stream_passthrough.js")
27413
27414 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
27415 (function (process){
27416 var Stream = (function (){
27417 try {
27418 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
27419 } catch(_){}
27420 }());
27421 exports = module.exports = require('./lib/_stream_readable.js');
27422 exports.Stream = Stream || exports;
27423 exports.Readable = exports;
27424 exports.Writable = require('./lib/_stream_writable.js');
27425 exports.Duplex = require('./lib/_stream_duplex.js');
27426 exports.Transform = require('./lib/_stream_transform.js');
27427 exports.PassThrough = require('./lib/_stream_passthrough.js');
27428
27429 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
27430 module.exports = Stream;
27431 }
27432
27433 }).call(this,require('_process'))
27434 },{"./lib/_stream_duplex.js":15,"./lib/_stream_passthrough.js":16,"./lib/_stream_readable.js":17,"./lib/_stream_transform.js":18,"./lib/_stream_writable.js":19,"_process":13}],23:[function(require,module,exports){
27435 module.exports = require("./lib/_stream_transform.js")
27436
27437 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
27438 module.exports = require("./lib/_stream_writable.js")
27439
27440 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
27441 // Copyright Joyent, Inc. and other Node contributors.
27442 //
27443 // Permission is hereby granted, free of charge, to any person obtaining a
27444 // copy of this software and associated documentation files (the
27445 // "Software"), to deal in the Software without restriction, including
27446 // without limitation the rights to use, copy, modify, merge, publish,
27447 // distribute, sublicense, and/or sell copies of the Software, and to permit
27448 // persons to whom the Software is furnished to do so, subject to the
27449 // following conditions:
27450 //
27451 // The above copyright notice and this permission notice shall be included
27452 // in all copies or substantial portions of the Software.
27453 //
27454 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27455 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27456 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27457 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27458 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27459 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27460 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27461
27462 module.exports = Stream;
27463
27464 var EE = require('events').EventEmitter;
27465 var inherits = require('inherits');
27466
27467 inherits(Stream, EE);
27468 Stream.Readable = require('readable-stream/readable.js');
27469 Stream.Writable = require('readable-stream/writable.js');
27470 Stream.Duplex = require('readable-stream/duplex.js');
27471 Stream.Transform = require('readable-stream/transform.js');
27472 Stream.PassThrough = require('readable-stream/passthrough.js');
27473
27474 // Backwards-compat with node 0.4.x
27475 Stream.Stream = Stream;
27476
27477
27478
27479 // old-style streams. Note that the pipe method (the only relevant
27480 // part of this class) is overridden in the Readable class.
27481
27482 function Stream() {
27483 EE.call(this);
27484 }
27485
27486 Stream.prototype.pipe = function(dest, options) {
27487 var source = this;
27488
27489 function ondata(chunk) {
27490 if (dest.writable) {
27491 if (false === dest.write(chunk) && source.pause) {
27492 source.pause();
27493 }
27494 }
27495 }
27496
27497 source.on('data', ondata);
27498
27499 function ondrain() {
27500 if (source.readable && source.resume) {
27501 source.resume();
27502 }
27503 }
27504
27505 dest.on('drain', ondrain);
27506
27507 // If the 'end' option is not supplied, dest.end() will be called when
27508 // source gets the 'end' or 'close' events. Only dest.end() once.
27509 if (!dest._isStdio && (!options || options.end !== false)) {
27510 source.on('end', onend);
27511 source.on('close', onclose);
27512 }
27513
27514 var didOnEnd = false;
27515 function onend() {
27516 if (didOnEnd) return;
27517 didOnEnd = true;
27518
27519 dest.end();
27520 }
27521
27522
27523 function onclose() {
27524 if (didOnEnd) return;
27525 didOnEnd = true;
27526
27527 if (typeof dest.destroy === 'function') dest.destroy();
27528 }
27529
27530 // don't leave dangling pipes when there are errors.
27531 function onerror(er) {
27532 cleanup();
27533 if (EE.listenerCount(this, 'error') === 0) {
27534 throw er; // Unhandled stream error in pipe.
27535 }
27536 }
27537
27538 source.on('error', onerror);
27539 dest.on('error', onerror);
27540
27541 // remove all the event listeners that were added.
27542 function cleanup() {
27543 source.removeListener('data', ondata);
27544 dest.removeListener('drain', ondrain);
27545
27546 source.removeListener('end', onend);
27547 source.removeListener('close', onclose);
27548
27549 source.removeListener('error', onerror);
27550 dest.removeListener('error', onerror);
27551
27552 source.removeListener('end', cleanup);
27553 source.removeListener('close', cleanup);
27554
27555 dest.removeListener('close', cleanup);
27556 }
27557
27558 source.on('end', cleanup);
27559 source.on('close', cleanup);
27560
27561 dest.on('close', cleanup);
27562
27563 dest.emit('pipe', source);
27564
27565 // Allow for unix-like usage: A.pipe(B).pipe(C)
27566 return dest;
27567 };
27568
27569 },{"events":7,"inherits":9,"readable-stream/duplex.js":14,"readable-stream/passthrough.js":21,"readable-stream/readable.js":22,"readable-stream/transform.js":23,"readable-stream/writable.js":24}],26:[function(require,module,exports){
27570 // Copyright Joyent, Inc. and other Node contributors.
27571 //
27572 // Permission is hereby granted, free of charge, to any person obtaining a
27573 // copy of this software and associated documentation files (the
27574 // "Software"), to deal in the Software without restriction, including
27575 // without limitation the rights to use, copy, modify, merge, publish,
27576 // distribute, sublicense, and/or sell copies of the Software, and to permit
27577 // persons to whom the Software is furnished to do so, subject to the
27578 // following conditions:
27579 //
27580 // The above copyright notice and this permission notice shall be included
27581 // in all copies or substantial portions of the Software.
27582 //
27583 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27584 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27585 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27586 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27587 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27588 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27589 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27590
27591 var Buffer = require('buffer').Buffer;
27592
27593 var isBufferEncoding = Buffer.isEncoding
27594 || function(encoding) {
27595 switch (encoding && encoding.toLowerCase()) {
27596 case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
27597 default: return false;
27598 }
27599 }
27600
27601
27602 function assertEncoding(encoding) {
27603 if (encoding && !isBufferEncoding(encoding)) {
27604 throw new Error('Unknown encoding: ' + encoding);
27605 }
27606 }
27607
27608 // StringDecoder provides an interface for efficiently splitting a series of
27609 // buffers into a series of JS strings without breaking apart multi-byte
27610 // characters. CESU-8 is handled as part of the UTF-8 encoding.
27611 //
27612 // @TODO Handling all encodings inside a single object makes it very difficult
27613 // to reason about this code, so it should be split up in the future.
27614 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
27615 // points as used by CESU-8.
27616 var StringDecoder = exports.StringDecoder = function(encoding) {
27617 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
27618 assertEncoding(encoding);
27619 switch (this.encoding) {
27620 case 'utf8':
27621 // CESU-8 represents each of Surrogate Pair by 3-bytes
27622 this.surrogateSize = 3;
27623 break;
27624 case 'ucs2':
27625 case 'utf16le':
27626 // UTF-16 represents each of Surrogate Pair by 2-bytes
27627 this.surrogateSize = 2;
27628 this.detectIncompleteChar = utf16DetectIncompleteChar;
27629 break;
27630 case 'base64':
27631 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
27632 this.surrogateSize = 3;
27633 this.detectIncompleteChar = base64DetectIncompleteChar;
27634 break;
27635 default:
27636 this.write = passThroughWrite;
27637 return;
27638 }
27639
27640 // Enough space to store all bytes of a single character. UTF-8 needs 4
27641 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
27642 this.charBuffer = new Buffer(6);
27643 // Number of bytes received for the current incomplete multi-byte character.
27644 this.charReceived = 0;
27645 // Number of bytes expected for the current incomplete multi-byte character.
27646 this.charLength = 0;
27647 };
27648
27649
27650 // write decodes the given buffer and returns it as JS string that is
27651 // guaranteed to not contain any partial multi-byte characters. Any partial
27652 // character found at the end of the buffer is buffered up, and will be
27653 // returned when calling write again with the remaining bytes.
27654 //
27655 // Note: Converting a Buffer containing an orphan surrogate to a String
27656 // currently works, but converting a String to a Buffer (via `new Buffer`, or
27657 // Buffer#write) will replace incomplete surrogates with the unicode
27658 // replacement character. See https://codereview.chromium.org/121173009/ .
27659 StringDecoder.prototype.write = function(buffer) {
27660 var charStr = '';
27661 // if our last write ended with an incomplete multibyte character
27662 while (this.charLength) {
27663 // determine how many remaining bytes this buffer has to offer for this char
27664 var available = (buffer.length >= this.charLength - this.charReceived) ?
27665 this.charLength - this.charReceived :
27666 buffer.length;
27667
27668 // add the new bytes to the char buffer
27669 buffer.copy(this.charBuffer, this.charReceived, 0, available);
27670 this.charReceived += available;
27671
27672 if (this.charReceived < this.charLength) {
27673 // still not enough chars in this buffer? wait for more ...
27674 return '';
27675 }
27676
27677 // remove bytes belonging to the current character from the buffer
27678 buffer = buffer.slice(available, buffer.length);
27679
27680 // get the character that was split
27681 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
27682
27683 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27684 var charCode = charStr.charCodeAt(charStr.length - 1);
27685 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27686 this.charLength += this.surrogateSize;
27687 charStr = '';
27688 continue;
27689 }
27690 this.charReceived = this.charLength = 0;
27691
27692 // if there are no more bytes in this buffer, just emit our char
27693 if (buffer.length === 0) {
27694 return charStr;
27695 }
27696 break;
27697 }
27698
27699 // determine and set charLength / charReceived
27700 this.detectIncompleteChar(buffer);
27701
27702 var end = buffer.length;
27703 if (this.charLength) {
27704 // buffer the incomplete character bytes we got
27705 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
27706 end -= this.charReceived;
27707 }
27708
27709 charStr += buffer.toString(this.encoding, 0, end);
27710
27711 var end = charStr.length - 1;
27712 var charCode = charStr.charCodeAt(end);
27713 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27714 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27715 var size = this.surrogateSize;
27716 this.charLength += size;
27717 this.charReceived += size;
27718 this.charBuffer.copy(this.charBuffer, size, 0, size);
27719 buffer.copy(this.charBuffer, 0, 0, size);
27720 return charStr.substring(0, end);
27721 }
27722
27723 // or just emit the charStr
27724 return charStr;
27725 };
27726
27727 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
27728 // the end of the given buffer. If so, it sets this.charLength to the byte
27729 // length that character, and sets this.charReceived to the number of bytes
27730 // that are available for this character.
27731 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
27732 // determine how many bytes we have to check at the end of this buffer
27733 var i = (buffer.length >= 3) ? 3 : buffer.length;
27734
27735 // Figure out if one of the last i bytes of our buffer announces an
27736 // incomplete char.
27737 for (; i > 0; i--) {
27738 var c = buffer[buffer.length - i];
27739
27740 // See http://en.wikipedia.org/wiki/UTF-8#Description
27741
27742 // 110XXXXX
27743 if (i == 1 && c >> 5 == 0x06) {
27744 this.charLength = 2;
27745 break;
27746 }
27747
27748 // 1110XXXX
27749 if (i <= 2 && c >> 4 == 0x0E) {
27750 this.charLength = 3;
27751 break;
27752 }
27753
27754 // 11110XXX
27755 if (i <= 3 && c >> 3 == 0x1E) {
27756 this.charLength = 4;
27757 break;
27758 }
27759 }
27760 this.charReceived = i;
27761 };
27762
27763 StringDecoder.prototype.end = function(buffer) {
27764 var res = '';
27765 if (buffer && buffer.length)
27766 res = this.write(buffer);
27767
27768 if (this.charReceived) {
27769 var cr = this.charReceived;
27770 var buf = this.charBuffer;
27771 var enc = this.encoding;
27772 res += buf.slice(0, cr).toString(enc);
27773 }
27774
27775 return res;
27776 };
27777
27778 function passThroughWrite(buffer) {
27779 return buffer.toString(this.encoding);
27780 }
27781
27782 function utf16DetectIncompleteChar(buffer) {
27783 this.charReceived = buffer.length % 2;
27784 this.charLength = this.charReceived ? 2 : 0;
27785 }
27786
27787 function base64DetectIncompleteChar(buffer) {
27788 this.charReceived = buffer.length % 3;
27789 this.charLength = this.charReceived ? 3 : 0;
27790 }
27791
27792 },{"buffer":5}],27:[function(require,module,exports){
27793 (function (global){
27794
27795 /**
27796 * Module exports.
27797 */
27798
27799 module.exports = deprecate;
27800
27801 /**
27802 * Mark that a method should not be used.
27803 * Returns a modified function which warns once by default.
27804 *
27805 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
27806 *
27807 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
27808 * will throw an Error when invoked.
27809 *
27810 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
27811 * will invoke `console.trace()` instead of `console.error()`.
27812 *
27813 * @param {Function} fn - the function to deprecate
27814 * @param {String} msg - the string to print to the console when `fn` is invoked
27815 * @returns {Function} a new "deprecated" version of `fn`
27816 * @api public
27817 */
27818
27819 function deprecate (fn, msg) {
27820 if (config('noDeprecation')) {
27821 return fn;
27822 }
27823
27824 var warned = false;
27825 function deprecated() {
27826 if (!warned) {
27827 if (config('throwDeprecation')) {
27828 throw new Error(msg);
27829 } else if (config('traceDeprecation')) {
27830 console.trace(msg);
27831 } else {
27832 console.warn(msg);
27833 }
27834 warned = true;
27835 }
27836 return fn.apply(this, arguments);
27837 }
27838
27839 return deprecated;
27840 }
27841
27842 /**
27843 * Checks `localStorage` for boolean values for the given `name`.
27844 *
27845 * @param {String} name
27846 * @returns {Boolean}
27847 * @api private
27848 */
27849
27850 function config (name) {
27851 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
27852 try {
27853 if (!global.localStorage) return false;
27854 } catch (_) {
27855 return false;
27856 }
27857 var val = global.localStorage[name];
27858 if (null == val) return false;
27859 return String(val).toLowerCase() === 'true';
27860 }
27861
27862 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
27863 },{}],28:[function(require,module,exports){
27864 arguments[4][9][0].apply(exports,arguments)
27865 },{"dup":9}],29:[function(require,module,exports){
27866 module.exports = function isBuffer(arg) {
27867 return arg && typeof arg === 'object'
27868 && typeof arg.copy === 'function'
27869 && typeof arg.fill === 'function'
27870 && typeof arg.readUInt8 === 'function';
27871 }
27872 },{}],30:[function(require,module,exports){
27873 (function (process,global){
27874 // Copyright Joyent, Inc. and other Node contributors.
27875 //
27876 // Permission is hereby granted, free of charge, to any person obtaining a
27877 // copy of this software and associated documentation files (the
27878 // "Software"), to deal in the Software without restriction, including
27879 // without limitation the rights to use, copy, modify, merge, publish,
27880 // distribute, sublicense, and/or sell copies of the Software, and to permit
27881 // persons to whom the Software is furnished to do so, subject to the
27882 // following conditions:
27883 //
27884 // The above copyright notice and this permission notice shall be included
27885 // in all copies or substantial portions of the Software.
27886 //
27887 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27888 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27889 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27890 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27891 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27892 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27893 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27894
27895 var formatRegExp = /%[sdj%]/g;
27896 exports.format = function(f) {
27897 if (!isString(f)) {
27898 var objects = [];
27899 for (var i = 0; i < arguments.length; i++) {
27900 objects.push(inspect(arguments[i]));
27901 }
27902 return objects.join(' ');
27903 }
27904
27905 var i = 1;
27906 var args = arguments;
27907 var len = args.length;
27908 var str = String(f).replace(formatRegExp, function(x) {
27909 if (x === '%%') return '%';
27910 if (i >= len) return x;
27911 switch (x) {
27912 case '%s': return String(args[i++]);
27913 case '%d': return Number(args[i++]);
27914 case '%j':
27915 try {
27916 return JSON.stringify(args[i++]);
27917 } catch (_) {
27918 return '[Circular]';
27919 }
27920 default:
27921 return x;
27922 }
27923 });
27924 for (var x = args[i]; i < len; x = args[++i]) {
27925 if (isNull(x) || !isObject(x)) {
27926 str += ' ' + x;
27927 } else {
27928 str += ' ' + inspect(x);
27929 }
27930 }
27931 return str;
27932 };
27933
27934
27935 // Mark that a method should not be used.
27936 // Returns a modified function which warns once by default.
27937 // If --no-deprecation is set, then it is a no-op.
27938 exports.deprecate = function(fn, msg) {
27939 // Allow for deprecating things in the process of starting up.
27940 if (isUndefined(global.process)) {
27941 return function() {
27942 return exports.deprecate(fn, msg).apply(this, arguments);
27943 };
27944 }
27945
27946 if (process.noDeprecation === true) {
27947 return fn;
27948 }
27949
27950 var warned = false;
27951 function deprecated() {
27952 if (!warned) {
27953 if (process.throwDeprecation) {
27954 throw new Error(msg);
27955 } else if (process.traceDeprecation) {
27956 console.trace(msg);
27957 } else {
27958 console.error(msg);
27959 }
27960 warned = true;
27961 }
27962 return fn.apply(this, arguments);
27963 }
27964
27965 return deprecated;
27966 };
27967
27968
27969 var debugs = {};
27970 var debugEnviron;
27971 exports.debuglog = function(set) {
27972 if (isUndefined(debugEnviron))
27973 debugEnviron = process.env.NODE_DEBUG || '';
27974 set = set.toUpperCase();
27975 if (!debugs[set]) {
27976 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
27977 var pid = process.pid;
27978 debugs[set] = function() {
27979 var msg = exports.format.apply(exports, arguments);
27980 console.error('%s %d: %s', set, pid, msg);
27981 };
27982 } else {
27983 debugs[set] = function() {};
27984 }
27985 }
27986 return debugs[set];
27987 };
27988
27989
27990 /**
27991 * Echos the value of a value. Trys to print the value out
27992 * in the best way possible given the different types.
27993 *
27994 * @param {Object} obj The object to print out.
27995 * @param {Object} opts Optional options object that alters the output.
27996 */
27997 /* legacy: obj, showHidden, depth, colors*/
27998 function inspect(obj, opts) {
27999 // default options
28000 var ctx = {
28001 seen: [],
28002 stylize: stylizeNoColor
28003 };
28004 // legacy...
28005 if (arguments.length >= 3) ctx.depth = arguments[2];
28006 if (arguments.length >= 4) ctx.colors = arguments[3];
28007 if (isBoolean(opts)) {
28008 // legacy...
28009 ctx.showHidden = opts;
28010 } else if (opts) {
28011 // got an "options" object
28012 exports._extend(ctx, opts);
28013 }
28014 // set default options
28015 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
28016 if (isUndefined(ctx.depth)) ctx.depth = 2;
28017 if (isUndefined(ctx.colors)) ctx.colors = false;
28018 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
28019 if (ctx.colors) ctx.stylize = stylizeWithColor;
28020 return formatValue(ctx, obj, ctx.depth);
28021 }
28022 exports.inspect = inspect;
28023
28024
28025 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
28026 inspect.colors = {
28027 'bold' : [1, 22],
28028 'italic' : [3, 23],
28029 'underline' : [4, 24],
28030 'inverse' : [7, 27],
28031 'white' : [37, 39],
28032 'grey' : [90, 39],
28033 'black' : [30, 39],
28034 'blue' : [34, 39],
28035 'cyan' : [36, 39],
28036 'green' : [32, 39],
28037 'magenta' : [35, 39],
28038 'red' : [31, 39],
28039 'yellow' : [33, 39]
28040 };
28041
28042 // Don't use 'blue' not visible on cmd.exe
28043 inspect.styles = {
28044 'special': 'cyan',
28045 'number': 'yellow',
28046 'boolean': 'yellow',
28047 'undefined': 'grey',
28048 'null': 'bold',
28049 'string': 'green',
28050 'date': 'magenta',
28051 // "name": intentionally not styling
28052 'regexp': 'red'
28053 };
28054
28055
28056 function stylizeWithColor(str, styleType) {
28057 var style = inspect.styles[styleType];
28058
28059 if (style) {
28060 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
28061 '\u001b[' + inspect.colors[style][1] + 'm';
28062 } else {
28063 return str;
28064 }
28065 }
28066
28067
28068 function stylizeNoColor(str, styleType) {
28069 return str;
28070 }
28071
28072
28073 function arrayToHash(array) {
28074 var hash = {};
28075
28076 array.forEach(function(val, idx) {
28077 hash[val] = true;
28078 });
28079
28080 return hash;
28081 }
28082
28083
28084 function formatValue(ctx, value, recurseTimes) {
28085 // Provide a hook for user-specified inspect functions.
28086 // Check that value is an object with an inspect function on it
28087 if (ctx.customInspect &&
28088 value &&
28089 isFunction(value.inspect) &&
28090 // Filter out the util module, it's inspect function is special
28091 value.inspect !== exports.inspect &&
28092 // Also filter out any prototype objects using the circular check.
28093 !(value.constructor && value.constructor.prototype === value)) {
28094 var ret = value.inspect(recurseTimes, ctx);
28095 if (!isString(ret)) {
28096 ret = formatValue(ctx, ret, recurseTimes);
28097 }
28098 return ret;
28099 }
28100
28101 // Primitive types cannot have properties
28102 var primitive = formatPrimitive(ctx, value);
28103 if (primitive) {
28104 return primitive;
28105 }
28106
28107 // Look up the keys of the object.
28108 var keys = Object.keys(value);
28109 var visibleKeys = arrayToHash(keys);
28110
28111 if (ctx.showHidden) {
28112 keys = Object.getOwnPropertyNames(value);
28113 }
28114
28115 // IE doesn't make error fields non-enumerable
28116 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
28117 if (isError(value)
28118 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
28119 return formatError(value);
28120 }
28121
28122 // Some type of object without properties can be shortcutted.
28123 if (keys.length === 0) {
28124 if (isFunction(value)) {
28125 var name = value.name ? ': ' + value.name : '';
28126 return ctx.stylize('[Function' + name + ']', 'special');
28127 }
28128 if (isRegExp(value)) {
28129 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28130 }
28131 if (isDate(value)) {
28132 return ctx.stylize(Date.prototype.toString.call(value), 'date');
28133 }
28134 if (isError(value)) {
28135 return formatError(value);
28136 }
28137 }
28138
28139 var base = '', array = false, braces = ['{', '}'];
28140
28141 // Make Array say that they are Array
28142 if (isArray(value)) {
28143 array = true;
28144 braces = ['[', ']'];
28145 }
28146
28147 // Make functions say that they are functions
28148 if (isFunction(value)) {
28149 var n = value.name ? ': ' + value.name : '';
28150 base = ' [Function' + n + ']';
28151 }
28152
28153 // Make RegExps say that they are RegExps
28154 if (isRegExp(value)) {
28155 base = ' ' + RegExp.prototype.toString.call(value);
28156 }
28157
28158 // Make dates with properties first say the date
28159 if (isDate(value)) {
28160 base = ' ' + Date.prototype.toUTCString.call(value);
28161 }
28162
28163 // Make error with message first say the error
28164 if (isError(value)) {
28165 base = ' ' + formatError(value);
28166 }
28167
28168 if (keys.length === 0 && (!array || value.length == 0)) {
28169 return braces[0] + base + braces[1];
28170 }
28171
28172 if (recurseTimes < 0) {
28173 if (isRegExp(value)) {
28174 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28175 } else {
28176 return ctx.stylize('[Object]', 'special');
28177 }
28178 }
28179
28180 ctx.seen.push(value);
28181
28182 var output;
28183 if (array) {
28184 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
28185 } else {
28186 output = keys.map(function(key) {
28187 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
28188 });
28189 }
28190
28191 ctx.seen.pop();
28192
28193 return reduceToSingleString(output, base, braces);
28194 }
28195
28196
28197 function formatPrimitive(ctx, value) {
28198 if (isUndefined(value))
28199 return ctx.stylize('undefined', 'undefined');
28200 if (isString(value)) {
28201 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
28202 .replace(/'/g, "\\'")
28203 .replace(/\\"/g, '"') + '\'';
28204 return ctx.stylize(simple, 'string');
28205 }
28206 if (isNumber(value))
28207 return ctx.stylize('' + value, 'number');
28208 if (isBoolean(value))
28209 return ctx.stylize('' + value, 'boolean');
28210 // For some reason typeof null is "object", so special case here.
28211 if (isNull(value))
28212 return ctx.stylize('null', 'null');
28213 }
28214
28215
28216 function formatError(value) {
28217 return '[' + Error.prototype.toString.call(value) + ']';
28218 }
28219
28220
28221 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
28222 var output = [];
28223 for (var i = 0, l = value.length; i < l; ++i) {
28224 if (hasOwnProperty(value, String(i))) {
28225 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28226 String(i), true));
28227 } else {
28228 output.push('');
28229 }
28230 }
28231 keys.forEach(function(key) {
28232 if (!key.match(/^\d+$/)) {
28233 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28234 key, true));
28235 }
28236 });
28237 return output;
28238 }
28239
28240
28241 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
28242 var name, str, desc;
28243 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
28244 if (desc.get) {
28245 if (desc.set) {
28246 str = ctx.stylize('[Getter/Setter]', 'special');
28247 } else {
28248 str = ctx.stylize('[Getter]', 'special');
28249 }
28250 } else {
28251 if (desc.set) {
28252 str = ctx.stylize('[Setter]', 'special');
28253 }
28254 }
28255 if (!hasOwnProperty(visibleKeys, key)) {
28256 name = '[' + key + ']';
28257 }
28258 if (!str) {
28259 if (ctx.seen.indexOf(desc.value) < 0) {
28260 if (isNull(recurseTimes)) {
28261 str = formatValue(ctx, desc.value, null);
28262 } else {
28263 str = formatValue(ctx, desc.value, recurseTimes - 1);
28264 }
28265 if (str.indexOf('\n') > -1) {
28266 if (array) {
28267 str = str.split('\n').map(function(line) {
28268 return ' ' + line;
28269 }).join('\n').substr(2);
28270 } else {
28271 str = '\n' + str.split('\n').map(function(line) {
28272 return ' ' + line;
28273 }).join('\n');
28274 }
28275 }
28276 } else {
28277 str = ctx.stylize('[Circular]', 'special');
28278 }
28279 }
28280 if (isUndefined(name)) {
28281 if (array && key.match(/^\d+$/)) {
28282 return str;
28283 }
28284 name = JSON.stringify('' + key);
28285 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
28286 name = name.substr(1, name.length - 2);
28287 name = ctx.stylize(name, 'name');
28288 } else {
28289 name = name.replace(/'/g, "\\'")
28290 .replace(/\\"/g, '"')
28291 .replace(/(^"|"$)/g, "'");
28292 name = ctx.stylize(name, 'string');
28293 }
28294 }
28295
28296 return name + ': ' + str;
28297 }
28298
28299
28300 function reduceToSingleString(output, base, braces) {
28301 var numLinesEst = 0;
28302 var length = output.reduce(function(prev, cur) {
28303 numLinesEst++;
28304 if (cur.indexOf('\n') >= 0) numLinesEst++;
28305 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
28306 }, 0);
28307
28308 if (length > 60) {
28309 return braces[0] +
28310 (base === '' ? '' : base + '\n ') +
28311 ' ' +
28312 output.join(',\n ') +
28313 ' ' +
28314 braces[1];
28315 }
28316
28317 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
28318 }
28319
28320
28321 // NOTE: These type checking functions intentionally don't use `instanceof`
28322 // because it is fragile and can be easily faked with `Object.create()`.
28323 function isArray(ar) {
28324 return Array.isArray(ar);
28325 }
28326 exports.isArray = isArray;
28327
28328 function isBoolean(arg) {
28329 return typeof arg === 'boolean';
28330 }
28331 exports.isBoolean = isBoolean;
28332
28333 function isNull(arg) {
28334 return arg === null;
28335 }
28336 exports.isNull = isNull;
28337
28338 function isNullOrUndefined(arg) {
28339 return arg == null;
28340 }
28341 exports.isNullOrUndefined = isNullOrUndefined;
28342
28343 function isNumber(arg) {
28344 return typeof arg === 'number';
28345 }
28346 exports.isNumber = isNumber;
28347
28348 function isString(arg) {
28349 return typeof arg === 'string';
28350 }
28351 exports.isString = isString;
28352
28353 function isSymbol(arg) {
28354 return typeof arg === 'symbol';
28355 }
28356 exports.isSymbol = isSymbol;
28357
28358 function isUndefined(arg) {
28359 return arg === void 0;
28360 }
28361 exports.isUndefined = isUndefined;
28362
28363 function isRegExp(re) {
28364 return isObject(re) && objectToString(re) === '[object RegExp]';
28365 }
28366 exports.isRegExp = isRegExp;
28367
28368 function isObject(arg) {
28369 return typeof arg === 'object' && arg !== null;
28370 }
28371 exports.isObject = isObject;
28372
28373 function isDate(d) {
28374 return isObject(d) && objectToString(d) === '[object Date]';
28375 }
28376 exports.isDate = isDate;
28377
28378 function isError(e) {
28379 return isObject(e) &&
28380 (objectToString(e) === '[object Error]' || e instanceof Error);
28381 }
28382 exports.isError = isError;
28383
28384 function isFunction(arg) {
28385 return typeof arg === 'function';
28386 }
28387 exports.isFunction = isFunction;
28388
28389 function isPrimitive(arg) {
28390 return arg === null ||
28391 typeof arg === 'boolean' ||
28392 typeof arg === 'number' ||
28393 typeof arg === 'string' ||
28394 typeof arg === 'symbol' || // ES6 symbol
28395 typeof arg === 'undefined';
28396 }
28397 exports.isPrimitive = isPrimitive;
28398
28399 exports.isBuffer = require('./support/isBuffer');
28400
28401 function objectToString(o) {
28402 return Object.prototype.toString.call(o);
28403 }
28404
28405
28406 function pad(n) {
28407 return n < 10 ? '0' + n.toString(10) : n.toString(10);
28408 }
28409
28410
28411 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
28412 'Oct', 'Nov', 'Dec'];
28413
28414 // 26 Feb 16:19:34
28415 function timestamp() {
28416 var d = new Date();
28417 var time = [pad(d.getHours()),
28418 pad(d.getMinutes()),
28419 pad(d.getSeconds())].join(':');
28420 return [d.getDate(), months[d.getMonth()], time].join(' ');
28421 }
28422
28423
28424 // log is just a thin wrapper to console.log that prepends a timestamp
28425 exports.log = function() {
28426 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
28427 };
28428
28429
28430 /**
28431 * Inherit the prototype methods from one constructor into another.
28432 *
28433 * The Function.prototype.inherits from lang.js rewritten as a standalone
28434 * function (not on Function.prototype). NOTE: If this file is to be loaded
28435 * during bootstrapping this function needs to be rewritten using some native
28436 * functions as prototype setup using normal JavaScript does not work as
28437 * expected during bootstrapping (see mirror.js in r114903).
28438 *
28439 * @param {function} ctor Constructor function which needs to inherit the
28440 * prototype.
28441 * @param {function} superCtor Constructor function to inherit prototype from.
28442 */
28443 exports.inherits = require('inherits');
28444
28445 exports._extend = function(origin, add) {
28446 // Don't do anything if add isn't an object
28447 if (!add || !isObject(add)) return origin;
28448
28449 var keys = Object.keys(add);
28450 var i = keys.length;
28451 while (i--) {
28452 origin[keys[i]] = add[keys[i]];
28453 }
28454 return origin;
28455 };
28456
28457 function hasOwnProperty(obj, prop) {
28458 return Object.prototype.hasOwnProperty.call(obj, prop);
28459 }
28460
28461 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28462 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
28463 (function (Buffer){
28464 const createKeccakHash = require('keccak')
28465 const secp256k1 = require('secp256k1')
28466 const assert = require('assert')
28467 const rlp = require('rlp')
28468 const BN = require('bn.js')
28469 const createHash = require('create-hash')
28470 Object.assign(exports, require('ethjs-util'))
28471
28472 /**
28473 * the max integer that this VM can handle (a ```BN```)
28474 * @var {BN} MAX_INTEGER
28475 */
28476 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
28477
28478 /**
28479 * 2^256 (a ```BN```)
28480 * @var {BN} TWO_POW256
28481 */
28482 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
28483
28484 /**
28485 * SHA3-256 hash of null (a ```String```)
28486 * @var {String} SHA3_NULL_S
28487 */
28488 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
28489
28490 /**
28491 * SHA3-256 hash of null (a ```Buffer```)
28492 * @var {Buffer} SHA3_NULL
28493 */
28494 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
28495
28496 /**
28497 * SHA3-256 of an RLP of an empty array (a ```String```)
28498 * @var {String} SHA3_RLP_ARRAY_S
28499 */
28500 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
28501
28502 /**
28503 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
28504 * @var {Buffer} SHA3_RLP_ARRAY
28505 */
28506 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
28507
28508 /**
28509 * SHA3-256 hash of the RLP of null (a ```String```)
28510 * @var {String} SHA3_RLP_S
28511 */
28512 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
28513
28514 /**
28515 * SHA3-256 hash of the RLP of null (a ```Buffer```)
28516 * @var {Buffer} SHA3_RLP
28517 */
28518 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
28519
28520 /**
28521 * [`BN`](https://github.com/indutny/bn.js)
28522 * @var {Function}
28523 */
28524 exports.BN = BN
28525
28526 /**
28527 * [`rlp`](https://github.com/ethereumjs/rlp)
28528 * @var {Function}
28529 */
28530 exports.rlp = rlp
28531
28532 /**
28533 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
28534 * @var {Object}
28535 */
28536 exports.secp256k1 = secp256k1
28537
28538 /**
28539 * Returns a buffer filled with 0s
28540 * @method zeros
28541 * @param {Number} bytes the number of bytes the buffer should be
28542 * @return {Buffer}
28543 */
28544 exports.zeros = function (bytes) {
28545 return Buffer.allocUnsafe(bytes).fill(0)
28546 }
28547
28548 /**
28549 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28550 * Or it truncates the beginning if it exceeds.
28551 * @method lsetLength
28552 * @param {Buffer|Array} msg the value to pad
28553 * @param {Number} length the number of bytes the output should be
28554 * @param {Boolean} [right=false] whether to start padding form the left or right
28555 * @return {Buffer|Array}
28556 */
28557 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
28558 var buf = exports.zeros(length)
28559 msg = exports.toBuffer(msg)
28560 if (right) {
28561 if (msg.length < length) {
28562 msg.copy(buf)
28563 return buf
28564 }
28565 return msg.slice(0, length)
28566 } else {
28567 if (msg.length < length) {
28568 msg.copy(buf, length - msg.length)
28569 return buf
28570 }
28571 return msg.slice(-length)
28572 }
28573 }
28574
28575 /**
28576 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28577 * Or it truncates the beginning if it exceeds.
28578 * @param {Buffer|Array} msg the value to pad
28579 * @param {Number} length the number of bytes the output should be
28580 * @return {Buffer|Array}
28581 */
28582 exports.setLengthRight = function (msg, length) {
28583 return exports.setLength(msg, length, true)
28584 }
28585
28586 /**
28587 * Trims leading zeros from a `Buffer` or an `Array`
28588 * @param {Buffer|Array|String} a
28589 * @return {Buffer|Array|String}
28590 */
28591 exports.unpad = exports.stripZeros = function (a) {
28592 a = exports.stripHexPrefix(a)
28593 var first = a[0]
28594 while (a.length > 0 && first.toString() === '0') {
28595 a = a.slice(1)
28596 first = a[0]
28597 }
28598 return a
28599 }
28600 /**
28601 * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.
28602 * @param {*} v the value
28603 */
28604 exports.toBuffer = function (v) {
28605 if (!Buffer.isBuffer(v)) {
28606 if (Array.isArray(v)) {
28607 v = Buffer.from(v)
28608 } else if (typeof v === 'string') {
28609 if (exports.isHexPrefixed(v)) {
28610 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
28611 } else {
28612 v = Buffer.from(v)
28613 }
28614 } else if (typeof v === 'number') {
28615 v = exports.intToBuffer(v)
28616 } else if (v === null || v === undefined) {
28617 v = Buffer.allocUnsafe(0)
28618 } else if (v.toArray) {
28619 // converts a BN to a Buffer
28620 v = Buffer.from(v.toArray())
28621 } else {
28622 throw new Error('invalid type')
28623 }
28624 }
28625 return v
28626 }
28627
28628 /**
28629 * Converts a `Buffer` to a `Number`
28630 * @param {Buffer} buf
28631 * @return {Number}
28632 * @throws If the input number exceeds 53 bits.
28633 */
28634 exports.bufferToInt = function (buf) {
28635 return new BN(exports.toBuffer(buf)).toNumber()
28636 }
28637
28638 /**
28639 * Converts a `Buffer` into a hex `String`
28640 * @param {Buffer} buf
28641 * @return {String}
28642 */
28643 exports.bufferToHex = function (buf) {
28644 buf = exports.toBuffer(buf)
28645 return '0x' + buf.toString('hex')
28646 }
28647
28648 /**
28649 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
28650 * @param {Buffer} num
28651 * @return {BN}
28652 */
28653 exports.fromSigned = function (num) {
28654 return new BN(num).fromTwos(256)
28655 }
28656
28657 /**
28658 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
28659 * @param {BN} num
28660 * @return {Buffer}
28661 */
28662 exports.toUnsigned = function (num) {
28663 return Buffer.from(num.toTwos(256).toArray())
28664 }
28665
28666 /**
28667 * Creates SHA-3 hash of the input
28668 * @param {Buffer|Array|String|Number} a the input data
28669 * @param {Number} [bits=256] the SHA width
28670 * @return {Buffer}
28671 */
28672 exports.sha3 = function (a, bits) {
28673 a = exports.toBuffer(a)
28674 if (!bits) bits = 256
28675
28676 return createKeccakHash('keccak' + bits).update(a).digest()
28677 }
28678
28679 /**
28680 * Creates SHA256 hash of the input
28681 * @param {Buffer|Array|String|Number} a the input data
28682 * @return {Buffer}
28683 */
28684 exports.sha256 = function (a) {
28685 a = exports.toBuffer(a)
28686 return createHash('sha256').update(a).digest()
28687 }
28688
28689 /**
28690 * Creates RIPEMD160 hash of the input
28691 * @param {Buffer|Array|String|Number} a the input data
28692 * @param {Boolean} padded whether it should be padded to 256 bits or not
28693 * @return {Buffer}
28694 */
28695 exports.ripemd160 = function (a, padded) {
28696 a = exports.toBuffer(a)
28697 var hash = createHash('rmd160').update(a).digest()
28698 if (padded === true) {
28699 return exports.setLength(hash, 32)
28700 } else {
28701 return hash
28702 }
28703 }
28704
28705 /**
28706 * Creates SHA-3 hash of the RLP encoded version of the input
28707 * @param {Buffer|Array|String|Number} a the input data
28708 * @return {Buffer}
28709 */
28710 exports.rlphash = function (a) {
28711 return exports.sha3(rlp.encode(a))
28712 }
28713
28714 /**
28715 * Checks if the private key satisfies the rules of the curve secp256k1.
28716 * @param {Buffer} privateKey
28717 * @return {Boolean}
28718 */
28719 exports.isValidPrivate = function (privateKey) {
28720 return secp256k1.privateKeyVerify(privateKey)
28721 }
28722
28723 /**
28724 * Checks if the public key satisfies the rules of the curve secp256k1
28725 * and the requirements of Ethereum.
28726 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
28727 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28728 * @return {Boolean}
28729 */
28730 exports.isValidPublic = function (publicKey, sanitize) {
28731 if (publicKey.length === 64) {
28732 // Convert to SEC1 for secp256k1
28733 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
28734 }
28735
28736 if (!sanitize) {
28737 return false
28738 }
28739
28740 return secp256k1.publicKeyVerify(publicKey)
28741 }
28742
28743 /**
28744 * Returns the ethereum address of a given public key.
28745 * Accepts "Ethereum public keys" and SEC1 encoded keys.
28746 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
28747 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28748 * @return {Buffer}
28749 */
28750 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
28751 pubKey = exports.toBuffer(pubKey)
28752 if (sanitize && (pubKey.length !== 64)) {
28753 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
28754 }
28755 assert(pubKey.length === 64)
28756 // Only take the lower 160bits of the hash
28757 return exports.sha3(pubKey).slice(-20)
28758 }
28759
28760 /**
28761 * Returns the ethereum public key of a given private key
28762 * @param {Buffer} privateKey A private key must be 256 bits wide
28763 * @return {Buffer}
28764 */
28765 var privateToPublic = exports.privateToPublic = function (privateKey) {
28766 privateKey = exports.toBuffer(privateKey)
28767 // skip the type flag and use the X, Y points
28768 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
28769 }
28770
28771 /**
28772 * Converts a public key to the Ethereum format.
28773 * @param {Buffer} publicKey
28774 * @return {Buffer}
28775 */
28776 exports.importPublic = function (publicKey) {
28777 publicKey = exports.toBuffer(publicKey)
28778 if (publicKey.length !== 64) {
28779 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
28780 }
28781 return publicKey
28782 }
28783
28784 /**
28785 * ECDSA sign
28786 * @param {Buffer} msgHash
28787 * @param {Buffer} privateKey
28788 * @return {Object}
28789 */
28790 exports.ecsign = function (msgHash, privateKey) {
28791 var sig = secp256k1.sign(msgHash, privateKey)
28792
28793 var ret = {}
28794 ret.r = sig.signature.slice(0, 32)
28795 ret.s = sig.signature.slice(32, 64)
28796 ret.v = sig.recovery + 27
28797 return ret
28798 }
28799
28800 /**
28801 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
28802 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
28803 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
28804 * used to produce the signature.
28805 * @param message
28806 * @returns {Buffer} hash
28807 */
28808 exports.hashPersonalMessage = function (message) {
28809 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
28810 return exports.sha3(Buffer.concat([prefix, message]))
28811 }
28812
28813 /**
28814 * ECDSA public key recovery from signature
28815 * @param {Buffer} msgHash
28816 * @param {Number} v
28817 * @param {Buffer} r
28818 * @param {Buffer} s
28819 * @return {Buffer} publicKey
28820 */
28821 exports.ecrecover = function (msgHash, v, r, s) {
28822 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
28823 var recovery = v - 27
28824 if (recovery !== 0 && recovery !== 1) {
28825 throw new Error('Invalid signature v value')
28826 }
28827 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
28828 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
28829 }
28830
28831 /**
28832 * Convert signature parameters into the format of `eth_sign` RPC method
28833 * @param {Number} v
28834 * @param {Buffer} r
28835 * @param {Buffer} s
28836 * @return {String} sig
28837 */
28838 exports.toRpcSig = function (v, r, s) {
28839 // NOTE: with potential introduction of chainId this might need to be updated
28840 if (v !== 27 && v !== 28) {
28841 throw new Error('Invalid recovery id')
28842 }
28843
28844 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
28845 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
28846 return exports.bufferToHex(Buffer.concat([
28847 exports.setLengthLeft(r, 32),
28848 exports.setLengthLeft(s, 32),
28849 exports.toBuffer(v - 27)
28850 ]))
28851 }
28852
28853 /**
28854 * Convert signature format of the `eth_sign` RPC method to signature parameters
28855 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
28856 * @param {String} sig
28857 * @return {Object}
28858 */
28859 exports.fromRpcSig = function (sig) {
28860 sig = exports.toBuffer(sig)
28861
28862 // NOTE: with potential introduction of chainId this might need to be updated
28863 if (sig.length !== 65) {
28864 throw new Error('Invalid signature length')
28865 }
28866
28867 var v = sig[64]
28868 // support both versions of `eth_sign` responses
28869 if (v < 27) {
28870 v += 27
28871 }
28872
28873 return {
28874 v: v,
28875 r: sig.slice(0, 32),
28876 s: sig.slice(32, 64)
28877 }
28878 }
28879
28880 /**
28881 * Returns the ethereum address of a given private key
28882 * @param {Buffer} privateKey A private key must be 256 bits wide
28883 * @return {Buffer}
28884 */
28885 exports.privateToAddress = function (privateKey) {
28886 return exports.publicToAddress(privateToPublic(privateKey))
28887 }
28888
28889 /**
28890 * Checks if the address is a valid. Accepts checksummed addresses too
28891 * @param {String} address
28892 * @return {Boolean}
28893 */
28894 exports.isValidAddress = function (address) {
28895 return /^0x[0-9a-fA-F]{40}$/i.test(address)
28896 }
28897
28898 /**
28899 * Returns a checksummed address
28900 * @param {String} address
28901 * @return {String}
28902 */
28903 exports.toChecksumAddress = function (address) {
28904 address = exports.stripHexPrefix(address).toLowerCase()
28905 var hash = exports.sha3(address).toString('hex')
28906 var ret = '0x'
28907
28908 for (var i = 0; i < address.length; i++) {
28909 if (parseInt(hash[i], 16) >= 8) {
28910 ret += address[i].toUpperCase()
28911 } else {
28912 ret += address[i]
28913 }
28914 }
28915
28916 return ret
28917 }
28918
28919 /**
28920 * Checks if the address is a valid checksummed address
28921 * @param {Buffer} address
28922 * @return {Boolean}
28923 */
28924 exports.isValidChecksumAddress = function (address) {
28925 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
28926 }
28927
28928 /**
28929 * Generates an address of a newly created contract
28930 * @param {Buffer} from the address which is creating this new address
28931 * @param {Buffer} nonce the nonce of the from account
28932 * @return {Buffer}
28933 */
28934 exports.generateAddress = function (from, nonce) {
28935 from = exports.toBuffer(from)
28936 nonce = new BN(nonce)
28937
28938 if (nonce.isZero()) {
28939 // in RLP we want to encode null in the case of zero nonce
28940 // read the RLP documentation for an answer if you dare
28941 nonce = null
28942 } else {
28943 nonce = Buffer.from(nonce.toArray())
28944 }
28945
28946 // Only take the lower 160bits of the hash
28947 return exports.rlphash([from, nonce]).slice(-20)
28948 }
28949
28950 /**
28951 * Returns true if the supplied address belongs to a precompiled account
28952 * @param {Buffer|String} address
28953 * @return {Boolean}
28954 */
28955 exports.isPrecompiled = function (address) {
28956 var a = exports.unpad(address)
28957 return a.length === 1 && a[0] > 0 && a[0] < 5
28958 }
28959
28960 /**
28961 * Adds "0x" to a given `String` if it does not already start with "0x"
28962 * @param {String} str
28963 * @return {String}
28964 */
28965 exports.addHexPrefix = function (str) {
28966 if (typeof str !== 'string') {
28967 return str
28968 }
28969
28970 return exports.isHexPrefixed(str) ? str : '0x' + str
28971 }
28972
28973 /**
28974 * Validate ECDSA signature
28975 * @method isValidSignature
28976 * @param {Buffer} v
28977 * @param {Buffer} r
28978 * @param {Buffer} s
28979 * @param {Boolean} [homestead=true]
28980 * @return {Boolean}
28981 */
28982
28983 exports.isValidSignature = function (v, r, s, homestead) {
28984 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
28985 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
28986
28987 if (r.length !== 32 || s.length !== 32) {
28988 return false
28989 }
28990
28991 if (v !== 27 && v !== 28) {
28992 return false
28993 }
28994
28995 r = new BN(r)
28996 s = new BN(s)
28997
28998 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
28999 return false
29000 }
29001
29002 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
29003 return false
29004 }
29005
29006 return true
29007 }
29008
29009 /**
29010 * Converts a `Buffer` or `Array` to JSON
29011 * @param {Buffer|Array} ba
29012 * @return {Array|String|null}
29013 */
29014 exports.baToJSON = function (ba) {
29015 if (Buffer.isBuffer(ba)) {
29016 return '0x' + ba.toString('hex')
29017 } else if (ba instanceof Array) {
29018 var array = []
29019 for (var i = 0; i < ba.length; i++) {
29020 array.push(exports.baToJSON(ba[i]))
29021 }
29022 return array
29023 }
29024 }
29025
29026 /**
29027 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
29028 * @param {Object} self the `Object` to define properties on
29029 * @param {Array} fields an array fields to define. Fields can contain:
29030 * * `name` - the name of the properties
29031 * * `length` - the number of bytes the field can have
29032 * * `allowLess` - if the field can be less than the length
29033 * * `allowEmpty`
29034 * @param {*} data data to be validated against the definitions
29035 */
29036 exports.defineProperties = function (self, fields, data) {
29037 self.raw = []
29038 self._fields = []
29039
29040 // attach the `toJSON`
29041 self.toJSON = function (label) {
29042 if (label) {
29043 var obj = {}
29044 self._fields.forEach(function (field) {
29045 obj[field] = '0x' + self[field].toString('hex')
29046 })
29047 return obj
29048 }
29049 return exports.baToJSON(this.raw)
29050 }
29051
29052 self.serialize = function serialize () {
29053 return rlp.encode(self.raw)
29054 }
29055
29056 fields.forEach(function (field, i) {
29057 self._fields.push(field.name)
29058 function getter () {
29059 return self.raw[i]
29060 }
29061 function setter (v) {
29062 v = exports.toBuffer(v)
29063
29064 if (v.toString('hex') === '00' && !field.allowZero) {
29065 v = Buffer.allocUnsafe(0)
29066 }
29067
29068 if (field.allowLess && field.length) {
29069 v = exports.stripZeros(v)
29070 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
29071 } else if (!(field.allowZero && v.length === 0) && field.length) {
29072 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
29073 }
29074
29075 self.raw[i] = v
29076 }
29077
29078 Object.defineProperty(self, field.name, {
29079 enumerable: true,
29080 configurable: true,
29081 get: getter,
29082 set: setter
29083 })
29084
29085 if (field.default) {
29086 self[field.name] = field.default
29087 }
29088
29089 // attach alias
29090 if (field.alias) {
29091 Object.defineProperty(self, field.alias, {
29092 enumerable: false,
29093 configurable: true,
29094 set: setter,
29095 get: getter
29096 })
29097 }
29098 })
29099
29100 // if the constuctor is passed data
29101 if (data) {
29102 if (typeof data === 'string') {
29103 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
29104 }
29105
29106 if (Buffer.isBuffer(data)) {
29107 data = rlp.decode(data)
29108 }
29109
29110 if (Array.isArray(data)) {
29111 if (data.length > self._fields.length) {
29112 throw (new Error('wrong number of fields in data'))
29113 }
29114
29115 // make sure all the items are buffers
29116 data.forEach(function (d, i) {
29117 self[self._fields[i]] = exports.toBuffer(d)
29118 })
29119 } else if (typeof data === 'object') {
29120 const keys = Object.keys(data)
29121 fields.forEach(function (field) {
29122 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
29123 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
29124 })
29125 } else {
29126 throw new Error('invalid data')
29127 }
29128 }
29129 }
29130
29131 }).call(this,require("buffer").Buffer)
29132 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
29133 (function (Buffer){
29134 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
29135 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29136 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
29137
29138 function check (buffer) {
29139 if (buffer.length < 8) return false
29140 if (buffer.length > 72) return false
29141 if (buffer[0] !== 0x30) return false
29142 if (buffer[1] !== buffer.length - 2) return false
29143 if (buffer[2] !== 0x02) return false
29144
29145 var lenR = buffer[3]
29146 if (lenR === 0) return false
29147 if (5 + lenR >= buffer.length) return false
29148 if (buffer[4 + lenR] !== 0x02) return false
29149
29150 var lenS = buffer[5 + lenR]
29151 if (lenS === 0) return false
29152 if ((6 + lenR + lenS) !== buffer.length) return false
29153
29154 if (buffer[4] & 0x80) return false
29155 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
29156
29157 if (buffer[lenR + 6] & 0x80) return false
29158 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
29159 return true
29160 }
29161
29162 function decode (buffer) {
29163 if (buffer.length < 8) throw new Error('DER sequence length is too short')
29164 if (buffer.length > 72) throw new Error('DER sequence length is too long')
29165 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
29166 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
29167 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
29168
29169 var lenR = buffer[3]
29170 if (lenR === 0) throw new Error('R length is zero')
29171 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
29172 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
29173
29174 var lenS = buffer[5 + lenR]
29175 if (lenS === 0) throw new Error('S length is zero')
29176 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
29177
29178 if (buffer[4] & 0x80) throw new Error('R value is negative')
29179 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
29180
29181 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
29182 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
29183
29184 // non-BIP66 - extract R, S values
29185 return {
29186 r: buffer.slice(4, 4 + lenR),
29187 s: buffer.slice(6 + lenR)
29188 }
29189 }
29190
29191 /*
29192 * Expects r and s to be positive DER integers.
29193 *
29194 * The DER format uses the most significant bit as a sign bit (& 0x80).
29195 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
29196 *
29197 * Examples:
29198 *
29199 * 0 => 0x00
29200 * 1 => 0x01
29201 * -1 => 0xff
29202 * 127 => 0x7f
29203 * -127 => 0x81
29204 * 128 => 0x0080
29205 * -128 => 0x80
29206 * 255 => 0x00ff
29207 * -255 => 0xff01
29208 * 16300 => 0x3fac
29209 * -16300 => 0xc054
29210 * 62300 => 0x00f35c
29211 * -62300 => 0xff0ca4
29212 */
29213 function encode (r, s) {
29214 var lenR = r.length
29215 var lenS = s.length
29216 if (lenR === 0) throw new Error('R length is zero')
29217 if (lenS === 0) throw new Error('S length is zero')
29218 if (lenR > 33) throw new Error('R length is too long')
29219 if (lenS > 33) throw new Error('S length is too long')
29220 if (r[0] & 0x80) throw new Error('R value is negative')
29221 if (s[0] & 0x80) throw new Error('S value is negative')
29222 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
29223 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
29224
29225 var signature = new Buffer(6 + lenR + lenS)
29226
29227 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29228 signature[0] = 0x30
29229 signature[1] = signature.length - 2
29230 signature[2] = 0x02
29231 signature[3] = r.length
29232 r.copy(signature, 4)
29233 signature[4 + lenR] = 0x02
29234 signature[5 + lenR] = s.length
29235 s.copy(signature, 6 + lenR)
29236
29237 return signature
29238 }
29239
29240 module.exports = {
29241 check: check,
29242 decode: decode,
29243 encode: encode
29244 }
29245
29246 }).call(this,require("buffer").Buffer)
29247 },{"buffer":5}],33:[function(require,module,exports){
29248 (function (module, exports) {
29249 'use strict';
29250
29251 // Utils
29252 function assert (val, msg) {
29253 if (!val) throw new Error(msg || 'Assertion failed');
29254 }
29255
29256 // Could use `inherits` module, but don't want to move from single file
29257 // architecture yet.
29258 function inherits (ctor, superCtor) {
29259 ctor.super_ = superCtor;
29260 var TempCtor = function () {};
29261 TempCtor.prototype = superCtor.prototype;
29262 ctor.prototype = new TempCtor();
29263 ctor.prototype.constructor = ctor;
29264 }
29265
29266 // BN
29267
29268 function BN (number, base, endian) {
29269 if (BN.isBN(number)) {
29270 return number;
29271 }
29272
29273 this.negative = 0;
29274 this.words = null;
29275 this.length = 0;
29276
29277 // Reduction context
29278 this.red = null;
29279
29280 if (number !== null) {
29281 if (base === 'le' || base === 'be') {
29282 endian = base;
29283 base = 10;
29284 }
29285
29286 this._init(number || 0, base || 10, endian || 'be');
29287 }
29288 }
29289 if (typeof module === 'object') {
29290 module.exports = BN;
29291 } else {
29292 exports.BN = BN;
29293 }
29294
29295 BN.BN = BN;
29296 BN.wordSize = 26;
29297
29298 var Buffer;
29299 try {
29300 Buffer = require('buf' + 'fer').Buffer;
29301 } catch (e) {
29302 }
29303
29304 BN.isBN = function isBN (num) {
29305 if (num instanceof BN) {
29306 return true;
29307 }
29308
29309 return num !== null && typeof num === 'object' &&
29310 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
29311 };
29312
29313 BN.max = function max (left, right) {
29314 if (left.cmp(right) > 0) return left;
29315 return right;
29316 };
29317
29318 BN.min = function min (left, right) {
29319 if (left.cmp(right) < 0) return left;
29320 return right;
29321 };
29322
29323 BN.prototype._init = function init (number, base, endian) {
29324 if (typeof number === 'number') {
29325 return this._initNumber(number, base, endian);
29326 }
29327
29328 if (typeof number === 'object') {
29329 return this._initArray(number, base, endian);
29330 }
29331
29332 if (base === 'hex') {
29333 base = 16;
29334 }
29335 assert(base === (base | 0) && base >= 2 && base <= 36);
29336
29337 number = number.toString().replace(/\s+/g, '');
29338 var start = 0;
29339 if (number[0] === '-') {
29340 start++;
29341 }
29342
29343 if (base === 16) {
29344 this._parseHex(number, start);
29345 } else {
29346 this._parseBase(number, base, start);
29347 }
29348
29349 if (number[0] === '-') {
29350 this.negative = 1;
29351 }
29352
29353 this.strip();
29354
29355 if (endian !== 'le') return;
29356
29357 this._initArray(this.toArray(), base, endian);
29358 };
29359
29360 BN.prototype._initNumber = function _initNumber (number, base, endian) {
29361 if (number < 0) {
29362 this.negative = 1;
29363 number = -number;
29364 }
29365 if (number < 0x4000000) {
29366 this.words = [ number & 0x3ffffff ];
29367 this.length = 1;
29368 } else if (number < 0x10000000000000) {
29369 this.words = [
29370 number & 0x3ffffff,
29371 (number / 0x4000000) & 0x3ffffff
29372 ];
29373 this.length = 2;
29374 } else {
29375 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
29376 this.words = [
29377 number & 0x3ffffff,
29378 (number / 0x4000000) & 0x3ffffff,
29379 1
29380 ];
29381 this.length = 3;
29382 }
29383
29384 if (endian !== 'le') return;
29385
29386 // Reverse the bytes
29387 this._initArray(this.toArray(), base, endian);
29388 };
29389
29390 BN.prototype._initArray = function _initArray (number, base, endian) {
29391 // Perhaps a Uint8Array
29392 assert(typeof number.length === 'number');
29393 if (number.length <= 0) {
29394 this.words = [ 0 ];
29395 this.length = 1;
29396 return this;
29397 }
29398
29399 this.length = Math.ceil(number.length / 3);
29400 this.words = new Array(this.length);
29401 for (var i = 0; i < this.length; i++) {
29402 this.words[i] = 0;
29403 }
29404
29405 var j, w;
29406 var off = 0;
29407 if (endian === 'be') {
29408 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
29409 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
29410 this.words[j] |= (w << off) & 0x3ffffff;
29411 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29412 off += 24;
29413 if (off >= 26) {
29414 off -= 26;
29415 j++;
29416 }
29417 }
29418 } else if (endian === 'le') {
29419 for (i = 0, j = 0; i < number.length; i += 3) {
29420 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
29421 this.words[j] |= (w << off) & 0x3ffffff;
29422 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29423 off += 24;
29424 if (off >= 26) {
29425 off -= 26;
29426 j++;
29427 }
29428 }
29429 }
29430 return this.strip();
29431 };
29432
29433 function parseHex (str, start, end) {
29434 var r = 0;
29435 var len = Math.min(str.length, end);
29436 for (var i = start; i < len; i++) {
29437 var c = str.charCodeAt(i) - 48;
29438
29439 r <<= 4;
29440
29441 // 'a' - 'f'
29442 if (c >= 49 && c <= 54) {
29443 r |= c - 49 + 0xa;
29444
29445 // 'A' - 'F'
29446 } else if (c >= 17 && c <= 22) {
29447 r |= c - 17 + 0xa;
29448
29449 // '0' - '9'
29450 } else {
29451 r |= c & 0xf;
29452 }
29453 }
29454 return r;
29455 }
29456
29457 BN.prototype._parseHex = function _parseHex (number, start) {
29458 // Create possibly bigger array to ensure that it fits the number
29459 this.length = Math.ceil((number.length - start) / 6);
29460 this.words = new Array(this.length);
29461 for (var i = 0; i < this.length; i++) {
29462 this.words[i] = 0;
29463 }
29464
29465 var j, w;
29466 // Scan 24-bit chunks and add them to the number
29467 var off = 0;
29468 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
29469 w = parseHex(number, i, i + 6);
29470 this.words[j] |= (w << off) & 0x3ffffff;
29471 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
29472 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29473 off += 24;
29474 if (off >= 26) {
29475 off -= 26;
29476 j++;
29477 }
29478 }
29479 if (i + 6 !== start) {
29480 w = parseHex(number, start, i + 6);
29481 this.words[j] |= (w << off) & 0x3ffffff;
29482 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29483 }
29484 this.strip();
29485 };
29486
29487 function parseBase (str, start, end, mul) {
29488 var r = 0;
29489 var len = Math.min(str.length, end);
29490 for (var i = start; i < len; i++) {
29491 var c = str.charCodeAt(i) - 48;
29492
29493 r *= mul;
29494
29495 // 'a'
29496 if (c >= 49) {
29497 r += c - 49 + 0xa;
29498
29499 // 'A'
29500 } else if (c >= 17) {
29501 r += c - 17 + 0xa;
29502
29503 // '0' - '9'
29504 } else {
29505 r += c;
29506 }
29507 }
29508 return r;
29509 }
29510
29511 BN.prototype._parseBase = function _parseBase (number, base, start) {
29512 // Initialize as zero
29513 this.words = [ 0 ];
29514 this.length = 1;
29515
29516 // Find length of limb in base
29517 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
29518 limbLen++;
29519 }
29520 limbLen--;
29521 limbPow = (limbPow / base) | 0;
29522
29523 var total = number.length - start;
29524 var mod = total % limbLen;
29525 var end = Math.min(total, total - mod) + start;
29526
29527 var word = 0;
29528 for (var i = start; i < end; i += limbLen) {
29529 word = parseBase(number, i, i + limbLen, base);
29530
29531 this.imuln(limbPow);
29532 if (this.words[0] + word < 0x4000000) {
29533 this.words[0] += word;
29534 } else {
29535 this._iaddn(word);
29536 }
29537 }
29538
29539 if (mod !== 0) {
29540 var pow = 1;
29541 word = parseBase(number, i, number.length, base);
29542
29543 for (i = 0; i < mod; i++) {
29544 pow *= base;
29545 }
29546
29547 this.imuln(pow);
29548 if (this.words[0] + word < 0x4000000) {
29549 this.words[0] += word;
29550 } else {
29551 this._iaddn(word);
29552 }
29553 }
29554 };
29555
29556 BN.prototype.copy = function copy (dest) {
29557 dest.words = new Array(this.length);
29558 for (var i = 0; i < this.length; i++) {
29559 dest.words[i] = this.words[i];
29560 }
29561 dest.length = this.length;
29562 dest.negative = this.negative;
29563 dest.red = this.red;
29564 };
29565
29566 BN.prototype.clone = function clone () {
29567 var r = new BN(null);
29568 this.copy(r);
29569 return r;
29570 };
29571
29572 BN.prototype._expand = function _expand (size) {
29573 while (this.length < size) {
29574 this.words[this.length++] = 0;
29575 }
29576 return this;
29577 };
29578
29579 // Remove leading `0` from `this`
29580 BN.prototype.strip = function strip () {
29581 while (this.length > 1 && this.words[this.length - 1] === 0) {
29582 this.length--;
29583 }
29584 return this._normSign();
29585 };
29586
29587 BN.prototype._normSign = function _normSign () {
29588 // -0 = 0
29589 if (this.length === 1 && this.words[0] === 0) {
29590 this.negative = 0;
29591 }
29592 return this;
29593 };
29594
29595 BN.prototype.inspect = function inspect () {
29596 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
29597 };
29598
29599 /*
29600
29601 var zeros = [];
29602 var groupSizes = [];
29603 var groupBases = [];
29604
29605 var s = '';
29606 var i = -1;
29607 while (++i < BN.wordSize) {
29608 zeros[i] = s;
29609 s += '0';
29610 }
29611 groupSizes[0] = 0;
29612 groupSizes[1] = 0;
29613 groupBases[0] = 0;
29614 groupBases[1] = 0;
29615 var base = 2 - 1;
29616 while (++base < 36 + 1) {
29617 var groupSize = 0;
29618 var groupBase = 1;
29619 while (groupBase < (1 << BN.wordSize) / base) {
29620 groupBase *= base;
29621 groupSize += 1;
29622 }
29623 groupSizes[base] = groupSize;
29624 groupBases[base] = groupBase;
29625 }
29626
29627 */
29628
29629 var zeros = [
29630 '',
29631 '0',
29632 '00',
29633 '000',
29634 '0000',
29635 '00000',
29636 '000000',
29637 '0000000',
29638 '00000000',
29639 '000000000',
29640 '0000000000',
29641 '00000000000',
29642 '000000000000',
29643 '0000000000000',
29644 '00000000000000',
29645 '000000000000000',
29646 '0000000000000000',
29647 '00000000000000000',
29648 '000000000000000000',
29649 '0000000000000000000',
29650 '00000000000000000000',
29651 '000000000000000000000',
29652 '0000000000000000000000',
29653 '00000000000000000000000',
29654 '000000000000000000000000',
29655 '0000000000000000000000000'
29656 ];
29657
29658 var groupSizes = [
29659 0, 0,
29660 25, 16, 12, 11, 10, 9, 8,
29661 8, 7, 7, 7, 7, 6, 6,
29662 6, 6, 6, 6, 6, 5, 5,
29663 5, 5, 5, 5, 5, 5, 5,
29664 5, 5, 5, 5, 5, 5, 5
29665 ];
29666
29667 var groupBases = [
29668 0, 0,
29669 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
29670 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
29671 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
29672 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
29673 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
29674 ];
29675
29676 BN.prototype.toString = function toString (base, padding) {
29677 base = base || 10;
29678 padding = padding | 0 || 1;
29679
29680 var out;
29681 if (base === 16 || base === 'hex') {
29682 out = '';
29683 var off = 0;
29684 var carry = 0;
29685 for (var i = 0; i < this.length; i++) {
29686 var w = this.words[i];
29687 var word = (((w << off) | carry) & 0xffffff).toString(16);
29688 carry = (w >>> (24 - off)) & 0xffffff;
29689 if (carry !== 0 || i !== this.length - 1) {
29690 out = zeros[6 - word.length] + word + out;
29691 } else {
29692 out = word + out;
29693 }
29694 off += 2;
29695 if (off >= 26) {
29696 off -= 26;
29697 i--;
29698 }
29699 }
29700 if (carry !== 0) {
29701 out = carry.toString(16) + out;
29702 }
29703 while (out.length % padding !== 0) {
29704 out = '0' + out;
29705 }
29706 if (this.negative !== 0) {
29707 out = '-' + out;
29708 }
29709 return out;
29710 }
29711
29712 if (base === (base | 0) && base >= 2 && base <= 36) {
29713 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
29714 var groupSize = groupSizes[base];
29715 // var groupBase = Math.pow(base, groupSize);
29716 var groupBase = groupBases[base];
29717 out = '';
29718 var c = this.clone();
29719 c.negative = 0;
29720 while (!c.isZero()) {
29721 var r = c.modn(groupBase).toString(base);
29722 c = c.idivn(groupBase);
29723
29724 if (!c.isZero()) {
29725 out = zeros[groupSize - r.length] + r + out;
29726 } else {
29727 out = r + out;
29728 }
29729 }
29730 if (this.isZero()) {
29731 out = '0' + out;
29732 }
29733 while (out.length % padding !== 0) {
29734 out = '0' + out;
29735 }
29736 if (this.negative !== 0) {
29737 out = '-' + out;
29738 }
29739 return out;
29740 }
29741
29742 assert(false, 'Base should be between 2 and 36');
29743 };
29744
29745 BN.prototype.toNumber = function toNumber () {
29746 var ret = this.words[0];
29747 if (this.length === 2) {
29748 ret += this.words[1] * 0x4000000;
29749 } else if (this.length === 3 && this.words[2] === 0x01) {
29750 // NOTE: at this stage it is known that the top bit is set
29751 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
29752 } else if (this.length > 2) {
29753 assert(false, 'Number can only safely store up to 53 bits');
29754 }
29755 return (this.negative !== 0) ? -ret : ret;
29756 };
29757
29758 BN.prototype.toJSON = function toJSON () {
29759 return this.toString(16);
29760 };
29761
29762 BN.prototype.toBuffer = function toBuffer (endian, length) {
29763 assert(typeof Buffer !== 'undefined');
29764 return this.toArrayLike(Buffer, endian, length);
29765 };
29766
29767 BN.prototype.toArray = function toArray (endian, length) {
29768 return this.toArrayLike(Array, endian, length);
29769 };
29770
29771 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
29772 var byteLength = this.byteLength();
29773 var reqLength = length || Math.max(1, byteLength);
29774 assert(byteLength <= reqLength, 'byte array longer than desired length');
29775 assert(reqLength > 0, 'Requested array length <= 0');
29776
29777 this.strip();
29778 var littleEndian = endian === 'le';
29779 var res = new ArrayType(reqLength);
29780
29781 var b, i;
29782 var q = this.clone();
29783 if (!littleEndian) {
29784 // Assume big-endian
29785 for (i = 0; i < reqLength - byteLength; i++) {
29786 res[i] = 0;
29787 }
29788
29789 for (i = 0; !q.isZero(); i++) {
29790 b = q.andln(0xff);
29791 q.iushrn(8);
29792
29793 res[reqLength - i - 1] = b;
29794 }
29795 } else {
29796 for (i = 0; !q.isZero(); i++) {
29797 b = q.andln(0xff);
29798 q.iushrn(8);
29799
29800 res[i] = b;
29801 }
29802
29803 for (; i < reqLength; i++) {
29804 res[i] = 0;
29805 }
29806 }
29807
29808 return res;
29809 };
29810
29811 if (Math.clz32) {
29812 BN.prototype._countBits = function _countBits (w) {
29813 return 32 - Math.clz32(w);
29814 };
29815 } else {
29816 BN.prototype._countBits = function _countBits (w) {
29817 var t = w;
29818 var r = 0;
29819 if (t >= 0x1000) {
29820 r += 13;
29821 t >>>= 13;
29822 }
29823 if (t >= 0x40) {
29824 r += 7;
29825 t >>>= 7;
29826 }
29827 if (t >= 0x8) {
29828 r += 4;
29829 t >>>= 4;
29830 }
29831 if (t >= 0x02) {
29832 r += 2;
29833 t >>>= 2;
29834 }
29835 return r + t;
29836 };
29837 }
29838
29839 BN.prototype._zeroBits = function _zeroBits (w) {
29840 // Short-cut
29841 if (w === 0) return 26;
29842
29843 var t = w;
29844 var r = 0;
29845 if ((t & 0x1fff) === 0) {
29846 r += 13;
29847 t >>>= 13;
29848 }
29849 if ((t & 0x7f) === 0) {
29850 r += 7;
29851 t >>>= 7;
29852 }
29853 if ((t & 0xf) === 0) {
29854 r += 4;
29855 t >>>= 4;
29856 }
29857 if ((t & 0x3) === 0) {
29858 r += 2;
29859 t >>>= 2;
29860 }
29861 if ((t & 0x1) === 0) {
29862 r++;
29863 }
29864 return r;
29865 };
29866
29867 // Return number of used bits in a BN
29868 BN.prototype.bitLength = function bitLength () {
29869 var w = this.words[this.length - 1];
29870 var hi = this._countBits(w);
29871 return (this.length - 1) * 26 + hi;
29872 };
29873
29874 function toBitArray (num) {
29875 var w = new Array(num.bitLength());
29876
29877 for (var bit = 0; bit < w.length; bit++) {
29878 var off = (bit / 26) | 0;
29879 var wbit = bit % 26;
29880
29881 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
29882 }
29883
29884 return w;
29885 }
29886
29887 // Number of trailing zero bits
29888 BN.prototype.zeroBits = function zeroBits () {
29889 if (this.isZero()) return 0;
29890
29891 var r = 0;
29892 for (var i = 0; i < this.length; i++) {
29893 var b = this._zeroBits(this.words[i]);
29894 r += b;
29895 if (b !== 26) break;
29896 }
29897 return r;
29898 };
29899
29900 BN.prototype.byteLength = function byteLength () {
29901 return Math.ceil(this.bitLength() / 8);
29902 };
29903
29904 BN.prototype.toTwos = function toTwos (width) {
29905 if (this.negative !== 0) {
29906 return this.abs().inotn(width).iaddn(1);
29907 }
29908 return this.clone();
29909 };
29910
29911 BN.prototype.fromTwos = function fromTwos (width) {
29912 if (this.testn(width - 1)) {
29913 return this.notn(width).iaddn(1).ineg();
29914 }
29915 return this.clone();
29916 };
29917
29918 BN.prototype.isNeg = function isNeg () {
29919 return this.negative !== 0;
29920 };
29921
29922 // Return negative clone of `this`
29923 BN.prototype.neg = function neg () {
29924 return this.clone().ineg();
29925 };
29926
29927 BN.prototype.ineg = function ineg () {
29928 if (!this.isZero()) {
29929 this.negative ^= 1;
29930 }
29931
29932 return this;
29933 };
29934
29935 // Or `num` with `this` in-place
29936 BN.prototype.iuor = function iuor (num) {
29937 while (this.length < num.length) {
29938 this.words[this.length++] = 0;
29939 }
29940
29941 for (var i = 0; i < num.length; i++) {
29942 this.words[i] = this.words[i] | num.words[i];
29943 }
29944
29945 return this.strip();
29946 };
29947
29948 BN.prototype.ior = function ior (num) {
29949 assert((this.negative | num.negative) === 0);
29950 return this.iuor(num);
29951 };
29952
29953 // Or `num` with `this`
29954 BN.prototype.or = function or (num) {
29955 if (this.length > num.length) return this.clone().ior(num);
29956 return num.clone().ior(this);
29957 };
29958
29959 BN.prototype.uor = function uor (num) {
29960 if (this.length > num.length) return this.clone().iuor(num);
29961 return num.clone().iuor(this);
29962 };
29963
29964 // And `num` with `this` in-place
29965 BN.prototype.iuand = function iuand (num) {
29966 // b = min-length(num, this)
29967 var b;
29968 if (this.length > num.length) {
29969 b = num;
29970 } else {
29971 b = this;
29972 }
29973
29974 for (var i = 0; i < b.length; i++) {
29975 this.words[i] = this.words[i] & num.words[i];
29976 }
29977
29978 this.length = b.length;
29979
29980 return this.strip();
29981 };
29982
29983 BN.prototype.iand = function iand (num) {
29984 assert((this.negative | num.negative) === 0);
29985 return this.iuand(num);
29986 };
29987
29988 // And `num` with `this`
29989 BN.prototype.and = function and (num) {
29990 if (this.length > num.length) return this.clone().iand(num);
29991 return num.clone().iand(this);
29992 };
29993
29994 BN.prototype.uand = function uand (num) {
29995 if (this.length > num.length) return this.clone().iuand(num);
29996 return num.clone().iuand(this);
29997 };
29998
29999 // Xor `num` with `this` in-place
30000 BN.prototype.iuxor = function iuxor (num) {
30001 // a.length > b.length
30002 var a;
30003 var b;
30004 if (this.length > num.length) {
30005 a = this;
30006 b = num;
30007 } else {
30008 a = num;
30009 b = this;
30010 }
30011
30012 for (var i = 0; i < b.length; i++) {
30013 this.words[i] = a.words[i] ^ b.words[i];
30014 }
30015
30016 if (this !== a) {
30017 for (; i < a.length; i++) {
30018 this.words[i] = a.words[i];
30019 }
30020 }
30021
30022 this.length = a.length;
30023
30024 return this.strip();
30025 };
30026
30027 BN.prototype.ixor = function ixor (num) {
30028 assert((this.negative | num.negative) === 0);
30029 return this.iuxor(num);
30030 };
30031
30032 // Xor `num` with `this`
30033 BN.prototype.xor = function xor (num) {
30034 if (this.length > num.length) return this.clone().ixor(num);
30035 return num.clone().ixor(this);
30036 };
30037
30038 BN.prototype.uxor = function uxor (num) {
30039 if (this.length > num.length) return this.clone().iuxor(num);
30040 return num.clone().iuxor(this);
30041 };
30042
30043 // Not ``this`` with ``width`` bitwidth
30044 BN.prototype.inotn = function inotn (width) {
30045 assert(typeof width === 'number' && width >= 0);
30046
30047 var bytesNeeded = Math.ceil(width / 26) | 0;
30048 var bitsLeft = width % 26;
30049
30050 // Extend the buffer with leading zeroes
30051 this._expand(bytesNeeded);
30052
30053 if (bitsLeft > 0) {
30054 bytesNeeded--;
30055 }
30056
30057 // Handle complete words
30058 for (var i = 0; i < bytesNeeded; i++) {
30059 this.words[i] = ~this.words[i] & 0x3ffffff;
30060 }
30061
30062 // Handle the residue
30063 if (bitsLeft > 0) {
30064 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
30065 }
30066
30067 // And remove leading zeroes
30068 return this.strip();
30069 };
30070
30071 BN.prototype.notn = function notn (width) {
30072 return this.clone().inotn(width);
30073 };
30074
30075 // Set `bit` of `this`
30076 BN.prototype.setn = function setn (bit, val) {
30077 assert(typeof bit === 'number' && bit >= 0);
30078
30079 var off = (bit / 26) | 0;
30080 var wbit = bit % 26;
30081
30082 this._expand(off + 1);
30083
30084 if (val) {
30085 this.words[off] = this.words[off] | (1 << wbit);
30086 } else {
30087 this.words[off] = this.words[off] & ~(1 << wbit);
30088 }
30089
30090 return this.strip();
30091 };
30092
30093 // Add `num` to `this` in-place
30094 BN.prototype.iadd = function iadd (num) {
30095 var r;
30096
30097 // negative + positive
30098 if (this.negative !== 0 && num.negative === 0) {
30099 this.negative = 0;
30100 r = this.isub(num);
30101 this.negative ^= 1;
30102 return this._normSign();
30103
30104 // positive + negative
30105 } else if (this.negative === 0 && num.negative !== 0) {
30106 num.negative = 0;
30107 r = this.isub(num);
30108 num.negative = 1;
30109 return r._normSign();
30110 }
30111
30112 // a.length > b.length
30113 var a, b;
30114 if (this.length > num.length) {
30115 a = this;
30116 b = num;
30117 } else {
30118 a = num;
30119 b = this;
30120 }
30121
30122 var carry = 0;
30123 for (var i = 0; i < b.length; i++) {
30124 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
30125 this.words[i] = r & 0x3ffffff;
30126 carry = r >>> 26;
30127 }
30128 for (; carry !== 0 && i < a.length; i++) {
30129 r = (a.words[i] | 0) + carry;
30130 this.words[i] = r & 0x3ffffff;
30131 carry = r >>> 26;
30132 }
30133
30134 this.length = a.length;
30135 if (carry !== 0) {
30136 this.words[this.length] = carry;
30137 this.length++;
30138 // Copy the rest of the words
30139 } else if (a !== this) {
30140 for (; i < a.length; i++) {
30141 this.words[i] = a.words[i];
30142 }
30143 }
30144
30145 return this;
30146 };
30147
30148 // Add `num` to `this`
30149 BN.prototype.add = function add (num) {
30150 var res;
30151 if (num.negative !== 0 && this.negative === 0) {
30152 num.negative = 0;
30153 res = this.sub(num);
30154 num.negative ^= 1;
30155 return res;
30156 } else if (num.negative === 0 && this.negative !== 0) {
30157 this.negative = 0;
30158 res = num.sub(this);
30159 this.negative = 1;
30160 return res;
30161 }
30162
30163 if (this.length > num.length) return this.clone().iadd(num);
30164
30165 return num.clone().iadd(this);
30166 };
30167
30168 // Subtract `num` from `this` in-place
30169 BN.prototype.isub = function isub (num) {
30170 // this - (-num) = this + num
30171 if (num.negative !== 0) {
30172 num.negative = 0;
30173 var r = this.iadd(num);
30174 num.negative = 1;
30175 return r._normSign();
30176
30177 // -this - num = -(this + num)
30178 } else if (this.negative !== 0) {
30179 this.negative = 0;
30180 this.iadd(num);
30181 this.negative = 1;
30182 return this._normSign();
30183 }
30184
30185 // At this point both numbers are positive
30186 var cmp = this.cmp(num);
30187
30188 // Optimization - zeroify
30189 if (cmp === 0) {
30190 this.negative = 0;
30191 this.length = 1;
30192 this.words[0] = 0;
30193 return this;
30194 }
30195
30196 // a > b
30197 var a, b;
30198 if (cmp > 0) {
30199 a = this;
30200 b = num;
30201 } else {
30202 a = num;
30203 b = this;
30204 }
30205
30206 var carry = 0;
30207 for (var i = 0; i < b.length; i++) {
30208 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
30209 carry = r >> 26;
30210 this.words[i] = r & 0x3ffffff;
30211 }
30212 for (; carry !== 0 && i < a.length; i++) {
30213 r = (a.words[i] | 0) + carry;
30214 carry = r >> 26;
30215 this.words[i] = r & 0x3ffffff;
30216 }
30217
30218 // Copy rest of the words
30219 if (carry === 0 && i < a.length && a !== this) {
30220 for (; i < a.length; i++) {
30221 this.words[i] = a.words[i];
30222 }
30223 }
30224
30225 this.length = Math.max(this.length, i);
30226
30227 if (a !== this) {
30228 this.negative = 1;
30229 }
30230
30231 return this.strip();
30232 };
30233
30234 // Subtract `num` from `this`
30235 BN.prototype.sub = function sub (num) {
30236 return this.clone().isub(num);
30237 };
30238
30239 function smallMulTo (self, num, out) {
30240 out.negative = num.negative ^ self.negative;
30241 var len = (self.length + num.length) | 0;
30242 out.length = len;
30243 len = (len - 1) | 0;
30244
30245 // Peel one iteration (compiler can't do it, because of code complexity)
30246 var a = self.words[0] | 0;
30247 var b = num.words[0] | 0;
30248 var r = a * b;
30249
30250 var lo = r & 0x3ffffff;
30251 var carry = (r / 0x4000000) | 0;
30252 out.words[0] = lo;
30253
30254 for (var k = 1; k < len; k++) {
30255 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30256 // note that ncarry could be >= 0x3ffffff
30257 var ncarry = carry >>> 26;
30258 var rword = carry & 0x3ffffff;
30259 var maxJ = Math.min(k, num.length - 1);
30260 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30261 var i = (k - j) | 0;
30262 a = self.words[i] | 0;
30263 b = num.words[j] | 0;
30264 r = a * b + rword;
30265 ncarry += (r / 0x4000000) | 0;
30266 rword = r & 0x3ffffff;
30267 }
30268 out.words[k] = rword | 0;
30269 carry = ncarry | 0;
30270 }
30271 if (carry !== 0) {
30272 out.words[k] = carry | 0;
30273 } else {
30274 out.length--;
30275 }
30276
30277 return out.strip();
30278 }
30279
30280 // TODO(indutny): it may be reasonable to omit it for users who don't need
30281 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
30282 // multiplication (like elliptic secp256k1).
30283 var comb10MulTo = function comb10MulTo (self, num, out) {
30284 var a = self.words;
30285 var b = num.words;
30286 var o = out.words;
30287 var c = 0;
30288 var lo;
30289 var mid;
30290 var hi;
30291 var a0 = a[0] | 0;
30292 var al0 = a0 & 0x1fff;
30293 var ah0 = a0 >>> 13;
30294 var a1 = a[1] | 0;
30295 var al1 = a1 & 0x1fff;
30296 var ah1 = a1 >>> 13;
30297 var a2 = a[2] | 0;
30298 var al2 = a2 & 0x1fff;
30299 var ah2 = a2 >>> 13;
30300 var a3 = a[3] | 0;
30301 var al3 = a3 & 0x1fff;
30302 var ah3 = a3 >>> 13;
30303 var a4 = a[4] | 0;
30304 var al4 = a4 & 0x1fff;
30305 var ah4 = a4 >>> 13;
30306 var a5 = a[5] | 0;
30307 var al5 = a5 & 0x1fff;
30308 var ah5 = a5 >>> 13;
30309 var a6 = a[6] | 0;
30310 var al6 = a6 & 0x1fff;
30311 var ah6 = a6 >>> 13;
30312 var a7 = a[7] | 0;
30313 var al7 = a7 & 0x1fff;
30314 var ah7 = a7 >>> 13;
30315 var a8 = a[8] | 0;
30316 var al8 = a8 & 0x1fff;
30317 var ah8 = a8 >>> 13;
30318 var a9 = a[9] | 0;
30319 var al9 = a9 & 0x1fff;
30320 var ah9 = a9 >>> 13;
30321 var b0 = b[0] | 0;
30322 var bl0 = b0 & 0x1fff;
30323 var bh0 = b0 >>> 13;
30324 var b1 = b[1] | 0;
30325 var bl1 = b1 & 0x1fff;
30326 var bh1 = b1 >>> 13;
30327 var b2 = b[2] | 0;
30328 var bl2 = b2 & 0x1fff;
30329 var bh2 = b2 >>> 13;
30330 var b3 = b[3] | 0;
30331 var bl3 = b3 & 0x1fff;
30332 var bh3 = b3 >>> 13;
30333 var b4 = b[4] | 0;
30334 var bl4 = b4 & 0x1fff;
30335 var bh4 = b4 >>> 13;
30336 var b5 = b[5] | 0;
30337 var bl5 = b5 & 0x1fff;
30338 var bh5 = b5 >>> 13;
30339 var b6 = b[6] | 0;
30340 var bl6 = b6 & 0x1fff;
30341 var bh6 = b6 >>> 13;
30342 var b7 = b[7] | 0;
30343 var bl7 = b7 & 0x1fff;
30344 var bh7 = b7 >>> 13;
30345 var b8 = b[8] | 0;
30346 var bl8 = b8 & 0x1fff;
30347 var bh8 = b8 >>> 13;
30348 var b9 = b[9] | 0;
30349 var bl9 = b9 & 0x1fff;
30350 var bh9 = b9 >>> 13;
30351
30352 out.negative = self.negative ^ num.negative;
30353 out.length = 19;
30354 /* k = 0 */
30355 lo = Math.imul(al0, bl0);
30356 mid = Math.imul(al0, bh0);
30357 mid = (mid + Math.imul(ah0, bl0)) | 0;
30358 hi = Math.imul(ah0, bh0);
30359 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30360 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
30361 w0 &= 0x3ffffff;
30362 /* k = 1 */
30363 lo = Math.imul(al1, bl0);
30364 mid = Math.imul(al1, bh0);
30365 mid = (mid + Math.imul(ah1, bl0)) | 0;
30366 hi = Math.imul(ah1, bh0);
30367 lo = (lo + Math.imul(al0, bl1)) | 0;
30368 mid = (mid + Math.imul(al0, bh1)) | 0;
30369 mid = (mid + Math.imul(ah0, bl1)) | 0;
30370 hi = (hi + Math.imul(ah0, bh1)) | 0;
30371 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30372 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
30373 w1 &= 0x3ffffff;
30374 /* k = 2 */
30375 lo = Math.imul(al2, bl0);
30376 mid = Math.imul(al2, bh0);
30377 mid = (mid + Math.imul(ah2, bl0)) | 0;
30378 hi = Math.imul(ah2, bh0);
30379 lo = (lo + Math.imul(al1, bl1)) | 0;
30380 mid = (mid + Math.imul(al1, bh1)) | 0;
30381 mid = (mid + Math.imul(ah1, bl1)) | 0;
30382 hi = (hi + Math.imul(ah1, bh1)) | 0;
30383 lo = (lo + Math.imul(al0, bl2)) | 0;
30384 mid = (mid + Math.imul(al0, bh2)) | 0;
30385 mid = (mid + Math.imul(ah0, bl2)) | 0;
30386 hi = (hi + Math.imul(ah0, bh2)) | 0;
30387 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30388 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
30389 w2 &= 0x3ffffff;
30390 /* k = 3 */
30391 lo = Math.imul(al3, bl0);
30392 mid = Math.imul(al3, bh0);
30393 mid = (mid + Math.imul(ah3, bl0)) | 0;
30394 hi = Math.imul(ah3, bh0);
30395 lo = (lo + Math.imul(al2, bl1)) | 0;
30396 mid = (mid + Math.imul(al2, bh1)) | 0;
30397 mid = (mid + Math.imul(ah2, bl1)) | 0;
30398 hi = (hi + Math.imul(ah2, bh1)) | 0;
30399 lo = (lo + Math.imul(al1, bl2)) | 0;
30400 mid = (mid + Math.imul(al1, bh2)) | 0;
30401 mid = (mid + Math.imul(ah1, bl2)) | 0;
30402 hi = (hi + Math.imul(ah1, bh2)) | 0;
30403 lo = (lo + Math.imul(al0, bl3)) | 0;
30404 mid = (mid + Math.imul(al0, bh3)) | 0;
30405 mid = (mid + Math.imul(ah0, bl3)) | 0;
30406 hi = (hi + Math.imul(ah0, bh3)) | 0;
30407 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30408 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
30409 w3 &= 0x3ffffff;
30410 /* k = 4 */
30411 lo = Math.imul(al4, bl0);
30412 mid = Math.imul(al4, bh0);
30413 mid = (mid + Math.imul(ah4, bl0)) | 0;
30414 hi = Math.imul(ah4, bh0);
30415 lo = (lo + Math.imul(al3, bl1)) | 0;
30416 mid = (mid + Math.imul(al3, bh1)) | 0;
30417 mid = (mid + Math.imul(ah3, bl1)) | 0;
30418 hi = (hi + Math.imul(ah3, bh1)) | 0;
30419 lo = (lo + Math.imul(al2, bl2)) | 0;
30420 mid = (mid + Math.imul(al2, bh2)) | 0;
30421 mid = (mid + Math.imul(ah2, bl2)) | 0;
30422 hi = (hi + Math.imul(ah2, bh2)) | 0;
30423 lo = (lo + Math.imul(al1, bl3)) | 0;
30424 mid = (mid + Math.imul(al1, bh3)) | 0;
30425 mid = (mid + Math.imul(ah1, bl3)) | 0;
30426 hi = (hi + Math.imul(ah1, bh3)) | 0;
30427 lo = (lo + Math.imul(al0, bl4)) | 0;
30428 mid = (mid + Math.imul(al0, bh4)) | 0;
30429 mid = (mid + Math.imul(ah0, bl4)) | 0;
30430 hi = (hi + Math.imul(ah0, bh4)) | 0;
30431 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30432 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
30433 w4 &= 0x3ffffff;
30434 /* k = 5 */
30435 lo = Math.imul(al5, bl0);
30436 mid = Math.imul(al5, bh0);
30437 mid = (mid + Math.imul(ah5, bl0)) | 0;
30438 hi = Math.imul(ah5, bh0);
30439 lo = (lo + Math.imul(al4, bl1)) | 0;
30440 mid = (mid + Math.imul(al4, bh1)) | 0;
30441 mid = (mid + Math.imul(ah4, bl1)) | 0;
30442 hi = (hi + Math.imul(ah4, bh1)) | 0;
30443 lo = (lo + Math.imul(al3, bl2)) | 0;
30444 mid = (mid + Math.imul(al3, bh2)) | 0;
30445 mid = (mid + Math.imul(ah3, bl2)) | 0;
30446 hi = (hi + Math.imul(ah3, bh2)) | 0;
30447 lo = (lo + Math.imul(al2, bl3)) | 0;
30448 mid = (mid + Math.imul(al2, bh3)) | 0;
30449 mid = (mid + Math.imul(ah2, bl3)) | 0;
30450 hi = (hi + Math.imul(ah2, bh3)) | 0;
30451 lo = (lo + Math.imul(al1, bl4)) | 0;
30452 mid = (mid + Math.imul(al1, bh4)) | 0;
30453 mid = (mid + Math.imul(ah1, bl4)) | 0;
30454 hi = (hi + Math.imul(ah1, bh4)) | 0;
30455 lo = (lo + Math.imul(al0, bl5)) | 0;
30456 mid = (mid + Math.imul(al0, bh5)) | 0;
30457 mid = (mid + Math.imul(ah0, bl5)) | 0;
30458 hi = (hi + Math.imul(ah0, bh5)) | 0;
30459 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30460 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
30461 w5 &= 0x3ffffff;
30462 /* k = 6 */
30463 lo = Math.imul(al6, bl0);
30464 mid = Math.imul(al6, bh0);
30465 mid = (mid + Math.imul(ah6, bl0)) | 0;
30466 hi = Math.imul(ah6, bh0);
30467 lo = (lo + Math.imul(al5, bl1)) | 0;
30468 mid = (mid + Math.imul(al5, bh1)) | 0;
30469 mid = (mid + Math.imul(ah5, bl1)) | 0;
30470 hi = (hi + Math.imul(ah5, bh1)) | 0;
30471 lo = (lo + Math.imul(al4, bl2)) | 0;
30472 mid = (mid + Math.imul(al4, bh2)) | 0;
30473 mid = (mid + Math.imul(ah4, bl2)) | 0;
30474 hi = (hi + Math.imul(ah4, bh2)) | 0;
30475 lo = (lo + Math.imul(al3, bl3)) | 0;
30476 mid = (mid + Math.imul(al3, bh3)) | 0;
30477 mid = (mid + Math.imul(ah3, bl3)) | 0;
30478 hi = (hi + Math.imul(ah3, bh3)) | 0;
30479 lo = (lo + Math.imul(al2, bl4)) | 0;
30480 mid = (mid + Math.imul(al2, bh4)) | 0;
30481 mid = (mid + Math.imul(ah2, bl4)) | 0;
30482 hi = (hi + Math.imul(ah2, bh4)) | 0;
30483 lo = (lo + Math.imul(al1, bl5)) | 0;
30484 mid = (mid + Math.imul(al1, bh5)) | 0;
30485 mid = (mid + Math.imul(ah1, bl5)) | 0;
30486 hi = (hi + Math.imul(ah1, bh5)) | 0;
30487 lo = (lo + Math.imul(al0, bl6)) | 0;
30488 mid = (mid + Math.imul(al0, bh6)) | 0;
30489 mid = (mid + Math.imul(ah0, bl6)) | 0;
30490 hi = (hi + Math.imul(ah0, bh6)) | 0;
30491 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30492 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
30493 w6 &= 0x3ffffff;
30494 /* k = 7 */
30495 lo = Math.imul(al7, bl0);
30496 mid = Math.imul(al7, bh0);
30497 mid = (mid + Math.imul(ah7, bl0)) | 0;
30498 hi = Math.imul(ah7, bh0);
30499 lo = (lo + Math.imul(al6, bl1)) | 0;
30500 mid = (mid + Math.imul(al6, bh1)) | 0;
30501 mid = (mid + Math.imul(ah6, bl1)) | 0;
30502 hi = (hi + Math.imul(ah6, bh1)) | 0;
30503 lo = (lo + Math.imul(al5, bl2)) | 0;
30504 mid = (mid + Math.imul(al5, bh2)) | 0;
30505 mid = (mid + Math.imul(ah5, bl2)) | 0;
30506 hi = (hi + Math.imul(ah5, bh2)) | 0;
30507 lo = (lo + Math.imul(al4, bl3)) | 0;
30508 mid = (mid + Math.imul(al4, bh3)) | 0;
30509 mid = (mid + Math.imul(ah4, bl3)) | 0;
30510 hi = (hi + Math.imul(ah4, bh3)) | 0;
30511 lo = (lo + Math.imul(al3, bl4)) | 0;
30512 mid = (mid + Math.imul(al3, bh4)) | 0;
30513 mid = (mid + Math.imul(ah3, bl4)) | 0;
30514 hi = (hi + Math.imul(ah3, bh4)) | 0;
30515 lo = (lo + Math.imul(al2, bl5)) | 0;
30516 mid = (mid + Math.imul(al2, bh5)) | 0;
30517 mid = (mid + Math.imul(ah2, bl5)) | 0;
30518 hi = (hi + Math.imul(ah2, bh5)) | 0;
30519 lo = (lo + Math.imul(al1, bl6)) | 0;
30520 mid = (mid + Math.imul(al1, bh6)) | 0;
30521 mid = (mid + Math.imul(ah1, bl6)) | 0;
30522 hi = (hi + Math.imul(ah1, bh6)) | 0;
30523 lo = (lo + Math.imul(al0, bl7)) | 0;
30524 mid = (mid + Math.imul(al0, bh7)) | 0;
30525 mid = (mid + Math.imul(ah0, bl7)) | 0;
30526 hi = (hi + Math.imul(ah0, bh7)) | 0;
30527 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30528 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
30529 w7 &= 0x3ffffff;
30530 /* k = 8 */
30531 lo = Math.imul(al8, bl0);
30532 mid = Math.imul(al8, bh0);
30533 mid = (mid + Math.imul(ah8, bl0)) | 0;
30534 hi = Math.imul(ah8, bh0);
30535 lo = (lo + Math.imul(al7, bl1)) | 0;
30536 mid = (mid + Math.imul(al7, bh1)) | 0;
30537 mid = (mid + Math.imul(ah7, bl1)) | 0;
30538 hi = (hi + Math.imul(ah7, bh1)) | 0;
30539 lo = (lo + Math.imul(al6, bl2)) | 0;
30540 mid = (mid + Math.imul(al6, bh2)) | 0;
30541 mid = (mid + Math.imul(ah6, bl2)) | 0;
30542 hi = (hi + Math.imul(ah6, bh2)) | 0;
30543 lo = (lo + Math.imul(al5, bl3)) | 0;
30544 mid = (mid + Math.imul(al5, bh3)) | 0;
30545 mid = (mid + Math.imul(ah5, bl3)) | 0;
30546 hi = (hi + Math.imul(ah5, bh3)) | 0;
30547 lo = (lo + Math.imul(al4, bl4)) | 0;
30548 mid = (mid + Math.imul(al4, bh4)) | 0;
30549 mid = (mid + Math.imul(ah4, bl4)) | 0;
30550 hi = (hi + Math.imul(ah4, bh4)) | 0;
30551 lo = (lo + Math.imul(al3, bl5)) | 0;
30552 mid = (mid + Math.imul(al3, bh5)) | 0;
30553 mid = (mid + Math.imul(ah3, bl5)) | 0;
30554 hi = (hi + Math.imul(ah3, bh5)) | 0;
30555 lo = (lo + Math.imul(al2, bl6)) | 0;
30556 mid = (mid + Math.imul(al2, bh6)) | 0;
30557 mid = (mid + Math.imul(ah2, bl6)) | 0;
30558 hi = (hi + Math.imul(ah2, bh6)) | 0;
30559 lo = (lo + Math.imul(al1, bl7)) | 0;
30560 mid = (mid + Math.imul(al1, bh7)) | 0;
30561 mid = (mid + Math.imul(ah1, bl7)) | 0;
30562 hi = (hi + Math.imul(ah1, bh7)) | 0;
30563 lo = (lo + Math.imul(al0, bl8)) | 0;
30564 mid = (mid + Math.imul(al0, bh8)) | 0;
30565 mid = (mid + Math.imul(ah0, bl8)) | 0;
30566 hi = (hi + Math.imul(ah0, bh8)) | 0;
30567 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30568 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
30569 w8 &= 0x3ffffff;
30570 /* k = 9 */
30571 lo = Math.imul(al9, bl0);
30572 mid = Math.imul(al9, bh0);
30573 mid = (mid + Math.imul(ah9, bl0)) | 0;
30574 hi = Math.imul(ah9, bh0);
30575 lo = (lo + Math.imul(al8, bl1)) | 0;
30576 mid = (mid + Math.imul(al8, bh1)) | 0;
30577 mid = (mid + Math.imul(ah8, bl1)) | 0;
30578 hi = (hi + Math.imul(ah8, bh1)) | 0;
30579 lo = (lo + Math.imul(al7, bl2)) | 0;
30580 mid = (mid + Math.imul(al7, bh2)) | 0;
30581 mid = (mid + Math.imul(ah7, bl2)) | 0;
30582 hi = (hi + Math.imul(ah7, bh2)) | 0;
30583 lo = (lo + Math.imul(al6, bl3)) | 0;
30584 mid = (mid + Math.imul(al6, bh3)) | 0;
30585 mid = (mid + Math.imul(ah6, bl3)) | 0;
30586 hi = (hi + Math.imul(ah6, bh3)) | 0;
30587 lo = (lo + Math.imul(al5, bl4)) | 0;
30588 mid = (mid + Math.imul(al5, bh4)) | 0;
30589 mid = (mid + Math.imul(ah5, bl4)) | 0;
30590 hi = (hi + Math.imul(ah5, bh4)) | 0;
30591 lo = (lo + Math.imul(al4, bl5)) | 0;
30592 mid = (mid + Math.imul(al4, bh5)) | 0;
30593 mid = (mid + Math.imul(ah4, bl5)) | 0;
30594 hi = (hi + Math.imul(ah4, bh5)) | 0;
30595 lo = (lo + Math.imul(al3, bl6)) | 0;
30596 mid = (mid + Math.imul(al3, bh6)) | 0;
30597 mid = (mid + Math.imul(ah3, bl6)) | 0;
30598 hi = (hi + Math.imul(ah3, bh6)) | 0;
30599 lo = (lo + Math.imul(al2, bl7)) | 0;
30600 mid = (mid + Math.imul(al2, bh7)) | 0;
30601 mid = (mid + Math.imul(ah2, bl7)) | 0;
30602 hi = (hi + Math.imul(ah2, bh7)) | 0;
30603 lo = (lo + Math.imul(al1, bl8)) | 0;
30604 mid = (mid + Math.imul(al1, bh8)) | 0;
30605 mid = (mid + Math.imul(ah1, bl8)) | 0;
30606 hi = (hi + Math.imul(ah1, bh8)) | 0;
30607 lo = (lo + Math.imul(al0, bl9)) | 0;
30608 mid = (mid + Math.imul(al0, bh9)) | 0;
30609 mid = (mid + Math.imul(ah0, bl9)) | 0;
30610 hi = (hi + Math.imul(ah0, bh9)) | 0;
30611 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30612 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
30613 w9 &= 0x3ffffff;
30614 /* k = 10 */
30615 lo = Math.imul(al9, bl1);
30616 mid = Math.imul(al9, bh1);
30617 mid = (mid + Math.imul(ah9, bl1)) | 0;
30618 hi = Math.imul(ah9, bh1);
30619 lo = (lo + Math.imul(al8, bl2)) | 0;
30620 mid = (mid + Math.imul(al8, bh2)) | 0;
30621 mid = (mid + Math.imul(ah8, bl2)) | 0;
30622 hi = (hi + Math.imul(ah8, bh2)) | 0;
30623 lo = (lo + Math.imul(al7, bl3)) | 0;
30624 mid = (mid + Math.imul(al7, bh3)) | 0;
30625 mid = (mid + Math.imul(ah7, bl3)) | 0;
30626 hi = (hi + Math.imul(ah7, bh3)) | 0;
30627 lo = (lo + Math.imul(al6, bl4)) | 0;
30628 mid = (mid + Math.imul(al6, bh4)) | 0;
30629 mid = (mid + Math.imul(ah6, bl4)) | 0;
30630 hi = (hi + Math.imul(ah6, bh4)) | 0;
30631 lo = (lo + Math.imul(al5, bl5)) | 0;
30632 mid = (mid + Math.imul(al5, bh5)) | 0;
30633 mid = (mid + Math.imul(ah5, bl5)) | 0;
30634 hi = (hi + Math.imul(ah5, bh5)) | 0;
30635 lo = (lo + Math.imul(al4, bl6)) | 0;
30636 mid = (mid + Math.imul(al4, bh6)) | 0;
30637 mid = (mid + Math.imul(ah4, bl6)) | 0;
30638 hi = (hi + Math.imul(ah4, bh6)) | 0;
30639 lo = (lo + Math.imul(al3, bl7)) | 0;
30640 mid = (mid + Math.imul(al3, bh7)) | 0;
30641 mid = (mid + Math.imul(ah3, bl7)) | 0;
30642 hi = (hi + Math.imul(ah3, bh7)) | 0;
30643 lo = (lo + Math.imul(al2, bl8)) | 0;
30644 mid = (mid + Math.imul(al2, bh8)) | 0;
30645 mid = (mid + Math.imul(ah2, bl8)) | 0;
30646 hi = (hi + Math.imul(ah2, bh8)) | 0;
30647 lo = (lo + Math.imul(al1, bl9)) | 0;
30648 mid = (mid + Math.imul(al1, bh9)) | 0;
30649 mid = (mid + Math.imul(ah1, bl9)) | 0;
30650 hi = (hi + Math.imul(ah1, bh9)) | 0;
30651 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30652 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
30653 w10 &= 0x3ffffff;
30654 /* k = 11 */
30655 lo = Math.imul(al9, bl2);
30656 mid = Math.imul(al9, bh2);
30657 mid = (mid + Math.imul(ah9, bl2)) | 0;
30658 hi = Math.imul(ah9, bh2);
30659 lo = (lo + Math.imul(al8, bl3)) | 0;
30660 mid = (mid + Math.imul(al8, bh3)) | 0;
30661 mid = (mid + Math.imul(ah8, bl3)) | 0;
30662 hi = (hi + Math.imul(ah8, bh3)) | 0;
30663 lo = (lo + Math.imul(al7, bl4)) | 0;
30664 mid = (mid + Math.imul(al7, bh4)) | 0;
30665 mid = (mid + Math.imul(ah7, bl4)) | 0;
30666 hi = (hi + Math.imul(ah7, bh4)) | 0;
30667 lo = (lo + Math.imul(al6, bl5)) | 0;
30668 mid = (mid + Math.imul(al6, bh5)) | 0;
30669 mid = (mid + Math.imul(ah6, bl5)) | 0;
30670 hi = (hi + Math.imul(ah6, bh5)) | 0;
30671 lo = (lo + Math.imul(al5, bl6)) | 0;
30672 mid = (mid + Math.imul(al5, bh6)) | 0;
30673 mid = (mid + Math.imul(ah5, bl6)) | 0;
30674 hi = (hi + Math.imul(ah5, bh6)) | 0;
30675 lo = (lo + Math.imul(al4, bl7)) | 0;
30676 mid = (mid + Math.imul(al4, bh7)) | 0;
30677 mid = (mid + Math.imul(ah4, bl7)) | 0;
30678 hi = (hi + Math.imul(ah4, bh7)) | 0;
30679 lo = (lo + Math.imul(al3, bl8)) | 0;
30680 mid = (mid + Math.imul(al3, bh8)) | 0;
30681 mid = (mid + Math.imul(ah3, bl8)) | 0;
30682 hi = (hi + Math.imul(ah3, bh8)) | 0;
30683 lo = (lo + Math.imul(al2, bl9)) | 0;
30684 mid = (mid + Math.imul(al2, bh9)) | 0;
30685 mid = (mid + Math.imul(ah2, bl9)) | 0;
30686 hi = (hi + Math.imul(ah2, bh9)) | 0;
30687 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30688 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
30689 w11 &= 0x3ffffff;
30690 /* k = 12 */
30691 lo = Math.imul(al9, bl3);
30692 mid = Math.imul(al9, bh3);
30693 mid = (mid + Math.imul(ah9, bl3)) | 0;
30694 hi = Math.imul(ah9, bh3);
30695 lo = (lo + Math.imul(al8, bl4)) | 0;
30696 mid = (mid + Math.imul(al8, bh4)) | 0;
30697 mid = (mid + Math.imul(ah8, bl4)) | 0;
30698 hi = (hi + Math.imul(ah8, bh4)) | 0;
30699 lo = (lo + Math.imul(al7, bl5)) | 0;
30700 mid = (mid + Math.imul(al7, bh5)) | 0;
30701 mid = (mid + Math.imul(ah7, bl5)) | 0;
30702 hi = (hi + Math.imul(ah7, bh5)) | 0;
30703 lo = (lo + Math.imul(al6, bl6)) | 0;
30704 mid = (mid + Math.imul(al6, bh6)) | 0;
30705 mid = (mid + Math.imul(ah6, bl6)) | 0;
30706 hi = (hi + Math.imul(ah6, bh6)) | 0;
30707 lo = (lo + Math.imul(al5, bl7)) | 0;
30708 mid = (mid + Math.imul(al5, bh7)) | 0;
30709 mid = (mid + Math.imul(ah5, bl7)) | 0;
30710 hi = (hi + Math.imul(ah5, bh7)) | 0;
30711 lo = (lo + Math.imul(al4, bl8)) | 0;
30712 mid = (mid + Math.imul(al4, bh8)) | 0;
30713 mid = (mid + Math.imul(ah4, bl8)) | 0;
30714 hi = (hi + Math.imul(ah4, bh8)) | 0;
30715 lo = (lo + Math.imul(al3, bl9)) | 0;
30716 mid = (mid + Math.imul(al3, bh9)) | 0;
30717 mid = (mid + Math.imul(ah3, bl9)) | 0;
30718 hi = (hi + Math.imul(ah3, bh9)) | 0;
30719 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30720 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
30721 w12 &= 0x3ffffff;
30722 /* k = 13 */
30723 lo = Math.imul(al9, bl4);
30724 mid = Math.imul(al9, bh4);
30725 mid = (mid + Math.imul(ah9, bl4)) | 0;
30726 hi = Math.imul(ah9, bh4);
30727 lo = (lo + Math.imul(al8, bl5)) | 0;
30728 mid = (mid + Math.imul(al8, bh5)) | 0;
30729 mid = (mid + Math.imul(ah8, bl5)) | 0;
30730 hi = (hi + Math.imul(ah8, bh5)) | 0;
30731 lo = (lo + Math.imul(al7, bl6)) | 0;
30732 mid = (mid + Math.imul(al7, bh6)) | 0;
30733 mid = (mid + Math.imul(ah7, bl6)) | 0;
30734 hi = (hi + Math.imul(ah7, bh6)) | 0;
30735 lo = (lo + Math.imul(al6, bl7)) | 0;
30736 mid = (mid + Math.imul(al6, bh7)) | 0;
30737 mid = (mid + Math.imul(ah6, bl7)) | 0;
30738 hi = (hi + Math.imul(ah6, bh7)) | 0;
30739 lo = (lo + Math.imul(al5, bl8)) | 0;
30740 mid = (mid + Math.imul(al5, bh8)) | 0;
30741 mid = (mid + Math.imul(ah5, bl8)) | 0;
30742 hi = (hi + Math.imul(ah5, bh8)) | 0;
30743 lo = (lo + Math.imul(al4, bl9)) | 0;
30744 mid = (mid + Math.imul(al4, bh9)) | 0;
30745 mid = (mid + Math.imul(ah4, bl9)) | 0;
30746 hi = (hi + Math.imul(ah4, bh9)) | 0;
30747 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30748 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
30749 w13 &= 0x3ffffff;
30750 /* k = 14 */
30751 lo = Math.imul(al9, bl5);
30752 mid = Math.imul(al9, bh5);
30753 mid = (mid + Math.imul(ah9, bl5)) | 0;
30754 hi = Math.imul(ah9, bh5);
30755 lo = (lo + Math.imul(al8, bl6)) | 0;
30756 mid = (mid + Math.imul(al8, bh6)) | 0;
30757 mid = (mid + Math.imul(ah8, bl6)) | 0;
30758 hi = (hi + Math.imul(ah8, bh6)) | 0;
30759 lo = (lo + Math.imul(al7, bl7)) | 0;
30760 mid = (mid + Math.imul(al7, bh7)) | 0;
30761 mid = (mid + Math.imul(ah7, bl7)) | 0;
30762 hi = (hi + Math.imul(ah7, bh7)) | 0;
30763 lo = (lo + Math.imul(al6, bl8)) | 0;
30764 mid = (mid + Math.imul(al6, bh8)) | 0;
30765 mid = (mid + Math.imul(ah6, bl8)) | 0;
30766 hi = (hi + Math.imul(ah6, bh8)) | 0;
30767 lo = (lo + Math.imul(al5, bl9)) | 0;
30768 mid = (mid + Math.imul(al5, bh9)) | 0;
30769 mid = (mid + Math.imul(ah5, bl9)) | 0;
30770 hi = (hi + Math.imul(ah5, bh9)) | 0;
30771 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30772 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
30773 w14 &= 0x3ffffff;
30774 /* k = 15 */
30775 lo = Math.imul(al9, bl6);
30776 mid = Math.imul(al9, bh6);
30777 mid = (mid + Math.imul(ah9, bl6)) | 0;
30778 hi = Math.imul(ah9, bh6);
30779 lo = (lo + Math.imul(al8, bl7)) | 0;
30780 mid = (mid + Math.imul(al8, bh7)) | 0;
30781 mid = (mid + Math.imul(ah8, bl7)) | 0;
30782 hi = (hi + Math.imul(ah8, bh7)) | 0;
30783 lo = (lo + Math.imul(al7, bl8)) | 0;
30784 mid = (mid + Math.imul(al7, bh8)) | 0;
30785 mid = (mid + Math.imul(ah7, bl8)) | 0;
30786 hi = (hi + Math.imul(ah7, bh8)) | 0;
30787 lo = (lo + Math.imul(al6, bl9)) | 0;
30788 mid = (mid + Math.imul(al6, bh9)) | 0;
30789 mid = (mid + Math.imul(ah6, bl9)) | 0;
30790 hi = (hi + Math.imul(ah6, bh9)) | 0;
30791 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30792 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
30793 w15 &= 0x3ffffff;
30794 /* k = 16 */
30795 lo = Math.imul(al9, bl7);
30796 mid = Math.imul(al9, bh7);
30797 mid = (mid + Math.imul(ah9, bl7)) | 0;
30798 hi = Math.imul(ah9, bh7);
30799 lo = (lo + Math.imul(al8, bl8)) | 0;
30800 mid = (mid + Math.imul(al8, bh8)) | 0;
30801 mid = (mid + Math.imul(ah8, bl8)) | 0;
30802 hi = (hi + Math.imul(ah8, bh8)) | 0;
30803 lo = (lo + Math.imul(al7, bl9)) | 0;
30804 mid = (mid + Math.imul(al7, bh9)) | 0;
30805 mid = (mid + Math.imul(ah7, bl9)) | 0;
30806 hi = (hi + Math.imul(ah7, bh9)) | 0;
30807 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30808 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
30809 w16 &= 0x3ffffff;
30810 /* k = 17 */
30811 lo = Math.imul(al9, bl8);
30812 mid = Math.imul(al9, bh8);
30813 mid = (mid + Math.imul(ah9, bl8)) | 0;
30814 hi = Math.imul(ah9, bh8);
30815 lo = (lo + Math.imul(al8, bl9)) | 0;
30816 mid = (mid + Math.imul(al8, bh9)) | 0;
30817 mid = (mid + Math.imul(ah8, bl9)) | 0;
30818 hi = (hi + Math.imul(ah8, bh9)) | 0;
30819 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30820 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
30821 w17 &= 0x3ffffff;
30822 /* k = 18 */
30823 lo = Math.imul(al9, bl9);
30824 mid = Math.imul(al9, bh9);
30825 mid = (mid + Math.imul(ah9, bl9)) | 0;
30826 hi = Math.imul(ah9, bh9);
30827 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30828 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
30829 w18 &= 0x3ffffff;
30830 o[0] = w0;
30831 o[1] = w1;
30832 o[2] = w2;
30833 o[3] = w3;
30834 o[4] = w4;
30835 o[5] = w5;
30836 o[6] = w6;
30837 o[7] = w7;
30838 o[8] = w8;
30839 o[9] = w9;
30840 o[10] = w10;
30841 o[11] = w11;
30842 o[12] = w12;
30843 o[13] = w13;
30844 o[14] = w14;
30845 o[15] = w15;
30846 o[16] = w16;
30847 o[17] = w17;
30848 o[18] = w18;
30849 if (c !== 0) {
30850 o[19] = c;
30851 out.length++;
30852 }
30853 return out;
30854 };
30855
30856 // Polyfill comb
30857 if (!Math.imul) {
30858 comb10MulTo = smallMulTo;
30859 }
30860
30861 function bigMulTo (self, num, out) {
30862 out.negative = num.negative ^ self.negative;
30863 out.length = self.length + num.length;
30864
30865 var carry = 0;
30866 var hncarry = 0;
30867 for (var k = 0; k < out.length - 1; k++) {
30868 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30869 // note that ncarry could be >= 0x3ffffff
30870 var ncarry = hncarry;
30871 hncarry = 0;
30872 var rword = carry & 0x3ffffff;
30873 var maxJ = Math.min(k, num.length - 1);
30874 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30875 var i = k - j;
30876 var a = self.words[i] | 0;
30877 var b = num.words[j] | 0;
30878 var r = a * b;
30879
30880 var lo = r & 0x3ffffff;
30881 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
30882 lo = (lo + rword) | 0;
30883 rword = lo & 0x3ffffff;
30884 ncarry = (ncarry + (lo >>> 26)) | 0;
30885
30886 hncarry += ncarry >>> 26;
30887 ncarry &= 0x3ffffff;
30888 }
30889 out.words[k] = rword;
30890 carry = ncarry;
30891 ncarry = hncarry;
30892 }
30893 if (carry !== 0) {
30894 out.words[k] = carry;
30895 } else {
30896 out.length--;
30897 }
30898
30899 return out.strip();
30900 }
30901
30902 function jumboMulTo (self, num, out) {
30903 var fftm = new FFTM();
30904 return fftm.mulp(self, num, out);
30905 }
30906
30907 BN.prototype.mulTo = function mulTo (num, out) {
30908 var res;
30909 var len = this.length + num.length;
30910 if (this.length === 10 && num.length === 10) {
30911 res = comb10MulTo(this, num, out);
30912 } else if (len < 63) {
30913 res = smallMulTo(this, num, out);
30914 } else if (len < 1024) {
30915 res = bigMulTo(this, num, out);
30916 } else {
30917 res = jumboMulTo(this, num, out);
30918 }
30919
30920 return res;
30921 };
30922
30923 // Cooley-Tukey algorithm for FFT
30924 // slightly revisited to rely on looping instead of recursion
30925
30926 function FFTM (x, y) {
30927 this.x = x;
30928 this.y = y;
30929 }
30930
30931 FFTM.prototype.makeRBT = function makeRBT (N) {
30932 var t = new Array(N);
30933 var l = BN.prototype._countBits(N) - 1;
30934 for (var i = 0; i < N; i++) {
30935 t[i] = this.revBin(i, l, N);
30936 }
30937
30938 return t;
30939 };
30940
30941 // Returns binary-reversed representation of `x`
30942 FFTM.prototype.revBin = function revBin (x, l, N) {
30943 if (x === 0 || x === N - 1) return x;
30944
30945 var rb = 0;
30946 for (var i = 0; i < l; i++) {
30947 rb |= (x & 1) << (l - i - 1);
30948 x >>= 1;
30949 }
30950
30951 return rb;
30952 };
30953
30954 // Performs "tweedling" phase, therefore 'emulating'
30955 // behaviour of the recursive algorithm
30956 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
30957 for (var i = 0; i < N; i++) {
30958 rtws[i] = rws[rbt[i]];
30959 itws[i] = iws[rbt[i]];
30960 }
30961 };
30962
30963 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
30964 this.permute(rbt, rws, iws, rtws, itws, N);
30965
30966 for (var s = 1; s < N; s <<= 1) {
30967 var l = s << 1;
30968
30969 var rtwdf = Math.cos(2 * Math.PI / l);
30970 var itwdf = Math.sin(2 * Math.PI / l);
30971
30972 for (var p = 0; p < N; p += l) {
30973 var rtwdf_ = rtwdf;
30974 var itwdf_ = itwdf;
30975
30976 for (var j = 0; j < s; j++) {
30977 var re = rtws[p + j];
30978 var ie = itws[p + j];
30979
30980 var ro = rtws[p + j + s];
30981 var io = itws[p + j + s];
30982
30983 var rx = rtwdf_ * ro - itwdf_ * io;
30984
30985 io = rtwdf_ * io + itwdf_ * ro;
30986 ro = rx;
30987
30988 rtws[p + j] = re + ro;
30989 itws[p + j] = ie + io;
30990
30991 rtws[p + j + s] = re - ro;
30992 itws[p + j + s] = ie - io;
30993
30994 /* jshint maxdepth : false */
30995 if (j !== l) {
30996 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
30997
30998 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
30999 rtwdf_ = rx;
31000 }
31001 }
31002 }
31003 }
31004 };
31005
31006 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
31007 var N = Math.max(m, n) | 1;
31008 var odd = N & 1;
31009 var i = 0;
31010 for (N = N / 2 | 0; N; N = N >>> 1) {
31011 i++;
31012 }
31013
31014 return 1 << i + 1 + odd;
31015 };
31016
31017 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
31018 if (N <= 1) return;
31019
31020 for (var i = 0; i < N / 2; i++) {
31021 var t = rws[i];
31022
31023 rws[i] = rws[N - i - 1];
31024 rws[N - i - 1] = t;
31025
31026 t = iws[i];
31027
31028 iws[i] = -iws[N - i - 1];
31029 iws[N - i - 1] = -t;
31030 }
31031 };
31032
31033 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
31034 var carry = 0;
31035 for (var i = 0; i < N / 2; i++) {
31036 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
31037 Math.round(ws[2 * i] / N) +
31038 carry;
31039
31040 ws[i] = w & 0x3ffffff;
31041
31042 if (w < 0x4000000) {
31043 carry = 0;
31044 } else {
31045 carry = w / 0x4000000 | 0;
31046 }
31047 }
31048
31049 return ws;
31050 };
31051
31052 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
31053 var carry = 0;
31054 for (var i = 0; i < len; i++) {
31055 carry = carry + (ws[i] | 0);
31056
31057 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
31058 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
31059 }
31060
31061 // Pad with zeroes
31062 for (i = 2 * len; i < N; ++i) {
31063 rws[i] = 0;
31064 }
31065
31066 assert(carry === 0);
31067 assert((carry & ~0x1fff) === 0);
31068 };
31069
31070 FFTM.prototype.stub = function stub (N) {
31071 var ph = new Array(N);
31072 for (var i = 0; i < N; i++) {
31073 ph[i] = 0;
31074 }
31075
31076 return ph;
31077 };
31078
31079 FFTM.prototype.mulp = function mulp (x, y, out) {
31080 var N = 2 * this.guessLen13b(x.length, y.length);
31081
31082 var rbt = this.makeRBT(N);
31083
31084 var _ = this.stub(N);
31085
31086 var rws = new Array(N);
31087 var rwst = new Array(N);
31088 var iwst = new Array(N);
31089
31090 var nrws = new Array(N);
31091 var nrwst = new Array(N);
31092 var niwst = new Array(N);
31093
31094 var rmws = out.words;
31095 rmws.length = N;
31096
31097 this.convert13b(x.words, x.length, rws, N);
31098 this.convert13b(y.words, y.length, nrws, N);
31099
31100 this.transform(rws, _, rwst, iwst, N, rbt);
31101 this.transform(nrws, _, nrwst, niwst, N, rbt);
31102
31103 for (var i = 0; i < N; i++) {
31104 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
31105 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
31106 rwst[i] = rx;
31107 }
31108
31109 this.conjugate(rwst, iwst, N);
31110 this.transform(rwst, iwst, rmws, _, N, rbt);
31111 this.conjugate(rmws, _, N);
31112 this.normalize13b(rmws, N);
31113
31114 out.negative = x.negative ^ y.negative;
31115 out.length = x.length + y.length;
31116 return out.strip();
31117 };
31118
31119 // Multiply `this` by `num`
31120 BN.prototype.mul = function mul (num) {
31121 var out = new BN(null);
31122 out.words = new Array(this.length + num.length);
31123 return this.mulTo(num, out);
31124 };
31125
31126 // Multiply employing FFT
31127 BN.prototype.mulf = function mulf (num) {
31128 var out = new BN(null);
31129 out.words = new Array(this.length + num.length);
31130 return jumboMulTo(this, num, out);
31131 };
31132
31133 // In-place Multiplication
31134 BN.prototype.imul = function imul (num) {
31135 return this.clone().mulTo(num, this);
31136 };
31137
31138 BN.prototype.imuln = function imuln (num) {
31139 assert(typeof num === 'number');
31140 assert(num < 0x4000000);
31141
31142 // Carry
31143 var carry = 0;
31144 for (var i = 0; i < this.length; i++) {
31145 var w = (this.words[i] | 0) * num;
31146 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
31147 carry >>= 26;
31148 carry += (w / 0x4000000) | 0;
31149 // NOTE: lo is 27bit maximum
31150 carry += lo >>> 26;
31151 this.words[i] = lo & 0x3ffffff;
31152 }
31153
31154 if (carry !== 0) {
31155 this.words[i] = carry;
31156 this.length++;
31157 }
31158
31159 return this;
31160 };
31161
31162 BN.prototype.muln = function muln (num) {
31163 return this.clone().imuln(num);
31164 };
31165
31166 // `this` * `this`
31167 BN.prototype.sqr = function sqr () {
31168 return this.mul(this);
31169 };
31170
31171 // `this` * `this` in-place
31172 BN.prototype.isqr = function isqr () {
31173 return this.imul(this.clone());
31174 };
31175
31176 // Math.pow(`this`, `num`)
31177 BN.prototype.pow = function pow (num) {
31178 var w = toBitArray(num);
31179 if (w.length === 0) return new BN(1);
31180
31181 // Skip leading zeroes
31182 var res = this;
31183 for (var i = 0; i < w.length; i++, res = res.sqr()) {
31184 if (w[i] !== 0) break;
31185 }
31186
31187 if (++i < w.length) {
31188 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
31189 if (w[i] === 0) continue;
31190
31191 res = res.mul(q);
31192 }
31193 }
31194
31195 return res;
31196 };
31197
31198 // Shift-left in-place
31199 BN.prototype.iushln = function iushln (bits) {
31200 assert(typeof bits === 'number' && bits >= 0);
31201 var r = bits % 26;
31202 var s = (bits - r) / 26;
31203 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
31204 var i;
31205
31206 if (r !== 0) {
31207 var carry = 0;
31208
31209 for (i = 0; i < this.length; i++) {
31210 var newCarry = this.words[i] & carryMask;
31211 var c = ((this.words[i] | 0) - newCarry) << r;
31212 this.words[i] = c | carry;
31213 carry = newCarry >>> (26 - r);
31214 }
31215
31216 if (carry) {
31217 this.words[i] = carry;
31218 this.length++;
31219 }
31220 }
31221
31222 if (s !== 0) {
31223 for (i = this.length - 1; i >= 0; i--) {
31224 this.words[i + s] = this.words[i];
31225 }
31226
31227 for (i = 0; i < s; i++) {
31228 this.words[i] = 0;
31229 }
31230
31231 this.length += s;
31232 }
31233
31234 return this.strip();
31235 };
31236
31237 BN.prototype.ishln = function ishln (bits) {
31238 // TODO(indutny): implement me
31239 assert(this.negative === 0);
31240 return this.iushln(bits);
31241 };
31242
31243 // Shift-right in-place
31244 // NOTE: `hint` is a lowest bit before trailing zeroes
31245 // NOTE: if `extended` is present - it will be filled with destroyed bits
31246 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
31247 assert(typeof bits === 'number' && bits >= 0);
31248 var h;
31249 if (hint) {
31250 h = (hint - (hint % 26)) / 26;
31251 } else {
31252 h = 0;
31253 }
31254
31255 var r = bits % 26;
31256 var s = Math.min((bits - r) / 26, this.length);
31257 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31258 var maskedWords = extended;
31259
31260 h -= s;
31261 h = Math.max(0, h);
31262
31263 // Extended mode, copy masked part
31264 if (maskedWords) {
31265 for (var i = 0; i < s; i++) {
31266 maskedWords.words[i] = this.words[i];
31267 }
31268 maskedWords.length = s;
31269 }
31270
31271 if (s === 0) {
31272 // No-op, we should not move anything at all
31273 } else if (this.length > s) {
31274 this.length -= s;
31275 for (i = 0; i < this.length; i++) {
31276 this.words[i] = this.words[i + s];
31277 }
31278 } else {
31279 this.words[0] = 0;
31280 this.length = 1;
31281 }
31282
31283 var carry = 0;
31284 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
31285 var word = this.words[i] | 0;
31286 this.words[i] = (carry << (26 - r)) | (word >>> r);
31287 carry = word & mask;
31288 }
31289
31290 // Push carried bits as a mask
31291 if (maskedWords && carry !== 0) {
31292 maskedWords.words[maskedWords.length++] = carry;
31293 }
31294
31295 if (this.length === 0) {
31296 this.words[0] = 0;
31297 this.length = 1;
31298 }
31299
31300 return this.strip();
31301 };
31302
31303 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
31304 // TODO(indutny): implement me
31305 assert(this.negative === 0);
31306 return this.iushrn(bits, hint, extended);
31307 };
31308
31309 // Shift-left
31310 BN.prototype.shln = function shln (bits) {
31311 return this.clone().ishln(bits);
31312 };
31313
31314 BN.prototype.ushln = function ushln (bits) {
31315 return this.clone().iushln(bits);
31316 };
31317
31318 // Shift-right
31319 BN.prototype.shrn = function shrn (bits) {
31320 return this.clone().ishrn(bits);
31321 };
31322
31323 BN.prototype.ushrn = function ushrn (bits) {
31324 return this.clone().iushrn(bits);
31325 };
31326
31327 // Test if n bit is set
31328 BN.prototype.testn = function testn (bit) {
31329 assert(typeof bit === 'number' && bit >= 0);
31330 var r = bit % 26;
31331 var s = (bit - r) / 26;
31332 var q = 1 << r;
31333
31334 // Fast case: bit is much higher than all existing words
31335 if (this.length <= s) return false;
31336
31337 // Check bit and return
31338 var w = this.words[s];
31339
31340 return !!(w & q);
31341 };
31342
31343 // Return only lowers bits of number (in-place)
31344 BN.prototype.imaskn = function imaskn (bits) {
31345 assert(typeof bits === 'number' && bits >= 0);
31346 var r = bits % 26;
31347 var s = (bits - r) / 26;
31348
31349 assert(this.negative === 0, 'imaskn works only with positive numbers');
31350
31351 if (this.length <= s) {
31352 return this;
31353 }
31354
31355 if (r !== 0) {
31356 s++;
31357 }
31358 this.length = Math.min(s, this.length);
31359
31360 if (r !== 0) {
31361 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31362 this.words[this.length - 1] &= mask;
31363 }
31364
31365 return this.strip();
31366 };
31367
31368 // Return only lowers bits of number
31369 BN.prototype.maskn = function maskn (bits) {
31370 return this.clone().imaskn(bits);
31371 };
31372
31373 // Add plain number `num` to `this`
31374 BN.prototype.iaddn = function iaddn (num) {
31375 assert(typeof num === 'number');
31376 assert(num < 0x4000000);
31377 if (num < 0) return this.isubn(-num);
31378
31379 // Possible sign change
31380 if (this.negative !== 0) {
31381 if (this.length === 1 && (this.words[0] | 0) < num) {
31382 this.words[0] = num - (this.words[0] | 0);
31383 this.negative = 0;
31384 return this;
31385 }
31386
31387 this.negative = 0;
31388 this.isubn(num);
31389 this.negative = 1;
31390 return this;
31391 }
31392
31393 // Add without checks
31394 return this._iaddn(num);
31395 };
31396
31397 BN.prototype._iaddn = function _iaddn (num) {
31398 this.words[0] += num;
31399
31400 // Carry
31401 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
31402 this.words[i] -= 0x4000000;
31403 if (i === this.length - 1) {
31404 this.words[i + 1] = 1;
31405 } else {
31406 this.words[i + 1]++;
31407 }
31408 }
31409 this.length = Math.max(this.length, i + 1);
31410
31411 return this;
31412 };
31413
31414 // Subtract plain number `num` from `this`
31415 BN.prototype.isubn = function isubn (num) {
31416 assert(typeof num === 'number');
31417 assert(num < 0x4000000);
31418 if (num < 0) return this.iaddn(-num);
31419
31420 if (this.negative !== 0) {
31421 this.negative = 0;
31422 this.iaddn(num);
31423 this.negative = 1;
31424 return this;
31425 }
31426
31427 this.words[0] -= num;
31428
31429 if (this.length === 1 && this.words[0] < 0) {
31430 this.words[0] = -this.words[0];
31431 this.negative = 1;
31432 } else {
31433 // Carry
31434 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
31435 this.words[i] += 0x4000000;
31436 this.words[i + 1] -= 1;
31437 }
31438 }
31439
31440 return this.strip();
31441 };
31442
31443 BN.prototype.addn = function addn (num) {
31444 return this.clone().iaddn(num);
31445 };
31446
31447 BN.prototype.subn = function subn (num) {
31448 return this.clone().isubn(num);
31449 };
31450
31451 BN.prototype.iabs = function iabs () {
31452 this.negative = 0;
31453
31454 return this;
31455 };
31456
31457 BN.prototype.abs = function abs () {
31458 return this.clone().iabs();
31459 };
31460
31461 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
31462 var len = num.length + shift;
31463 var i;
31464
31465 this._expand(len);
31466
31467 var w;
31468 var carry = 0;
31469 for (i = 0; i < num.length; i++) {
31470 w = (this.words[i + shift] | 0) + carry;
31471 var right = (num.words[i] | 0) * mul;
31472 w -= right & 0x3ffffff;
31473 carry = (w >> 26) - ((right / 0x4000000) | 0);
31474 this.words[i + shift] = w & 0x3ffffff;
31475 }
31476 for (; i < this.length - shift; i++) {
31477 w = (this.words[i + shift] | 0) + carry;
31478 carry = w >> 26;
31479 this.words[i + shift] = w & 0x3ffffff;
31480 }
31481
31482 if (carry === 0) return this.strip();
31483
31484 // Subtraction overflow
31485 assert(carry === -1);
31486 carry = 0;
31487 for (i = 0; i < this.length; i++) {
31488 w = -(this.words[i] | 0) + carry;
31489 carry = w >> 26;
31490 this.words[i] = w & 0x3ffffff;
31491 }
31492 this.negative = 1;
31493
31494 return this.strip();
31495 };
31496
31497 BN.prototype._wordDiv = function _wordDiv (num, mode) {
31498 var shift = this.length - num.length;
31499
31500 var a = this.clone();
31501 var b = num;
31502
31503 // Normalize
31504 var bhi = b.words[b.length - 1] | 0;
31505 var bhiBits = this._countBits(bhi);
31506 shift = 26 - bhiBits;
31507 if (shift !== 0) {
31508 b = b.ushln(shift);
31509 a.iushln(shift);
31510 bhi = b.words[b.length - 1] | 0;
31511 }
31512
31513 // Initialize quotient
31514 var m = a.length - b.length;
31515 var q;
31516
31517 if (mode !== 'mod') {
31518 q = new BN(null);
31519 q.length = m + 1;
31520 q.words = new Array(q.length);
31521 for (var i = 0; i < q.length; i++) {
31522 q.words[i] = 0;
31523 }
31524 }
31525
31526 var diff = a.clone()._ishlnsubmul(b, 1, m);
31527 if (diff.negative === 0) {
31528 a = diff;
31529 if (q) {
31530 q.words[m] = 1;
31531 }
31532 }
31533
31534 for (var j = m - 1; j >= 0; j--) {
31535 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
31536 (a.words[b.length + j - 1] | 0);
31537
31538 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
31539 // (0x7ffffff)
31540 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
31541
31542 a._ishlnsubmul(b, qj, j);
31543 while (a.negative !== 0) {
31544 qj--;
31545 a.negative = 0;
31546 a._ishlnsubmul(b, 1, j);
31547 if (!a.isZero()) {
31548 a.negative ^= 1;
31549 }
31550 }
31551 if (q) {
31552 q.words[j] = qj;
31553 }
31554 }
31555 if (q) {
31556 q.strip();
31557 }
31558 a.strip();
31559
31560 // Denormalize
31561 if (mode !== 'div' && shift !== 0) {
31562 a.iushrn(shift);
31563 }
31564
31565 return {
31566 div: q || null,
31567 mod: a
31568 };
31569 };
31570
31571 // NOTE: 1) `mode` can be set to `mod` to request mod only,
31572 // to `div` to request div only, or be absent to
31573 // request both div & mod
31574 // 2) `positive` is true if unsigned mod is requested
31575 BN.prototype.divmod = function divmod (num, mode, positive) {
31576 assert(!num.isZero());
31577
31578 if (this.isZero()) {
31579 return {
31580 div: new BN(0),
31581 mod: new BN(0)
31582 };
31583 }
31584
31585 var div, mod, res;
31586 if (this.negative !== 0 && num.negative === 0) {
31587 res = this.neg().divmod(num, mode);
31588
31589 if (mode !== 'mod') {
31590 div = res.div.neg();
31591 }
31592
31593 if (mode !== 'div') {
31594 mod = res.mod.neg();
31595 if (positive && mod.negative !== 0) {
31596 mod.iadd(num);
31597 }
31598 }
31599
31600 return {
31601 div: div,
31602 mod: mod
31603 };
31604 }
31605
31606 if (this.negative === 0 && num.negative !== 0) {
31607 res = this.divmod(num.neg(), mode);
31608
31609 if (mode !== 'mod') {
31610 div = res.div.neg();
31611 }
31612
31613 return {
31614 div: div,
31615 mod: res.mod
31616 };
31617 }
31618
31619 if ((this.negative & num.negative) !== 0) {
31620 res = this.neg().divmod(num.neg(), mode);
31621
31622 if (mode !== 'div') {
31623 mod = res.mod.neg();
31624 if (positive && mod.negative !== 0) {
31625 mod.isub(num);
31626 }
31627 }
31628
31629 return {
31630 div: res.div,
31631 mod: mod
31632 };
31633 }
31634
31635 // Both numbers are positive at this point
31636
31637 // Strip both numbers to approximate shift value
31638 if (num.length > this.length || this.cmp(num) < 0) {
31639 return {
31640 div: new BN(0),
31641 mod: this
31642 };
31643 }
31644
31645 // Very short reduction
31646 if (num.length === 1) {
31647 if (mode === 'div') {
31648 return {
31649 div: this.divn(num.words[0]),
31650 mod: null
31651 };
31652 }
31653
31654 if (mode === 'mod') {
31655 return {
31656 div: null,
31657 mod: new BN(this.modn(num.words[0]))
31658 };
31659 }
31660
31661 return {
31662 div: this.divn(num.words[0]),
31663 mod: new BN(this.modn(num.words[0]))
31664 };
31665 }
31666
31667 return this._wordDiv(num, mode);
31668 };
31669
31670 // Find `this` / `num`
31671 BN.prototype.div = function div (num) {
31672 return this.divmod(num, 'div', false).div;
31673 };
31674
31675 // Find `this` % `num`
31676 BN.prototype.mod = function mod (num) {
31677 return this.divmod(num, 'mod', false).mod;
31678 };
31679
31680 BN.prototype.umod = function umod (num) {
31681 return this.divmod(num, 'mod', true).mod;
31682 };
31683
31684 // Find Round(`this` / `num`)
31685 BN.prototype.divRound = function divRound (num) {
31686 var dm = this.divmod(num);
31687
31688 // Fast case - exact division
31689 if (dm.mod.isZero()) return dm.div;
31690
31691 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
31692
31693 var half = num.ushrn(1);
31694 var r2 = num.andln(1);
31695 var cmp = mod.cmp(half);
31696
31697 // Round down
31698 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
31699
31700 // Round up
31701 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
31702 };
31703
31704 BN.prototype.modn = function modn (num) {
31705 assert(num <= 0x3ffffff);
31706 var p = (1 << 26) % num;
31707
31708 var acc = 0;
31709 for (var i = this.length - 1; i >= 0; i--) {
31710 acc = (p * acc + (this.words[i] | 0)) % num;
31711 }
31712
31713 return acc;
31714 };
31715
31716 // In-place division by number
31717 BN.prototype.idivn = function idivn (num) {
31718 assert(num <= 0x3ffffff);
31719
31720 var carry = 0;
31721 for (var i = this.length - 1; i >= 0; i--) {
31722 var w = (this.words[i] | 0) + carry * 0x4000000;
31723 this.words[i] = (w / num) | 0;
31724 carry = w % num;
31725 }
31726
31727 return this.strip();
31728 };
31729
31730 BN.prototype.divn = function divn (num) {
31731 return this.clone().idivn(num);
31732 };
31733
31734 BN.prototype.egcd = function egcd (p) {
31735 assert(p.negative === 0);
31736 assert(!p.isZero());
31737
31738 var x = this;
31739 var y = p.clone();
31740
31741 if (x.negative !== 0) {
31742 x = x.umod(p);
31743 } else {
31744 x = x.clone();
31745 }
31746
31747 // A * x + B * y = x
31748 var A = new BN(1);
31749 var B = new BN(0);
31750
31751 // C * x + D * y = y
31752 var C = new BN(0);
31753 var D = new BN(1);
31754
31755 var g = 0;
31756
31757 while (x.isEven() && y.isEven()) {
31758 x.iushrn(1);
31759 y.iushrn(1);
31760 ++g;
31761 }
31762
31763 var yp = y.clone();
31764 var xp = x.clone();
31765
31766 while (!x.isZero()) {
31767 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31768 if (i > 0) {
31769 x.iushrn(i);
31770 while (i-- > 0) {
31771 if (A.isOdd() || B.isOdd()) {
31772 A.iadd(yp);
31773 B.isub(xp);
31774 }
31775
31776 A.iushrn(1);
31777 B.iushrn(1);
31778 }
31779 }
31780
31781 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31782 if (j > 0) {
31783 y.iushrn(j);
31784 while (j-- > 0) {
31785 if (C.isOdd() || D.isOdd()) {
31786 C.iadd(yp);
31787 D.isub(xp);
31788 }
31789
31790 C.iushrn(1);
31791 D.iushrn(1);
31792 }
31793 }
31794
31795 if (x.cmp(y) >= 0) {
31796 x.isub(y);
31797 A.isub(C);
31798 B.isub(D);
31799 } else {
31800 y.isub(x);
31801 C.isub(A);
31802 D.isub(B);
31803 }
31804 }
31805
31806 return {
31807 a: C,
31808 b: D,
31809 gcd: y.iushln(g)
31810 };
31811 };
31812
31813 // This is reduced incarnation of the binary EEA
31814 // above, designated to invert members of the
31815 // _prime_ fields F(p) at a maximal speed
31816 BN.prototype._invmp = function _invmp (p) {
31817 assert(p.negative === 0);
31818 assert(!p.isZero());
31819
31820 var a = this;
31821 var b = p.clone();
31822
31823 if (a.negative !== 0) {
31824 a = a.umod(p);
31825 } else {
31826 a = a.clone();
31827 }
31828
31829 var x1 = new BN(1);
31830 var x2 = new BN(0);
31831
31832 var delta = b.clone();
31833
31834 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
31835 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31836 if (i > 0) {
31837 a.iushrn(i);
31838 while (i-- > 0) {
31839 if (x1.isOdd()) {
31840 x1.iadd(delta);
31841 }
31842
31843 x1.iushrn(1);
31844 }
31845 }
31846
31847 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31848 if (j > 0) {
31849 b.iushrn(j);
31850 while (j-- > 0) {
31851 if (x2.isOdd()) {
31852 x2.iadd(delta);
31853 }
31854
31855 x2.iushrn(1);
31856 }
31857 }
31858
31859 if (a.cmp(b) >= 0) {
31860 a.isub(b);
31861 x1.isub(x2);
31862 } else {
31863 b.isub(a);
31864 x2.isub(x1);
31865 }
31866 }
31867
31868 var res;
31869 if (a.cmpn(1) === 0) {
31870 res = x1;
31871 } else {
31872 res = x2;
31873 }
31874
31875 if (res.cmpn(0) < 0) {
31876 res.iadd(p);
31877 }
31878
31879 return res;
31880 };
31881
31882 BN.prototype.gcd = function gcd (num) {
31883 if (this.isZero()) return num.abs();
31884 if (num.isZero()) return this.abs();
31885
31886 var a = this.clone();
31887 var b = num.clone();
31888 a.negative = 0;
31889 b.negative = 0;
31890
31891 // Remove common factor of two
31892 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
31893 a.iushrn(1);
31894 b.iushrn(1);
31895 }
31896
31897 do {
31898 while (a.isEven()) {
31899 a.iushrn(1);
31900 }
31901 while (b.isEven()) {
31902 b.iushrn(1);
31903 }
31904
31905 var r = a.cmp(b);
31906 if (r < 0) {
31907 // Swap `a` and `b` to make `a` always bigger than `b`
31908 var t = a;
31909 a = b;
31910 b = t;
31911 } else if (r === 0 || b.cmpn(1) === 0) {
31912 break;
31913 }
31914
31915 a.isub(b);
31916 } while (true);
31917
31918 return b.iushln(shift);
31919 };
31920
31921 // Invert number in the field F(num)
31922 BN.prototype.invm = function invm (num) {
31923 return this.egcd(num).a.umod(num);
31924 };
31925
31926 BN.prototype.isEven = function isEven () {
31927 return (this.words[0] & 1) === 0;
31928 };
31929
31930 BN.prototype.isOdd = function isOdd () {
31931 return (this.words[0] & 1) === 1;
31932 };
31933
31934 // And first word and num
31935 BN.prototype.andln = function andln (num) {
31936 return this.words[0] & num;
31937 };
31938
31939 // Increment at the bit position in-line
31940 BN.prototype.bincn = function bincn (bit) {
31941 assert(typeof bit === 'number');
31942 var r = bit % 26;
31943 var s = (bit - r) / 26;
31944 var q = 1 << r;
31945
31946 // Fast case: bit is much higher than all existing words
31947 if (this.length <= s) {
31948 this._expand(s + 1);
31949 this.words[s] |= q;
31950 return this;
31951 }
31952
31953 // Add bit and propagate, if needed
31954 var carry = q;
31955 for (var i = s; carry !== 0 && i < this.length; i++) {
31956 var w = this.words[i] | 0;
31957 w += carry;
31958 carry = w >>> 26;
31959 w &= 0x3ffffff;
31960 this.words[i] = w;
31961 }
31962 if (carry !== 0) {
31963 this.words[i] = carry;
31964 this.length++;
31965 }
31966 return this;
31967 };
31968
31969 BN.prototype.isZero = function isZero () {
31970 return this.length === 1 && this.words[0] === 0;
31971 };
31972
31973 BN.prototype.cmpn = function cmpn (num) {
31974 var negative = num < 0;
31975
31976 if (this.negative !== 0 && !negative) return -1;
31977 if (this.negative === 0 && negative) return 1;
31978
31979 this.strip();
31980
31981 var res;
31982 if (this.length > 1) {
31983 res = 1;
31984 } else {
31985 if (negative) {
31986 num = -num;
31987 }
31988
31989 assert(num <= 0x3ffffff, 'Number is too big');
31990
31991 var w = this.words[0] | 0;
31992 res = w === num ? 0 : w < num ? -1 : 1;
31993 }
31994 if (this.negative !== 0) return -res | 0;
31995 return res;
31996 };
31997
31998 // Compare two numbers and return:
31999 // 1 - if `this` > `num`
32000 // 0 - if `this` == `num`
32001 // -1 - if `this` < `num`
32002 BN.prototype.cmp = function cmp (num) {
32003 if (this.negative !== 0 && num.negative === 0) return -1;
32004 if (this.negative === 0 && num.negative !== 0) return 1;
32005
32006 var res = this.ucmp(num);
32007 if (this.negative !== 0) return -res | 0;
32008 return res;
32009 };
32010
32011 // Unsigned comparison
32012 BN.prototype.ucmp = function ucmp (num) {
32013 // At this point both numbers have the same sign
32014 if (this.length > num.length) return 1;
32015 if (this.length < num.length) return -1;
32016
32017 var res = 0;
32018 for (var i = this.length - 1; i >= 0; i--) {
32019 var a = this.words[i] | 0;
32020 var b = num.words[i] | 0;
32021
32022 if (a === b) continue;
32023 if (a < b) {
32024 res = -1;
32025 } else if (a > b) {
32026 res = 1;
32027 }
32028 break;
32029 }
32030 return res;
32031 };
32032
32033 BN.prototype.gtn = function gtn (num) {
32034 return this.cmpn(num) === 1;
32035 };
32036
32037 BN.prototype.gt = function gt (num) {
32038 return this.cmp(num) === 1;
32039 };
32040
32041 BN.prototype.gten = function gten (num) {
32042 return this.cmpn(num) >= 0;
32043 };
32044
32045 BN.prototype.gte = function gte (num) {
32046 return this.cmp(num) >= 0;
32047 };
32048
32049 BN.prototype.ltn = function ltn (num) {
32050 return this.cmpn(num) === -1;
32051 };
32052
32053 BN.prototype.lt = function lt (num) {
32054 return this.cmp(num) === -1;
32055 };
32056
32057 BN.prototype.lten = function lten (num) {
32058 return this.cmpn(num) <= 0;
32059 };
32060
32061 BN.prototype.lte = function lte (num) {
32062 return this.cmp(num) <= 0;
32063 };
32064
32065 BN.prototype.eqn = function eqn (num) {
32066 return this.cmpn(num) === 0;
32067 };
32068
32069 BN.prototype.eq = function eq (num) {
32070 return this.cmp(num) === 0;
32071 };
32072
32073 //
32074 // A reduce context, could be using montgomery or something better, depending
32075 // on the `m` itself.
32076 //
32077 BN.red = function red (num) {
32078 return new Red(num);
32079 };
32080
32081 BN.prototype.toRed = function toRed (ctx) {
32082 assert(!this.red, 'Already a number in reduction context');
32083 assert(this.negative === 0, 'red works only with positives');
32084 return ctx.convertTo(this)._forceRed(ctx);
32085 };
32086
32087 BN.prototype.fromRed = function fromRed () {
32088 assert(this.red, 'fromRed works only with numbers in reduction context');
32089 return this.red.convertFrom(this);
32090 };
32091
32092 BN.prototype._forceRed = function _forceRed (ctx) {
32093 this.red = ctx;
32094 return this;
32095 };
32096
32097 BN.prototype.forceRed = function forceRed (ctx) {
32098 assert(!this.red, 'Already a number in reduction context');
32099 return this._forceRed(ctx);
32100 };
32101
32102 BN.prototype.redAdd = function redAdd (num) {
32103 assert(this.red, 'redAdd works only with red numbers');
32104 return this.red.add(this, num);
32105 };
32106
32107 BN.prototype.redIAdd = function redIAdd (num) {
32108 assert(this.red, 'redIAdd works only with red numbers');
32109 return this.red.iadd(this, num);
32110 };
32111
32112 BN.prototype.redSub = function redSub (num) {
32113 assert(this.red, 'redSub works only with red numbers');
32114 return this.red.sub(this, num);
32115 };
32116
32117 BN.prototype.redISub = function redISub (num) {
32118 assert(this.red, 'redISub works only with red numbers');
32119 return this.red.isub(this, num);
32120 };
32121
32122 BN.prototype.redShl = function redShl (num) {
32123 assert(this.red, 'redShl works only with red numbers');
32124 return this.red.shl(this, num);
32125 };
32126
32127 BN.prototype.redMul = function redMul (num) {
32128 assert(this.red, 'redMul works only with red numbers');
32129 this.red._verify2(this, num);
32130 return this.red.mul(this, num);
32131 };
32132
32133 BN.prototype.redIMul = function redIMul (num) {
32134 assert(this.red, 'redMul works only with red numbers');
32135 this.red._verify2(this, num);
32136 return this.red.imul(this, num);
32137 };
32138
32139 BN.prototype.redSqr = function redSqr () {
32140 assert(this.red, 'redSqr works only with red numbers');
32141 this.red._verify1(this);
32142 return this.red.sqr(this);
32143 };
32144
32145 BN.prototype.redISqr = function redISqr () {
32146 assert(this.red, 'redISqr works only with red numbers');
32147 this.red._verify1(this);
32148 return this.red.isqr(this);
32149 };
32150
32151 // Square root over p
32152 BN.prototype.redSqrt = function redSqrt () {
32153 assert(this.red, 'redSqrt works only with red numbers');
32154 this.red._verify1(this);
32155 return this.red.sqrt(this);
32156 };
32157
32158 BN.prototype.redInvm = function redInvm () {
32159 assert(this.red, 'redInvm works only with red numbers');
32160 this.red._verify1(this);
32161 return this.red.invm(this);
32162 };
32163
32164 // Return negative clone of `this` % `red modulo`
32165 BN.prototype.redNeg = function redNeg () {
32166 assert(this.red, 'redNeg works only with red numbers');
32167 this.red._verify1(this);
32168 return this.red.neg(this);
32169 };
32170
32171 BN.prototype.redPow = function redPow (num) {
32172 assert(this.red && !num.red, 'redPow(normalNum)');
32173 this.red._verify1(this);
32174 return this.red.pow(this, num);
32175 };
32176
32177 // Prime numbers with efficient reduction
32178 var primes = {
32179 k256: null,
32180 p224: null,
32181 p192: null,
32182 p25519: null
32183 };
32184
32185 // Pseudo-Mersenne prime
32186 function MPrime (name, p) {
32187 // P = 2 ^ N - K
32188 this.name = name;
32189 this.p = new BN(p, 16);
32190 this.n = this.p.bitLength();
32191 this.k = new BN(1).iushln(this.n).isub(this.p);
32192
32193 this.tmp = this._tmp();
32194 }
32195
32196 MPrime.prototype._tmp = function _tmp () {
32197 var tmp = new BN(null);
32198 tmp.words = new Array(Math.ceil(this.n / 13));
32199 return tmp;
32200 };
32201
32202 MPrime.prototype.ireduce = function ireduce (num) {
32203 // Assumes that `num` is less than `P^2`
32204 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
32205 var r = num;
32206 var rlen;
32207
32208 do {
32209 this.split(r, this.tmp);
32210 r = this.imulK(r);
32211 r = r.iadd(this.tmp);
32212 rlen = r.bitLength();
32213 } while (rlen > this.n);
32214
32215 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
32216 if (cmp === 0) {
32217 r.words[0] = 0;
32218 r.length = 1;
32219 } else if (cmp > 0) {
32220 r.isub(this.p);
32221 } else {
32222 r.strip();
32223 }
32224
32225 return r;
32226 };
32227
32228 MPrime.prototype.split = function split (input, out) {
32229 input.iushrn(this.n, 0, out);
32230 };
32231
32232 MPrime.prototype.imulK = function imulK (num) {
32233 return num.imul(this.k);
32234 };
32235
32236 function K256 () {
32237 MPrime.call(
32238 this,
32239 'k256',
32240 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
32241 }
32242 inherits(K256, MPrime);
32243
32244 K256.prototype.split = function split (input, output) {
32245 // 256 = 9 * 26 + 22
32246 var mask = 0x3fffff;
32247
32248 var outLen = Math.min(input.length, 9);
32249 for (var i = 0; i < outLen; i++) {
32250 output.words[i] = input.words[i];
32251 }
32252 output.length = outLen;
32253
32254 if (input.length <= 9) {
32255 input.words[0] = 0;
32256 input.length = 1;
32257 return;
32258 }
32259
32260 // Shift by 9 limbs
32261 var prev = input.words[9];
32262 output.words[output.length++] = prev & mask;
32263
32264 for (i = 10; i < input.length; i++) {
32265 var next = input.words[i] | 0;
32266 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
32267 prev = next;
32268 }
32269 prev >>>= 22;
32270 input.words[i - 10] = prev;
32271 if (prev === 0 && input.length > 10) {
32272 input.length -= 10;
32273 } else {
32274 input.length -= 9;
32275 }
32276 };
32277
32278 K256.prototype.imulK = function imulK (num) {
32279 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
32280 num.words[num.length] = 0;
32281 num.words[num.length + 1] = 0;
32282 num.length += 2;
32283
32284 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
32285 var lo = 0;
32286 for (var i = 0; i < num.length; i++) {
32287 var w = num.words[i] | 0;
32288 lo += w * 0x3d1;
32289 num.words[i] = lo & 0x3ffffff;
32290 lo = w * 0x40 + ((lo / 0x4000000) | 0);
32291 }
32292
32293 // Fast length reduction
32294 if (num.words[num.length - 1] === 0) {
32295 num.length--;
32296 if (num.words[num.length - 1] === 0) {
32297 num.length--;
32298 }
32299 }
32300 return num;
32301 };
32302
32303 function P224 () {
32304 MPrime.call(
32305 this,
32306 'p224',
32307 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
32308 }
32309 inherits(P224, MPrime);
32310
32311 function P192 () {
32312 MPrime.call(
32313 this,
32314 'p192',
32315 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
32316 }
32317 inherits(P192, MPrime);
32318
32319 function P25519 () {
32320 // 2 ^ 255 - 19
32321 MPrime.call(
32322 this,
32323 '25519',
32324 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
32325 }
32326 inherits(P25519, MPrime);
32327
32328 P25519.prototype.imulK = function imulK (num) {
32329 // K = 0x13
32330 var carry = 0;
32331 for (var i = 0; i < num.length; i++) {
32332 var hi = (num.words[i] | 0) * 0x13 + carry;
32333 var lo = hi & 0x3ffffff;
32334 hi >>>= 26;
32335
32336 num.words[i] = lo;
32337 carry = hi;
32338 }
32339 if (carry !== 0) {
32340 num.words[num.length++] = carry;
32341 }
32342 return num;
32343 };
32344
32345 // Exported mostly for testing purposes, use plain name instead
32346 BN._prime = function prime (name) {
32347 // Cached version of prime
32348 if (primes[name]) return primes[name];
32349
32350 var prime;
32351 if (name === 'k256') {
32352 prime = new K256();
32353 } else if (name === 'p224') {
32354 prime = new P224();
32355 } else if (name === 'p192') {
32356 prime = new P192();
32357 } else if (name === 'p25519') {
32358 prime = new P25519();
32359 } else {
32360 throw new Error('Unknown prime ' + name);
32361 }
32362 primes[name] = prime;
32363
32364 return prime;
32365 };
32366
32367 //
32368 // Base reduction engine
32369 //
32370 function Red (m) {
32371 if (typeof m === 'string') {
32372 var prime = BN._prime(m);
32373 this.m = prime.p;
32374 this.prime = prime;
32375 } else {
32376 assert(m.gtn(1), 'modulus must be greater than 1');
32377 this.m = m;
32378 this.prime = null;
32379 }
32380 }
32381
32382 Red.prototype._verify1 = function _verify1 (a) {
32383 assert(a.negative === 0, 'red works only with positives');
32384 assert(a.red, 'red works only with red numbers');
32385 };
32386
32387 Red.prototype._verify2 = function _verify2 (a, b) {
32388 assert((a.negative | b.negative) === 0, 'red works only with positives');
32389 assert(a.red && a.red === b.red,
32390 'red works only with red numbers');
32391 };
32392
32393 Red.prototype.imod = function imod (a) {
32394 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
32395 return a.umod(this.m)._forceRed(this);
32396 };
32397
32398 Red.prototype.neg = function neg (a) {
32399 if (a.isZero()) {
32400 return a.clone();
32401 }
32402
32403 return this.m.sub(a)._forceRed(this);
32404 };
32405
32406 Red.prototype.add = function add (a, b) {
32407 this._verify2(a, b);
32408
32409 var res = a.add(b);
32410 if (res.cmp(this.m) >= 0) {
32411 res.isub(this.m);
32412 }
32413 return res._forceRed(this);
32414 };
32415
32416 Red.prototype.iadd = function iadd (a, b) {
32417 this._verify2(a, b);
32418
32419 var res = a.iadd(b);
32420 if (res.cmp(this.m) >= 0) {
32421 res.isub(this.m);
32422 }
32423 return res;
32424 };
32425
32426 Red.prototype.sub = function sub (a, b) {
32427 this._verify2(a, b);
32428
32429 var res = a.sub(b);
32430 if (res.cmpn(0) < 0) {
32431 res.iadd(this.m);
32432 }
32433 return res._forceRed(this);
32434 };
32435
32436 Red.prototype.isub = function isub (a, b) {
32437 this._verify2(a, b);
32438
32439 var res = a.isub(b);
32440 if (res.cmpn(0) < 0) {
32441 res.iadd(this.m);
32442 }
32443 return res;
32444 };
32445
32446 Red.prototype.shl = function shl (a, num) {
32447 this._verify1(a);
32448 return this.imod(a.ushln(num));
32449 };
32450
32451 Red.prototype.imul = function imul (a, b) {
32452 this._verify2(a, b);
32453 return this.imod(a.imul(b));
32454 };
32455
32456 Red.prototype.mul = function mul (a, b) {
32457 this._verify2(a, b);
32458 return this.imod(a.mul(b));
32459 };
32460
32461 Red.prototype.isqr = function isqr (a) {
32462 return this.imul(a, a.clone());
32463 };
32464
32465 Red.prototype.sqr = function sqr (a) {
32466 return this.mul(a, a);
32467 };
32468
32469 Red.prototype.sqrt = function sqrt (a) {
32470 if (a.isZero()) return a.clone();
32471
32472 var mod3 = this.m.andln(3);
32473 assert(mod3 % 2 === 1);
32474
32475 // Fast case
32476 if (mod3 === 3) {
32477 var pow = this.m.add(new BN(1)).iushrn(2);
32478 return this.pow(a, pow);
32479 }
32480
32481 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
32482 //
32483 // Find Q and S, that Q * 2 ^ S = (P - 1)
32484 var q = this.m.subn(1);
32485 var s = 0;
32486 while (!q.isZero() && q.andln(1) === 0) {
32487 s++;
32488 q.iushrn(1);
32489 }
32490 assert(!q.isZero());
32491
32492 var one = new BN(1).toRed(this);
32493 var nOne = one.redNeg();
32494
32495 // Find quadratic non-residue
32496 // NOTE: Max is such because of generalized Riemann hypothesis.
32497 var lpow = this.m.subn(1).iushrn(1);
32498 var z = this.m.bitLength();
32499 z = new BN(2 * z * z).toRed(this);
32500
32501 while (this.pow(z, lpow).cmp(nOne) !== 0) {
32502 z.redIAdd(nOne);
32503 }
32504
32505 var c = this.pow(z, q);
32506 var r = this.pow(a, q.addn(1).iushrn(1));
32507 var t = this.pow(a, q);
32508 var m = s;
32509 while (t.cmp(one) !== 0) {
32510 var tmp = t;
32511 for (var i = 0; tmp.cmp(one) !== 0; i++) {
32512 tmp = tmp.redSqr();
32513 }
32514 assert(i < m);
32515 var b = this.pow(c, new BN(1).iushln(m - i - 1));
32516
32517 r = r.redMul(b);
32518 c = b.redSqr();
32519 t = t.redMul(c);
32520 m = i;
32521 }
32522
32523 return r;
32524 };
32525
32526 Red.prototype.invm = function invm (a) {
32527 var inv = a._invmp(this.m);
32528 if (inv.negative !== 0) {
32529 inv.negative = 0;
32530 return this.imod(inv).redNeg();
32531 } else {
32532 return this.imod(inv);
32533 }
32534 };
32535
32536 Red.prototype.pow = function pow (a, num) {
32537 if (num.isZero()) return new BN(1);
32538 if (num.cmpn(1) === 0) return a.clone();
32539
32540 var windowSize = 4;
32541 var wnd = new Array(1 << windowSize);
32542 wnd[0] = new BN(1).toRed(this);
32543 wnd[1] = a;
32544 for (var i = 2; i < wnd.length; i++) {
32545 wnd[i] = this.mul(wnd[i - 1], a);
32546 }
32547
32548 var res = wnd[0];
32549 var current = 0;
32550 var currentLen = 0;
32551 var start = num.bitLength() % 26;
32552 if (start === 0) {
32553 start = 26;
32554 }
32555
32556 for (i = num.length - 1; i >= 0; i--) {
32557 var word = num.words[i];
32558 for (var j = start - 1; j >= 0; j--) {
32559 var bit = (word >> j) & 1;
32560 if (res !== wnd[0]) {
32561 res = this.sqr(res);
32562 }
32563
32564 if (bit === 0 && current === 0) {
32565 currentLen = 0;
32566 continue;
32567 }
32568
32569 current <<= 1;
32570 current |= bit;
32571 currentLen++;
32572 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
32573
32574 res = this.mul(res, wnd[current]);
32575 currentLen = 0;
32576 current = 0;
32577 }
32578 start = 26;
32579 }
32580
32581 return res;
32582 };
32583
32584 Red.prototype.convertTo = function convertTo (num) {
32585 var r = num.umod(this.m);
32586
32587 return r === num ? r.clone() : r;
32588 };
32589
32590 Red.prototype.convertFrom = function convertFrom (num) {
32591 var res = num.clone();
32592 res.red = null;
32593 return res;
32594 };
32595
32596 //
32597 // Montgomery method engine
32598 //
32599
32600 BN.mont = function mont (num) {
32601 return new Mont(num);
32602 };
32603
32604 function Mont (m) {
32605 Red.call(this, m);
32606
32607 this.shift = this.m.bitLength();
32608 if (this.shift % 26 !== 0) {
32609 this.shift += 26 - (this.shift % 26);
32610 }
32611
32612 this.r = new BN(1).iushln(this.shift);
32613 this.r2 = this.imod(this.r.sqr());
32614 this.rinv = this.r._invmp(this.m);
32615
32616 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
32617 this.minv = this.minv.umod(this.r);
32618 this.minv = this.r.sub(this.minv);
32619 }
32620 inherits(Mont, Red);
32621
32622 Mont.prototype.convertTo = function convertTo (num) {
32623 return this.imod(num.ushln(this.shift));
32624 };
32625
32626 Mont.prototype.convertFrom = function convertFrom (num) {
32627 var r = this.imod(num.mul(this.rinv));
32628 r.red = null;
32629 return r;
32630 };
32631
32632 Mont.prototype.imul = function imul (a, b) {
32633 if (a.isZero() || b.isZero()) {
32634 a.words[0] = 0;
32635 a.length = 1;
32636 return a;
32637 }
32638
32639 var t = a.imul(b);
32640 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32641 var u = t.isub(c).iushrn(this.shift);
32642 var res = u;
32643
32644 if (u.cmp(this.m) >= 0) {
32645 res = u.isub(this.m);
32646 } else if (u.cmpn(0) < 0) {
32647 res = u.iadd(this.m);
32648 }
32649
32650 return res._forceRed(this);
32651 };
32652
32653 Mont.prototype.mul = function mul (a, b) {
32654 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
32655
32656 var t = a.mul(b);
32657 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32658 var u = t.isub(c).iushrn(this.shift);
32659 var res = u;
32660 if (u.cmp(this.m) >= 0) {
32661 res = u.isub(this.m);
32662 } else if (u.cmpn(0) < 0) {
32663 res = u.iadd(this.m);
32664 }
32665
32666 return res._forceRed(this);
32667 };
32668
32669 Mont.prototype.invm = function invm (a) {
32670 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
32671 var res = this.imod(a._invmp(this.m).mul(this.r2));
32672 return res._forceRed(this);
32673 };
32674 })(typeof module === 'undefined' || module, this);
32675
32676 },{}],34:[function(require,module,exports){
32677 var r;
32678
32679 module.exports = function rand(len) {
32680 if (!r)
32681 r = new Rand(null);
32682
32683 return r.generate(len);
32684 };
32685
32686 function Rand(rand) {
32687 this.rand = rand;
32688 }
32689 module.exports.Rand = Rand;
32690
32691 Rand.prototype.generate = function generate(len) {
32692 return this._rand(len);
32693 };
32694
32695 if (typeof self === 'object') {
32696 if (self.crypto && self.crypto.getRandomValues) {
32697 // Modern browsers
32698 Rand.prototype._rand = function _rand(n) {
32699 var arr = new Uint8Array(n);
32700 self.crypto.getRandomValues(arr);
32701 return arr;
32702 };
32703 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
32704 // IE
32705 Rand.prototype._rand = function _rand(n) {
32706 var arr = new Uint8Array(n);
32707 self.msCrypto.getRandomValues(arr);
32708 return arr;
32709 };
32710 } else {
32711 // Old junk
32712 Rand.prototype._rand = function() {
32713 throw new Error('Not implemented yet');
32714 };
32715 }
32716 } else {
32717 // Node.js or Web worker with no crypto support
32718 try {
32719 var crypto = require('crypto');
32720
32721 Rand.prototype._rand = function _rand(n) {
32722 return crypto.randomBytes(n);
32723 };
32724 } catch (e) {
32725 // Emulate crypto API using randy
32726 Rand.prototype._rand = function _rand(n) {
32727 var res = new Uint8Array(n);
32728 for (var i = 0; i < res.length; i++)
32729 res[i] = this.rand.getByte();
32730 return res;
32731 };
32732 }
32733 }
32734
32735 },{"crypto":3}],35:[function(require,module,exports){
32736 (function (Buffer){
32737 var Transform = require('stream').Transform
32738 var inherits = require('inherits')
32739 var StringDecoder = require('string_decoder').StringDecoder
32740 module.exports = CipherBase
32741 inherits(CipherBase, Transform)
32742 function CipherBase (hashMode) {
32743 Transform.call(this)
32744 this.hashMode = typeof hashMode === 'string'
32745 if (this.hashMode) {
32746 this[hashMode] = this._finalOrDigest
32747 } else {
32748 this.final = this._finalOrDigest
32749 }
32750 this._decoder = null
32751 this._encoding = null
32752 }
32753 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
32754 if (typeof data === 'string') {
32755 data = new Buffer(data, inputEnc)
32756 }
32757 var outData = this._update(data)
32758 if (this.hashMode) {
32759 return this
32760 }
32761 if (outputEnc) {
32762 outData = this._toString(outData, outputEnc)
32763 }
32764 return outData
32765 }
32766
32767 CipherBase.prototype.setAutoPadding = function () {}
32768
32769 CipherBase.prototype.getAuthTag = function () {
32770 throw new Error('trying to get auth tag in unsupported state')
32771 }
32772
32773 CipherBase.prototype.setAuthTag = function () {
32774 throw new Error('trying to set auth tag in unsupported state')
32775 }
32776
32777 CipherBase.prototype.setAAD = function () {
32778 throw new Error('trying to set aad in unsupported state')
32779 }
32780
32781 CipherBase.prototype._transform = function (data, _, next) {
32782 var err
32783 try {
32784 if (this.hashMode) {
32785 this._update(data)
32786 } else {
32787 this.push(this._update(data))
32788 }
32789 } catch (e) {
32790 err = e
32791 } finally {
32792 next(err)
32793 }
32794 }
32795 CipherBase.prototype._flush = function (done) {
32796 var err
32797 try {
32798 this.push(this._final())
32799 } catch (e) {
32800 err = e
32801 } finally {
32802 done(err)
32803 }
32804 }
32805 CipherBase.prototype._finalOrDigest = function (outputEnc) {
32806 var outData = this._final() || new Buffer('')
32807 if (outputEnc) {
32808 outData = this._toString(outData, outputEnc, true)
32809 }
32810 return outData
32811 }
32812
32813 CipherBase.prototype._toString = function (value, enc, fin) {
32814 if (!this._decoder) {
32815 this._decoder = new StringDecoder(enc)
32816 this._encoding = enc
32817 }
32818 if (this._encoding !== enc) {
32819 throw new Error('can\'t switch encodings')
32820 }
32821 var out = this._decoder.write(value)
32822 if (fin) {
32823 out += this._decoder.end()
32824 }
32825 return out
32826 }
32827
32828 }).call(this,require("buffer").Buffer)
32829 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
32830 (function (Buffer){
32831 'use strict';
32832 var inherits = require('inherits')
32833 var md5 = require('./md5')
32834 var rmd160 = require('ripemd160')
32835 var sha = require('sha.js')
32836
32837 var Base = require('cipher-base')
32838
32839 function HashNoConstructor(hash) {
32840 Base.call(this, 'digest')
32841
32842 this._hash = hash
32843 this.buffers = []
32844 }
32845
32846 inherits(HashNoConstructor, Base)
32847
32848 HashNoConstructor.prototype._update = function (data) {
32849 this.buffers.push(data)
32850 }
32851
32852 HashNoConstructor.prototype._final = function () {
32853 var buf = Buffer.concat(this.buffers)
32854 var r = this._hash(buf)
32855 this.buffers = null
32856
32857 return r
32858 }
32859
32860 function Hash(hash) {
32861 Base.call(this, 'digest')
32862
32863 this._hash = hash
32864 }
32865
32866 inherits(Hash, Base)
32867
32868 Hash.prototype._update = function (data) {
32869 this._hash.update(data)
32870 }
32871
32872 Hash.prototype._final = function () {
32873 return this._hash.digest()
32874 }
32875
32876 module.exports = function createHash (alg) {
32877 alg = alg.toLowerCase()
32878 if ('md5' === alg) return new HashNoConstructor(md5)
32879 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
32880
32881 return new Hash(sha(alg))
32882 }
32883
32884 }).call(this,require("buffer").Buffer)
32885 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
32886 (function (Buffer){
32887 'use strict';
32888 var intSize = 4;
32889 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
32890 var chrsz = 8;
32891
32892 function toArray(buf, bigEndian) {
32893 if ((buf.length % intSize) !== 0) {
32894 var len = buf.length + (intSize - (buf.length % intSize));
32895 buf = Buffer.concat([buf, zeroBuffer], len);
32896 }
32897
32898 var arr = [];
32899 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
32900 for (var i = 0; i < buf.length; i += intSize) {
32901 arr.push(fn.call(buf, i));
32902 }
32903 return arr;
32904 }
32905
32906 function toBuffer(arr, size, bigEndian) {
32907 var buf = new Buffer(size);
32908 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
32909 for (var i = 0; i < arr.length; i++) {
32910 fn.call(buf, arr[i], i * 4, true);
32911 }
32912 return buf;
32913 }
32914
32915 function hash(buf, fn, hashSize, bigEndian) {
32916 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
32917 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
32918 return toBuffer(arr, hashSize, bigEndian);
32919 }
32920 exports.hash = hash;
32921 }).call(this,require("buffer").Buffer)
32922 },{"buffer":5}],38:[function(require,module,exports){
32923 'use strict';
32924 /*
32925 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
32926 * Digest Algorithm, as defined in RFC 1321.
32927 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
32928 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
32929 * Distributed under the BSD License
32930 * See http://pajhome.org.uk/crypt/md5 for more info.
32931 */
32932
32933 var helpers = require('./helpers');
32934
32935 /*
32936 * Calculate the MD5 of an array of little-endian words, and a bit length
32937 */
32938 function core_md5(x, len)
32939 {
32940 /* append padding */
32941 x[len >> 5] |= 0x80 << ((len) % 32);
32942 x[(((len + 64) >>> 9) << 4) + 14] = len;
32943
32944 var a = 1732584193;
32945 var b = -271733879;
32946 var c = -1732584194;
32947 var d = 271733878;
32948
32949 for(var i = 0; i < x.length; i += 16)
32950 {
32951 var olda = a;
32952 var oldb = b;
32953 var oldc = c;
32954 var oldd = d;
32955
32956 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
32957 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
32958 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
32959 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
32960 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
32961 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
32962 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
32963 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
32964 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
32965 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
32966 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
32967 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
32968 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
32969 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
32970 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
32971 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
32972
32973 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
32974 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
32975 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
32976 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
32977 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
32978 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
32979 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
32980 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
32981 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
32982 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
32983 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
32984 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
32985 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
32986 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
32987 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
32988 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
32989
32990 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
32991 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
32992 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
32993 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
32994 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
32995 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
32996 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
32997 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
32998 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
32999 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
33000 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
33001 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
33002 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
33003 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
33004 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
33005 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
33006
33007 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
33008 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
33009 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
33010 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
33011 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
33012 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
33013 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
33014 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
33015 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
33016 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
33017 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
33018 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
33019 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
33020 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
33021 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
33022 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
33023
33024 a = safe_add(a, olda);
33025 b = safe_add(b, oldb);
33026 c = safe_add(c, oldc);
33027 d = safe_add(d, oldd);
33028 }
33029 return Array(a, b, c, d);
33030
33031 }
33032
33033 /*
33034 * These functions implement the four basic operations the algorithm uses.
33035 */
33036 function md5_cmn(q, a, b, x, s, t)
33037 {
33038 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
33039 }
33040 function md5_ff(a, b, c, d, x, s, t)
33041 {
33042 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
33043 }
33044 function md5_gg(a, b, c, d, x, s, t)
33045 {
33046 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
33047 }
33048 function md5_hh(a, b, c, d, x, s, t)
33049 {
33050 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
33051 }
33052 function md5_ii(a, b, c, d, x, s, t)
33053 {
33054 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
33055 }
33056
33057 /*
33058 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
33059 * to work around bugs in some JS interpreters.
33060 */
33061 function safe_add(x, y)
33062 {
33063 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
33064 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
33065 return (msw << 16) | (lsw & 0xFFFF);
33066 }
33067
33068 /*
33069 * Bitwise rotate a 32-bit number to the left.
33070 */
33071 function bit_rol(num, cnt)
33072 {
33073 return (num << cnt) | (num >>> (32 - cnt));
33074 }
33075
33076 module.exports = function md5(buf) {
33077 return helpers.hash(buf, core_md5, 16);
33078 };
33079 },{"./helpers":37}],39:[function(require,module,exports){
33080 'use strict';
33081
33082 var elliptic = exports;
33083
33084 elliptic.version = require('../package.json').version;
33085 elliptic.utils = require('./elliptic/utils');
33086 elliptic.rand = require('brorand');
33087 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
33088 elliptic.curve = require('./elliptic/curve');
33089 elliptic.curves = require('./elliptic/curves');
33090
33091 // Protocols
33092 elliptic.ec = require('./elliptic/ec');
33093 elliptic.eddsa = require('./elliptic/eddsa');
33094
33095 },{"../package.json":55,"./elliptic/curve":42,"./elliptic/curves":45,"./elliptic/ec":46,"./elliptic/eddsa":49,"./elliptic/hmac-drbg":52,"./elliptic/utils":54,"brorand":34}],40:[function(require,module,exports){
33096 'use strict';
33097
33098 var BN = require('bn.js');
33099 var elliptic = require('../../elliptic');
33100 var utils = elliptic.utils;
33101 var getNAF = utils.getNAF;
33102 var getJSF = utils.getJSF;
33103 var assert = utils.assert;
33104
33105 function BaseCurve(type, conf) {
33106 this.type = type;
33107 this.p = new BN(conf.p, 16);
33108
33109 // Use Montgomery, when there is no fast reduction for the prime
33110 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
33111
33112 // Useful for many curves
33113 this.zero = new BN(0).toRed(this.red);
33114 this.one = new BN(1).toRed(this.red);
33115 this.two = new BN(2).toRed(this.red);
33116
33117 // Curve configuration, optional
33118 this.n = conf.n && new BN(conf.n, 16);
33119 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
33120
33121 // Temporary arrays
33122 this._wnafT1 = new Array(4);
33123 this._wnafT2 = new Array(4);
33124 this._wnafT3 = new Array(4);
33125 this._wnafT4 = new Array(4);
33126
33127 // Generalized Greg Maxwell's trick
33128 var adjustCount = this.n && this.p.div(this.n);
33129 if (!adjustCount || adjustCount.cmpn(100) > 0) {
33130 this.redN = null;
33131 } else {
33132 this._maxwellTrick = true;
33133 this.redN = this.n.toRed(this.red);
33134 }
33135 }
33136 module.exports = BaseCurve;
33137
33138 BaseCurve.prototype.point = function point() {
33139 throw new Error('Not implemented');
33140 };
33141
33142 BaseCurve.prototype.validate = function validate() {
33143 throw new Error('Not implemented');
33144 };
33145
33146 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
33147 assert(p.precomputed);
33148 var doubles = p._getDoubles();
33149
33150 var naf = getNAF(k, 1);
33151 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
33152 I /= 3;
33153
33154 // Translate into more windowed form
33155 var repr = [];
33156 for (var j = 0; j < naf.length; j += doubles.step) {
33157 var nafW = 0;
33158 for (var k = j + doubles.step - 1; k >= j; k--)
33159 nafW = (nafW << 1) + naf[k];
33160 repr.push(nafW);
33161 }
33162
33163 var a = this.jpoint(null, null, null);
33164 var b = this.jpoint(null, null, null);
33165 for (var i = I; i > 0; i--) {
33166 for (var j = 0; j < repr.length; j++) {
33167 var nafW = repr[j];
33168 if (nafW === i)
33169 b = b.mixedAdd(doubles.points[j]);
33170 else if (nafW === -i)
33171 b = b.mixedAdd(doubles.points[j].neg());
33172 }
33173 a = a.add(b);
33174 }
33175 return a.toP();
33176 };
33177
33178 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
33179 var w = 4;
33180
33181 // Precompute window
33182 var nafPoints = p._getNAFPoints(w);
33183 w = nafPoints.wnd;
33184 var wnd = nafPoints.points;
33185
33186 // Get NAF form
33187 var naf = getNAF(k, w);
33188
33189 // Add `this`*(N+1) for every w-NAF index
33190 var acc = this.jpoint(null, null, null);
33191 for (var i = naf.length - 1; i >= 0; i--) {
33192 // Count zeroes
33193 for (var k = 0; i >= 0 && naf[i] === 0; i--)
33194 k++;
33195 if (i >= 0)
33196 k++;
33197 acc = acc.dblp(k);
33198
33199 if (i < 0)
33200 break;
33201 var z = naf[i];
33202 assert(z !== 0);
33203 if (p.type === 'affine') {
33204 // J +- P
33205 if (z > 0)
33206 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
33207 else
33208 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
33209 } else {
33210 // J +- J
33211 if (z > 0)
33212 acc = acc.add(wnd[(z - 1) >> 1]);
33213 else
33214 acc = acc.add(wnd[(-z - 1) >> 1].neg());
33215 }
33216 }
33217 return p.type === 'affine' ? acc.toP() : acc;
33218 };
33219
33220 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
33221 points,
33222 coeffs,
33223 len,
33224 jacobianResult) {
33225 var wndWidth = this._wnafT1;
33226 var wnd = this._wnafT2;
33227 var naf = this._wnafT3;
33228
33229 // Fill all arrays
33230 var max = 0;
33231 for (var i = 0; i < len; i++) {
33232 var p = points[i];
33233 var nafPoints = p._getNAFPoints(defW);
33234 wndWidth[i] = nafPoints.wnd;
33235 wnd[i] = nafPoints.points;
33236 }
33237
33238 // Comb small window NAFs
33239 for (var i = len - 1; i >= 1; i -= 2) {
33240 var a = i - 1;
33241 var b = i;
33242 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
33243 naf[a] = getNAF(coeffs[a], wndWidth[a]);
33244 naf[b] = getNAF(coeffs[b], wndWidth[b]);
33245 max = Math.max(naf[a].length, max);
33246 max = Math.max(naf[b].length, max);
33247 continue;
33248 }
33249
33250 var comb = [
33251 points[a], /* 1 */
33252 null, /* 3 */
33253 null, /* 5 */
33254 points[b] /* 7 */
33255 ];
33256
33257 // Try to avoid Projective points, if possible
33258 if (points[a].y.cmp(points[b].y) === 0) {
33259 comb[1] = points[a].add(points[b]);
33260 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33261 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
33262 comb[1] = points[a].toJ().mixedAdd(points[b]);
33263 comb[2] = points[a].add(points[b].neg());
33264 } else {
33265 comb[1] = points[a].toJ().mixedAdd(points[b]);
33266 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33267 }
33268
33269 var index = [
33270 -3, /* -1 -1 */
33271 -1, /* -1 0 */
33272 -5, /* -1 1 */
33273 -7, /* 0 -1 */
33274 0, /* 0 0 */
33275 7, /* 0 1 */
33276 5, /* 1 -1 */
33277 1, /* 1 0 */
33278 3 /* 1 1 */
33279 ];
33280
33281 var jsf = getJSF(coeffs[a], coeffs[b]);
33282 max = Math.max(jsf[0].length, max);
33283 naf[a] = new Array(max);
33284 naf[b] = new Array(max);
33285 for (var j = 0; j < max; j++) {
33286 var ja = jsf[0][j] | 0;
33287 var jb = jsf[1][j] | 0;
33288
33289 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
33290 naf[b][j] = 0;
33291 wnd[a] = comb;
33292 }
33293 }
33294
33295 var acc = this.jpoint(null, null, null);
33296 var tmp = this._wnafT4;
33297 for (var i = max; i >= 0; i--) {
33298 var k = 0;
33299
33300 while (i >= 0) {
33301 var zero = true;
33302 for (var j = 0; j < len; j++) {
33303 tmp[j] = naf[j][i] | 0;
33304 if (tmp[j] !== 0)
33305 zero = false;
33306 }
33307 if (!zero)
33308 break;
33309 k++;
33310 i--;
33311 }
33312 if (i >= 0)
33313 k++;
33314 acc = acc.dblp(k);
33315 if (i < 0)
33316 break;
33317
33318 for (var j = 0; j < len; j++) {
33319 var z = tmp[j];
33320 var p;
33321 if (z === 0)
33322 continue;
33323 else if (z > 0)
33324 p = wnd[j][(z - 1) >> 1];
33325 else if (z < 0)
33326 p = wnd[j][(-z - 1) >> 1].neg();
33327
33328 if (p.type === 'affine')
33329 acc = acc.mixedAdd(p);
33330 else
33331 acc = acc.add(p);
33332 }
33333 }
33334 // Zeroify references
33335 for (var i = 0; i < len; i++)
33336 wnd[i] = null;
33337
33338 if (jacobianResult)
33339 return acc;
33340 else
33341 return acc.toP();
33342 };
33343
33344 function BasePoint(curve, type) {
33345 this.curve = curve;
33346 this.type = type;
33347 this.precomputed = null;
33348 }
33349 BaseCurve.BasePoint = BasePoint;
33350
33351 BasePoint.prototype.eq = function eq(/*other*/) {
33352 throw new Error('Not implemented');
33353 };
33354
33355 BasePoint.prototype.validate = function validate() {
33356 return this.curve.validate(this);
33357 };
33358
33359 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33360 bytes = utils.toArray(bytes, enc);
33361
33362 var len = this.p.byteLength();
33363
33364 // uncompressed, hybrid-odd, hybrid-even
33365 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
33366 bytes.length - 1 === 2 * len) {
33367 if (bytes[0] === 0x06)
33368 assert(bytes[bytes.length - 1] % 2 === 0);
33369 else if (bytes[0] === 0x07)
33370 assert(bytes[bytes.length - 1] % 2 === 1);
33371
33372 var res = this.point(bytes.slice(1, 1 + len),
33373 bytes.slice(1 + len, 1 + 2 * len));
33374
33375 return res;
33376 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
33377 bytes.length - 1 === len) {
33378 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
33379 }
33380 throw new Error('Unknown point format');
33381 };
33382
33383 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
33384 return this.encode(enc, true);
33385 };
33386
33387 BasePoint.prototype._encode = function _encode(compact) {
33388 var len = this.curve.p.byteLength();
33389 var x = this.getX().toArray('be', len);
33390
33391 if (compact)
33392 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
33393
33394 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
33395 };
33396
33397 BasePoint.prototype.encode = function encode(enc, compact) {
33398 return utils.encode(this._encode(compact), enc);
33399 };
33400
33401 BasePoint.prototype.precompute = function precompute(power) {
33402 if (this.precomputed)
33403 return this;
33404
33405 var precomputed = {
33406 doubles: null,
33407 naf: null,
33408 beta: null
33409 };
33410 precomputed.naf = this._getNAFPoints(8);
33411 precomputed.doubles = this._getDoubles(4, power);
33412 precomputed.beta = this._getBeta();
33413 this.precomputed = precomputed;
33414
33415 return this;
33416 };
33417
33418 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
33419 if (!this.precomputed)
33420 return false;
33421
33422 var doubles = this.precomputed.doubles;
33423 if (!doubles)
33424 return false;
33425
33426 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
33427 };
33428
33429 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
33430 if (this.precomputed && this.precomputed.doubles)
33431 return this.precomputed.doubles;
33432
33433 var doubles = [ this ];
33434 var acc = this;
33435 for (var i = 0; i < power; i += step) {
33436 for (var j = 0; j < step; j++)
33437 acc = acc.dbl();
33438 doubles.push(acc);
33439 }
33440 return {
33441 step: step,
33442 points: doubles
33443 };
33444 };
33445
33446 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
33447 if (this.precomputed && this.precomputed.naf)
33448 return this.precomputed.naf;
33449
33450 var res = [ this ];
33451 var max = (1 << wnd) - 1;
33452 var dbl = max === 1 ? null : this.dbl();
33453 for (var i = 1; i < max; i++)
33454 res[i] = res[i - 1].add(dbl);
33455 return {
33456 wnd: wnd,
33457 points: res
33458 };
33459 };
33460
33461 BasePoint.prototype._getBeta = function _getBeta() {
33462 return null;
33463 };
33464
33465 BasePoint.prototype.dblp = function dblp(k) {
33466 var r = this;
33467 for (var i = 0; i < k; i++)
33468 r = r.dbl();
33469 return r;
33470 };
33471
33472 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
33473 'use strict';
33474
33475 var curve = require('../curve');
33476 var elliptic = require('../../elliptic');
33477 var BN = require('bn.js');
33478 var inherits = require('inherits');
33479 var Base = curve.base;
33480
33481 var assert = elliptic.utils.assert;
33482
33483 function EdwardsCurve(conf) {
33484 // NOTE: Important as we are creating point in Base.call()
33485 this.twisted = (conf.a | 0) !== 1;
33486 this.mOneA = this.twisted && (conf.a | 0) === -1;
33487 this.extended = this.mOneA;
33488
33489 Base.call(this, 'edwards', conf);
33490
33491 this.a = new BN(conf.a, 16).umod(this.red.m);
33492 this.a = this.a.toRed(this.red);
33493 this.c = new BN(conf.c, 16).toRed(this.red);
33494 this.c2 = this.c.redSqr();
33495 this.d = new BN(conf.d, 16).toRed(this.red);
33496 this.dd = this.d.redAdd(this.d);
33497
33498 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
33499 this.oneC = (conf.c | 0) === 1;
33500 }
33501 inherits(EdwardsCurve, Base);
33502 module.exports = EdwardsCurve;
33503
33504 EdwardsCurve.prototype._mulA = function _mulA(num) {
33505 if (this.mOneA)
33506 return num.redNeg();
33507 else
33508 return this.a.redMul(num);
33509 };
33510
33511 EdwardsCurve.prototype._mulC = function _mulC(num) {
33512 if (this.oneC)
33513 return num;
33514 else
33515 return this.c.redMul(num);
33516 };
33517
33518 // Just for compatibility with Short curve
33519 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
33520 return this.point(x, y, z, t);
33521 };
33522
33523 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
33524 x = new BN(x, 16);
33525 if (!x.red)
33526 x = x.toRed(this.red);
33527
33528 var x2 = x.redSqr();
33529 var rhs = this.c2.redSub(this.a.redMul(x2));
33530 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
33531
33532 var y2 = rhs.redMul(lhs.redInvm());
33533 var y = y2.redSqrt();
33534 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
33535 throw new Error('invalid point');
33536
33537 var isOdd = y.fromRed().isOdd();
33538 if (odd && !isOdd || !odd && isOdd)
33539 y = y.redNeg();
33540
33541 return this.point(x, y);
33542 };
33543
33544 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
33545 y = new BN(y, 16);
33546 if (!y.red)
33547 y = y.toRed(this.red);
33548
33549 // x^2 = (y^2 - 1) / (d y^2 + 1)
33550 var y2 = y.redSqr();
33551 var lhs = y2.redSub(this.one);
33552 var rhs = y2.redMul(this.d).redAdd(this.one);
33553 var x2 = lhs.redMul(rhs.redInvm());
33554
33555 if (x2.cmp(this.zero) === 0) {
33556 if (odd)
33557 throw new Error('invalid point');
33558 else
33559 return this.point(this.zero, y);
33560 }
33561
33562 var x = x2.redSqrt();
33563 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
33564 throw new Error('invalid point');
33565
33566 if (x.isOdd() !== odd)
33567 x = x.redNeg();
33568
33569 return this.point(x, y);
33570 };
33571
33572 EdwardsCurve.prototype.validate = function validate(point) {
33573 if (point.isInfinity())
33574 return true;
33575
33576 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
33577 point.normalize();
33578
33579 var x2 = point.x.redSqr();
33580 var y2 = point.y.redSqr();
33581 var lhs = x2.redMul(this.a).redAdd(y2);
33582 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
33583
33584 return lhs.cmp(rhs) === 0;
33585 };
33586
33587 function Point(curve, x, y, z, t) {
33588 Base.BasePoint.call(this, curve, 'projective');
33589 if (x === null && y === null && z === null) {
33590 this.x = this.curve.zero;
33591 this.y = this.curve.one;
33592 this.z = this.curve.one;
33593 this.t = this.curve.zero;
33594 this.zOne = true;
33595 } else {
33596 this.x = new BN(x, 16);
33597 this.y = new BN(y, 16);
33598 this.z = z ? new BN(z, 16) : this.curve.one;
33599 this.t = t && new BN(t, 16);
33600 if (!this.x.red)
33601 this.x = this.x.toRed(this.curve.red);
33602 if (!this.y.red)
33603 this.y = this.y.toRed(this.curve.red);
33604 if (!this.z.red)
33605 this.z = this.z.toRed(this.curve.red);
33606 if (this.t && !this.t.red)
33607 this.t = this.t.toRed(this.curve.red);
33608 this.zOne = this.z === this.curve.one;
33609
33610 // Use extended coordinates
33611 if (this.curve.extended && !this.t) {
33612 this.t = this.x.redMul(this.y);
33613 if (!this.zOne)
33614 this.t = this.t.redMul(this.z.redInvm());
33615 }
33616 }
33617 }
33618 inherits(Point, Base.BasePoint);
33619
33620 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33621 return Point.fromJSON(this, obj);
33622 };
33623
33624 EdwardsCurve.prototype.point = function point(x, y, z, t) {
33625 return new Point(this, x, y, z, t);
33626 };
33627
33628 Point.fromJSON = function fromJSON(curve, obj) {
33629 return new Point(curve, obj[0], obj[1], obj[2]);
33630 };
33631
33632 Point.prototype.inspect = function inspect() {
33633 if (this.isInfinity())
33634 return '<EC Point Infinity>';
33635 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33636 ' y: ' + this.y.fromRed().toString(16, 2) +
33637 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33638 };
33639
33640 Point.prototype.isInfinity = function isInfinity() {
33641 // XXX This code assumes that zero is always zero in red
33642 return this.x.cmpn(0) === 0 &&
33643 this.y.cmp(this.z) === 0;
33644 };
33645
33646 Point.prototype._extDbl = function _extDbl() {
33647 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33648 // #doubling-dbl-2008-hwcd
33649 // 4M + 4S
33650
33651 // A = X1^2
33652 var a = this.x.redSqr();
33653 // B = Y1^2
33654 var b = this.y.redSqr();
33655 // C = 2 * Z1^2
33656 var c = this.z.redSqr();
33657 c = c.redIAdd(c);
33658 // D = a * A
33659 var d = this.curve._mulA(a);
33660 // E = (X1 + Y1)^2 - A - B
33661 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
33662 // G = D + B
33663 var g = d.redAdd(b);
33664 // F = G - C
33665 var f = g.redSub(c);
33666 // H = D - B
33667 var h = d.redSub(b);
33668 // X3 = E * F
33669 var nx = e.redMul(f);
33670 // Y3 = G * H
33671 var ny = g.redMul(h);
33672 // T3 = E * H
33673 var nt = e.redMul(h);
33674 // Z3 = F * G
33675 var nz = f.redMul(g);
33676 return this.curve.point(nx, ny, nz, nt);
33677 };
33678
33679 Point.prototype._projDbl = function _projDbl() {
33680 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33681 // #doubling-dbl-2008-bbjlp
33682 // #doubling-dbl-2007-bl
33683 // and others
33684 // Generally 3M + 4S or 2M + 4S
33685
33686 // B = (X1 + Y1)^2
33687 var b = this.x.redAdd(this.y).redSqr();
33688 // C = X1^2
33689 var c = this.x.redSqr();
33690 // D = Y1^2
33691 var d = this.y.redSqr();
33692
33693 var nx;
33694 var ny;
33695 var nz;
33696 if (this.curve.twisted) {
33697 // E = a * C
33698 var e = this.curve._mulA(c);
33699 // F = E + D
33700 var f = e.redAdd(d);
33701 if (this.zOne) {
33702 // X3 = (B - C - D) * (F - 2)
33703 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
33704 // Y3 = F * (E - D)
33705 ny = f.redMul(e.redSub(d));
33706 // Z3 = F^2 - 2 * F
33707 nz = f.redSqr().redSub(f).redSub(f);
33708 } else {
33709 // H = Z1^2
33710 var h = this.z.redSqr();
33711 // J = F - 2 * H
33712 var j = f.redSub(h).redISub(h);
33713 // X3 = (B-C-D)*J
33714 nx = b.redSub(c).redISub(d).redMul(j);
33715 // Y3 = F * (E - D)
33716 ny = f.redMul(e.redSub(d));
33717 // Z3 = F * J
33718 nz = f.redMul(j);
33719 }
33720 } else {
33721 // E = C + D
33722 var e = c.redAdd(d);
33723 // H = (c * Z1)^2
33724 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
33725 // J = E - 2 * H
33726 var j = e.redSub(h).redSub(h);
33727 // X3 = c * (B - E) * J
33728 nx = this.curve._mulC(b.redISub(e)).redMul(j);
33729 // Y3 = c * E * (C - D)
33730 ny = this.curve._mulC(e).redMul(c.redISub(d));
33731 // Z3 = E * J
33732 nz = e.redMul(j);
33733 }
33734 return this.curve.point(nx, ny, nz);
33735 };
33736
33737 Point.prototype.dbl = function dbl() {
33738 if (this.isInfinity())
33739 return this;
33740
33741 // Double in extended coordinates
33742 if (this.curve.extended)
33743 return this._extDbl();
33744 else
33745 return this._projDbl();
33746 };
33747
33748 Point.prototype._extAdd = function _extAdd(p) {
33749 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33750 // #addition-add-2008-hwcd-3
33751 // 8M
33752
33753 // A = (Y1 - X1) * (Y2 - X2)
33754 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
33755 // B = (Y1 + X1) * (Y2 + X2)
33756 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
33757 // C = T1 * k * T2
33758 var c = this.t.redMul(this.curve.dd).redMul(p.t);
33759 // D = Z1 * 2 * Z2
33760 var d = this.z.redMul(p.z.redAdd(p.z));
33761 // E = B - A
33762 var e = b.redSub(a);
33763 // F = D - C
33764 var f = d.redSub(c);
33765 // G = D + C
33766 var g = d.redAdd(c);
33767 // H = B + A
33768 var h = b.redAdd(a);
33769 // X3 = E * F
33770 var nx = e.redMul(f);
33771 // Y3 = G * H
33772 var ny = g.redMul(h);
33773 // T3 = E * H
33774 var nt = e.redMul(h);
33775 // Z3 = F * G
33776 var nz = f.redMul(g);
33777 return this.curve.point(nx, ny, nz, nt);
33778 };
33779
33780 Point.prototype._projAdd = function _projAdd(p) {
33781 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33782 // #addition-add-2008-bbjlp
33783 // #addition-add-2007-bl
33784 // 10M + 1S
33785
33786 // A = Z1 * Z2
33787 var a = this.z.redMul(p.z);
33788 // B = A^2
33789 var b = a.redSqr();
33790 // C = X1 * X2
33791 var c = this.x.redMul(p.x);
33792 // D = Y1 * Y2
33793 var d = this.y.redMul(p.y);
33794 // E = d * C * D
33795 var e = this.curve.d.redMul(c).redMul(d);
33796 // F = B - E
33797 var f = b.redSub(e);
33798 // G = B + E
33799 var g = b.redAdd(e);
33800 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
33801 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
33802 var nx = a.redMul(f).redMul(tmp);
33803 var ny;
33804 var nz;
33805 if (this.curve.twisted) {
33806 // Y3 = A * G * (D - a * C)
33807 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
33808 // Z3 = F * G
33809 nz = f.redMul(g);
33810 } else {
33811 // Y3 = A * G * (D - C)
33812 ny = a.redMul(g).redMul(d.redSub(c));
33813 // Z3 = c * F * G
33814 nz = this.curve._mulC(f).redMul(g);
33815 }
33816 return this.curve.point(nx, ny, nz);
33817 };
33818
33819 Point.prototype.add = function add(p) {
33820 if (this.isInfinity())
33821 return p;
33822 if (p.isInfinity())
33823 return this;
33824
33825 if (this.curve.extended)
33826 return this._extAdd(p);
33827 else
33828 return this._projAdd(p);
33829 };
33830
33831 Point.prototype.mul = function mul(k) {
33832 if (this._hasDoubles(k))
33833 return this.curve._fixedNafMul(this, k);
33834 else
33835 return this.curve._wnafMul(this, k);
33836 };
33837
33838 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
33839 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
33840 };
33841
33842 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
33843 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
33844 };
33845
33846 Point.prototype.normalize = function normalize() {
33847 if (this.zOne)
33848 return this;
33849
33850 // Normalize coordinates
33851 var zi = this.z.redInvm();
33852 this.x = this.x.redMul(zi);
33853 this.y = this.y.redMul(zi);
33854 if (this.t)
33855 this.t = this.t.redMul(zi);
33856 this.z = this.curve.one;
33857 this.zOne = true;
33858 return this;
33859 };
33860
33861 Point.prototype.neg = function neg() {
33862 return this.curve.point(this.x.redNeg(),
33863 this.y,
33864 this.z,
33865 this.t && this.t.redNeg());
33866 };
33867
33868 Point.prototype.getX = function getX() {
33869 this.normalize();
33870 return this.x.fromRed();
33871 };
33872
33873 Point.prototype.getY = function getY() {
33874 this.normalize();
33875 return this.y.fromRed();
33876 };
33877
33878 Point.prototype.eq = function eq(other) {
33879 return this === other ||
33880 this.getX().cmp(other.getX()) === 0 &&
33881 this.getY().cmp(other.getY()) === 0;
33882 };
33883
33884 Point.prototype.eqXToP = function eqXToP(x) {
33885 var rx = x.toRed(this.curve.red).redMul(this.z);
33886 if (this.x.cmp(rx) === 0)
33887 return true;
33888
33889 var xc = x.clone();
33890 var t = this.curve.redN.redMul(this.z);
33891 for (;;) {
33892 xc.iadd(this.curve.n);
33893 if (xc.cmp(this.curve.p) >= 0)
33894 return false;
33895
33896 rx.redIAdd(t);
33897 if (this.x.cmp(rx) === 0)
33898 return true;
33899 }
33900 return false;
33901 };
33902
33903 // Compatibility with BaseCurve
33904 Point.prototype.toP = Point.prototype.normalize;
33905 Point.prototype.mixedAdd = Point.prototype.add;
33906
33907 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
33908 'use strict';
33909
33910 var curve = exports;
33911
33912 curve.base = require('./base');
33913 curve.short = require('./short');
33914 curve.mont = require('./mont');
33915 curve.edwards = require('./edwards');
33916
33917 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
33918 'use strict';
33919
33920 var curve = require('../curve');
33921 var BN = require('bn.js');
33922 var inherits = require('inherits');
33923 var Base = curve.base;
33924
33925 var elliptic = require('../../elliptic');
33926 var utils = elliptic.utils;
33927
33928 function MontCurve(conf) {
33929 Base.call(this, 'mont', conf);
33930
33931 this.a = new BN(conf.a, 16).toRed(this.red);
33932 this.b = new BN(conf.b, 16).toRed(this.red);
33933 this.i4 = new BN(4).toRed(this.red).redInvm();
33934 this.two = new BN(2).toRed(this.red);
33935 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
33936 }
33937 inherits(MontCurve, Base);
33938 module.exports = MontCurve;
33939
33940 MontCurve.prototype.validate = function validate(point) {
33941 var x = point.normalize().x;
33942 var x2 = x.redSqr();
33943 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
33944 var y = rhs.redSqrt();
33945
33946 return y.redSqr().cmp(rhs) === 0;
33947 };
33948
33949 function Point(curve, x, z) {
33950 Base.BasePoint.call(this, curve, 'projective');
33951 if (x === null && z === null) {
33952 this.x = this.curve.one;
33953 this.z = this.curve.zero;
33954 } else {
33955 this.x = new BN(x, 16);
33956 this.z = new BN(z, 16);
33957 if (!this.x.red)
33958 this.x = this.x.toRed(this.curve.red);
33959 if (!this.z.red)
33960 this.z = this.z.toRed(this.curve.red);
33961 }
33962 }
33963 inherits(Point, Base.BasePoint);
33964
33965 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33966 return this.point(utils.toArray(bytes, enc), 1);
33967 };
33968
33969 MontCurve.prototype.point = function point(x, z) {
33970 return new Point(this, x, z);
33971 };
33972
33973 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33974 return Point.fromJSON(this, obj);
33975 };
33976
33977 Point.prototype.precompute = function precompute() {
33978 // No-op
33979 };
33980
33981 Point.prototype._encode = function _encode() {
33982 return this.getX().toArray('be', this.curve.p.byteLength());
33983 };
33984
33985 Point.fromJSON = function fromJSON(curve, obj) {
33986 return new Point(curve, obj[0], obj[1] || curve.one);
33987 };
33988
33989 Point.prototype.inspect = function inspect() {
33990 if (this.isInfinity())
33991 return '<EC Point Infinity>';
33992 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33993 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33994 };
33995
33996 Point.prototype.isInfinity = function isInfinity() {
33997 // XXX This code assumes that zero is always zero in red
33998 return this.z.cmpn(0) === 0;
33999 };
34000
34001 Point.prototype.dbl = function dbl() {
34002 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
34003 // 2M + 2S + 4A
34004
34005 // A = X1 + Z1
34006 var a = this.x.redAdd(this.z);
34007 // AA = A^2
34008 var aa = a.redSqr();
34009 // B = X1 - Z1
34010 var b = this.x.redSub(this.z);
34011 // BB = B^2
34012 var bb = b.redSqr();
34013 // C = AA - BB
34014 var c = aa.redSub(bb);
34015 // X3 = AA * BB
34016 var nx = aa.redMul(bb);
34017 // Z3 = C * (BB + A24 * C)
34018 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
34019 return this.curve.point(nx, nz);
34020 };
34021
34022 Point.prototype.add = function add() {
34023 throw new Error('Not supported on Montgomery curve');
34024 };
34025
34026 Point.prototype.diffAdd = function diffAdd(p, diff) {
34027 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
34028 // 4M + 2S + 6A
34029
34030 // A = X2 + Z2
34031 var a = this.x.redAdd(this.z);
34032 // B = X2 - Z2
34033 var b = this.x.redSub(this.z);
34034 // C = X3 + Z3
34035 var c = p.x.redAdd(p.z);
34036 // D = X3 - Z3
34037 var d = p.x.redSub(p.z);
34038 // DA = D * A
34039 var da = d.redMul(a);
34040 // CB = C * B
34041 var cb = c.redMul(b);
34042 // X5 = Z1 * (DA + CB)^2
34043 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
34044 // Z5 = X1 * (DA - CB)^2
34045 var nz = diff.x.redMul(da.redISub(cb).redSqr());
34046 return this.curve.point(nx, nz);
34047 };
34048
34049 Point.prototype.mul = function mul(k) {
34050 var t = k.clone();
34051 var a = this; // (N / 2) * Q + Q
34052 var b = this.curve.point(null, null); // (N / 2) * Q
34053 var c = this; // Q
34054
34055 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
34056 bits.push(t.andln(1));
34057
34058 for (var i = bits.length - 1; i >= 0; i--) {
34059 if (bits[i] === 0) {
34060 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
34061 a = a.diffAdd(b, c);
34062 // N * Q = 2 * ((N / 2) * Q + Q))
34063 b = b.dbl();
34064 } else {
34065 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
34066 b = a.diffAdd(b, c);
34067 // N * Q + Q = 2 * ((N / 2) * Q + Q)
34068 a = a.dbl();
34069 }
34070 }
34071 return b;
34072 };
34073
34074 Point.prototype.mulAdd = function mulAdd() {
34075 throw new Error('Not supported on Montgomery curve');
34076 };
34077
34078 Point.prototype.jumlAdd = function jumlAdd() {
34079 throw new Error('Not supported on Montgomery curve');
34080 };
34081
34082 Point.prototype.eq = function eq(other) {
34083 return this.getX().cmp(other.getX()) === 0;
34084 };
34085
34086 Point.prototype.normalize = function normalize() {
34087 this.x = this.x.redMul(this.z.redInvm());
34088 this.z = this.curve.one;
34089 return this;
34090 };
34091
34092 Point.prototype.getX = function getX() {
34093 // Normalize coordinates
34094 this.normalize();
34095
34096 return this.x.fromRed();
34097 };
34098
34099 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
34100 'use strict';
34101
34102 var curve = require('../curve');
34103 var elliptic = require('../../elliptic');
34104 var BN = require('bn.js');
34105 var inherits = require('inherits');
34106 var Base = curve.base;
34107
34108 var assert = elliptic.utils.assert;
34109
34110 function ShortCurve(conf) {
34111 Base.call(this, 'short', conf);
34112
34113 this.a = new BN(conf.a, 16).toRed(this.red);
34114 this.b = new BN(conf.b, 16).toRed(this.red);
34115 this.tinv = this.two.redInvm();
34116
34117 this.zeroA = this.a.fromRed().cmpn(0) === 0;
34118 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
34119
34120 // If the curve is endomorphic, precalculate beta and lambda
34121 this.endo = this._getEndomorphism(conf);
34122 this._endoWnafT1 = new Array(4);
34123 this._endoWnafT2 = new Array(4);
34124 }
34125 inherits(ShortCurve, Base);
34126 module.exports = ShortCurve;
34127
34128 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
34129 // No efficient endomorphism
34130 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
34131 return;
34132
34133 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
34134 var beta;
34135 var lambda;
34136 if (conf.beta) {
34137 beta = new BN(conf.beta, 16).toRed(this.red);
34138 } else {
34139 var betas = this._getEndoRoots(this.p);
34140 // Choose the smallest beta
34141 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
34142 beta = beta.toRed(this.red);
34143 }
34144 if (conf.lambda) {
34145 lambda = new BN(conf.lambda, 16);
34146 } else {
34147 // Choose the lambda that is matching selected beta
34148 var lambdas = this._getEndoRoots(this.n);
34149 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
34150 lambda = lambdas[0];
34151 } else {
34152 lambda = lambdas[1];
34153 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
34154 }
34155 }
34156
34157 // Get basis vectors, used for balanced length-two representation
34158 var basis;
34159 if (conf.basis) {
34160 basis = conf.basis.map(function(vec) {
34161 return {
34162 a: new BN(vec.a, 16),
34163 b: new BN(vec.b, 16)
34164 };
34165 });
34166 } else {
34167 basis = this._getEndoBasis(lambda);
34168 }
34169
34170 return {
34171 beta: beta,
34172 lambda: lambda,
34173 basis: basis
34174 };
34175 };
34176
34177 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
34178 // Find roots of for x^2 + x + 1 in F
34179 // Root = (-1 +- Sqrt(-3)) / 2
34180 //
34181 var red = num === this.p ? this.red : BN.mont(num);
34182 var tinv = new BN(2).toRed(red).redInvm();
34183 var ntinv = tinv.redNeg();
34184
34185 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
34186
34187 var l1 = ntinv.redAdd(s).fromRed();
34188 var l2 = ntinv.redSub(s).fromRed();
34189 return [ l1, l2 ];
34190 };
34191
34192 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
34193 // aprxSqrt >= sqrt(this.n)
34194 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
34195
34196 // 3.74
34197 // Run EGCD, until r(L + 1) < aprxSqrt
34198 var u = lambda;
34199 var v = this.n.clone();
34200 var x1 = new BN(1);
34201 var y1 = new BN(0);
34202 var x2 = new BN(0);
34203 var y2 = new BN(1);
34204
34205 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
34206 var a0;
34207 var b0;
34208 // First vector
34209 var a1;
34210 var b1;
34211 // Second vector
34212 var a2;
34213 var b2;
34214
34215 var prevR;
34216 var i = 0;
34217 var r;
34218 var x;
34219 while (u.cmpn(0) !== 0) {
34220 var q = v.div(u);
34221 r = v.sub(q.mul(u));
34222 x = x2.sub(q.mul(x1));
34223 var y = y2.sub(q.mul(y1));
34224
34225 if (!a1 && r.cmp(aprxSqrt) < 0) {
34226 a0 = prevR.neg();
34227 b0 = x1;
34228 a1 = r.neg();
34229 b1 = x;
34230 } else if (a1 && ++i === 2) {
34231 break;
34232 }
34233 prevR = r;
34234
34235 v = u;
34236 u = r;
34237 x2 = x1;
34238 x1 = x;
34239 y2 = y1;
34240 y1 = y;
34241 }
34242 a2 = r.neg();
34243 b2 = x;
34244
34245 var len1 = a1.sqr().add(b1.sqr());
34246 var len2 = a2.sqr().add(b2.sqr());
34247 if (len2.cmp(len1) >= 0) {
34248 a2 = a0;
34249 b2 = b0;
34250 }
34251
34252 // Normalize signs
34253 if (a1.negative) {
34254 a1 = a1.neg();
34255 b1 = b1.neg();
34256 }
34257 if (a2.negative) {
34258 a2 = a2.neg();
34259 b2 = b2.neg();
34260 }
34261
34262 return [
34263 { a: a1, b: b1 },
34264 { a: a2, b: b2 }
34265 ];
34266 };
34267
34268 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
34269 var basis = this.endo.basis;
34270 var v1 = basis[0];
34271 var v2 = basis[1];
34272
34273 var c1 = v2.b.mul(k).divRound(this.n);
34274 var c2 = v1.b.neg().mul(k).divRound(this.n);
34275
34276 var p1 = c1.mul(v1.a);
34277 var p2 = c2.mul(v2.a);
34278 var q1 = c1.mul(v1.b);
34279 var q2 = c2.mul(v2.b);
34280
34281 // Calculate answer
34282 var k1 = k.sub(p1).sub(p2);
34283 var k2 = q1.add(q2).neg();
34284 return { k1: k1, k2: k2 };
34285 };
34286
34287 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
34288 x = new BN(x, 16);
34289 if (!x.red)
34290 x = x.toRed(this.red);
34291
34292 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
34293 var y = y2.redSqrt();
34294 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
34295 throw new Error('invalid point');
34296
34297 // XXX Is there any way to tell if the number is odd without converting it
34298 // to non-red form?
34299 var isOdd = y.fromRed().isOdd();
34300 if (odd && !isOdd || !odd && isOdd)
34301 y = y.redNeg();
34302
34303 return this.point(x, y);
34304 };
34305
34306 ShortCurve.prototype.validate = function validate(point) {
34307 if (point.inf)
34308 return true;
34309
34310 var x = point.x;
34311 var y = point.y;
34312
34313 var ax = this.a.redMul(x);
34314 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
34315 return y.redSqr().redISub(rhs).cmpn(0) === 0;
34316 };
34317
34318 ShortCurve.prototype._endoWnafMulAdd =
34319 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
34320 var npoints = this._endoWnafT1;
34321 var ncoeffs = this._endoWnafT2;
34322 for (var i = 0; i < points.length; i++) {
34323 var split = this._endoSplit(coeffs[i]);
34324 var p = points[i];
34325 var beta = p._getBeta();
34326
34327 if (split.k1.negative) {
34328 split.k1.ineg();
34329 p = p.neg(true);
34330 }
34331 if (split.k2.negative) {
34332 split.k2.ineg();
34333 beta = beta.neg(true);
34334 }
34335
34336 npoints[i * 2] = p;
34337 npoints[i * 2 + 1] = beta;
34338 ncoeffs[i * 2] = split.k1;
34339 ncoeffs[i * 2 + 1] = split.k2;
34340 }
34341 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
34342
34343 // Clean-up references to points and coefficients
34344 for (var j = 0; j < i * 2; j++) {
34345 npoints[j] = null;
34346 ncoeffs[j] = null;
34347 }
34348 return res;
34349 };
34350
34351 function Point(curve, x, y, isRed) {
34352 Base.BasePoint.call(this, curve, 'affine');
34353 if (x === null && y === null) {
34354 this.x = null;
34355 this.y = null;
34356 this.inf = true;
34357 } else {
34358 this.x = new BN(x, 16);
34359 this.y = new BN(y, 16);
34360 // Force redgomery representation when loading from JSON
34361 if (isRed) {
34362 this.x.forceRed(this.curve.red);
34363 this.y.forceRed(this.curve.red);
34364 }
34365 if (!this.x.red)
34366 this.x = this.x.toRed(this.curve.red);
34367 if (!this.y.red)
34368 this.y = this.y.toRed(this.curve.red);
34369 this.inf = false;
34370 }
34371 }
34372 inherits(Point, Base.BasePoint);
34373
34374 ShortCurve.prototype.point = function point(x, y, isRed) {
34375 return new Point(this, x, y, isRed);
34376 };
34377
34378 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
34379 return Point.fromJSON(this, obj, red);
34380 };
34381
34382 Point.prototype._getBeta = function _getBeta() {
34383 if (!this.curve.endo)
34384 return;
34385
34386 var pre = this.precomputed;
34387 if (pre && pre.beta)
34388 return pre.beta;
34389
34390 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
34391 if (pre) {
34392 var curve = this.curve;
34393 var endoMul = function(p) {
34394 return curve.point(p.x.redMul(curve.endo.beta), p.y);
34395 };
34396 pre.beta = beta;
34397 beta.precomputed = {
34398 beta: null,
34399 naf: pre.naf && {
34400 wnd: pre.naf.wnd,
34401 points: pre.naf.points.map(endoMul)
34402 },
34403 doubles: pre.doubles && {
34404 step: pre.doubles.step,
34405 points: pre.doubles.points.map(endoMul)
34406 }
34407 };
34408 }
34409 return beta;
34410 };
34411
34412 Point.prototype.toJSON = function toJSON() {
34413 if (!this.precomputed)
34414 return [ this.x, this.y ];
34415
34416 return [ this.x, this.y, this.precomputed && {
34417 doubles: this.precomputed.doubles && {
34418 step: this.precomputed.doubles.step,
34419 points: this.precomputed.doubles.points.slice(1)
34420 },
34421 naf: this.precomputed.naf && {
34422 wnd: this.precomputed.naf.wnd,
34423 points: this.precomputed.naf.points.slice(1)
34424 }
34425 } ];
34426 };
34427
34428 Point.fromJSON = function fromJSON(curve, obj, red) {
34429 if (typeof obj === 'string')
34430 obj = JSON.parse(obj);
34431 var res = curve.point(obj[0], obj[1], red);
34432 if (!obj[2])
34433 return res;
34434
34435 function obj2point(obj) {
34436 return curve.point(obj[0], obj[1], red);
34437 }
34438
34439 var pre = obj[2];
34440 res.precomputed = {
34441 beta: null,
34442 doubles: pre.doubles && {
34443 step: pre.doubles.step,
34444 points: [ res ].concat(pre.doubles.points.map(obj2point))
34445 },
34446 naf: pre.naf && {
34447 wnd: pre.naf.wnd,
34448 points: [ res ].concat(pre.naf.points.map(obj2point))
34449 }
34450 };
34451 return res;
34452 };
34453
34454 Point.prototype.inspect = function inspect() {
34455 if (this.isInfinity())
34456 return '<EC Point Infinity>';
34457 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34458 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
34459 };
34460
34461 Point.prototype.isInfinity = function isInfinity() {
34462 return this.inf;
34463 };
34464
34465 Point.prototype.add = function add(p) {
34466 // O + P = P
34467 if (this.inf)
34468 return p;
34469
34470 // P + O = P
34471 if (p.inf)
34472 return this;
34473
34474 // P + P = 2P
34475 if (this.eq(p))
34476 return this.dbl();
34477
34478 // P + (-P) = O
34479 if (this.neg().eq(p))
34480 return this.curve.point(null, null);
34481
34482 // P + Q = O
34483 if (this.x.cmp(p.x) === 0)
34484 return this.curve.point(null, null);
34485
34486 var c = this.y.redSub(p.y);
34487 if (c.cmpn(0) !== 0)
34488 c = c.redMul(this.x.redSub(p.x).redInvm());
34489 var nx = c.redSqr().redISub(this.x).redISub(p.x);
34490 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34491 return this.curve.point(nx, ny);
34492 };
34493
34494 Point.prototype.dbl = function dbl() {
34495 if (this.inf)
34496 return this;
34497
34498 // 2P = O
34499 var ys1 = this.y.redAdd(this.y);
34500 if (ys1.cmpn(0) === 0)
34501 return this.curve.point(null, null);
34502
34503 var a = this.curve.a;
34504
34505 var x2 = this.x.redSqr();
34506 var dyinv = ys1.redInvm();
34507 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
34508
34509 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
34510 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34511 return this.curve.point(nx, ny);
34512 };
34513
34514 Point.prototype.getX = function getX() {
34515 return this.x.fromRed();
34516 };
34517
34518 Point.prototype.getY = function getY() {
34519 return this.y.fromRed();
34520 };
34521
34522 Point.prototype.mul = function mul(k) {
34523 k = new BN(k, 16);
34524
34525 if (this._hasDoubles(k))
34526 return this.curve._fixedNafMul(this, k);
34527 else if (this.curve.endo)
34528 return this.curve._endoWnafMulAdd([ this ], [ k ]);
34529 else
34530 return this.curve._wnafMul(this, k);
34531 };
34532
34533 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
34534 var points = [ this, p2 ];
34535 var coeffs = [ k1, k2 ];
34536 if (this.curve.endo)
34537 return this.curve._endoWnafMulAdd(points, coeffs);
34538 else
34539 return this.curve._wnafMulAdd(1, points, coeffs, 2);
34540 };
34541
34542 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
34543 var points = [ this, p2 ];
34544 var coeffs = [ k1, k2 ];
34545 if (this.curve.endo)
34546 return this.curve._endoWnafMulAdd(points, coeffs, true);
34547 else
34548 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
34549 };
34550
34551 Point.prototype.eq = function eq(p) {
34552 return this === p ||
34553 this.inf === p.inf &&
34554 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
34555 };
34556
34557 Point.prototype.neg = function neg(_precompute) {
34558 if (this.inf)
34559 return this;
34560
34561 var res = this.curve.point(this.x, this.y.redNeg());
34562 if (_precompute && this.precomputed) {
34563 var pre = this.precomputed;
34564 var negate = function(p) {
34565 return p.neg();
34566 };
34567 res.precomputed = {
34568 naf: pre.naf && {
34569 wnd: pre.naf.wnd,
34570 points: pre.naf.points.map(negate)
34571 },
34572 doubles: pre.doubles && {
34573 step: pre.doubles.step,
34574 points: pre.doubles.points.map(negate)
34575 }
34576 };
34577 }
34578 return res;
34579 };
34580
34581 Point.prototype.toJ = function toJ() {
34582 if (this.inf)
34583 return this.curve.jpoint(null, null, null);
34584
34585 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
34586 return res;
34587 };
34588
34589 function JPoint(curve, x, y, z) {
34590 Base.BasePoint.call(this, curve, 'jacobian');
34591 if (x === null && y === null && z === null) {
34592 this.x = this.curve.one;
34593 this.y = this.curve.one;
34594 this.z = new BN(0);
34595 } else {
34596 this.x = new BN(x, 16);
34597 this.y = new BN(y, 16);
34598 this.z = new BN(z, 16);
34599 }
34600 if (!this.x.red)
34601 this.x = this.x.toRed(this.curve.red);
34602 if (!this.y.red)
34603 this.y = this.y.toRed(this.curve.red);
34604 if (!this.z.red)
34605 this.z = this.z.toRed(this.curve.red);
34606
34607 this.zOne = this.z === this.curve.one;
34608 }
34609 inherits(JPoint, Base.BasePoint);
34610
34611 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
34612 return new JPoint(this, x, y, z);
34613 };
34614
34615 JPoint.prototype.toP = function toP() {
34616 if (this.isInfinity())
34617 return this.curve.point(null, null);
34618
34619 var zinv = this.z.redInvm();
34620 var zinv2 = zinv.redSqr();
34621 var ax = this.x.redMul(zinv2);
34622 var ay = this.y.redMul(zinv2).redMul(zinv);
34623
34624 return this.curve.point(ax, ay);
34625 };
34626
34627 JPoint.prototype.neg = function neg() {
34628 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
34629 };
34630
34631 JPoint.prototype.add = function add(p) {
34632 // O + P = P
34633 if (this.isInfinity())
34634 return p;
34635
34636 // P + O = P
34637 if (p.isInfinity())
34638 return this;
34639
34640 // 12M + 4S + 7A
34641 var pz2 = p.z.redSqr();
34642 var z2 = this.z.redSqr();
34643 var u1 = this.x.redMul(pz2);
34644 var u2 = p.x.redMul(z2);
34645 var s1 = this.y.redMul(pz2.redMul(p.z));
34646 var s2 = p.y.redMul(z2.redMul(this.z));
34647
34648 var h = u1.redSub(u2);
34649 var r = s1.redSub(s2);
34650 if (h.cmpn(0) === 0) {
34651 if (r.cmpn(0) !== 0)
34652 return this.curve.jpoint(null, null, null);
34653 else
34654 return this.dbl();
34655 }
34656
34657 var h2 = h.redSqr();
34658 var h3 = h2.redMul(h);
34659 var v = u1.redMul(h2);
34660
34661 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34662 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34663 var nz = this.z.redMul(p.z).redMul(h);
34664
34665 return this.curve.jpoint(nx, ny, nz);
34666 };
34667
34668 JPoint.prototype.mixedAdd = function mixedAdd(p) {
34669 // O + P = P
34670 if (this.isInfinity())
34671 return p.toJ();
34672
34673 // P + O = P
34674 if (p.isInfinity())
34675 return this;
34676
34677 // 8M + 3S + 7A
34678 var z2 = this.z.redSqr();
34679 var u1 = this.x;
34680 var u2 = p.x.redMul(z2);
34681 var s1 = this.y;
34682 var s2 = p.y.redMul(z2).redMul(this.z);
34683
34684 var h = u1.redSub(u2);
34685 var r = s1.redSub(s2);
34686 if (h.cmpn(0) === 0) {
34687 if (r.cmpn(0) !== 0)
34688 return this.curve.jpoint(null, null, null);
34689 else
34690 return this.dbl();
34691 }
34692
34693 var h2 = h.redSqr();
34694 var h3 = h2.redMul(h);
34695 var v = u1.redMul(h2);
34696
34697 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34698 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34699 var nz = this.z.redMul(h);
34700
34701 return this.curve.jpoint(nx, ny, nz);
34702 };
34703
34704 JPoint.prototype.dblp = function dblp(pow) {
34705 if (pow === 0)
34706 return this;
34707 if (this.isInfinity())
34708 return this;
34709 if (!pow)
34710 return this.dbl();
34711
34712 if (this.curve.zeroA || this.curve.threeA) {
34713 var r = this;
34714 for (var i = 0; i < pow; i++)
34715 r = r.dbl();
34716 return r;
34717 }
34718
34719 // 1M + 2S + 1A + N * (4S + 5M + 8A)
34720 // N = 1 => 6M + 6S + 9A
34721 var a = this.curve.a;
34722 var tinv = this.curve.tinv;
34723
34724 var jx = this.x;
34725 var jy = this.y;
34726 var jz = this.z;
34727 var jz4 = jz.redSqr().redSqr();
34728
34729 // Reuse results
34730 var jyd = jy.redAdd(jy);
34731 for (var i = 0; i < pow; i++) {
34732 var jx2 = jx.redSqr();
34733 var jyd2 = jyd.redSqr();
34734 var jyd4 = jyd2.redSqr();
34735 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34736
34737 var t1 = jx.redMul(jyd2);
34738 var nx = c.redSqr().redISub(t1.redAdd(t1));
34739 var t2 = t1.redISub(nx);
34740 var dny = c.redMul(t2);
34741 dny = dny.redIAdd(dny).redISub(jyd4);
34742 var nz = jyd.redMul(jz);
34743 if (i + 1 < pow)
34744 jz4 = jz4.redMul(jyd4);
34745
34746 jx = nx;
34747 jz = nz;
34748 jyd = dny;
34749 }
34750
34751 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
34752 };
34753
34754 JPoint.prototype.dbl = function dbl() {
34755 if (this.isInfinity())
34756 return this;
34757
34758 if (this.curve.zeroA)
34759 return this._zeroDbl();
34760 else if (this.curve.threeA)
34761 return this._threeDbl();
34762 else
34763 return this._dbl();
34764 };
34765
34766 JPoint.prototype._zeroDbl = function _zeroDbl() {
34767 var nx;
34768 var ny;
34769 var nz;
34770 // Z = 1
34771 if (this.zOne) {
34772 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34773 // #doubling-mdbl-2007-bl
34774 // 1M + 5S + 14A
34775
34776 // XX = X1^2
34777 var xx = this.x.redSqr();
34778 // YY = Y1^2
34779 var yy = this.y.redSqr();
34780 // YYYY = YY^2
34781 var yyyy = yy.redSqr();
34782 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34783 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34784 s = s.redIAdd(s);
34785 // M = 3 * XX + a; a = 0
34786 var m = xx.redAdd(xx).redIAdd(xx);
34787 // T = M ^ 2 - 2*S
34788 var t = m.redSqr().redISub(s).redISub(s);
34789
34790 // 8 * YYYY
34791 var yyyy8 = yyyy.redIAdd(yyyy);
34792 yyyy8 = yyyy8.redIAdd(yyyy8);
34793 yyyy8 = yyyy8.redIAdd(yyyy8);
34794
34795 // X3 = T
34796 nx = t;
34797 // Y3 = M * (S - T) - 8 * YYYY
34798 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34799 // Z3 = 2*Y1
34800 nz = this.y.redAdd(this.y);
34801 } else {
34802 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34803 // #doubling-dbl-2009-l
34804 // 2M + 5S + 13A
34805
34806 // A = X1^2
34807 var a = this.x.redSqr();
34808 // B = Y1^2
34809 var b = this.y.redSqr();
34810 // C = B^2
34811 var c = b.redSqr();
34812 // D = 2 * ((X1 + B)^2 - A - C)
34813 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
34814 d = d.redIAdd(d);
34815 // E = 3 * A
34816 var e = a.redAdd(a).redIAdd(a);
34817 // F = E^2
34818 var f = e.redSqr();
34819
34820 // 8 * C
34821 var c8 = c.redIAdd(c);
34822 c8 = c8.redIAdd(c8);
34823 c8 = c8.redIAdd(c8);
34824
34825 // X3 = F - 2 * D
34826 nx = f.redISub(d).redISub(d);
34827 // Y3 = E * (D - X3) - 8 * C
34828 ny = e.redMul(d.redISub(nx)).redISub(c8);
34829 // Z3 = 2 * Y1 * Z1
34830 nz = this.y.redMul(this.z);
34831 nz = nz.redIAdd(nz);
34832 }
34833
34834 return this.curve.jpoint(nx, ny, nz);
34835 };
34836
34837 JPoint.prototype._threeDbl = function _threeDbl() {
34838 var nx;
34839 var ny;
34840 var nz;
34841 // Z = 1
34842 if (this.zOne) {
34843 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
34844 // #doubling-mdbl-2007-bl
34845 // 1M + 5S + 15A
34846
34847 // XX = X1^2
34848 var xx = this.x.redSqr();
34849 // YY = Y1^2
34850 var yy = this.y.redSqr();
34851 // YYYY = YY^2
34852 var yyyy = yy.redSqr();
34853 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34854 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34855 s = s.redIAdd(s);
34856 // M = 3 * XX + a
34857 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
34858 // T = M^2 - 2 * S
34859 var t = m.redSqr().redISub(s).redISub(s);
34860 // X3 = T
34861 nx = t;
34862 // Y3 = M * (S - T) - 8 * YYYY
34863 var yyyy8 = yyyy.redIAdd(yyyy);
34864 yyyy8 = yyyy8.redIAdd(yyyy8);
34865 yyyy8 = yyyy8.redIAdd(yyyy8);
34866 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34867 // Z3 = 2 * Y1
34868 nz = this.y.redAdd(this.y);
34869 } else {
34870 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
34871 // 3M + 5S
34872
34873 // delta = Z1^2
34874 var delta = this.z.redSqr();
34875 // gamma = Y1^2
34876 var gamma = this.y.redSqr();
34877 // beta = X1 * gamma
34878 var beta = this.x.redMul(gamma);
34879 // alpha = 3 * (X1 - delta) * (X1 + delta)
34880 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
34881 alpha = alpha.redAdd(alpha).redIAdd(alpha);
34882 // X3 = alpha^2 - 8 * beta
34883 var beta4 = beta.redIAdd(beta);
34884 beta4 = beta4.redIAdd(beta4);
34885 var beta8 = beta4.redAdd(beta4);
34886 nx = alpha.redSqr().redISub(beta8);
34887 // Z3 = (Y1 + Z1)^2 - gamma - delta
34888 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
34889 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
34890 var ggamma8 = gamma.redSqr();
34891 ggamma8 = ggamma8.redIAdd(ggamma8);
34892 ggamma8 = ggamma8.redIAdd(ggamma8);
34893 ggamma8 = ggamma8.redIAdd(ggamma8);
34894 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
34895 }
34896
34897 return this.curve.jpoint(nx, ny, nz);
34898 };
34899
34900 JPoint.prototype._dbl = function _dbl() {
34901 var a = this.curve.a;
34902
34903 // 4M + 6S + 10A
34904 var jx = this.x;
34905 var jy = this.y;
34906 var jz = this.z;
34907 var jz4 = jz.redSqr().redSqr();
34908
34909 var jx2 = jx.redSqr();
34910 var jy2 = jy.redSqr();
34911
34912 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34913
34914 var jxd4 = jx.redAdd(jx);
34915 jxd4 = jxd4.redIAdd(jxd4);
34916 var t1 = jxd4.redMul(jy2);
34917 var nx = c.redSqr().redISub(t1.redAdd(t1));
34918 var t2 = t1.redISub(nx);
34919
34920 var jyd8 = jy2.redSqr();
34921 jyd8 = jyd8.redIAdd(jyd8);
34922 jyd8 = jyd8.redIAdd(jyd8);
34923 jyd8 = jyd8.redIAdd(jyd8);
34924 var ny = c.redMul(t2).redISub(jyd8);
34925 var nz = jy.redAdd(jy).redMul(jz);
34926
34927 return this.curve.jpoint(nx, ny, nz);
34928 };
34929
34930 JPoint.prototype.trpl = function trpl() {
34931 if (!this.curve.zeroA)
34932 return this.dbl().add(this);
34933
34934 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
34935 // 5M + 10S + ...
34936
34937 // XX = X1^2
34938 var xx = this.x.redSqr();
34939 // YY = Y1^2
34940 var yy = this.y.redSqr();
34941 // ZZ = Z1^2
34942 var zz = this.z.redSqr();
34943 // YYYY = YY^2
34944 var yyyy = yy.redSqr();
34945 // M = 3 * XX + a * ZZ2; a = 0
34946 var m = xx.redAdd(xx).redIAdd(xx);
34947 // MM = M^2
34948 var mm = m.redSqr();
34949 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
34950 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34951 e = e.redIAdd(e);
34952 e = e.redAdd(e).redIAdd(e);
34953 e = e.redISub(mm);
34954 // EE = E^2
34955 var ee = e.redSqr();
34956 // T = 16*YYYY
34957 var t = yyyy.redIAdd(yyyy);
34958 t = t.redIAdd(t);
34959 t = t.redIAdd(t);
34960 t = t.redIAdd(t);
34961 // U = (M + E)^2 - MM - EE - T
34962 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
34963 // X3 = 4 * (X1 * EE - 4 * YY * U)
34964 var yyu4 = yy.redMul(u);
34965 yyu4 = yyu4.redIAdd(yyu4);
34966 yyu4 = yyu4.redIAdd(yyu4);
34967 var nx = this.x.redMul(ee).redISub(yyu4);
34968 nx = nx.redIAdd(nx);
34969 nx = nx.redIAdd(nx);
34970 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
34971 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
34972 ny = ny.redIAdd(ny);
34973 ny = ny.redIAdd(ny);
34974 ny = ny.redIAdd(ny);
34975 // Z3 = (Z1 + E)^2 - ZZ - EE
34976 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
34977
34978 return this.curve.jpoint(nx, ny, nz);
34979 };
34980
34981 JPoint.prototype.mul = function mul(k, kbase) {
34982 k = new BN(k, kbase);
34983
34984 return this.curve._wnafMul(this, k);
34985 };
34986
34987 JPoint.prototype.eq = function eq(p) {
34988 if (p.type === 'affine')
34989 return this.eq(p.toJ());
34990
34991 if (this === p)
34992 return true;
34993
34994 // x1 * z2^2 == x2 * z1^2
34995 var z2 = this.z.redSqr();
34996 var pz2 = p.z.redSqr();
34997 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
34998 return false;
34999
35000 // y1 * z2^3 == y2 * z1^3
35001 var z3 = z2.redMul(this.z);
35002 var pz3 = pz2.redMul(p.z);
35003 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
35004 };
35005
35006 JPoint.prototype.eqXToP = function eqXToP(x) {
35007 var zs = this.z.redSqr();
35008 var rx = x.toRed(this.curve.red).redMul(zs);
35009 if (this.x.cmp(rx) === 0)
35010 return true;
35011
35012 var xc = x.clone();
35013 var t = this.curve.redN.redMul(zs);
35014 for (;;) {
35015 xc.iadd(this.curve.n);
35016 if (xc.cmp(this.curve.p) >= 0)
35017 return false;
35018
35019 rx.redIAdd(t);
35020 if (this.x.cmp(rx) === 0)
35021 return true;
35022 }
35023 return false;
35024 };
35025
35026 JPoint.prototype.inspect = function inspect() {
35027 if (this.isInfinity())
35028 return '<EC JPoint Infinity>';
35029 return '<EC JPoint x: ' + this.x.toString(16, 2) +
35030 ' y: ' + this.y.toString(16, 2) +
35031 ' z: ' + this.z.toString(16, 2) + '>';
35032 };
35033
35034 JPoint.prototype.isInfinity = function isInfinity() {
35035 // XXX This code assumes that zero is always zero in red
35036 return this.z.cmpn(0) === 0;
35037 };
35038
35039 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
35040 'use strict';
35041
35042 var curves = exports;
35043
35044 var hash = require('hash.js');
35045 var elliptic = require('../elliptic');
35046
35047 var assert = elliptic.utils.assert;
35048
35049 function PresetCurve(options) {
35050 if (options.type === 'short')
35051 this.curve = new elliptic.curve.short(options);
35052 else if (options.type === 'edwards')
35053 this.curve = new elliptic.curve.edwards(options);
35054 else
35055 this.curve = new elliptic.curve.mont(options);
35056 this.g = this.curve.g;
35057 this.n = this.curve.n;
35058 this.hash = options.hash;
35059
35060 assert(this.g.validate(), 'Invalid curve');
35061 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
35062 }
35063 curves.PresetCurve = PresetCurve;
35064
35065 function defineCurve(name, options) {
35066 Object.defineProperty(curves, name, {
35067 configurable: true,
35068 enumerable: true,
35069 get: function() {
35070 var curve = new PresetCurve(options);
35071 Object.defineProperty(curves, name, {
35072 configurable: true,
35073 enumerable: true,
35074 value: curve
35075 });
35076 return curve;
35077 }
35078 });
35079 }
35080
35081 defineCurve('p192', {
35082 type: 'short',
35083 prime: 'p192',
35084 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
35085 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
35086 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
35087 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
35088 hash: hash.sha256,
35089 gRed: false,
35090 g: [
35091 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
35092 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
35093 ]
35094 });
35095
35096 defineCurve('p224', {
35097 type: 'short',
35098 prime: 'p224',
35099 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
35100 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
35101 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
35102 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
35103 hash: hash.sha256,
35104 gRed: false,
35105 g: [
35106 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
35107 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
35108 ]
35109 });
35110
35111 defineCurve('p256', {
35112 type: 'short',
35113 prime: null,
35114 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
35115 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
35116 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
35117 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
35118 hash: hash.sha256,
35119 gRed: false,
35120 g: [
35121 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
35122 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
35123 ]
35124 });
35125
35126 defineCurve('p384', {
35127 type: 'short',
35128 prime: null,
35129 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35130 'fffffffe ffffffff 00000000 00000000 ffffffff',
35131 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35132 'fffffffe ffffffff 00000000 00000000 fffffffc',
35133 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
35134 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
35135 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
35136 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
35137 hash: hash.sha384,
35138 gRed: false,
35139 g: [
35140 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
35141 '5502f25d bf55296c 3a545e38 72760ab7',
35142 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
35143 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
35144 ]
35145 });
35146
35147 defineCurve('p521', {
35148 type: 'short',
35149 prime: null,
35150 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35151 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35152 'ffffffff ffffffff ffffffff ffffffff ffffffff',
35153 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35154 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35155 'ffffffff ffffffff ffffffff ffffffff fffffffc',
35156 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
35157 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
35158 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
35159 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35160 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
35161 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
35162 hash: hash.sha512,
35163 gRed: false,
35164 g: [
35165 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
35166 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
35167 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
35168 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
35169 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
35170 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
35171 ]
35172 });
35173
35174 defineCurve('curve25519', {
35175 type: 'mont',
35176 prime: 'p25519',
35177 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35178 a: '76d06',
35179 b: '1',
35180 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35181 hash: hash.sha256,
35182 gRed: false,
35183 g: [
35184 '9'
35185 ]
35186 });
35187
35188 defineCurve('ed25519', {
35189 type: 'edwards',
35190 prime: 'p25519',
35191 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35192 a: '-1',
35193 c: '1',
35194 // -121665 * (121666^(-1)) (mod P)
35195 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
35196 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35197 hash: hash.sha256,
35198 gRed: false,
35199 g: [
35200 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
35201
35202 // 4/5
35203 '6666666666666666666666666666666666666666666666666666666666666658'
35204 ]
35205 });
35206
35207 var pre;
35208 try {
35209 pre = require('./precomputed/secp256k1');
35210 } catch (e) {
35211 pre = undefined;
35212 }
35213
35214 defineCurve('secp256k1', {
35215 type: 'short',
35216 prime: 'k256',
35217 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
35218 a: '0',
35219 b: '7',
35220 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
35221 h: '1',
35222 hash: hash.sha256,
35223
35224 // Precomputed endomorphism
35225 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
35226 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
35227 basis: [
35228 {
35229 a: '3086d221a7d46bcde86c90e49284eb15',
35230 b: '-e4437ed6010e88286f547fa90abfe4c3'
35231 },
35232 {
35233 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
35234 b: '3086d221a7d46bcde86c90e49284eb15'
35235 }
35236 ],
35237
35238 gRed: false,
35239 g: [
35240 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
35241 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
35242 pre
35243 ]
35244 });
35245
35246 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
35247 'use strict';
35248
35249 var BN = require('bn.js');
35250 var elliptic = require('../../elliptic');
35251 var utils = elliptic.utils;
35252 var assert = utils.assert;
35253
35254 var KeyPair = require('./key');
35255 var Signature = require('./signature');
35256
35257 function EC(options) {
35258 if (!(this instanceof EC))
35259 return new EC(options);
35260
35261 // Shortcut `elliptic.ec(curve-name)`
35262 if (typeof options === 'string') {
35263 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
35264
35265 options = elliptic.curves[options];
35266 }
35267
35268 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
35269 if (options instanceof elliptic.curves.PresetCurve)
35270 options = { curve: options };
35271
35272 this.curve = options.curve.curve;
35273 this.n = this.curve.n;
35274 this.nh = this.n.ushrn(1);
35275 this.g = this.curve.g;
35276
35277 // Point on curve
35278 this.g = options.curve.g;
35279 this.g.precompute(options.curve.n.bitLength() + 1);
35280
35281 // Hash for function for DRBG
35282 this.hash = options.hash || options.curve.hash;
35283 }
35284 module.exports = EC;
35285
35286 EC.prototype.keyPair = function keyPair(options) {
35287 return new KeyPair(this, options);
35288 };
35289
35290 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
35291 return KeyPair.fromPrivate(this, priv, enc);
35292 };
35293
35294 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
35295 return KeyPair.fromPublic(this, pub, enc);
35296 };
35297
35298 EC.prototype.genKeyPair = function genKeyPair(options) {
35299 if (!options)
35300 options = {};
35301
35302 // Instantiate Hmac_DRBG
35303 var drbg = new elliptic.hmacDRBG({
35304 hash: this.hash,
35305 pers: options.pers,
35306 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
35307 nonce: this.n.toArray()
35308 });
35309
35310 var bytes = this.n.byteLength();
35311 var ns2 = this.n.sub(new BN(2));
35312 do {
35313 var priv = new BN(drbg.generate(bytes));
35314 if (priv.cmp(ns2) > 0)
35315 continue;
35316
35317 priv.iaddn(1);
35318 return this.keyFromPrivate(priv);
35319 } while (true);
35320 };
35321
35322 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
35323 var delta = msg.byteLength() * 8 - this.n.bitLength();
35324 if (delta > 0)
35325 msg = msg.ushrn(delta);
35326 if (!truncOnly && msg.cmp(this.n) >= 0)
35327 return msg.sub(this.n);
35328 else
35329 return msg;
35330 };
35331
35332 EC.prototype.sign = function sign(msg, key, enc, options) {
35333 if (typeof enc === 'object') {
35334 options = enc;
35335 enc = null;
35336 }
35337 if (!options)
35338 options = {};
35339
35340 key = this.keyFromPrivate(key, enc);
35341 msg = this._truncateToN(new BN(msg, 16));
35342
35343 // Zero-extend key to provide enough entropy
35344 var bytes = this.n.byteLength();
35345 var bkey = key.getPrivate().toArray('be', bytes);
35346
35347 // Zero-extend nonce to have the same byte size as N
35348 var nonce = msg.toArray('be', bytes);
35349
35350 // Instantiate Hmac_DRBG
35351 var drbg = new elliptic.hmacDRBG({
35352 hash: this.hash,
35353 entropy: bkey,
35354 nonce: nonce,
35355 pers: options.pers,
35356 persEnc: options.persEnc
35357 });
35358
35359 // Number of bytes to generate
35360 var ns1 = this.n.sub(new BN(1));
35361
35362 for (var iter = 0; true; iter++) {
35363 var k = options.k ?
35364 options.k(iter) :
35365 new BN(drbg.generate(this.n.byteLength()));
35366 k = this._truncateToN(k, true);
35367 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
35368 continue;
35369
35370 var kp = this.g.mul(k);
35371 if (kp.isInfinity())
35372 continue;
35373
35374 var kpX = kp.getX();
35375 var r = kpX.umod(this.n);
35376 if (r.cmpn(0) === 0)
35377 continue;
35378
35379 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
35380 s = s.umod(this.n);
35381 if (s.cmpn(0) === 0)
35382 continue;
35383
35384 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
35385 (kpX.cmp(r) !== 0 ? 2 : 0);
35386
35387 // Use complement of `s`, if it is > `n / 2`
35388 if (options.canonical && s.cmp(this.nh) > 0) {
35389 s = this.n.sub(s);
35390 recoveryParam ^= 1;
35391 }
35392
35393 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
35394 }
35395 };
35396
35397 EC.prototype.verify = function verify(msg, signature, key, enc) {
35398 msg = this._truncateToN(new BN(msg, 16));
35399 key = this.keyFromPublic(key, enc);
35400 signature = new Signature(signature, 'hex');
35401
35402 // Perform primitive values validation
35403 var r = signature.r;
35404 var s = signature.s;
35405 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
35406 return false;
35407 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
35408 return false;
35409
35410 // Validate signature
35411 var sinv = s.invm(this.n);
35412 var u1 = sinv.mul(msg).umod(this.n);
35413 var u2 = sinv.mul(r).umod(this.n);
35414
35415 if (!this.curve._maxwellTrick) {
35416 var p = this.g.mulAdd(u1, key.getPublic(), u2);
35417 if (p.isInfinity())
35418 return false;
35419
35420 return p.getX().umod(this.n).cmp(r) === 0;
35421 }
35422
35423 // NOTE: Greg Maxwell's trick, inspired by:
35424 // https://git.io/vad3K
35425
35426 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
35427 if (p.isInfinity())
35428 return false;
35429
35430 // Compare `p.x` of Jacobian point with `r`,
35431 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
35432 // inverse of `p.z^2`
35433 return p.eqXToP(r);
35434 };
35435
35436 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
35437 assert((3 & j) === j, 'The recovery param is more than two bits');
35438 signature = new Signature(signature, enc);
35439
35440 var n = this.n;
35441 var e = new BN(msg);
35442 var r = signature.r;
35443 var s = signature.s;
35444
35445 // A set LSB signifies that the y-coordinate is odd
35446 var isYOdd = j & 1;
35447 var isSecondKey = j >> 1;
35448 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
35449 throw new Error('Unable to find sencond key candinate');
35450
35451 // 1.1. Let x = r + jn.
35452 if (isSecondKey)
35453 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
35454 else
35455 r = this.curve.pointFromX(r, isYOdd);
35456
35457 var rInv = signature.r.invm(n);
35458 var s1 = n.sub(e).mul(rInv).umod(n);
35459 var s2 = s.mul(rInv).umod(n);
35460
35461 // 1.6.1 Compute Q = r^-1 (sR - eG)
35462 // Q = r^-1 (sR + -eG)
35463 return this.g.mulAdd(s1, r, s2);
35464 };
35465
35466 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
35467 signature = new Signature(signature, enc);
35468 if (signature.recoveryParam !== null)
35469 return signature.recoveryParam;
35470
35471 for (var i = 0; i < 4; i++) {
35472 var Qprime;
35473 try {
35474 Qprime = this.recoverPubKey(e, signature, i);
35475 } catch (e) {
35476 continue;
35477 }
35478
35479 if (Qprime.eq(Q))
35480 return i;
35481 }
35482 throw new Error('Unable to find valid recovery factor');
35483 };
35484
35485 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
35486 'use strict';
35487
35488 var BN = require('bn.js');
35489 var elliptic = require('../../elliptic');
35490 var utils = elliptic.utils;
35491 var assert = utils.assert;
35492
35493 function KeyPair(ec, options) {
35494 this.ec = ec;
35495 this.priv = null;
35496 this.pub = null;
35497
35498 // KeyPair(ec, { priv: ..., pub: ... })
35499 if (options.priv)
35500 this._importPrivate(options.priv, options.privEnc);
35501 if (options.pub)
35502 this._importPublic(options.pub, options.pubEnc);
35503 }
35504 module.exports = KeyPair;
35505
35506 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
35507 if (pub instanceof KeyPair)
35508 return pub;
35509
35510 return new KeyPair(ec, {
35511 pub: pub,
35512 pubEnc: enc
35513 });
35514 };
35515
35516 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
35517 if (priv instanceof KeyPair)
35518 return priv;
35519
35520 return new KeyPair(ec, {
35521 priv: priv,
35522 privEnc: enc
35523 });
35524 };
35525
35526 KeyPair.prototype.validate = function validate() {
35527 var pub = this.getPublic();
35528
35529 if (pub.isInfinity())
35530 return { result: false, reason: 'Invalid public key' };
35531 if (!pub.validate())
35532 return { result: false, reason: 'Public key is not a point' };
35533 if (!pub.mul(this.ec.curve.n).isInfinity())
35534 return { result: false, reason: 'Public key * N != O' };
35535
35536 return { result: true, reason: null };
35537 };
35538
35539 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
35540 // compact is optional argument
35541 if (typeof compact === 'string') {
35542 enc = compact;
35543 compact = null;
35544 }
35545
35546 if (!this.pub)
35547 this.pub = this.ec.g.mul(this.priv);
35548
35549 if (!enc)
35550 return this.pub;
35551
35552 return this.pub.encode(enc, compact);
35553 };
35554
35555 KeyPair.prototype.getPrivate = function getPrivate(enc) {
35556 if (enc === 'hex')
35557 return this.priv.toString(16, 2);
35558 else
35559 return this.priv;
35560 };
35561
35562 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
35563 this.priv = new BN(key, enc || 16);
35564
35565 // Ensure that the priv won't be bigger than n, otherwise we may fail
35566 // in fixed multiplication method
35567 this.priv = this.priv.umod(this.ec.curve.n);
35568 };
35569
35570 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
35571 if (key.x || key.y) {
35572 // Montgomery points only have an `x` coordinate.
35573 // Weierstrass/Edwards points on the other hand have both `x` and
35574 // `y` coordinates.
35575 if (this.ec.curve.type === 'mont') {
35576 assert(key.x, 'Need x coordinate');
35577 } else if (this.ec.curve.type === 'short' ||
35578 this.ec.curve.type === 'edwards') {
35579 assert(key.x && key.y, 'Need both x and y coordinate');
35580 }
35581 this.pub = this.ec.curve.point(key.x, key.y);
35582 return;
35583 }
35584 this.pub = this.ec.curve.decodePoint(key, enc);
35585 };
35586
35587 // ECDH
35588 KeyPair.prototype.derive = function derive(pub) {
35589 return pub.mul(this.priv).getX();
35590 };
35591
35592 // ECDSA
35593 KeyPair.prototype.sign = function sign(msg, enc, options) {
35594 return this.ec.sign(msg, this, enc, options);
35595 };
35596
35597 KeyPair.prototype.verify = function verify(msg, signature) {
35598 return this.ec.verify(msg, signature, this);
35599 };
35600
35601 KeyPair.prototype.inspect = function inspect() {
35602 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
35603 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
35604 };
35605
35606 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
35607 'use strict';
35608
35609 var BN = require('bn.js');
35610
35611 var elliptic = require('../../elliptic');
35612 var utils = elliptic.utils;
35613 var assert = utils.assert;
35614
35615 function Signature(options, enc) {
35616 if (options instanceof Signature)
35617 return options;
35618
35619 if (this._importDER(options, enc))
35620 return;
35621
35622 assert(options.r && options.s, 'Signature without r or s');
35623 this.r = new BN(options.r, 16);
35624 this.s = new BN(options.s, 16);
35625 if (options.recoveryParam === undefined)
35626 this.recoveryParam = null;
35627 else
35628 this.recoveryParam = options.recoveryParam;
35629 }
35630 module.exports = Signature;
35631
35632 function Position() {
35633 this.place = 0;
35634 }
35635
35636 function getLength(buf, p) {
35637 var initial = buf[p.place++];
35638 if (!(initial & 0x80)) {
35639 return initial;
35640 }
35641 var octetLen = initial & 0xf;
35642 var val = 0;
35643 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
35644 val <<= 8;
35645 val |= buf[off];
35646 }
35647 p.place = off;
35648 return val;
35649 }
35650
35651 function rmPadding(buf) {
35652 var i = 0;
35653 var len = buf.length - 1;
35654 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
35655 i++;
35656 }
35657 if (i === 0) {
35658 return buf;
35659 }
35660 return buf.slice(i);
35661 }
35662
35663 Signature.prototype._importDER = function _importDER(data, enc) {
35664 data = utils.toArray(data, enc);
35665 var p = new Position();
35666 if (data[p.place++] !== 0x30) {
35667 return false;
35668 }
35669 var len = getLength(data, p);
35670 if ((len + p.place) !== data.length) {
35671 return false;
35672 }
35673 if (data[p.place++] !== 0x02) {
35674 return false;
35675 }
35676 var rlen = getLength(data, p);
35677 var r = data.slice(p.place, rlen + p.place);
35678 p.place += rlen;
35679 if (data[p.place++] !== 0x02) {
35680 return false;
35681 }
35682 var slen = getLength(data, p);
35683 if (data.length !== slen + p.place) {
35684 return false;
35685 }
35686 var s = data.slice(p.place, slen + p.place);
35687 if (r[0] === 0 && (r[1] & 0x80)) {
35688 r = r.slice(1);
35689 }
35690 if (s[0] === 0 && (s[1] & 0x80)) {
35691 s = s.slice(1);
35692 }
35693
35694 this.r = new BN(r);
35695 this.s = new BN(s);
35696 this.recoveryParam = null;
35697
35698 return true;
35699 };
35700
35701 function constructLength(arr, len) {
35702 if (len < 0x80) {
35703 arr.push(len);
35704 return;
35705 }
35706 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
35707 arr.push(octets | 0x80);
35708 while (--octets) {
35709 arr.push((len >>> (octets << 3)) & 0xff);
35710 }
35711 arr.push(len);
35712 }
35713
35714 Signature.prototype.toDER = function toDER(enc) {
35715 var r = this.r.toArray();
35716 var s = this.s.toArray();
35717
35718 // Pad values
35719 if (r[0] & 0x80)
35720 r = [ 0 ].concat(r);
35721 // Pad values
35722 if (s[0] & 0x80)
35723 s = [ 0 ].concat(s);
35724
35725 r = rmPadding(r);
35726 s = rmPadding(s);
35727
35728 while (!s[0] && !(s[1] & 0x80)) {
35729 s = s.slice(1);
35730 }
35731 var arr = [ 0x02 ];
35732 constructLength(arr, r.length);
35733 arr = arr.concat(r);
35734 arr.push(0x02);
35735 constructLength(arr, s.length);
35736 var backHalf = arr.concat(s);
35737 var res = [ 0x30 ];
35738 constructLength(res, backHalf.length);
35739 res = res.concat(backHalf);
35740 return utils.encode(res, enc);
35741 };
35742
35743 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
35744 'use strict';
35745
35746 var hash = require('hash.js');
35747 var elliptic = require('../../elliptic');
35748 var utils = elliptic.utils;
35749 var assert = utils.assert;
35750 var parseBytes = utils.parseBytes;
35751 var KeyPair = require('./key');
35752 var Signature = require('./signature');
35753
35754 function EDDSA(curve) {
35755 assert(curve === 'ed25519', 'only tested with ed25519 so far');
35756
35757 if (!(this instanceof EDDSA))
35758 return new EDDSA(curve);
35759
35760 var curve = elliptic.curves[curve].curve;
35761 this.curve = curve;
35762 this.g = curve.g;
35763 this.g.precompute(curve.n.bitLength() + 1);
35764
35765 this.pointClass = curve.point().constructor;
35766 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
35767 this.hash = hash.sha512;
35768 }
35769
35770 module.exports = EDDSA;
35771
35772 /**
35773 * @param {Array|String} message - message bytes
35774 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
35775 * @returns {Signature} - signature
35776 */
35777 EDDSA.prototype.sign = function sign(message, secret) {
35778 message = parseBytes(message);
35779 var key = this.keyFromSecret(secret);
35780 var r = this.hashInt(key.messagePrefix(), message);
35781 var R = this.g.mul(r);
35782 var Rencoded = this.encodePoint(R);
35783 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
35784 .mul(key.priv());
35785 var S = r.add(s_).umod(this.curve.n);
35786 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
35787 };
35788
35789 /**
35790 * @param {Array} message - message bytes
35791 * @param {Array|String|Signature} sig - sig bytes
35792 * @param {Array|String|Point|KeyPair} pub - public key
35793 * @returns {Boolean} - true if public key matches sig of message
35794 */
35795 EDDSA.prototype.verify = function verify(message, sig, pub) {
35796 message = parseBytes(message);
35797 sig = this.makeSignature(sig);
35798 var key = this.keyFromPublic(pub);
35799 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
35800 var SG = this.g.mul(sig.S());
35801 var RplusAh = sig.R().add(key.pub().mul(h));
35802 return RplusAh.eq(SG);
35803 };
35804
35805 EDDSA.prototype.hashInt = function hashInt() {
35806 var hash = this.hash();
35807 for (var i = 0; i < arguments.length; i++)
35808 hash.update(arguments[i]);
35809 return utils.intFromLE(hash.digest()).umod(this.curve.n);
35810 };
35811
35812 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
35813 return KeyPair.fromPublic(this, pub);
35814 };
35815
35816 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
35817 return KeyPair.fromSecret(this, secret);
35818 };
35819
35820 EDDSA.prototype.makeSignature = function makeSignature(sig) {
35821 if (sig instanceof Signature)
35822 return sig;
35823 return new Signature(this, sig);
35824 };
35825
35826 /**
35827 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
35828 *
35829 * EDDSA defines methods for encoding and decoding points and integers. These are
35830 * helper convenience methods, that pass along to utility functions implied
35831 * parameters.
35832 *
35833 */
35834 EDDSA.prototype.encodePoint = function encodePoint(point) {
35835 var enc = point.getY().toArray('le', this.encodingLength);
35836 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
35837 return enc;
35838 };
35839
35840 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
35841 bytes = utils.parseBytes(bytes);
35842
35843 var lastIx = bytes.length - 1;
35844 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
35845 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
35846
35847 var y = utils.intFromLE(normed);
35848 return this.curve.pointFromY(y, xIsOdd);
35849 };
35850
35851 EDDSA.prototype.encodeInt = function encodeInt(num) {
35852 return num.toArray('le', this.encodingLength);
35853 };
35854
35855 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
35856 return utils.intFromLE(bytes);
35857 };
35858
35859 EDDSA.prototype.isPoint = function isPoint(val) {
35860 return val instanceof this.pointClass;
35861 };
35862
35863 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
35864 'use strict';
35865
35866 var elliptic = require('../../elliptic');
35867 var utils = elliptic.utils;
35868 var assert = utils.assert;
35869 var parseBytes = utils.parseBytes;
35870 var cachedProperty = utils.cachedProperty;
35871
35872 /**
35873 * @param {EDDSA} eddsa - instance
35874 * @param {Object} params - public/private key parameters
35875 *
35876 * @param {Array<Byte>} [params.secret] - secret seed bytes
35877 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
35878 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
35879 *
35880 */
35881 function KeyPair(eddsa, params) {
35882 this.eddsa = eddsa;
35883 this._secret = parseBytes(params.secret);
35884 if (eddsa.isPoint(params.pub))
35885 this._pub = params.pub;
35886 else
35887 this._pubBytes = parseBytes(params.pub);
35888 }
35889
35890 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
35891 if (pub instanceof KeyPair)
35892 return pub;
35893 return new KeyPair(eddsa, { pub: pub });
35894 };
35895
35896 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
35897 if (secret instanceof KeyPair)
35898 return secret;
35899 return new KeyPair(eddsa, { secret: secret });
35900 };
35901
35902 KeyPair.prototype.secret = function secret() {
35903 return this._secret;
35904 };
35905
35906 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
35907 return this.eddsa.encodePoint(this.pub());
35908 });
35909
35910 cachedProperty(KeyPair, 'pub', function pub() {
35911 if (this._pubBytes)
35912 return this.eddsa.decodePoint(this._pubBytes);
35913 return this.eddsa.g.mul(this.priv());
35914 });
35915
35916 cachedProperty(KeyPair, 'privBytes', function privBytes() {
35917 var eddsa = this.eddsa;
35918 var hash = this.hash();
35919 var lastIx = eddsa.encodingLength - 1;
35920
35921 var a = hash.slice(0, eddsa.encodingLength);
35922 a[0] &= 248;
35923 a[lastIx] &= 127;
35924 a[lastIx] |= 64;
35925
35926 return a;
35927 });
35928
35929 cachedProperty(KeyPair, 'priv', function priv() {
35930 return this.eddsa.decodeInt(this.privBytes());
35931 });
35932
35933 cachedProperty(KeyPair, 'hash', function hash() {
35934 return this.eddsa.hash().update(this.secret()).digest();
35935 });
35936
35937 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
35938 return this.hash().slice(this.eddsa.encodingLength);
35939 });
35940
35941 KeyPair.prototype.sign = function sign(message) {
35942 assert(this._secret, 'KeyPair can only verify');
35943 return this.eddsa.sign(message, this);
35944 };
35945
35946 KeyPair.prototype.verify = function verify(message, sig) {
35947 return this.eddsa.verify(message, sig, this);
35948 };
35949
35950 KeyPair.prototype.getSecret = function getSecret(enc) {
35951 assert(this._secret, 'KeyPair is public only');
35952 return utils.encode(this.secret(), enc);
35953 };
35954
35955 KeyPair.prototype.getPublic = function getPublic(enc) {
35956 return utils.encode(this.pubBytes(), enc);
35957 };
35958
35959 module.exports = KeyPair;
35960
35961 },{"../../elliptic":39}],51:[function(require,module,exports){
35962 'use strict';
35963
35964 var BN = require('bn.js');
35965 var elliptic = require('../../elliptic');
35966 var utils = elliptic.utils;
35967 var assert = utils.assert;
35968 var cachedProperty = utils.cachedProperty;
35969 var parseBytes = utils.parseBytes;
35970
35971 /**
35972 * @param {EDDSA} eddsa - eddsa instance
35973 * @param {Array<Bytes>|Object} sig -
35974 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
35975 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
35976 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
35977 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
35978 */
35979 function Signature(eddsa, sig) {
35980 this.eddsa = eddsa;
35981
35982 if (typeof sig !== 'object')
35983 sig = parseBytes(sig);
35984
35985 if (Array.isArray(sig)) {
35986 sig = {
35987 R: sig.slice(0, eddsa.encodingLength),
35988 S: sig.slice(eddsa.encodingLength)
35989 };
35990 }
35991
35992 assert(sig.R && sig.S, 'Signature without R or S');
35993
35994 if (eddsa.isPoint(sig.R))
35995 this._R = sig.R;
35996 if (sig.S instanceof BN)
35997 this._S = sig.S;
35998
35999 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
36000 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
36001 }
36002
36003 cachedProperty(Signature, 'S', function S() {
36004 return this.eddsa.decodeInt(this.Sencoded());
36005 });
36006
36007 cachedProperty(Signature, 'R', function R() {
36008 return this.eddsa.decodePoint(this.Rencoded());
36009 });
36010
36011 cachedProperty(Signature, 'Rencoded', function Rencoded() {
36012 return this.eddsa.encodePoint(this.R());
36013 });
36014
36015 cachedProperty(Signature, 'Sencoded', function Sencoded() {
36016 return this.eddsa.encodeInt(this.S());
36017 });
36018
36019 Signature.prototype.toBytes = function toBytes() {
36020 return this.Rencoded().concat(this.Sencoded());
36021 };
36022
36023 Signature.prototype.toHex = function toHex() {
36024 return utils.encode(this.toBytes(), 'hex').toUpperCase();
36025 };
36026
36027 module.exports = Signature;
36028
36029 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
36030 'use strict';
36031
36032 var hash = require('hash.js');
36033 var elliptic = require('../elliptic');
36034 var utils = elliptic.utils;
36035 var assert = utils.assert;
36036
36037 function HmacDRBG(options) {
36038 if (!(this instanceof HmacDRBG))
36039 return new HmacDRBG(options);
36040 this.hash = options.hash;
36041 this.predResist = !!options.predResist;
36042
36043 this.outLen = this.hash.outSize;
36044 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
36045
36046 this.reseed = null;
36047 this.reseedInterval = null;
36048 this.K = null;
36049 this.V = null;
36050
36051 var entropy = utils.toArray(options.entropy, options.entropyEnc);
36052 var nonce = utils.toArray(options.nonce, options.nonceEnc);
36053 var pers = utils.toArray(options.pers, options.persEnc);
36054 assert(entropy.length >= (this.minEntropy / 8),
36055 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36056 this._init(entropy, nonce, pers);
36057 }
36058 module.exports = HmacDRBG;
36059
36060 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
36061 var seed = entropy.concat(nonce).concat(pers);
36062
36063 this.K = new Array(this.outLen / 8);
36064 this.V = new Array(this.outLen / 8);
36065 for (var i = 0; i < this.V.length; i++) {
36066 this.K[i] = 0x00;
36067 this.V[i] = 0x01;
36068 }
36069
36070 this._update(seed);
36071 this.reseed = 1;
36072 this.reseedInterval = 0x1000000000000; // 2^48
36073 };
36074
36075 HmacDRBG.prototype._hmac = function hmac() {
36076 return new hash.hmac(this.hash, this.K);
36077 };
36078
36079 HmacDRBG.prototype._update = function update(seed) {
36080 var kmac = this._hmac()
36081 .update(this.V)
36082 .update([ 0x00 ]);
36083 if (seed)
36084 kmac = kmac.update(seed);
36085 this.K = kmac.digest();
36086 this.V = this._hmac().update(this.V).digest();
36087 if (!seed)
36088 return;
36089
36090 this.K = this._hmac()
36091 .update(this.V)
36092 .update([ 0x01 ])
36093 .update(seed)
36094 .digest();
36095 this.V = this._hmac().update(this.V).digest();
36096 };
36097
36098 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
36099 // Optional entropy enc
36100 if (typeof entropyEnc !== 'string') {
36101 addEnc = add;
36102 add = entropyEnc;
36103 entropyEnc = null;
36104 }
36105
36106 entropy = utils.toBuffer(entropy, entropyEnc);
36107 add = utils.toBuffer(add, addEnc);
36108
36109 assert(entropy.length >= (this.minEntropy / 8),
36110 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36111
36112 this._update(entropy.concat(add || []));
36113 this.reseed = 1;
36114 };
36115
36116 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
36117 if (this.reseed > this.reseedInterval)
36118 throw new Error('Reseed is required');
36119
36120 // Optional encoding
36121 if (typeof enc !== 'string') {
36122 addEnc = add;
36123 add = enc;
36124 enc = null;
36125 }
36126
36127 // Optional additional data
36128 if (add) {
36129 add = utils.toArray(add, addEnc);
36130 this._update(add);
36131 }
36132
36133 var temp = [];
36134 while (temp.length < len) {
36135 this.V = this._hmac().update(this.V).digest();
36136 temp = temp.concat(this.V);
36137 }
36138
36139 var res = temp.slice(0, len);
36140 this._update(add);
36141 this.reseed++;
36142 return utils.encode(res, enc);
36143 };
36144
36145 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
36146 module.exports = {
36147 doubles: {
36148 step: 4,
36149 points: [
36150 [
36151 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
36152 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
36153 ],
36154 [
36155 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
36156 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
36157 ],
36158 [
36159 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
36160 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
36161 ],
36162 [
36163 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
36164 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
36165 ],
36166 [
36167 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
36168 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
36169 ],
36170 [
36171 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
36172 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
36173 ],
36174 [
36175 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
36176 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
36177 ],
36178 [
36179 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
36180 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
36181 ],
36182 [
36183 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
36184 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
36185 ],
36186 [
36187 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
36188 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
36189 ],
36190 [
36191 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
36192 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
36193 ],
36194 [
36195 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
36196 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
36197 ],
36198 [
36199 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
36200 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
36201 ],
36202 [
36203 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
36204 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
36205 ],
36206 [
36207 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
36208 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
36209 ],
36210 [
36211 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
36212 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
36213 ],
36214 [
36215 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
36216 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
36217 ],
36218 [
36219 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
36220 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
36221 ],
36222 [
36223 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
36224 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
36225 ],
36226 [
36227 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
36228 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
36229 ],
36230 [
36231 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
36232 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
36233 ],
36234 [
36235 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
36236 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
36237 ],
36238 [
36239 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
36240 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
36241 ],
36242 [
36243 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
36244 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
36245 ],
36246 [
36247 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
36248 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
36249 ],
36250 [
36251 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
36252 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
36253 ],
36254 [
36255 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
36256 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
36257 ],
36258 [
36259 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
36260 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
36261 ],
36262 [
36263 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
36264 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
36265 ],
36266 [
36267 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
36268 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
36269 ],
36270 [
36271 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
36272 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
36273 ],
36274 [
36275 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
36276 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
36277 ],
36278 [
36279 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
36280 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
36281 ],
36282 [
36283 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
36284 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
36285 ],
36286 [
36287 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
36288 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
36289 ],
36290 [
36291 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
36292 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
36293 ],
36294 [
36295 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
36296 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
36297 ],
36298 [
36299 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
36300 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
36301 ],
36302 [
36303 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
36304 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
36305 ],
36306 [
36307 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
36308 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
36309 ],
36310 [
36311 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
36312 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
36313 ],
36314 [
36315 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
36316 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
36317 ],
36318 [
36319 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
36320 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
36321 ],
36322 [
36323 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
36324 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
36325 ],
36326 [
36327 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
36328 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
36329 ],
36330 [
36331 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
36332 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
36333 ],
36334 [
36335 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
36336 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
36337 ],
36338 [
36339 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
36340 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
36341 ],
36342 [
36343 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
36344 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
36345 ],
36346 [
36347 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
36348 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
36349 ],
36350 [
36351 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
36352 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
36353 ],
36354 [
36355 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
36356 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
36357 ],
36358 [
36359 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
36360 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
36361 ],
36362 [
36363 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
36364 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
36365 ],
36366 [
36367 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
36368 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
36369 ],
36370 [
36371 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
36372 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
36373 ],
36374 [
36375 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
36376 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
36377 ],
36378 [
36379 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
36380 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
36381 ],
36382 [
36383 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
36384 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
36385 ],
36386 [
36387 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
36388 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
36389 ],
36390 [
36391 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
36392 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
36393 ],
36394 [
36395 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
36396 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
36397 ],
36398 [
36399 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
36400 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
36401 ],
36402 [
36403 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
36404 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
36405 ],
36406 [
36407 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
36408 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
36409 ]
36410 ]
36411 },
36412 naf: {
36413 wnd: 7,
36414 points: [
36415 [
36416 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
36417 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
36418 ],
36419 [
36420 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
36421 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
36422 ],
36423 [
36424 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
36425 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
36426 ],
36427 [
36428 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
36429 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
36430 ],
36431 [
36432 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
36433 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
36434 ],
36435 [
36436 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
36437 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
36438 ],
36439 [
36440 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
36441 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
36442 ],
36443 [
36444 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
36445 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
36446 ],
36447 [
36448 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
36449 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
36450 ],
36451 [
36452 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
36453 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
36454 ],
36455 [
36456 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
36457 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
36458 ],
36459 [
36460 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
36461 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
36462 ],
36463 [
36464 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
36465 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
36466 ],
36467 [
36468 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
36469 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
36470 ],
36471 [
36472 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
36473 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
36474 ],
36475 [
36476 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
36477 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
36478 ],
36479 [
36480 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
36481 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
36482 ],
36483 [
36484 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
36485 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
36486 ],
36487 [
36488 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
36489 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
36490 ],
36491 [
36492 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
36493 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
36494 ],
36495 [
36496 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
36497 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
36498 ],
36499 [
36500 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
36501 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
36502 ],
36503 [
36504 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
36505 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
36506 ],
36507 [
36508 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
36509 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
36510 ],
36511 [
36512 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
36513 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
36514 ],
36515 [
36516 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
36517 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
36518 ],
36519 [
36520 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
36521 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
36522 ],
36523 [
36524 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
36525 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
36526 ],
36527 [
36528 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
36529 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
36530 ],
36531 [
36532 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
36533 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
36534 ],
36535 [
36536 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
36537 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
36538 ],
36539 [
36540 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
36541 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
36542 ],
36543 [
36544 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
36545 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
36546 ],
36547 [
36548 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
36549 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
36550 ],
36551 [
36552 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
36553 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
36554 ],
36555 [
36556 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
36557 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
36558 ],
36559 [
36560 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
36561 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
36562 ],
36563 [
36564 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
36565 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
36566 ],
36567 [
36568 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
36569 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
36570 ],
36571 [
36572 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
36573 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
36574 ],
36575 [
36576 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
36577 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
36578 ],
36579 [
36580 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
36581 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
36582 ],
36583 [
36584 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
36585 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
36586 ],
36587 [
36588 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
36589 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
36590 ],
36591 [
36592 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
36593 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
36594 ],
36595 [
36596 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
36597 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
36598 ],
36599 [
36600 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
36601 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
36602 ],
36603 [
36604 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
36605 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
36606 ],
36607 [
36608 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
36609 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
36610 ],
36611 [
36612 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
36613 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
36614 ],
36615 [
36616 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
36617 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
36618 ],
36619 [
36620 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
36621 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
36622 ],
36623 [
36624 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
36625 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
36626 ],
36627 [
36628 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
36629 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
36630 ],
36631 [
36632 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
36633 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
36634 ],
36635 [
36636 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
36637 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
36638 ],
36639 [
36640 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
36641 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
36642 ],
36643 [
36644 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
36645 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
36646 ],
36647 [
36648 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
36649 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
36650 ],
36651 [
36652 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
36653 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
36654 ],
36655 [
36656 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
36657 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
36658 ],
36659 [
36660 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
36661 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
36662 ],
36663 [
36664 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
36665 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
36666 ],
36667 [
36668 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
36669 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
36670 ],
36671 [
36672 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
36673 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
36674 ],
36675 [
36676 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
36677 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
36678 ],
36679 [
36680 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
36681 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
36682 ],
36683 [
36684 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
36685 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
36686 ],
36687 [
36688 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
36689 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
36690 ],
36691 [
36692 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
36693 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
36694 ],
36695 [
36696 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
36697 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
36698 ],
36699 [
36700 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
36701 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
36702 ],
36703 [
36704 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
36705 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
36706 ],
36707 [
36708 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
36709 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
36710 ],
36711 [
36712 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
36713 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
36714 ],
36715 [
36716 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
36717 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
36718 ],
36719 [
36720 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
36721 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
36722 ],
36723 [
36724 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
36725 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
36726 ],
36727 [
36728 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
36729 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
36730 ],
36731 [
36732 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
36733 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
36734 ],
36735 [
36736 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
36737 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
36738 ],
36739 [
36740 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
36741 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
36742 ],
36743 [
36744 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
36745 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
36746 ],
36747 [
36748 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
36749 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
36750 ],
36751 [
36752 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
36753 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
36754 ],
36755 [
36756 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
36757 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
36758 ],
36759 [
36760 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
36761 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
36762 ],
36763 [
36764 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
36765 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
36766 ],
36767 [
36768 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
36769 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
36770 ],
36771 [
36772 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
36773 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
36774 ],
36775 [
36776 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
36777 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
36778 ],
36779 [
36780 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
36781 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
36782 ],
36783 [
36784 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
36785 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
36786 ],
36787 [
36788 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
36789 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
36790 ],
36791 [
36792 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
36793 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
36794 ],
36795 [
36796 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
36797 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
36798 ],
36799 [
36800 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
36801 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
36802 ],
36803 [
36804 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
36805 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
36806 ],
36807 [
36808 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
36809 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
36810 ],
36811 [
36812 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
36813 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
36814 ],
36815 [
36816 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
36817 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
36818 ],
36819 [
36820 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
36821 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
36822 ],
36823 [
36824 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
36825 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
36826 ],
36827 [
36828 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
36829 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
36830 ],
36831 [
36832 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
36833 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
36834 ],
36835 [
36836 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
36837 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
36838 ],
36839 [
36840 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
36841 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
36842 ],
36843 [
36844 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
36845 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
36846 ],
36847 [
36848 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
36849 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
36850 ],
36851 [
36852 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
36853 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
36854 ],
36855 [
36856 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
36857 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
36858 ],
36859 [
36860 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
36861 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
36862 ],
36863 [
36864 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
36865 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
36866 ],
36867 [
36868 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
36869 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
36870 ],
36871 [
36872 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
36873 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
36874 ],
36875 [
36876 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
36877 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
36878 ],
36879 [
36880 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
36881 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
36882 ],
36883 [
36884 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
36885 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
36886 ],
36887 [
36888 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
36889 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
36890 ],
36891 [
36892 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
36893 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
36894 ],
36895 [
36896 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
36897 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
36898 ],
36899 [
36900 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
36901 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
36902 ],
36903 [
36904 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
36905 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
36906 ],
36907 [
36908 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
36909 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
36910 ],
36911 [
36912 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
36913 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
36914 ],
36915 [
36916 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
36917 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
36918 ],
36919 [
36920 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
36921 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
36922 ]
36923 ]
36924 }
36925 };
36926
36927 },{}],54:[function(require,module,exports){
36928 'use strict';
36929
36930 var utils = exports;
36931 var BN = require('bn.js');
36932
36933 utils.assert = function assert(val, msg) {
36934 if (!val)
36935 throw new Error(msg || 'Assertion failed');
36936 };
36937
36938 function toArray(msg, enc) {
36939 if (Array.isArray(msg))
36940 return msg.slice();
36941 if (!msg)
36942 return [];
36943 var res = [];
36944 if (typeof msg !== 'string') {
36945 for (var i = 0; i < msg.length; i++)
36946 res[i] = msg[i] | 0;
36947 return res;
36948 }
36949 if (!enc) {
36950 for (var i = 0; i < msg.length; i++) {
36951 var c = msg.charCodeAt(i);
36952 var hi = c >> 8;
36953 var lo = c & 0xff;
36954 if (hi)
36955 res.push(hi, lo);
36956 else
36957 res.push(lo);
36958 }
36959 } else if (enc === 'hex') {
36960 msg = msg.replace(/[^a-z0-9]+/ig, '');
36961 if (msg.length % 2 !== 0)
36962 msg = '0' + msg;
36963 for (var i = 0; i < msg.length; i += 2)
36964 res.push(parseInt(msg[i] + msg[i + 1], 16));
36965 }
36966 return res;
36967 }
36968 utils.toArray = toArray;
36969
36970 function zero2(word) {
36971 if (word.length === 1)
36972 return '0' + word;
36973 else
36974 return word;
36975 }
36976 utils.zero2 = zero2;
36977
36978 function toHex(msg) {
36979 var res = '';
36980 for (var i = 0; i < msg.length; i++)
36981 res += zero2(msg[i].toString(16));
36982 return res;
36983 }
36984 utils.toHex = toHex;
36985
36986 utils.encode = function encode(arr, enc) {
36987 if (enc === 'hex')
36988 return toHex(arr);
36989 else
36990 return arr;
36991 };
36992
36993 // Represent num in a w-NAF form
36994 function getNAF(num, w) {
36995 var naf = [];
36996 var ws = 1 << (w + 1);
36997 var k = num.clone();
36998 while (k.cmpn(1) >= 0) {
36999 var z;
37000 if (k.isOdd()) {
37001 var mod = k.andln(ws - 1);
37002 if (mod > (ws >> 1) - 1)
37003 z = (ws >> 1) - mod;
37004 else
37005 z = mod;
37006 k.isubn(z);
37007 } else {
37008 z = 0;
37009 }
37010 naf.push(z);
37011
37012 // Optimization, shift by word if possible
37013 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
37014 for (var i = 1; i < shift; i++)
37015 naf.push(0);
37016 k.iushrn(shift);
37017 }
37018
37019 return naf;
37020 }
37021 utils.getNAF = getNAF;
37022
37023 // Represent k1, k2 in a Joint Sparse Form
37024 function getJSF(k1, k2) {
37025 var jsf = [
37026 [],
37027 []
37028 ];
37029
37030 k1 = k1.clone();
37031 k2 = k2.clone();
37032 var d1 = 0;
37033 var d2 = 0;
37034 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
37035
37036 // First phase
37037 var m14 = (k1.andln(3) + d1) & 3;
37038 var m24 = (k2.andln(3) + d2) & 3;
37039 if (m14 === 3)
37040 m14 = -1;
37041 if (m24 === 3)
37042 m24 = -1;
37043 var u1;
37044 if ((m14 & 1) === 0) {
37045 u1 = 0;
37046 } else {
37047 var m8 = (k1.andln(7) + d1) & 7;
37048 if ((m8 === 3 || m8 === 5) && m24 === 2)
37049 u1 = -m14;
37050 else
37051 u1 = m14;
37052 }
37053 jsf[0].push(u1);
37054
37055 var u2;
37056 if ((m24 & 1) === 0) {
37057 u2 = 0;
37058 } else {
37059 var m8 = (k2.andln(7) + d2) & 7;
37060 if ((m8 === 3 || m8 === 5) && m14 === 2)
37061 u2 = -m24;
37062 else
37063 u2 = m24;
37064 }
37065 jsf[1].push(u2);
37066
37067 // Second phase
37068 if (2 * d1 === u1 + 1)
37069 d1 = 1 - d1;
37070 if (2 * d2 === u2 + 1)
37071 d2 = 1 - d2;
37072 k1.iushrn(1);
37073 k2.iushrn(1);
37074 }
37075
37076 return jsf;
37077 }
37078 utils.getJSF = getJSF;
37079
37080 function cachedProperty(obj, name, computer) {
37081 var key = '_' + name;
37082 obj.prototype[name] = function cachedProperty() {
37083 return this[key] !== undefined ? this[key] :
37084 this[key] = computer.call(this);
37085 };
37086 }
37087 utils.cachedProperty = cachedProperty;
37088
37089 function parseBytes(bytes) {
37090 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
37091 bytes;
37092 }
37093 utils.parseBytes = parseBytes;
37094
37095 function intFromLE(bytes) {
37096 return new BN(bytes, 'hex', 'le');
37097 }
37098 utils.intFromLE = intFromLE;
37099
37100
37101 },{"bn.js":33}],55:[function(require,module,exports){
37102 module.exports={
37103 "_args": [
37104 [
37105 {
37106 "raw": "elliptic@^6.2.3",
37107 "scope": null,
37108 "escapedName": "elliptic",
37109 "name": "elliptic",
37110 "rawSpec": "^6.2.3",
37111 "spec": ">=6.2.3 <7.0.0",
37112 "type": "range"
37113 },
37114 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
37115 ]
37116 ],
37117 "_from": "elliptic@>=6.2.3 <7.0.0",
37118 "_id": "elliptic@6.3.3",
37119 "_inCache": true,
37120 "_location": "/elliptic",
37121 "_nodeVersion": "7.0.0",
37122 "_npmOperationalInternal": {
37123 "host": "packages-18-east.internal.npmjs.com",
37124 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
37125 },
37126 "_npmUser": {
37127 "name": "indutny",
37128 "email": "fedor@indutny.com"
37129 },
37130 "_npmVersion": "3.10.8",
37131 "_phantomChildren": {},
37132 "_requested": {
37133 "raw": "elliptic@^6.2.3",
37134 "scope": null,
37135 "escapedName": "elliptic",
37136 "name": "elliptic",
37137 "rawSpec": "^6.2.3",
37138 "spec": ">=6.2.3 <7.0.0",
37139 "type": "range"
37140 },
37141 "_requiredBy": [
37142 "/browserify-sign",
37143 "/create-ecdh",
37144 "/secp256k1"
37145 ],
37146 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
37147 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37148 "_shrinkwrap": null,
37149 "_spec": "elliptic@^6.2.3",
37150 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
37151 "author": {
37152 "name": "Fedor Indutny",
37153 "email": "fedor@indutny.com"
37154 },
37155 "bugs": {
37156 "url": "https://github.com/indutny/elliptic/issues"
37157 },
37158 "dependencies": {
37159 "bn.js": "^4.4.0",
37160 "brorand": "^1.0.1",
37161 "hash.js": "^1.0.0",
37162 "inherits": "^2.0.1"
37163 },
37164 "description": "EC cryptography",
37165 "devDependencies": {
37166 "brfs": "^1.4.3",
37167 "coveralls": "^2.11.3",
37168 "grunt": "^0.4.5",
37169 "grunt-browserify": "^5.0.0",
37170 "grunt-cli": "^1.2.0",
37171 "grunt-contrib-connect": "^1.0.0",
37172 "grunt-contrib-copy": "^1.0.0",
37173 "grunt-contrib-uglify": "^1.0.1",
37174 "grunt-mocha-istanbul": "^3.0.1",
37175 "grunt-saucelabs": "^8.6.2",
37176 "istanbul": "^0.4.2",
37177 "jscs": "^2.9.0",
37178 "jshint": "^2.6.0",
37179 "mocha": "^2.1.0"
37180 },
37181 "directories": {},
37182 "dist": {
37183 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37184 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
37185 },
37186 "files": [
37187 "lib"
37188 ],
37189 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
37190 "homepage": "https://github.com/indutny/elliptic",
37191 "keywords": [
37192 "EC",
37193 "Elliptic",
37194 "curve",
37195 "Cryptography"
37196 ],
37197 "license": "MIT",
37198 "main": "lib/elliptic.js",
37199 "maintainers": [
37200 {
37201 "name": "indutny",
37202 "email": "fedor@indutny.com"
37203 }
37204 ],
37205 "name": "elliptic",
37206 "optionalDependencies": {},
37207 "readme": "ERROR: No README data found!",
37208 "repository": {
37209 "type": "git",
37210 "url": "git+ssh://git@github.com/indutny/elliptic.git"
37211 },
37212 "scripts": {
37213 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37214 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37215 "lint": "npm run jscs && npm run jshint",
37216 "test": "npm run lint && npm run unit",
37217 "unit": "istanbul test _mocha --reporter=spec test/index.js",
37218 "version": "grunt dist && git add dist/"
37219 },
37220 "version": "6.3.3"
37221 }
37222
37223 },{}],56:[function(require,module,exports){
37224 (function (Buffer){
37225 'use strict';
37226
37227 var isHexPrefixed = require('is-hex-prefixed');
37228 var stripHexPrefix = require('strip-hex-prefix');
37229
37230 /**
37231 * Pads a `String` to have an even length
37232 * @param {String} value
37233 * @return {String} output
37234 */
37235 function padToEven(value) {
37236 var a = value; // eslint-disable-line
37237
37238 if (typeof a !== 'string') {
37239 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
37240 }
37241
37242 if (a.length % 2) {
37243 a = '0' + a;
37244 }
37245
37246 return a;
37247 }
37248
37249 /**
37250 * Converts a `Number` into a hex `String`
37251 * @param {Number} i
37252 * @return {String}
37253 */
37254 function intToHex(i) {
37255 var hex = i.toString(16); // eslint-disable-line
37256
37257 return '0x' + padToEven(hex);
37258 }
37259
37260 /**
37261 * Converts an `Number` to a `Buffer`
37262 * @param {Number} i
37263 * @return {Buffer}
37264 */
37265 function intToBuffer(i) {
37266 var hex = intToHex(i);
37267
37268 return new Buffer(hex.slice(2), 'hex');
37269 }
37270
37271 /**
37272 * Get the binary size of a string
37273 * @param {String} str
37274 * @return {Number}
37275 */
37276 function getBinarySize(str) {
37277 if (typeof str !== 'string') {
37278 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
37279 }
37280
37281 return Buffer.byteLength(str, 'utf8');
37282 }
37283
37284 /**
37285 * Returns TRUE if the first specified array contains all elements
37286 * from the second one. FALSE otherwise.
37287 *
37288 * @param {array} superset
37289 * @param {array} subset
37290 *
37291 * @returns {boolean}
37292 */
37293 function arrayContainsArray(superset, subset, some) {
37294 if (Array.isArray(superset) !== true) {
37295 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
37296 }
37297 if (Array.isArray(subset) !== true) {
37298 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
37299 }
37300
37301 return subset[Boolean(some) && 'some' || 'every'](function (value) {
37302 return superset.indexOf(value) >= 0;
37303 });
37304 }
37305
37306 /**
37307 * Should be called to get utf8 from it's hex representation
37308 *
37309 * @method toUtf8
37310 * @param {String} string in hex
37311 * @returns {String} ascii string representation of hex value
37312 */
37313 function toUtf8(hex) {
37314 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
37315
37316 return bufferValue.toString('utf8');
37317 }
37318
37319 /**
37320 * Should be called to get ascii from it's hex representation
37321 *
37322 * @method toAscii
37323 * @param {String} string in hex
37324 * @returns {String} ascii string representation of hex value
37325 */
37326 function toAscii(hex) {
37327 var str = ''; // eslint-disable-line
37328 var i = 0,
37329 l = hex.length; // eslint-disable-line
37330
37331 if (hex.substring(0, 2) === '0x') {
37332 i = 2;
37333 }
37334
37335 for (; i < l; i += 2) {
37336 var code = parseInt(hex.substr(i, 2), 16);
37337 str += String.fromCharCode(code);
37338 }
37339
37340 return str;
37341 }
37342
37343 /**
37344 * Should be called to get hex representation (prefixed by 0x) of utf8 string
37345 *
37346 * @method fromUtf8
37347 * @param {String} string
37348 * @param {Number} optional padding
37349 * @returns {String} hex representation of input string
37350 */
37351 function fromUtf8(stringValue) {
37352 var str = new Buffer(stringValue, 'utf8');
37353
37354 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
37355 }
37356
37357 /**
37358 * Should be called to get hex representation (prefixed by 0x) of ascii string
37359 *
37360 * @method fromAscii
37361 * @param {String} string
37362 * @param {Number} optional padding
37363 * @returns {String} hex representation of input string
37364 */
37365 function fromAscii(stringValue) {
37366 var hex = ''; // eslint-disable-line
37367 for (var i = 0; i < stringValue.length; i++) {
37368 // eslint-disable-line
37369 var code = stringValue.charCodeAt(i);
37370 var n = code.toString(16);
37371 hex += n.length < 2 ? '0' + n : n;
37372 }
37373
37374 return '0x' + hex;
37375 }
37376
37377 /**
37378 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
37379 *
37380 * @method getKeys get specific key from inner object array of objects
37381 * @param {String} params
37382 * @param {String} key
37383 * @param {Boolean} allowEmpty
37384 * @returns {Array} output just a simple array of output keys
37385 */
37386 function getKeys(params, key, allowEmpty) {
37387 if (!Array.isArray(params)) {
37388 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
37389 }
37390 if (typeof key !== 'string') {
37391 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
37392 }
37393
37394 var result = []; // eslint-disable-line
37395
37396 for (var i = 0; i < params.length; i++) {
37397 // eslint-disable-line
37398 var value = params[i][key]; // eslint-disable-line
37399 if (allowEmpty && !value) {
37400 value = '';
37401 } else if (typeof value !== 'string') {
37402 throw new Error('invalid abi');
37403 }
37404 result.push(value);
37405 }
37406
37407 return result;
37408 }
37409
37410 /**
37411 * Is the string a hex string.
37412 *
37413 * @method check if string is hex string of specific length
37414 * @param {String} value
37415 * @param {Number} length
37416 * @returns {Boolean} output the string is a hex string
37417 */
37418 function isHexString(value, length) {
37419 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
37420 return false;
37421 }
37422
37423 if (length && value.length !== 2 + 2 * length) {
37424 return false;
37425 }
37426
37427 return true;
37428 }
37429
37430 module.exports = {
37431 arrayContainsArray: arrayContainsArray,
37432 intToBuffer: intToBuffer,
37433 getBinarySize: getBinarySize,
37434 isHexPrefixed: isHexPrefixed,
37435 stripHexPrefix: stripHexPrefix,
37436 padToEven: padToEven,
37437 intToHex: intToHex,
37438 fromAscii: fromAscii,
37439 fromUtf8: fromUtf8,
37440 toAscii: toAscii,
37441 toUtf8: toUtf8,
37442 getKeys: getKeys,
37443 isHexString: isHexString
37444 };
37445 }).call(this,require("buffer").Buffer)
37446 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
37447 var hash = exports;
37448
37449 hash.utils = require('./hash/utils');
37450 hash.common = require('./hash/common');
37451 hash.sha = require('./hash/sha');
37452 hash.ripemd = require('./hash/ripemd');
37453 hash.hmac = require('./hash/hmac');
37454
37455 // Proxy hash functions to the main object
37456 hash.sha1 = hash.sha.sha1;
37457 hash.sha256 = hash.sha.sha256;
37458 hash.sha224 = hash.sha.sha224;
37459 hash.sha384 = hash.sha.sha384;
37460 hash.sha512 = hash.sha.sha512;
37461 hash.ripemd160 = hash.ripemd.ripemd160;
37462
37463 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
37464 var hash = require('../hash');
37465 var utils = hash.utils;
37466 var assert = utils.assert;
37467
37468 function BlockHash() {
37469 this.pending = null;
37470 this.pendingTotal = 0;
37471 this.blockSize = this.constructor.blockSize;
37472 this.outSize = this.constructor.outSize;
37473 this.hmacStrength = this.constructor.hmacStrength;
37474 this.padLength = this.constructor.padLength / 8;
37475 this.endian = 'big';
37476
37477 this._delta8 = this.blockSize / 8;
37478 this._delta32 = this.blockSize / 32;
37479 }
37480 exports.BlockHash = BlockHash;
37481
37482 BlockHash.prototype.update = function update(msg, enc) {
37483 // Convert message to array, pad it, and join into 32bit blocks
37484 msg = utils.toArray(msg, enc);
37485 if (!this.pending)
37486 this.pending = msg;
37487 else
37488 this.pending = this.pending.concat(msg);
37489 this.pendingTotal += msg.length;
37490
37491 // Enough data, try updating
37492 if (this.pending.length >= this._delta8) {
37493 msg = this.pending;
37494
37495 // Process pending data in blocks
37496 var r = msg.length % this._delta8;
37497 this.pending = msg.slice(msg.length - r, msg.length);
37498 if (this.pending.length === 0)
37499 this.pending = null;
37500
37501 msg = utils.join32(msg, 0, msg.length - r, this.endian);
37502 for (var i = 0; i < msg.length; i += this._delta32)
37503 this._update(msg, i, i + this._delta32);
37504 }
37505
37506 return this;
37507 };
37508
37509 BlockHash.prototype.digest = function digest(enc) {
37510 this.update(this._pad());
37511 assert(this.pending === null);
37512
37513 return this._digest(enc);
37514 };
37515
37516 BlockHash.prototype._pad = function pad() {
37517 var len = this.pendingTotal;
37518 var bytes = this._delta8;
37519 var k = bytes - ((len + this.padLength) % bytes);
37520 var res = new Array(k + this.padLength);
37521 res[0] = 0x80;
37522 for (var i = 1; i < k; i++)
37523 res[i] = 0;
37524
37525 // Append length
37526 len <<= 3;
37527 if (this.endian === 'big') {
37528 for (var t = 8; t < this.padLength; t++)
37529 res[i++] = 0;
37530
37531 res[i++] = 0;
37532 res[i++] = 0;
37533 res[i++] = 0;
37534 res[i++] = 0;
37535 res[i++] = (len >>> 24) & 0xff;
37536 res[i++] = (len >>> 16) & 0xff;
37537 res[i++] = (len >>> 8) & 0xff;
37538 res[i++] = len & 0xff;
37539 } else {
37540 res[i++] = len & 0xff;
37541 res[i++] = (len >>> 8) & 0xff;
37542 res[i++] = (len >>> 16) & 0xff;
37543 res[i++] = (len >>> 24) & 0xff;
37544 res[i++] = 0;
37545 res[i++] = 0;
37546 res[i++] = 0;
37547 res[i++] = 0;
37548
37549 for (var t = 8; t < this.padLength; t++)
37550 res[i++] = 0;
37551 }
37552
37553 return res;
37554 };
37555
37556 },{"../hash":57}],59:[function(require,module,exports){
37557 var hmac = exports;
37558
37559 var hash = require('../hash');
37560 var utils = hash.utils;
37561 var assert = utils.assert;
37562
37563 function Hmac(hash, key, enc) {
37564 if (!(this instanceof Hmac))
37565 return new Hmac(hash, key, enc);
37566 this.Hash = hash;
37567 this.blockSize = hash.blockSize / 8;
37568 this.outSize = hash.outSize / 8;
37569 this.inner = null;
37570 this.outer = null;
37571
37572 this._init(utils.toArray(key, enc));
37573 }
37574 module.exports = Hmac;
37575
37576 Hmac.prototype._init = function init(key) {
37577 // Shorten key, if needed
37578 if (key.length > this.blockSize)
37579 key = new this.Hash().update(key).digest();
37580 assert(key.length <= this.blockSize);
37581
37582 // Add padding to key
37583 for (var i = key.length; i < this.blockSize; i++)
37584 key.push(0);
37585
37586 for (var i = 0; i < key.length; i++)
37587 key[i] ^= 0x36;
37588 this.inner = new this.Hash().update(key);
37589
37590 // 0x36 ^ 0x5c = 0x6a
37591 for (var i = 0; i < key.length; i++)
37592 key[i] ^= 0x6a;
37593 this.outer = new this.Hash().update(key);
37594 };
37595
37596 Hmac.prototype.update = function update(msg, enc) {
37597 this.inner.update(msg, enc);
37598 return this;
37599 };
37600
37601 Hmac.prototype.digest = function digest(enc) {
37602 this.outer.update(this.inner.digest());
37603 return this.outer.digest(enc);
37604 };
37605
37606 },{"../hash":57}],60:[function(require,module,exports){
37607 var hash = require('../hash');
37608 var utils = hash.utils;
37609
37610 var rotl32 = utils.rotl32;
37611 var sum32 = utils.sum32;
37612 var sum32_3 = utils.sum32_3;
37613 var sum32_4 = utils.sum32_4;
37614 var BlockHash = hash.common.BlockHash;
37615
37616 function RIPEMD160() {
37617 if (!(this instanceof RIPEMD160))
37618 return new RIPEMD160();
37619
37620 BlockHash.call(this);
37621
37622 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
37623 this.endian = 'little';
37624 }
37625 utils.inherits(RIPEMD160, BlockHash);
37626 exports.ripemd160 = RIPEMD160;
37627
37628 RIPEMD160.blockSize = 512;
37629 RIPEMD160.outSize = 160;
37630 RIPEMD160.hmacStrength = 192;
37631 RIPEMD160.padLength = 64;
37632
37633 RIPEMD160.prototype._update = function update(msg, start) {
37634 var A = this.h[0];
37635 var B = this.h[1];
37636 var C = this.h[2];
37637 var D = this.h[3];
37638 var E = this.h[4];
37639 var Ah = A;
37640 var Bh = B;
37641 var Ch = C;
37642 var Dh = D;
37643 var Eh = E;
37644 for (var j = 0; j < 80; j++) {
37645 var T = sum32(
37646 rotl32(
37647 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
37648 s[j]),
37649 E);
37650 A = E;
37651 E = D;
37652 D = rotl32(C, 10);
37653 C = B;
37654 B = T;
37655 T = sum32(
37656 rotl32(
37657 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
37658 sh[j]),
37659 Eh);
37660 Ah = Eh;
37661 Eh = Dh;
37662 Dh = rotl32(Ch, 10);
37663 Ch = Bh;
37664 Bh = T;
37665 }
37666 T = sum32_3(this.h[1], C, Dh);
37667 this.h[1] = sum32_3(this.h[2], D, Eh);
37668 this.h[2] = sum32_3(this.h[3], E, Ah);
37669 this.h[3] = sum32_3(this.h[4], A, Bh);
37670 this.h[4] = sum32_3(this.h[0], B, Ch);
37671 this.h[0] = T;
37672 };
37673
37674 RIPEMD160.prototype._digest = function digest(enc) {
37675 if (enc === 'hex')
37676 return utils.toHex32(this.h, 'little');
37677 else
37678 return utils.split32(this.h, 'little');
37679 };
37680
37681 function f(j, x, y, z) {
37682 if (j <= 15)
37683 return x ^ y ^ z;
37684 else if (j <= 31)
37685 return (x & y) | ((~x) & z);
37686 else if (j <= 47)
37687 return (x | (~y)) ^ z;
37688 else if (j <= 63)
37689 return (x & z) | (y & (~z));
37690 else
37691 return x ^ (y | (~z));
37692 }
37693
37694 function K(j) {
37695 if (j <= 15)
37696 return 0x00000000;
37697 else if (j <= 31)
37698 return 0x5a827999;
37699 else if (j <= 47)
37700 return 0x6ed9eba1;
37701 else if (j <= 63)
37702 return 0x8f1bbcdc;
37703 else
37704 return 0xa953fd4e;
37705 }
37706
37707 function Kh(j) {
37708 if (j <= 15)
37709 return 0x50a28be6;
37710 else if (j <= 31)
37711 return 0x5c4dd124;
37712 else if (j <= 47)
37713 return 0x6d703ef3;
37714 else if (j <= 63)
37715 return 0x7a6d76e9;
37716 else
37717 return 0x00000000;
37718 }
37719
37720 var r = [
37721 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
37722 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
37723 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
37724 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
37725 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
37726 ];
37727
37728 var rh = [
37729 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
37730 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
37731 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
37732 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
37733 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
37734 ];
37735
37736 var s = [
37737 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
37738 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
37739 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
37740 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
37741 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
37742 ];
37743
37744 var sh = [
37745 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
37746 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
37747 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
37748 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
37749 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
37750 ];
37751
37752 },{"../hash":57}],61:[function(require,module,exports){
37753 var hash = require('../hash');
37754 var utils = hash.utils;
37755 var assert = utils.assert;
37756
37757 var rotr32 = utils.rotr32;
37758 var rotl32 = utils.rotl32;
37759 var sum32 = utils.sum32;
37760 var sum32_4 = utils.sum32_4;
37761 var sum32_5 = utils.sum32_5;
37762 var rotr64_hi = utils.rotr64_hi;
37763 var rotr64_lo = utils.rotr64_lo;
37764 var shr64_hi = utils.shr64_hi;
37765 var shr64_lo = utils.shr64_lo;
37766 var sum64 = utils.sum64;
37767 var sum64_hi = utils.sum64_hi;
37768 var sum64_lo = utils.sum64_lo;
37769 var sum64_4_hi = utils.sum64_4_hi;
37770 var sum64_4_lo = utils.sum64_4_lo;
37771 var sum64_5_hi = utils.sum64_5_hi;
37772 var sum64_5_lo = utils.sum64_5_lo;
37773 var BlockHash = hash.common.BlockHash;
37774
37775 var sha256_K = [
37776 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
37777 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37778 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
37779 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37780 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
37781 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37782 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
37783 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37784 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
37785 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37786 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
37787 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37788 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
37789 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37790 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
37791 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
37792 ];
37793
37794 var sha512_K = [
37795 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
37796 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37797 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
37798 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37799 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
37800 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37801 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
37802 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37803 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
37804 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37805 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
37806 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37807 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
37808 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37809 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
37810 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37811 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
37812 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37813 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
37814 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37815 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
37816 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37817 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
37818 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37819 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
37820 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37821 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
37822 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37823 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
37824 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37825 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
37826 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37827 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
37828 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37829 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
37830 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37831 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
37832 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37833 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
37834 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
37835 ];
37836
37837 var sha1_K = [
37838 0x5A827999, 0x6ED9EBA1,
37839 0x8F1BBCDC, 0xCA62C1D6
37840 ];
37841
37842 function SHA256() {
37843 if (!(this instanceof SHA256))
37844 return new SHA256();
37845
37846 BlockHash.call(this);
37847 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
37848 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
37849 this.k = sha256_K;
37850 this.W = new Array(64);
37851 }
37852 utils.inherits(SHA256, BlockHash);
37853 exports.sha256 = SHA256;
37854
37855 SHA256.blockSize = 512;
37856 SHA256.outSize = 256;
37857 SHA256.hmacStrength = 192;
37858 SHA256.padLength = 64;
37859
37860 SHA256.prototype._update = function _update(msg, start) {
37861 var W = this.W;
37862
37863 for (var i = 0; i < 16; i++)
37864 W[i] = msg[start + i];
37865 for (; i < W.length; i++)
37866 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
37867
37868 var a = this.h[0];
37869 var b = this.h[1];
37870 var c = this.h[2];
37871 var d = this.h[3];
37872 var e = this.h[4];
37873 var f = this.h[5];
37874 var g = this.h[6];
37875 var h = this.h[7];
37876
37877 assert(this.k.length === W.length);
37878 for (var i = 0; i < W.length; i++) {
37879 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
37880 var T2 = sum32(s0_256(a), maj32(a, b, c));
37881 h = g;
37882 g = f;
37883 f = e;
37884 e = sum32(d, T1);
37885 d = c;
37886 c = b;
37887 b = a;
37888 a = sum32(T1, T2);
37889 }
37890
37891 this.h[0] = sum32(this.h[0], a);
37892 this.h[1] = sum32(this.h[1], b);
37893 this.h[2] = sum32(this.h[2], c);
37894 this.h[3] = sum32(this.h[3], d);
37895 this.h[4] = sum32(this.h[4], e);
37896 this.h[5] = sum32(this.h[5], f);
37897 this.h[6] = sum32(this.h[6], g);
37898 this.h[7] = sum32(this.h[7], h);
37899 };
37900
37901 SHA256.prototype._digest = function digest(enc) {
37902 if (enc === 'hex')
37903 return utils.toHex32(this.h, 'big');
37904 else
37905 return utils.split32(this.h, 'big');
37906 };
37907
37908 function SHA224() {
37909 if (!(this instanceof SHA224))
37910 return new SHA224();
37911
37912 SHA256.call(this);
37913 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
37914 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
37915 }
37916 utils.inherits(SHA224, SHA256);
37917 exports.sha224 = SHA224;
37918
37919 SHA224.blockSize = 512;
37920 SHA224.outSize = 224;
37921 SHA224.hmacStrength = 192;
37922 SHA224.padLength = 64;
37923
37924 SHA224.prototype._digest = function digest(enc) {
37925 // Just truncate output
37926 if (enc === 'hex')
37927 return utils.toHex32(this.h.slice(0, 7), 'big');
37928 else
37929 return utils.split32(this.h.slice(0, 7), 'big');
37930 };
37931
37932 function SHA512() {
37933 if (!(this instanceof SHA512))
37934 return new SHA512();
37935
37936 BlockHash.call(this);
37937 this.h = [ 0x6a09e667, 0xf3bcc908,
37938 0xbb67ae85, 0x84caa73b,
37939 0x3c6ef372, 0xfe94f82b,
37940 0xa54ff53a, 0x5f1d36f1,
37941 0x510e527f, 0xade682d1,
37942 0x9b05688c, 0x2b3e6c1f,
37943 0x1f83d9ab, 0xfb41bd6b,
37944 0x5be0cd19, 0x137e2179 ];
37945 this.k = sha512_K;
37946 this.W = new Array(160);
37947 }
37948 utils.inherits(SHA512, BlockHash);
37949 exports.sha512 = SHA512;
37950
37951 SHA512.blockSize = 1024;
37952 SHA512.outSize = 512;
37953 SHA512.hmacStrength = 192;
37954 SHA512.padLength = 128;
37955
37956 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
37957 var W = this.W;
37958
37959 // 32 x 32bit words
37960 for (var i = 0; i < 32; i++)
37961 W[i] = msg[start + i];
37962 for (; i < W.length; i += 2) {
37963 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
37964 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
37965 var c1_hi = W[i - 14]; // i - 7
37966 var c1_lo = W[i - 13];
37967 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
37968 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
37969 var c3_hi = W[i - 32]; // i - 16
37970 var c3_lo = W[i - 31];
37971
37972 W[i] = sum64_4_hi(c0_hi, c0_lo,
37973 c1_hi, c1_lo,
37974 c2_hi, c2_lo,
37975 c3_hi, c3_lo);
37976 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
37977 c1_hi, c1_lo,
37978 c2_hi, c2_lo,
37979 c3_hi, c3_lo);
37980 }
37981 };
37982
37983 SHA512.prototype._update = function _update(msg, start) {
37984 this._prepareBlock(msg, start);
37985
37986 var W = this.W;
37987
37988 var ah = this.h[0];
37989 var al = this.h[1];
37990 var bh = this.h[2];
37991 var bl = this.h[3];
37992 var ch = this.h[4];
37993 var cl = this.h[5];
37994 var dh = this.h[6];
37995 var dl = this.h[7];
37996 var eh = this.h[8];
37997 var el = this.h[9];
37998 var fh = this.h[10];
37999 var fl = this.h[11];
38000 var gh = this.h[12];
38001 var gl = this.h[13];
38002 var hh = this.h[14];
38003 var hl = this.h[15];
38004
38005 assert(this.k.length === W.length);
38006 for (var i = 0; i < W.length; i += 2) {
38007 var c0_hi = hh;
38008 var c0_lo = hl;
38009 var c1_hi = s1_512_hi(eh, el);
38010 var c1_lo = s1_512_lo(eh, el);
38011 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
38012 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
38013 var c3_hi = this.k[i];
38014 var c3_lo = this.k[i + 1];
38015 var c4_hi = W[i];
38016 var c4_lo = W[i + 1];
38017
38018 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
38019 c1_hi, c1_lo,
38020 c2_hi, c2_lo,
38021 c3_hi, c3_lo,
38022 c4_hi, c4_lo);
38023 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
38024 c1_hi, c1_lo,
38025 c2_hi, c2_lo,
38026 c3_hi, c3_lo,
38027 c4_hi, c4_lo);
38028
38029 var c0_hi = s0_512_hi(ah, al);
38030 var c0_lo = s0_512_lo(ah, al);
38031 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
38032 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
38033
38034 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
38035 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
38036
38037 hh = gh;
38038 hl = gl;
38039
38040 gh = fh;
38041 gl = fl;
38042
38043 fh = eh;
38044 fl = el;
38045
38046 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
38047 el = sum64_lo(dl, dl, T1_hi, T1_lo);
38048
38049 dh = ch;
38050 dl = cl;
38051
38052 ch = bh;
38053 cl = bl;
38054
38055 bh = ah;
38056 bl = al;
38057
38058 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
38059 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
38060 }
38061
38062 sum64(this.h, 0, ah, al);
38063 sum64(this.h, 2, bh, bl);
38064 sum64(this.h, 4, ch, cl);
38065 sum64(this.h, 6, dh, dl);
38066 sum64(this.h, 8, eh, el);
38067 sum64(this.h, 10, fh, fl);
38068 sum64(this.h, 12, gh, gl);
38069 sum64(this.h, 14, hh, hl);
38070 };
38071
38072 SHA512.prototype._digest = function digest(enc) {
38073 if (enc === 'hex')
38074 return utils.toHex32(this.h, 'big');
38075 else
38076 return utils.split32(this.h, 'big');
38077 };
38078
38079 function SHA384() {
38080 if (!(this instanceof SHA384))
38081 return new SHA384();
38082
38083 SHA512.call(this);
38084 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
38085 0x629a292a, 0x367cd507,
38086 0x9159015a, 0x3070dd17,
38087 0x152fecd8, 0xf70e5939,
38088 0x67332667, 0xffc00b31,
38089 0x8eb44a87, 0x68581511,
38090 0xdb0c2e0d, 0x64f98fa7,
38091 0x47b5481d, 0xbefa4fa4 ];
38092 }
38093 utils.inherits(SHA384, SHA512);
38094 exports.sha384 = SHA384;
38095
38096 SHA384.blockSize = 1024;
38097 SHA384.outSize = 384;
38098 SHA384.hmacStrength = 192;
38099 SHA384.padLength = 128;
38100
38101 SHA384.prototype._digest = function digest(enc) {
38102 if (enc === 'hex')
38103 return utils.toHex32(this.h.slice(0, 12), 'big');
38104 else
38105 return utils.split32(this.h.slice(0, 12), 'big');
38106 };
38107
38108 function SHA1() {
38109 if (!(this instanceof SHA1))
38110 return new SHA1();
38111
38112 BlockHash.call(this);
38113 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
38114 0x10325476, 0xc3d2e1f0 ];
38115 this.W = new Array(80);
38116 }
38117
38118 utils.inherits(SHA1, BlockHash);
38119 exports.sha1 = SHA1;
38120
38121 SHA1.blockSize = 512;
38122 SHA1.outSize = 160;
38123 SHA1.hmacStrength = 80;
38124 SHA1.padLength = 64;
38125
38126 SHA1.prototype._update = function _update(msg, start) {
38127 var W = this.W;
38128
38129 for (var i = 0; i < 16; i++)
38130 W[i] = msg[start + i];
38131
38132 for(; i < W.length; i++)
38133 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
38134
38135 var a = this.h[0];
38136 var b = this.h[1];
38137 var c = this.h[2];
38138 var d = this.h[3];
38139 var e = this.h[4];
38140
38141 for (var i = 0; i < W.length; i++) {
38142 var s = ~~(i / 20);
38143 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
38144 e = d;
38145 d = c;
38146 c = rotl32(b, 30);
38147 b = a;
38148 a = t;
38149 }
38150
38151 this.h[0] = sum32(this.h[0], a);
38152 this.h[1] = sum32(this.h[1], b);
38153 this.h[2] = sum32(this.h[2], c);
38154 this.h[3] = sum32(this.h[3], d);
38155 this.h[4] = sum32(this.h[4], e);
38156 };
38157
38158 SHA1.prototype._digest = function digest(enc) {
38159 if (enc === 'hex')
38160 return utils.toHex32(this.h, 'big');
38161 else
38162 return utils.split32(this.h, 'big');
38163 };
38164
38165 function ch32(x, y, z) {
38166 return (x & y) ^ ((~x) & z);
38167 }
38168
38169 function maj32(x, y, z) {
38170 return (x & y) ^ (x & z) ^ (y & z);
38171 }
38172
38173 function p32(x, y, z) {
38174 return x ^ y ^ z;
38175 }
38176
38177 function s0_256(x) {
38178 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
38179 }
38180
38181 function s1_256(x) {
38182 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
38183 }
38184
38185 function g0_256(x) {
38186 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
38187 }
38188
38189 function g1_256(x) {
38190 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
38191 }
38192
38193 function ft_1(s, x, y, z) {
38194 if (s === 0)
38195 return ch32(x, y, z);
38196 if (s === 1 || s === 3)
38197 return p32(x, y, z);
38198 if (s === 2)
38199 return maj32(x, y, z);
38200 }
38201
38202 function ch64_hi(xh, xl, yh, yl, zh, zl) {
38203 var r = (xh & yh) ^ ((~xh) & zh);
38204 if (r < 0)
38205 r += 0x100000000;
38206 return r;
38207 }
38208
38209 function ch64_lo(xh, xl, yh, yl, zh, zl) {
38210 var r = (xl & yl) ^ ((~xl) & zl);
38211 if (r < 0)
38212 r += 0x100000000;
38213 return r;
38214 }
38215
38216 function maj64_hi(xh, xl, yh, yl, zh, zl) {
38217 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
38218 if (r < 0)
38219 r += 0x100000000;
38220 return r;
38221 }
38222
38223 function maj64_lo(xh, xl, yh, yl, zh, zl) {
38224 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
38225 if (r < 0)
38226 r += 0x100000000;
38227 return r;
38228 }
38229
38230 function s0_512_hi(xh, xl) {
38231 var c0_hi = rotr64_hi(xh, xl, 28);
38232 var c1_hi = rotr64_hi(xl, xh, 2); // 34
38233 var c2_hi = rotr64_hi(xl, xh, 7); // 39
38234
38235 var r = c0_hi ^ c1_hi ^ c2_hi;
38236 if (r < 0)
38237 r += 0x100000000;
38238 return r;
38239 }
38240
38241 function s0_512_lo(xh, xl) {
38242 var c0_lo = rotr64_lo(xh, xl, 28);
38243 var c1_lo = rotr64_lo(xl, xh, 2); // 34
38244 var c2_lo = rotr64_lo(xl, xh, 7); // 39
38245
38246 var r = c0_lo ^ c1_lo ^ c2_lo;
38247 if (r < 0)
38248 r += 0x100000000;
38249 return r;
38250 }
38251
38252 function s1_512_hi(xh, xl) {
38253 var c0_hi = rotr64_hi(xh, xl, 14);
38254 var c1_hi = rotr64_hi(xh, xl, 18);
38255 var c2_hi = rotr64_hi(xl, xh, 9); // 41
38256
38257 var r = c0_hi ^ c1_hi ^ c2_hi;
38258 if (r < 0)
38259 r += 0x100000000;
38260 return r;
38261 }
38262
38263 function s1_512_lo(xh, xl) {
38264 var c0_lo = rotr64_lo(xh, xl, 14);
38265 var c1_lo = rotr64_lo(xh, xl, 18);
38266 var c2_lo = rotr64_lo(xl, xh, 9); // 41
38267
38268 var r = c0_lo ^ c1_lo ^ c2_lo;
38269 if (r < 0)
38270 r += 0x100000000;
38271 return r;
38272 }
38273
38274 function g0_512_hi(xh, xl) {
38275 var c0_hi = rotr64_hi(xh, xl, 1);
38276 var c1_hi = rotr64_hi(xh, xl, 8);
38277 var c2_hi = shr64_hi(xh, xl, 7);
38278
38279 var r = c0_hi ^ c1_hi ^ c2_hi;
38280 if (r < 0)
38281 r += 0x100000000;
38282 return r;
38283 }
38284
38285 function g0_512_lo(xh, xl) {
38286 var c0_lo = rotr64_lo(xh, xl, 1);
38287 var c1_lo = rotr64_lo(xh, xl, 8);
38288 var c2_lo = shr64_lo(xh, xl, 7);
38289
38290 var r = c0_lo ^ c1_lo ^ c2_lo;
38291 if (r < 0)
38292 r += 0x100000000;
38293 return r;
38294 }
38295
38296 function g1_512_hi(xh, xl) {
38297 var c0_hi = rotr64_hi(xh, xl, 19);
38298 var c1_hi = rotr64_hi(xl, xh, 29); // 61
38299 var c2_hi = shr64_hi(xh, xl, 6);
38300
38301 var r = c0_hi ^ c1_hi ^ c2_hi;
38302 if (r < 0)
38303 r += 0x100000000;
38304 return r;
38305 }
38306
38307 function g1_512_lo(xh, xl) {
38308 var c0_lo = rotr64_lo(xh, xl, 19);
38309 var c1_lo = rotr64_lo(xl, xh, 29); // 61
38310 var c2_lo = shr64_lo(xh, xl, 6);
38311
38312 var r = c0_lo ^ c1_lo ^ c2_lo;
38313 if (r < 0)
38314 r += 0x100000000;
38315 return r;
38316 }
38317
38318 },{"../hash":57}],62:[function(require,module,exports){
38319 var utils = exports;
38320 var inherits = require('inherits');
38321
38322 function toArray(msg, enc) {
38323 if (Array.isArray(msg))
38324 return msg.slice();
38325 if (!msg)
38326 return [];
38327 var res = [];
38328 if (typeof msg === 'string') {
38329 if (!enc) {
38330 for (var i = 0; i < msg.length; i++) {
38331 var c = msg.charCodeAt(i);
38332 var hi = c >> 8;
38333 var lo = c & 0xff;
38334 if (hi)
38335 res.push(hi, lo);
38336 else
38337 res.push(lo);
38338 }
38339 } else if (enc === 'hex') {
38340 msg = msg.replace(/[^a-z0-9]+/ig, '');
38341 if (msg.length % 2 !== 0)
38342 msg = '0' + msg;
38343 for (var i = 0; i < msg.length; i += 2)
38344 res.push(parseInt(msg[i] + msg[i + 1], 16));
38345 }
38346 } else {
38347 for (var i = 0; i < msg.length; i++)
38348 res[i] = msg[i] | 0;
38349 }
38350 return res;
38351 }
38352 utils.toArray = toArray;
38353
38354 function toHex(msg) {
38355 var res = '';
38356 for (var i = 0; i < msg.length; i++)
38357 res += zero2(msg[i].toString(16));
38358 return res;
38359 }
38360 utils.toHex = toHex;
38361
38362 function htonl(w) {
38363 var res = (w >>> 24) |
38364 ((w >>> 8) & 0xff00) |
38365 ((w << 8) & 0xff0000) |
38366 ((w & 0xff) << 24);
38367 return res >>> 0;
38368 }
38369 utils.htonl = htonl;
38370
38371 function toHex32(msg, endian) {
38372 var res = '';
38373 for (var i = 0; i < msg.length; i++) {
38374 var w = msg[i];
38375 if (endian === 'little')
38376 w = htonl(w);
38377 res += zero8(w.toString(16));
38378 }
38379 return res;
38380 }
38381 utils.toHex32 = toHex32;
38382
38383 function zero2(word) {
38384 if (word.length === 1)
38385 return '0' + word;
38386 else
38387 return word;
38388 }
38389 utils.zero2 = zero2;
38390
38391 function zero8(word) {
38392 if (word.length === 7)
38393 return '0' + word;
38394 else if (word.length === 6)
38395 return '00' + word;
38396 else if (word.length === 5)
38397 return '000' + word;
38398 else if (word.length === 4)
38399 return '0000' + word;
38400 else if (word.length === 3)
38401 return '00000' + word;
38402 else if (word.length === 2)
38403 return '000000' + word;
38404 else if (word.length === 1)
38405 return '0000000' + word;
38406 else
38407 return word;
38408 }
38409 utils.zero8 = zero8;
38410
38411 function join32(msg, start, end, endian) {
38412 var len = end - start;
38413 assert(len % 4 === 0);
38414 var res = new Array(len / 4);
38415 for (var i = 0, k = start; i < res.length; i++, k += 4) {
38416 var w;
38417 if (endian === 'big')
38418 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
38419 else
38420 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
38421 res[i] = w >>> 0;
38422 }
38423 return res;
38424 }
38425 utils.join32 = join32;
38426
38427 function split32(msg, endian) {
38428 var res = new Array(msg.length * 4);
38429 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
38430 var m = msg[i];
38431 if (endian === 'big') {
38432 res[k] = m >>> 24;
38433 res[k + 1] = (m >>> 16) & 0xff;
38434 res[k + 2] = (m >>> 8) & 0xff;
38435 res[k + 3] = m & 0xff;
38436 } else {
38437 res[k + 3] = m >>> 24;
38438 res[k + 2] = (m >>> 16) & 0xff;
38439 res[k + 1] = (m >>> 8) & 0xff;
38440 res[k] = m & 0xff;
38441 }
38442 }
38443 return res;
38444 }
38445 utils.split32 = split32;
38446
38447 function rotr32(w, b) {
38448 return (w >>> b) | (w << (32 - b));
38449 }
38450 utils.rotr32 = rotr32;
38451
38452 function rotl32(w, b) {
38453 return (w << b) | (w >>> (32 - b));
38454 }
38455 utils.rotl32 = rotl32;
38456
38457 function sum32(a, b) {
38458 return (a + b) >>> 0;
38459 }
38460 utils.sum32 = sum32;
38461
38462 function sum32_3(a, b, c) {
38463 return (a + b + c) >>> 0;
38464 }
38465 utils.sum32_3 = sum32_3;
38466
38467 function sum32_4(a, b, c, d) {
38468 return (a + b + c + d) >>> 0;
38469 }
38470 utils.sum32_4 = sum32_4;
38471
38472 function sum32_5(a, b, c, d, e) {
38473 return (a + b + c + d + e) >>> 0;
38474 }
38475 utils.sum32_5 = sum32_5;
38476
38477 function assert(cond, msg) {
38478 if (!cond)
38479 throw new Error(msg || 'Assertion failed');
38480 }
38481 utils.assert = assert;
38482
38483 utils.inherits = inherits;
38484
38485 function sum64(buf, pos, ah, al) {
38486 var bh = buf[pos];
38487 var bl = buf[pos + 1];
38488
38489 var lo = (al + bl) >>> 0;
38490 var hi = (lo < al ? 1 : 0) + ah + bh;
38491 buf[pos] = hi >>> 0;
38492 buf[pos + 1] = lo;
38493 }
38494 exports.sum64 = sum64;
38495
38496 function sum64_hi(ah, al, bh, bl) {
38497 var lo = (al + bl) >>> 0;
38498 var hi = (lo < al ? 1 : 0) + ah + bh;
38499 return hi >>> 0;
38500 };
38501 exports.sum64_hi = sum64_hi;
38502
38503 function sum64_lo(ah, al, bh, bl) {
38504 var lo = al + bl;
38505 return lo >>> 0;
38506 };
38507 exports.sum64_lo = sum64_lo;
38508
38509 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
38510 var carry = 0;
38511 var lo = al;
38512 lo = (lo + bl) >>> 0;
38513 carry += lo < al ? 1 : 0;
38514 lo = (lo + cl) >>> 0;
38515 carry += lo < cl ? 1 : 0;
38516 lo = (lo + dl) >>> 0;
38517 carry += lo < dl ? 1 : 0;
38518
38519 var hi = ah + bh + ch + dh + carry;
38520 return hi >>> 0;
38521 };
38522 exports.sum64_4_hi = sum64_4_hi;
38523
38524 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
38525 var lo = al + bl + cl + dl;
38526 return lo >>> 0;
38527 };
38528 exports.sum64_4_lo = sum64_4_lo;
38529
38530 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38531 var carry = 0;
38532 var lo = al;
38533 lo = (lo + bl) >>> 0;
38534 carry += lo < al ? 1 : 0;
38535 lo = (lo + cl) >>> 0;
38536 carry += lo < cl ? 1 : 0;
38537 lo = (lo + dl) >>> 0;
38538 carry += lo < dl ? 1 : 0;
38539 lo = (lo + el) >>> 0;
38540 carry += lo < el ? 1 : 0;
38541
38542 var hi = ah + bh + ch + dh + eh + carry;
38543 return hi >>> 0;
38544 };
38545 exports.sum64_5_hi = sum64_5_hi;
38546
38547 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38548 var lo = al + bl + cl + dl + el;
38549
38550 return lo >>> 0;
38551 };
38552 exports.sum64_5_lo = sum64_5_lo;
38553
38554 function rotr64_hi(ah, al, num) {
38555 var r = (al << (32 - num)) | (ah >>> num);
38556 return r >>> 0;
38557 };
38558 exports.rotr64_hi = rotr64_hi;
38559
38560 function rotr64_lo(ah, al, num) {
38561 var r = (ah << (32 - num)) | (al >>> num);
38562 return r >>> 0;
38563 };
38564 exports.rotr64_lo = rotr64_lo;
38565
38566 function shr64_hi(ah, al, num) {
38567 return ah >>> num;
38568 };
38569 exports.shr64_hi = shr64_hi;
38570
38571 function shr64_lo(ah, al, num) {
38572 var r = (ah << (32 - num)) | (al >>> num);
38573 return r >>> 0;
38574 };
38575 exports.shr64_lo = shr64_lo;
38576
38577 },{"inherits":63}],63:[function(require,module,exports){
38578 arguments[4][9][0].apply(exports,arguments)
38579 },{"dup":9}],64:[function(require,module,exports){
38580 /**
38581 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
38582 * @param {String} str the string input value
38583 * @return {Boolean} a boolean if it is or is not hex prefixed
38584 * @throws if the str input is not a string
38585 */
38586 module.exports = function isHexPrefixed(str) {
38587 if (typeof str !== 'string') {
38588 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
38589 }
38590
38591 return str.slice(0, 2) === '0x';
38592 }
38593
38594 },{}],65:[function(require,module,exports){
38595 'use strict'
38596 module.exports = require('./lib/api')(require('./lib/keccak'))
38597
38598 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
38599 'use strict'
38600 var createKeccak = require('./keccak')
38601 var createShake = require('./shake')
38602
38603 module.exports = function (KeccakState) {
38604 var Keccak = createKeccak(KeccakState)
38605 var Shake = createShake(KeccakState)
38606
38607 return function (algorithm, options) {
38608 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
38609 switch (hash) {
38610 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
38611 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
38612 case 'keccak384': return new Keccak(832, 768, null, 384, options)
38613 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
38614
38615 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
38616 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
38617 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
38618 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
38619
38620 case 'shake128': return new Shake(1344, 256, 0x1f, options)
38621 case 'shake256': return new Shake(1088, 512, 0x1f, options)
38622
38623 default: throw new Error('Invald algorithm: ' + algorithm)
38624 }
38625 }
38626 }
38627
38628 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
38629 (function (Buffer){
38630 'use strict'
38631 var Transform = require('stream').Transform
38632 var inherits = require('inherits')
38633
38634 module.exports = function (KeccakState) {
38635 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
38636 Transform.call(this, options)
38637
38638 this._rate = rate
38639 this._capacity = capacity
38640 this._delimitedSuffix = delimitedSuffix
38641 this._hashBitLength = hashBitLength
38642 this._options = options
38643
38644 this._state = new KeccakState()
38645 this._state.initialize(rate, capacity)
38646 this._finalized = false
38647 }
38648
38649 inherits(Keccak, Transform)
38650
38651 Keccak.prototype._transform = function (chunk, encoding, callback) {
38652 var error = null
38653 try {
38654 this.update(chunk, encoding)
38655 } catch (err) {
38656 error = err
38657 }
38658
38659 callback(error)
38660 }
38661
38662 Keccak.prototype._flush = function (callback) {
38663 var error = null
38664 try {
38665 this.push(this.digest())
38666 } catch (err) {
38667 error = err
38668 }
38669
38670 callback(error)
38671 }
38672
38673 Keccak.prototype.update = function (data, encoding) {
38674 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38675 if (this._finalized) throw new Error('Digest already called')
38676 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38677
38678 this._state.absorb(data)
38679
38680 return this
38681 }
38682
38683 Keccak.prototype.digest = function (encoding) {
38684 if (this._finalized) throw new Error('Digest already called')
38685 this._finalized = true
38686
38687 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
38688 var digest = this._state.squeeze(this._hashBitLength / 8)
38689 if (encoding !== undefined) digest = digest.toString(encoding)
38690
38691 this._resetState()
38692
38693 return digest
38694 }
38695
38696 // remove result from memory
38697 Keccak.prototype._resetState = function () {
38698 this._state.initialize(this._rate, this._capacity)
38699 return this
38700 }
38701
38702 // because sometimes we need hash right now and little later
38703 Keccak.prototype._clone = function () {
38704 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
38705 this._state.copy(clone._state)
38706 clone._finalized = this._finalized
38707
38708 return clone
38709 }
38710
38711 return Keccak
38712 }
38713
38714 }).call(this,require("buffer").Buffer)
38715 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
38716 (function (Buffer){
38717 'use strict'
38718 var Transform = require('stream').Transform
38719 var inherits = require('inherits')
38720
38721 module.exports = function (KeccakState) {
38722 function Shake (rate, capacity, delimitedSuffix, options) {
38723 Transform.call(this, options)
38724
38725 this._rate = rate
38726 this._capacity = capacity
38727 this._delimitedSuffix = delimitedSuffix
38728 this._options = options
38729
38730 this._state = new KeccakState()
38731 this._state.initialize(rate, capacity)
38732 this._finalized = false
38733 }
38734
38735 inherits(Shake, Transform)
38736
38737 Shake.prototype._transform = function (chunk, encoding, callback) {
38738 var error = null
38739 try {
38740 this.update(chunk, encoding)
38741 } catch (err) {
38742 error = err
38743 }
38744
38745 callback(error)
38746 }
38747
38748 Shake.prototype._flush = function () {}
38749
38750 Shake.prototype._read = function (size) {
38751 this.push(this.squeeze(size))
38752 }
38753
38754 Shake.prototype.update = function (data, encoding) {
38755 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38756 if (this._finalized) throw new Error('Squeeze already called')
38757 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38758
38759 this._state.absorb(data)
38760
38761 return this
38762 }
38763
38764 Shake.prototype.squeeze = function (dataByteLength, encoding) {
38765 if (!this._finalized) {
38766 this._finalized = true
38767 this._state.absorbLastFewBits(this._delimitedSuffix)
38768 }
38769
38770 var data = this._state.squeeze(dataByteLength)
38771 if (encoding !== undefined) data = data.toString(encoding)
38772
38773 return data
38774 }
38775
38776 Shake.prototype._resetState = function () {
38777 this._state.initialize(this._rate, this._capacity)
38778 return this
38779 }
38780
38781 Shake.prototype._clone = function () {
38782 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
38783 this._state.copy(clone._state)
38784 clone._finalized = this._finalized
38785
38786 return clone
38787 }
38788
38789 return Shake
38790 }
38791
38792 }).call(this,require("buffer").Buffer)
38793 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
38794 'use strict'
38795 var P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]
38796
38797 exports.p1600 = function (s) {
38798 for (var round = 0; round < 24; ++round) {
38799 // theta
38800 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
38801 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
38802 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
38803 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
38804 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
38805 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
38806 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
38807 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
38808 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
38809 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
38810
38811 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
38812 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
38813 var t1slo0 = s[0] ^ lo
38814 var t1shi0 = s[1] ^ hi
38815 var t1slo5 = s[10] ^ lo
38816 var t1shi5 = s[11] ^ hi
38817 var t1slo10 = s[20] ^ lo
38818 var t1shi10 = s[21] ^ hi
38819 var t1slo15 = s[30] ^ lo
38820 var t1shi15 = s[31] ^ hi
38821 var t1slo20 = s[40] ^ lo
38822 var t1shi20 = s[41] ^ hi
38823 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
38824 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
38825 var t1slo1 = s[2] ^ lo
38826 var t1shi1 = s[3] ^ hi
38827 var t1slo6 = s[12] ^ lo
38828 var t1shi6 = s[13] ^ hi
38829 var t1slo11 = s[22] ^ lo
38830 var t1shi11 = s[23] ^ hi
38831 var t1slo16 = s[32] ^ lo
38832 var t1shi16 = s[33] ^ hi
38833 var t1slo21 = s[42] ^ lo
38834 var t1shi21 = s[43] ^ hi
38835 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
38836 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
38837 var t1slo2 = s[4] ^ lo
38838 var t1shi2 = s[5] ^ hi
38839 var t1slo7 = s[14] ^ lo
38840 var t1shi7 = s[15] ^ hi
38841 var t1slo12 = s[24] ^ lo
38842 var t1shi12 = s[25] ^ hi
38843 var t1slo17 = s[34] ^ lo
38844 var t1shi17 = s[35] ^ hi
38845 var t1slo22 = s[44] ^ lo
38846 var t1shi22 = s[45] ^ hi
38847 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
38848 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
38849 var t1slo3 = s[6] ^ lo
38850 var t1shi3 = s[7] ^ hi
38851 var t1slo8 = s[16] ^ lo
38852 var t1shi8 = s[17] ^ hi
38853 var t1slo13 = s[26] ^ lo
38854 var t1shi13 = s[27] ^ hi
38855 var t1slo18 = s[36] ^ lo
38856 var t1shi18 = s[37] ^ hi
38857 var t1slo23 = s[46] ^ lo
38858 var t1shi23 = s[47] ^ hi
38859 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
38860 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
38861 var t1slo4 = s[8] ^ lo
38862 var t1shi4 = s[9] ^ hi
38863 var t1slo9 = s[18] ^ lo
38864 var t1shi9 = s[19] ^ hi
38865 var t1slo14 = s[28] ^ lo
38866 var t1shi14 = s[29] ^ hi
38867 var t1slo19 = s[38] ^ lo
38868 var t1shi19 = s[39] ^ hi
38869 var t1slo24 = s[48] ^ lo
38870 var t1shi24 = s[49] ^ hi
38871
38872 // rho & pi
38873 var t2slo0 = t1slo0
38874 var t2shi0 = t1shi0
38875 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
38876 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
38877 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
38878 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
38879 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
38880 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
38881 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
38882 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
38883 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
38884 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
38885 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
38886 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
38887 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
38888 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
38889 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
38890 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
38891 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
38892 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
38893 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
38894 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
38895 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
38896 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
38897 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
38898 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
38899 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
38900 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
38901 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
38902 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
38903 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
38904 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
38905 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
38906 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
38907 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
38908 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
38909 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
38910 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
38911 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
38912 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
38913 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
38914 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
38915 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
38916 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
38917 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
38918 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
38919 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
38920 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
38921 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
38922 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
38923
38924 // chi
38925 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
38926 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
38927 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
38928 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
38929 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
38930 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
38931 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
38932 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
38933 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
38934 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
38935 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
38936 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
38937 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
38938 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
38939 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
38940 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
38941 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
38942 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
38943 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
38944 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
38945 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
38946 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
38947 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
38948 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
38949 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
38950 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
38951 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
38952 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
38953 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
38954 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
38955 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
38956 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
38957 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
38958 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
38959 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
38960 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
38961 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
38962 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
38963 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
38964 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
38965 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
38966 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
38967 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
38968 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
38969 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
38970 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
38971 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
38972 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
38973 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
38974 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
38975
38976 // iota
38977 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
38978 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
38979 }
38980 }
38981
38982 },{}],70:[function(require,module,exports){
38983 (function (Buffer){
38984 'use strict'
38985 var keccakState = require('./keccak-state-unroll')
38986
38987 function Keccak () {
38988 // much faster than `new Array(50)`
38989 this.state = [
38990 0, 0, 0, 0, 0,
38991 0, 0, 0, 0, 0,
38992 0, 0, 0, 0, 0,
38993 0, 0, 0, 0, 0,
38994 0, 0, 0, 0, 0
38995 ]
38996
38997 this.blockSize = null
38998 this.count = 0
38999 this.squeezing = false
39000 }
39001
39002 Keccak.prototype.initialize = function (rate, capacity) {
39003 for (var i = 0; i < 50; ++i) this.state[i] = 0
39004 this.blockSize = rate / 8
39005 this.count = 0
39006 this.squeezing = false
39007 }
39008
39009 Keccak.prototype.absorb = function (data) {
39010 for (var i = 0; i < data.length; ++i) {
39011 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
39012 this.count += 1
39013 if (this.count === this.blockSize) {
39014 keccakState.p1600(this.state)
39015 this.count = 0
39016 }
39017 }
39018 }
39019
39020 Keccak.prototype.absorbLastFewBits = function (bits) {
39021 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
39022 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
39023 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
39024 keccakState.p1600(this.state)
39025 this.count = 0
39026 this.squeezing = true
39027 }
39028
39029 Keccak.prototype.squeeze = function (length) {
39030 if (!this.squeezing) this.absorbLastFewBits(0x01)
39031
39032 var output = Buffer.allocUnsafe(length)
39033 for (var i = 0; i < length; ++i) {
39034 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
39035 this.count += 1
39036 if (this.count === this.blockSize) {
39037 keccakState.p1600(this.state)
39038 this.count = 0
39039 }
39040 }
39041
39042 return output
39043 }
39044
39045 Keccak.prototype.copy = function (dest) {
39046 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
39047 dest.blockSize = this.blockSize
39048 dest.count = this.count
39049 dest.squeezing = this.squeezing
39050 }
39051
39052 module.exports = Keccak
39053
39054 }).call(this,require("buffer").Buffer)
39055 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
39056 (function (Buffer){
39057 /*
39058 CryptoJS v3.1.2
39059 code.google.com/p/crypto-js
39060 (c) 2009-2013 by Jeff Mott. All rights reserved.
39061 code.google.com/p/crypto-js/wiki/License
39062 */
39063 /** @preserve
39064 (c) 2012 by Cédric Mesnil. All rights reserved.
39065
39066 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39067
39068 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
39069 - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
39070
39071 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39072 */
39073
39074 // constants table
39075 var zl = [
39076 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
39077 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
39078 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
39079 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
39080 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
39081 ]
39082
39083 var zr = [
39084 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
39085 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
39086 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
39087 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
39088 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
39089 ]
39090
39091 var sl = [
39092 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
39093 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
39094 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
39095 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
39096 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
39097 ]
39098
39099 var sr = [
39100 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
39101 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
39102 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
39103 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
39104 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
39105 ]
39106
39107 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
39108 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
39109
39110 function bytesToWords (bytes) {
39111 var words = []
39112 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
39113 words[b >>> 5] |= bytes[i] << (24 - b % 32)
39114 }
39115 return words
39116 }
39117
39118 function wordsToBytes (words) {
39119 var bytes = []
39120 for (var b = 0; b < words.length * 32; b += 8) {
39121 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
39122 }
39123 return bytes
39124 }
39125
39126 function processBlock (H, M, offset) {
39127 // swap endian
39128 for (var i = 0; i < 16; i++) {
39129 var offset_i = offset + i
39130 var M_offset_i = M[offset_i]
39131
39132 // Swap
39133 M[offset_i] = (
39134 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
39135 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
39136 )
39137 }
39138
39139 // Working variables
39140 var al, bl, cl, dl, el
39141 var ar, br, cr, dr, er
39142
39143 ar = al = H[0]
39144 br = bl = H[1]
39145 cr = cl = H[2]
39146 dr = dl = H[3]
39147 er = el = H[4]
39148
39149 // computation
39150 var t
39151 for (i = 0; i < 80; i += 1) {
39152 t = (al + M[offset + zl[i]]) | 0
39153 if (i < 16) {
39154 t += f1(bl, cl, dl) + hl[0]
39155 } else if (i < 32) {
39156 t += f2(bl, cl, dl) + hl[1]
39157 } else if (i < 48) {
39158 t += f3(bl, cl, dl) + hl[2]
39159 } else if (i < 64) {
39160 t += f4(bl, cl, dl) + hl[3]
39161 } else {// if (i<80) {
39162 t += f5(bl, cl, dl) + hl[4]
39163 }
39164 t = t | 0
39165 t = rotl(t, sl[i])
39166 t = (t + el) | 0
39167 al = el
39168 el = dl
39169 dl = rotl(cl, 10)
39170 cl = bl
39171 bl = t
39172
39173 t = (ar + M[offset + zr[i]]) | 0
39174 if (i < 16) {
39175 t += f5(br, cr, dr) + hr[0]
39176 } else if (i < 32) {
39177 t += f4(br, cr, dr) + hr[1]
39178 } else if (i < 48) {
39179 t += f3(br, cr, dr) + hr[2]
39180 } else if (i < 64) {
39181 t += f2(br, cr, dr) + hr[3]
39182 } else {// if (i<80) {
39183 t += f1(br, cr, dr) + hr[4]
39184 }
39185
39186 t = t | 0
39187 t = rotl(t, sr[i])
39188 t = (t + er) | 0
39189 ar = er
39190 er = dr
39191 dr = rotl(cr, 10)
39192 cr = br
39193 br = t
39194 }
39195
39196 // intermediate hash value
39197 t = (H[1] + cl + dr) | 0
39198 H[1] = (H[2] + dl + er) | 0
39199 H[2] = (H[3] + el + ar) | 0
39200 H[3] = (H[4] + al + br) | 0
39201 H[4] = (H[0] + bl + cr) | 0
39202 H[0] = t
39203 }
39204
39205 function f1 (x, y, z) {
39206 return ((x) ^ (y) ^ (z))
39207 }
39208
39209 function f2 (x, y, z) {
39210 return (((x) & (y)) | ((~x) & (z)))
39211 }
39212
39213 function f3 (x, y, z) {
39214 return (((x) | (~(y))) ^ (z))
39215 }
39216
39217 function f4 (x, y, z) {
39218 return (((x) & (z)) | ((y) & (~(z))))
39219 }
39220
39221 function f5 (x, y, z) {
39222 return ((x) ^ ((y) | (~(z))))
39223 }
39224
39225 function rotl (x, n) {
39226 return (x << n) | (x >>> (32 - n))
39227 }
39228
39229 function ripemd160 (message) {
39230 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
39231
39232 if (typeof message === 'string') {
39233 message = new Buffer(message, 'utf8')
39234 }
39235
39236 var m = bytesToWords(message)
39237
39238 var nBitsLeft = message.length * 8
39239 var nBitsTotal = message.length * 8
39240
39241 // Add padding
39242 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
39243 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
39244 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
39245 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
39246 )
39247
39248 for (var i = 0; i < m.length; i += 16) {
39249 processBlock(H, m, i)
39250 }
39251
39252 // swap endian
39253 for (i = 0; i < 5; i++) {
39254 // shortcut
39255 var H_i = H[i]
39256
39257 // Swap
39258 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
39259 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
39260 }
39261
39262 var digestbytes = wordsToBytes(H)
39263 return new Buffer(digestbytes)
39264 }
39265
39266 module.exports = ripemd160
39267
39268 }).call(this,require("buffer").Buffer)
39269 },{"buffer":5}],72:[function(require,module,exports){
39270 (function (Buffer){
39271 const assert = require('assert')
39272 /**
39273 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
39274 * This function takes in a data, convert it to buffer if not, and a length for recursion
39275 *
39276 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39277 * @returns {Buffer} - returns buffer of encoded data
39278 **/
39279 exports.encode = function (input) {
39280 if (input instanceof Array) {
39281 var output = []
39282 for (var i = 0; i < input.length; i++) {
39283 output.push(exports.encode(input[i]))
39284 }
39285 var buf = Buffer.concat(output)
39286 return Buffer.concat([encodeLength(buf.length, 192), buf])
39287 } else {
39288 input = toBuffer(input)
39289 if (input.length === 1 && input[0] < 128) {
39290 return input
39291 } else {
39292 return Buffer.concat([encodeLength(input.length, 128), input])
39293 }
39294 }
39295 }
39296
39297 function safeParseInt (v, base) {
39298 if (v.slice(0, 2) === '00') {
39299 throw (new Error('invalid RLP: extra zeros'))
39300 }
39301
39302 return parseInt(v, base)
39303 }
39304
39305 function encodeLength (len, offset) {
39306 if (len < 56) {
39307 return new Buffer([len + offset])
39308 } else {
39309 var hexLength = intToHex(len)
39310 var lLength = hexLength.length / 2
39311 var firstByte = intToHex(offset + 55 + lLength)
39312 return new Buffer(firstByte + hexLength, 'hex')
39313 }
39314 }
39315
39316 /**
39317 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
39318 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39319 * @returns {Array} - returns decode Array of Buffers containg the original message
39320 **/
39321 exports.decode = function (input, stream) {
39322 if (!input || input.length === 0) {
39323 return new Buffer([])
39324 }
39325
39326 input = toBuffer(input)
39327 var decoded = _decode(input)
39328
39329 if (stream) {
39330 return decoded
39331 }
39332
39333 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
39334 return decoded.data
39335 }
39336
39337 exports.getLength = function (input) {
39338 if (!input || input.length === 0) {
39339 return new Buffer([])
39340 }
39341
39342 input = toBuffer(input)
39343 var firstByte = input[0]
39344 if (firstByte <= 0x7f) {
39345 return input.length
39346 } else if (firstByte <= 0xb7) {
39347 return firstByte - 0x7f
39348 } else if (firstByte <= 0xbf) {
39349 return firstByte - 0xb6
39350 } else if (firstByte <= 0xf7) {
39351 // a list between 0-55 bytes long
39352 return firstByte - 0xbf
39353 } else {
39354 // a list over 55 bytes long
39355 var llength = firstByte - 0xf6
39356 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39357 return llength + length
39358 }
39359 }
39360
39361 function _decode (input) {
39362 var length, llength, data, innerRemainder, d
39363 var decoded = []
39364 var firstByte = input[0]
39365
39366 if (firstByte <= 0x7f) {
39367 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
39368 return {
39369 data: input.slice(0, 1),
39370 remainder: input.slice(1)
39371 }
39372 } else if (firstByte <= 0xb7) {
39373 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
39374 // The range of the first byte is [0x80, 0xb7]
39375 length = firstByte - 0x7f
39376
39377 // set 0x80 null to 0
39378 if (firstByte === 0x80) {
39379 data = new Buffer([])
39380 } else {
39381 data = input.slice(1, length)
39382 }
39383
39384 if (length === 2 && data[0] < 0x80) {
39385 throw new Error('invalid rlp encoding: byte must be less 0x80')
39386 }
39387
39388 return {
39389 data: data,
39390 remainder: input.slice(length)
39391 }
39392 } else if (firstByte <= 0xbf) {
39393 llength = firstByte - 0xb6
39394 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39395 data = input.slice(llength, length + llength)
39396 if (data.length < length) {
39397 throw (new Error('invalid RLP'))
39398 }
39399
39400 return {
39401 data: data,
39402 remainder: input.slice(length + llength)
39403 }
39404 } else if (firstByte <= 0xf7) {
39405 // a list between 0-55 bytes long
39406 length = firstByte - 0xbf
39407 innerRemainder = input.slice(1, length)
39408 while (innerRemainder.length) {
39409 d = _decode(innerRemainder)
39410 decoded.push(d.data)
39411 innerRemainder = d.remainder
39412 }
39413
39414 return {
39415 data: decoded,
39416 remainder: input.slice(length)
39417 }
39418 } else {
39419 // a list over 55 bytes long
39420 llength = firstByte - 0xf6
39421 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39422 var totalLength = llength + length
39423 if (totalLength > input.length) {
39424 throw new Error('invalid rlp: total length is larger than the data')
39425 }
39426
39427 innerRemainder = input.slice(llength, totalLength)
39428 if (innerRemainder.length === 0) {
39429 throw new Error('invalid rlp, List has a invalid length')
39430 }
39431
39432 while (innerRemainder.length) {
39433 d = _decode(innerRemainder)
39434 decoded.push(d.data)
39435 innerRemainder = d.remainder
39436 }
39437 return {
39438 data: decoded,
39439 remainder: input.slice(totalLength)
39440 }
39441 }
39442 }
39443
39444 function isHexPrefixed (str) {
39445 return str.slice(0, 2) === '0x'
39446 }
39447
39448 // Removes 0x from a given String
39449 function stripHexPrefix (str) {
39450 if (typeof str !== 'string') {
39451 return str
39452 }
39453 return isHexPrefixed(str) ? str.slice(2) : str
39454 }
39455
39456 function intToHex (i) {
39457 var hex = i.toString(16)
39458 if (hex.length % 2) {
39459 hex = '0' + hex
39460 }
39461
39462 return hex
39463 }
39464
39465 function padToEven (a) {
39466 if (a.length % 2) a = '0' + a
39467 return a
39468 }
39469
39470 function intToBuffer (i) {
39471 var hex = intToHex(i)
39472 return new Buffer(hex, 'hex')
39473 }
39474
39475 function toBuffer (v) {
39476 if (!Buffer.isBuffer(v)) {
39477 if (typeof v === 'string') {
39478 if (isHexPrefixed(v)) {
39479 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
39480 } else {
39481 v = new Buffer(v)
39482 }
39483 } else if (typeof v === 'number') {
39484 if (!v) {
39485 v = new Buffer([])
39486 } else {
39487 v = intToBuffer(v)
39488 }
39489 } else if (v === null || v === undefined) {
39490 v = new Buffer([])
39491 } else if (v.toArray) {
39492 // converts a BN to a Buffer
39493 v = new Buffer(v.toArray())
39494 } else {
39495 throw new Error('invalid type')
39496 }
39497 }
39498 return v
39499 }
39500
39501 }).call(this,require("buffer").Buffer)
39502 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
39503 'use strict'
39504 module.exports = require('./lib')(require('./lib/elliptic'))
39505
39506 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
39507 (function (Buffer){
39508 'use strict'
39509 var toString = Object.prototype.toString
39510
39511 // TypeError
39512 exports.isArray = function (value, message) {
39513 if (!Array.isArray(value)) throw TypeError(message)
39514 }
39515
39516 exports.isBoolean = function (value, message) {
39517 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
39518 }
39519
39520 exports.isBuffer = function (value, message) {
39521 if (!Buffer.isBuffer(value)) throw TypeError(message)
39522 }
39523
39524 exports.isFunction = function (value, message) {
39525 if (toString.call(value) !== '[object Function]') throw TypeError(message)
39526 }
39527
39528 exports.isNumber = function (value, message) {
39529 if (toString.call(value) !== '[object Number]') throw TypeError(message)
39530 }
39531
39532 exports.isObject = function (value, message) {
39533 if (toString.call(value) !== '[object Object]') throw TypeError(message)
39534 }
39535
39536 // RangeError
39537 exports.isBufferLength = function (buffer, length, message) {
39538 if (buffer.length !== length) throw RangeError(message)
39539 }
39540
39541 exports.isBufferLength2 = function (buffer, length1, length2, message) {
39542 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
39543 }
39544
39545 exports.isLengthGTZero = function (value, message) {
39546 if (value.length === 0) throw RangeError(message)
39547 }
39548
39549 exports.isNumberInInterval = function (number, x, y, message) {
39550 if (number <= x || number >= y) throw RangeError(message)
39551 }
39552
39553 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
39554 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
39555 (function (Buffer){
39556 'use strict'
39557 var bip66 = require('bip66')
39558
39559 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
39560 // begin
39561 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
39562 // private key
39563 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39564 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39565 // middle
39566 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39567 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39568 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39569 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39570 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39571 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39572 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39573 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39574 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
39575 // public key
39576 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39578 0x00
39579 ])
39580
39581 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
39582 // begin
39583 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
39584 // private key
39585 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39586 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39587 // middle
39588 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39589 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39590 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39591 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39592 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39593 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39594 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
39595 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
39596 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39597 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39598 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
39599 // public key
39600 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39601 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39602 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39603 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39604 0x00
39605 ])
39606
39607 var ZERO_BUFFER_32 = new Buffer([
39608 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39609 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
39610 ])
39611
39612 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
39613 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
39614 privateKey.copy(result, compressed ? 8 : 9)
39615 publicKey.copy(result, compressed ? 181 : 214)
39616 return result
39617 }
39618
39619 exports.privateKeyImport = function (privateKey) {
39620 var length = privateKey.length
39621
39622 // sequence header
39623 var index = 0
39624 if (length < index + 1 || privateKey[index] !== 0x30) return
39625 index += 1
39626
39627 // sequence length constructor
39628 if (length < index + 1 || !(privateKey[index] & 0x80)) return
39629
39630 var lenb = privateKey[index] & 0x7f
39631 index += 1
39632 if (lenb < 1 || lenb > 2) return
39633 if (length < index + lenb) return
39634
39635 // sequence length
39636 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
39637 index += lenb
39638 if (length < index + len) return
39639
39640 // sequence element 0: version number (=1)
39641 if (length < index + 3 ||
39642 privateKey[index] !== 0x02 ||
39643 privateKey[index + 1] !== 0x01 ||
39644 privateKey[index + 2] !== 0x01) {
39645 return
39646 }
39647 index += 3
39648
39649 // sequence element 1: octet string, up to 32 bytes
39650 if (length < index + 2 ||
39651 privateKey[index] !== 0x04 ||
39652 privateKey[index + 1] > 0x20 ||
39653 length < index + 2 + privateKey[index + 1]) {
39654 return
39655 }
39656
39657 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
39658 }
39659
39660 exports.signatureExport = function (sigObj) {
39661 var r = Buffer.concat([new Buffer([0]), sigObj.r])
39662 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
39663
39664 var s = Buffer.concat([new Buffer([0]), sigObj.s])
39665 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
39666
39667 return bip66.encode(r.slice(posR), s.slice(posS))
39668 }
39669
39670 exports.signatureImport = function (sig) {
39671 var r = new Buffer(ZERO_BUFFER_32)
39672 var s = new Buffer(ZERO_BUFFER_32)
39673
39674 try {
39675 var sigObj = bip66.decode(sig)
39676 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
39677 if (sigObj.r.length > 32) throw new Error('R length is too long')
39678 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
39679 if (sigObj.s.length > 32) throw new Error('S length is too long')
39680 } catch (err) {
39681 return
39682 }
39683
39684 sigObj.r.copy(r, 32 - sigObj.r.length)
39685 sigObj.s.copy(s, 32 - sigObj.s.length)
39686
39687 return { r: r, s: s }
39688 }
39689
39690 exports.signatureImportLax = function (sig) {
39691 var r = new Buffer(ZERO_BUFFER_32)
39692 var s = new Buffer(ZERO_BUFFER_32)
39693
39694 var length = sig.length
39695 var index = 0
39696
39697 // sequence tag byte
39698 if (sig[index++] !== 0x30) return
39699
39700 // sequence length byte
39701 var lenbyte = sig[index++]
39702 if (lenbyte & 0x80) {
39703 index += lenbyte - 0x80
39704 if (index > length) return
39705 }
39706
39707 // sequence tag byte for r
39708 if (sig[index++] !== 0x02) return
39709
39710 // length for r
39711 var rlen = sig[index++]
39712 if (rlen & 0x80) {
39713 lenbyte = rlen - 0x80
39714 if (index + lenbyte > length) return
39715 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39716 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
39717 }
39718 if (rlen > length - index) return
39719 var rindex = index
39720 index += rlen
39721
39722 // sequence tag byte for s
39723 if (sig[index++] !== 0x02) return
39724
39725 // length for s
39726 var slen = sig[index++]
39727 if (slen & 0x80) {
39728 lenbyte = slen - 0x80
39729 if (index + lenbyte > length) return
39730 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39731 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
39732 }
39733 if (slen > length - index) return
39734 var sindex = index
39735 index += slen
39736
39737 // ignore leading zeros in r
39738 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
39739 // copy r value
39740 if (rlen > 32) return
39741 var rvalue = sig.slice(rindex, rindex + rlen)
39742 rvalue.copy(r, 32 - rvalue.length)
39743
39744 // ignore leading zeros in s
39745 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
39746 // copy s value
39747 if (slen > 32) return
39748 var svalue = sig.slice(sindex, sindex + slen)
39749 svalue.copy(s, 32 - svalue.length)
39750
39751 return { r: r, s: s }
39752 }
39753
39754 }).call(this,require("buffer").Buffer)
39755 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
39756 (function (Buffer){
39757 'use strict'
39758 var createHash = require('create-hash')
39759 var BN = require('bn.js')
39760 var EC = require('elliptic').ec
39761
39762 var messages = require('../messages.json')
39763
39764 var ec = new EC('secp256k1')
39765 var ecparams = ec.curve
39766
39767 function loadCompressedPublicKey (first, xBuffer) {
39768 var x = new BN(xBuffer)
39769
39770 // overflow
39771 if (x.cmp(ecparams.p) >= 0) return null
39772 x = x.toRed(ecparams.red)
39773
39774 // compute corresponding Y
39775 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
39776 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
39777
39778 return ec.keyPair({ pub: { x: x, y: y } })
39779 }
39780
39781 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
39782 var x = new BN(xBuffer)
39783 var y = new BN(yBuffer)
39784
39785 // overflow
39786 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
39787
39788 x = x.toRed(ecparams.red)
39789 y = y.toRed(ecparams.red)
39790
39791 // is odd flag
39792 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
39793
39794 // x*x*x + b = y*y
39795 var x3 = x.redSqr().redIMul(x)
39796 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
39797
39798 return ec.keyPair({ pub: { x: x, y: y } })
39799 }
39800
39801 function loadPublicKey (publicKey) {
39802 var first = publicKey[0]
39803 switch (first) {
39804 case 0x02:
39805 case 0x03:
39806 if (publicKey.length !== 33) return null
39807 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
39808 case 0x04:
39809 case 0x06:
39810 case 0x07:
39811 if (publicKey.length !== 65) return null
39812 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
39813 default:
39814 return null
39815 }
39816 }
39817
39818 exports.privateKeyVerify = function (privateKey) {
39819 var bn = new BN(privateKey)
39820 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
39821 }
39822
39823 exports.privateKeyExport = function (privateKey, compressed) {
39824 var d = new BN(privateKey)
39825 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
39826
39827 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39828 }
39829
39830 exports.privateKeyTweakAdd = function (privateKey, tweak) {
39831 var bn = new BN(tweak)
39832 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39833
39834 bn.iadd(new BN(privateKey))
39835 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
39836 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39837
39838 return bn.toArrayLike(Buffer, 'be', 32)
39839 }
39840
39841 exports.privateKeyTweakMul = function (privateKey, tweak) {
39842 var bn = new BN(tweak)
39843 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
39844
39845 bn.imul(new BN(privateKey))
39846 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
39847
39848 return bn.toArrayLike(Buffer, 'be', 32)
39849 }
39850
39851 exports.publicKeyCreate = function (privateKey, compressed) {
39852 var d = new BN(privateKey)
39853 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
39854
39855 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39856 }
39857
39858 exports.publicKeyConvert = function (publicKey, compressed) {
39859 var pair = loadPublicKey(publicKey)
39860 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39861
39862 return new Buffer(pair.getPublic(compressed, true))
39863 }
39864
39865 exports.publicKeyVerify = function (publicKey) {
39866 return loadPublicKey(publicKey) !== null
39867 }
39868
39869 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
39870 var pair = loadPublicKey(publicKey)
39871 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39872
39873 tweak = new BN(tweak)
39874 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
39875
39876 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
39877 }
39878
39879 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
39880 var pair = loadPublicKey(publicKey)
39881 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39882
39883 tweak = new BN(tweak)
39884 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
39885
39886 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
39887 }
39888
39889 exports.publicKeyCombine = function (publicKeys, compressed) {
39890 var pairs = new Array(publicKeys.length)
39891 for (var i = 0; i < publicKeys.length; ++i) {
39892 pairs[i] = loadPublicKey(publicKeys[i])
39893 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39894 }
39895
39896 var point = pairs[0].pub
39897 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
39898 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
39899
39900 return new Buffer(point.encode(true, compressed))
39901 }
39902
39903 exports.signatureNormalize = function (signature) {
39904 var r = new BN(signature.slice(0, 32))
39905 var s = new BN(signature.slice(32, 64))
39906 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39907
39908 var result = new Buffer(signature)
39909 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
39910
39911 return result
39912 }
39913
39914 exports.signatureExport = function (signature) {
39915 var r = signature.slice(0, 32)
39916 var s = signature.slice(32, 64)
39917 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39918
39919 return { r: r, s: s }
39920 }
39921
39922 exports.signatureImport = function (sigObj) {
39923 var r = new BN(sigObj.r)
39924 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
39925
39926 var s = new BN(sigObj.s)
39927 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
39928
39929 return Buffer.concat([
39930 r.toArrayLike(Buffer, 'be', 32),
39931 s.toArrayLike(Buffer, 'be', 32)
39932 ])
39933 }
39934
39935 exports.sign = function (message, privateKey, noncefn, data) {
39936 if (typeof noncefn === 'function') {
39937 var getNonce = noncefn
39938 noncefn = function (counter) {
39939 var nonce = getNonce(message, privateKey, null, data, counter)
39940 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
39941
39942 return new BN(nonce)
39943 }
39944 }
39945
39946 var d = new BN(privateKey)
39947 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
39948
39949 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
39950 return {
39951 signature: Buffer.concat([
39952 result.r.toArrayLike(Buffer, 'be', 32),
39953 result.s.toArrayLike(Buffer, 'be', 32)
39954 ]),
39955 recovery: result.recoveryParam
39956 }
39957 }
39958
39959 exports.verify = function (message, signature, publicKey) {
39960 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
39961
39962 var sigr = new BN(sigObj.r)
39963 var sigs = new BN(sigObj.s)
39964 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39965 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
39966
39967 var pair = loadPublicKey(publicKey)
39968 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39969
39970 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
39971 }
39972
39973 exports.recover = function (message, signature, recovery, compressed) {
39974 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
39975
39976 var sigr = new BN(sigObj.r)
39977 var sigs = new BN(sigObj.s)
39978 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39979
39980 try {
39981 if (sigr.isZero() || sigs.isZero()) throw new Error()
39982
39983 var point = ec.recoverPubKey(message, sigObj, recovery)
39984 return new Buffer(point.encode(true, compressed))
39985 } catch (err) {
39986 throw new Error(messages.ECDSA_RECOVER_FAIL)
39987 }
39988 }
39989
39990 exports.ecdh = function (publicKey, privateKey) {
39991 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
39992 return createHash('sha256').update(shared).digest()
39993 }
39994
39995 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
39996 var pair = loadPublicKey(publicKey)
39997 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39998
39999 var scalar = new BN(privateKey)
40000 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
40001
40002 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
40003 }
40004
40005 }).call(this,require("buffer").Buffer)
40006 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
40007 'use strict'
40008 var assert = require('./assert')
40009 var der = require('./der')
40010 var messages = require('./messages.json')
40011
40012 function initCompressedValue (value, defaultValue) {
40013 if (value === undefined) return defaultValue
40014
40015 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
40016 return value
40017 }
40018
40019 module.exports = function (secp256k1) {
40020 return {
40021 privateKeyVerify: function (privateKey) {
40022 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40023 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
40024 },
40025
40026 privateKeyExport: function (privateKey, compressed) {
40027 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40028 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40029
40030 compressed = initCompressedValue(compressed, true)
40031 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
40032
40033 return der.privateKeyExport(privateKey, publicKey, compressed)
40034 },
40035
40036 privateKeyImport: function (privateKey) {
40037 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40038
40039 privateKey = der.privateKeyImport(privateKey)
40040 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
40041
40042 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
40043 },
40044
40045 privateKeyTweakAdd: function (privateKey, tweak) {
40046 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40047 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40048
40049 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40050 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40051
40052 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
40053 },
40054
40055 privateKeyTweakMul: function (privateKey, tweak) {
40056 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40057 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40058
40059 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40060 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40061
40062 return secp256k1.privateKeyTweakMul(privateKey, tweak)
40063 },
40064
40065 publicKeyCreate: function (privateKey, compressed) {
40066 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40067 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40068
40069 compressed = initCompressedValue(compressed, true)
40070
40071 return secp256k1.publicKeyCreate(privateKey, compressed)
40072 },
40073
40074 publicKeyConvert: function (publicKey, compressed) {
40075 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40076 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40077
40078 compressed = initCompressedValue(compressed, true)
40079
40080 return secp256k1.publicKeyConvert(publicKey, compressed)
40081 },
40082
40083 publicKeyVerify: function (publicKey) {
40084 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40085 return secp256k1.publicKeyVerify(publicKey)
40086 },
40087
40088 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
40089 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40090 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40091
40092 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40093 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40094
40095 compressed = initCompressedValue(compressed, true)
40096
40097 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
40098 },
40099
40100 publicKeyTweakMul: function (publicKey, tweak, compressed) {
40101 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40102 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40103
40104 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40105 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40106
40107 compressed = initCompressedValue(compressed, true)
40108
40109 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
40110 },
40111
40112 publicKeyCombine: function (publicKeys, compressed) {
40113 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
40114 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
40115 for (var i = 0; i < publicKeys.length; ++i) {
40116 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
40117 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40118 }
40119
40120 compressed = initCompressedValue(compressed, true)
40121
40122 return secp256k1.publicKeyCombine(publicKeys, compressed)
40123 },
40124
40125 signatureNormalize: function (signature) {
40126 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40127 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40128
40129 return secp256k1.signatureNormalize(signature)
40130 },
40131
40132 signatureExport: function (signature) {
40133 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40134 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40135
40136 var sigObj = secp256k1.signatureExport(signature)
40137 return der.signatureExport(sigObj)
40138 },
40139
40140 signatureImport: function (sig) {
40141 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40142 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40143
40144 var sigObj = der.signatureImport(sig)
40145 if (sigObj) return secp256k1.signatureImport(sigObj)
40146
40147 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40148 },
40149
40150 signatureImportLax: function (sig) {
40151 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40152 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40153
40154 var sigObj = der.signatureImportLax(sig)
40155 if (sigObj) return secp256k1.signatureImport(sigObj)
40156
40157 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40158 },
40159
40160 sign: function (message, privateKey, options) {
40161 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40162 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40163
40164 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40165 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40166
40167 var data = null
40168 var noncefn = null
40169 if (options !== undefined) {
40170 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
40171
40172 if (options.data !== undefined) {
40173 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
40174 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
40175 data = options.data
40176 }
40177
40178 if (options.noncefn !== undefined) {
40179 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
40180 noncefn = options.noncefn
40181 }
40182 }
40183
40184 return secp256k1.sign(message, privateKey, noncefn, data)
40185 },
40186
40187 verify: function (message, signature, publicKey) {
40188 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40189 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40190
40191 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40192 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40193
40194 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40195 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40196
40197 return secp256k1.verify(message, signature, publicKey)
40198 },
40199
40200 recover: function (message, signature, recovery, compressed) {
40201 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40202 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40203
40204 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40205 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40206
40207 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
40208 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
40209
40210 compressed = initCompressedValue(compressed, true)
40211
40212 return secp256k1.recover(message, signature, recovery, compressed)
40213 },
40214
40215 ecdh: function (publicKey, privateKey) {
40216 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40217 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40218
40219 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40220 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40221
40222 return secp256k1.ecdh(publicKey, privateKey)
40223 },
40224
40225 ecdhUnsafe: function (publicKey, privateKey, compressed) {
40226 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40227 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40228
40229 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40230 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40231
40232 compressed = initCompressedValue(compressed, true)
40233
40234 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
40235 }
40236 }
40237 }
40238
40239 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
40240 module.exports={
40241 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
40242 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
40243 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
40244 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
40245 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40246 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
40247 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
40248 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
40249 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
40250 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
40251 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
40252 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
40253 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
40254 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
40255 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40256 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
40257 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
40258 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
40259 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
40260 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
40261 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
40262 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
40263 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
40264 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
40265 "MSG32_TYPE_INVALID": "message should be a Buffer",
40266 "MSG32_LENGTH_INVALID": "message length is invalid",
40267 "OPTIONS_TYPE_INVALID": "options should be an Object",
40268 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
40269 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
40270 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
40271 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
40272 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
40273 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
40274 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
40275 }
40276
40277 },{}],79:[function(require,module,exports){
40278 (function (Buffer){
40279 // prototype class for hash functions
40280 function Hash (blockSize, finalSize) {
40281 this._block = new Buffer(blockSize)
40282 this._finalSize = finalSize
40283 this._blockSize = blockSize
40284 this._len = 0
40285 this._s = 0
40286 }
40287
40288 Hash.prototype.update = function (data, enc) {
40289 if (typeof data === 'string') {
40290 enc = enc || 'utf8'
40291 data = new Buffer(data, enc)
40292 }
40293
40294 var l = this._len += data.length
40295 var s = this._s || 0
40296 var f = 0
40297 var buffer = this._block
40298
40299 while (s < l) {
40300 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
40301 var ch = (t - f)
40302
40303 for (var i = 0; i < ch; i++) {
40304 buffer[(s % this._blockSize) + i] = data[i + f]
40305 }
40306
40307 s += ch
40308 f += ch
40309
40310 if ((s % this._blockSize) === 0) {
40311 this._update(buffer)
40312 }
40313 }
40314 this._s = s
40315
40316 return this
40317 }
40318
40319 Hash.prototype.digest = function (enc) {
40320 // Suppose the length of the message M, in bits, is l
40321 var l = this._len * 8
40322
40323 // Append the bit 1 to the end of the message
40324 this._block[this._len % this._blockSize] = 0x80
40325
40326 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
40327 this._block.fill(0, this._len % this._blockSize + 1)
40328
40329 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
40330 this._update(this._block)
40331 this._block.fill(0)
40332 }
40333
40334 // to this append the block which is equal to the number l written in binary
40335 // TODO: handle case where l is > Math.pow(2, 29)
40336 this._block.writeInt32BE(l, this._blockSize - 4)
40337
40338 var hash = this._update(this._block) || this._hash()
40339
40340 return enc ? hash.toString(enc) : hash
40341 }
40342
40343 Hash.prototype._update = function () {
40344 throw new Error('_update must be implemented by subclass')
40345 }
40346
40347 module.exports = Hash
40348
40349 }).call(this,require("buffer").Buffer)
40350 },{"buffer":5}],80:[function(require,module,exports){
40351 var exports = module.exports = function SHA (algorithm) {
40352 algorithm = algorithm.toLowerCase()
40353
40354 var Algorithm = exports[algorithm]
40355 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
40356
40357 return new Algorithm()
40358 }
40359
40360 exports.sha = require('./sha')
40361 exports.sha1 = require('./sha1')
40362 exports.sha224 = require('./sha224')
40363 exports.sha256 = require('./sha256')
40364 exports.sha384 = require('./sha384')
40365 exports.sha512 = require('./sha512')
40366
40367 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
40368 (function (Buffer){
40369 /*
40370 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
40371 * in FIPS PUB 180-1
40372 * This source code is derived from sha1.js of the same repository.
40373 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
40374 * operation was added.
40375 */
40376
40377 var inherits = require('inherits')
40378 var Hash = require('./hash')
40379
40380 var K = [
40381 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40382 ]
40383
40384 var W = new Array(80)
40385
40386 function Sha () {
40387 this.init()
40388 this._w = W
40389
40390 Hash.call(this, 64, 56)
40391 }
40392
40393 inherits(Sha, Hash)
40394
40395 Sha.prototype.init = function () {
40396 this._a = 0x67452301
40397 this._b = 0xefcdab89
40398 this._c = 0x98badcfe
40399 this._d = 0x10325476
40400 this._e = 0xc3d2e1f0
40401
40402 return this
40403 }
40404
40405 function rotl5 (num) {
40406 return (num << 5) | (num >>> 27)
40407 }
40408
40409 function rotl30 (num) {
40410 return (num << 30) | (num >>> 2)
40411 }
40412
40413 function ft (s, b, c, d) {
40414 if (s === 0) return (b & c) | ((~b) & d)
40415 if (s === 2) return (b & c) | (b & d) | (c & d)
40416 return b ^ c ^ d
40417 }
40418
40419 Sha.prototype._update = function (M) {
40420 var W = this._w
40421
40422 var a = this._a | 0
40423 var b = this._b | 0
40424 var c = this._c | 0
40425 var d = this._d | 0
40426 var e = this._e | 0
40427
40428 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40429 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
40430
40431 for (var j = 0; j < 80; ++j) {
40432 var s = ~~(j / 20)
40433 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40434
40435 e = d
40436 d = c
40437 c = rotl30(b)
40438 b = a
40439 a = t
40440 }
40441
40442 this._a = (a + this._a) | 0
40443 this._b = (b + this._b) | 0
40444 this._c = (c + this._c) | 0
40445 this._d = (d + this._d) | 0
40446 this._e = (e + this._e) | 0
40447 }
40448
40449 Sha.prototype._hash = function () {
40450 var H = new Buffer(20)
40451
40452 H.writeInt32BE(this._a | 0, 0)
40453 H.writeInt32BE(this._b | 0, 4)
40454 H.writeInt32BE(this._c | 0, 8)
40455 H.writeInt32BE(this._d | 0, 12)
40456 H.writeInt32BE(this._e | 0, 16)
40457
40458 return H
40459 }
40460
40461 module.exports = Sha
40462
40463 }).call(this,require("buffer").Buffer)
40464 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
40465 (function (Buffer){
40466 /*
40467 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
40468 * in FIPS PUB 180-1
40469 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
40470 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40471 * Distributed under the BSD License
40472 * See http://pajhome.org.uk/crypt/md5 for details.
40473 */
40474
40475 var inherits = require('inherits')
40476 var Hash = require('./hash')
40477
40478 var K = [
40479 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40480 ]
40481
40482 var W = new Array(80)
40483
40484 function Sha1 () {
40485 this.init()
40486 this._w = W
40487
40488 Hash.call(this, 64, 56)
40489 }
40490
40491 inherits(Sha1, Hash)
40492
40493 Sha1.prototype.init = function () {
40494 this._a = 0x67452301
40495 this._b = 0xefcdab89
40496 this._c = 0x98badcfe
40497 this._d = 0x10325476
40498 this._e = 0xc3d2e1f0
40499
40500 return this
40501 }
40502
40503 function rotl1 (num) {
40504 return (num << 1) | (num >>> 31)
40505 }
40506
40507 function rotl5 (num) {
40508 return (num << 5) | (num >>> 27)
40509 }
40510
40511 function rotl30 (num) {
40512 return (num << 30) | (num >>> 2)
40513 }
40514
40515 function ft (s, b, c, d) {
40516 if (s === 0) return (b & c) | ((~b) & d)
40517 if (s === 2) return (b & c) | (b & d) | (c & d)
40518 return b ^ c ^ d
40519 }
40520
40521 Sha1.prototype._update = function (M) {
40522 var W = this._w
40523
40524 var a = this._a | 0
40525 var b = this._b | 0
40526 var c = this._c | 0
40527 var d = this._d | 0
40528 var e = this._e | 0
40529
40530 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40531 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
40532
40533 for (var j = 0; j < 80; ++j) {
40534 var s = ~~(j / 20)
40535 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40536
40537 e = d
40538 d = c
40539 c = rotl30(b)
40540 b = a
40541 a = t
40542 }
40543
40544 this._a = (a + this._a) | 0
40545 this._b = (b + this._b) | 0
40546 this._c = (c + this._c) | 0
40547 this._d = (d + this._d) | 0
40548 this._e = (e + this._e) | 0
40549 }
40550
40551 Sha1.prototype._hash = function () {
40552 var H = new Buffer(20)
40553
40554 H.writeInt32BE(this._a | 0, 0)
40555 H.writeInt32BE(this._b | 0, 4)
40556 H.writeInt32BE(this._c | 0, 8)
40557 H.writeInt32BE(this._d | 0, 12)
40558 H.writeInt32BE(this._e | 0, 16)
40559
40560 return H
40561 }
40562
40563 module.exports = Sha1
40564
40565 }).call(this,require("buffer").Buffer)
40566 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
40567 (function (Buffer){
40568 /**
40569 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40570 * in FIPS 180-2
40571 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40572 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40573 *
40574 */
40575
40576 var inherits = require('inherits')
40577 var Sha256 = require('./sha256')
40578 var Hash = require('./hash')
40579
40580 var W = new Array(64)
40581
40582 function Sha224 () {
40583 this.init()
40584
40585 this._w = W // new Array(64)
40586
40587 Hash.call(this, 64, 56)
40588 }
40589
40590 inherits(Sha224, Sha256)
40591
40592 Sha224.prototype.init = function () {
40593 this._a = 0xc1059ed8
40594 this._b = 0x367cd507
40595 this._c = 0x3070dd17
40596 this._d = 0xf70e5939
40597 this._e = 0xffc00b31
40598 this._f = 0x68581511
40599 this._g = 0x64f98fa7
40600 this._h = 0xbefa4fa4
40601
40602 return this
40603 }
40604
40605 Sha224.prototype._hash = function () {
40606 var H = new Buffer(28)
40607
40608 H.writeInt32BE(this._a, 0)
40609 H.writeInt32BE(this._b, 4)
40610 H.writeInt32BE(this._c, 8)
40611 H.writeInt32BE(this._d, 12)
40612 H.writeInt32BE(this._e, 16)
40613 H.writeInt32BE(this._f, 20)
40614 H.writeInt32BE(this._g, 24)
40615
40616 return H
40617 }
40618
40619 module.exports = Sha224
40620
40621 }).call(this,require("buffer").Buffer)
40622 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
40623 (function (Buffer){
40624 /**
40625 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40626 * in FIPS 180-2
40627 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40628 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40629 *
40630 */
40631
40632 var inherits = require('inherits')
40633 var Hash = require('./hash')
40634
40635 var K = [
40636 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
40637 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
40638 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
40639 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
40640 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
40641 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
40642 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
40643 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
40644 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
40645 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
40646 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
40647 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
40648 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
40649 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
40650 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
40651 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
40652 ]
40653
40654 var W = new Array(64)
40655
40656 function Sha256 () {
40657 this.init()
40658
40659 this._w = W // new Array(64)
40660
40661 Hash.call(this, 64, 56)
40662 }
40663
40664 inherits(Sha256, Hash)
40665
40666 Sha256.prototype.init = function () {
40667 this._a = 0x6a09e667
40668 this._b = 0xbb67ae85
40669 this._c = 0x3c6ef372
40670 this._d = 0xa54ff53a
40671 this._e = 0x510e527f
40672 this._f = 0x9b05688c
40673 this._g = 0x1f83d9ab
40674 this._h = 0x5be0cd19
40675
40676 return this
40677 }
40678
40679 function ch (x, y, z) {
40680 return z ^ (x & (y ^ z))
40681 }
40682
40683 function maj (x, y, z) {
40684 return (x & y) | (z & (x | y))
40685 }
40686
40687 function sigma0 (x) {
40688 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
40689 }
40690
40691 function sigma1 (x) {
40692 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
40693 }
40694
40695 function gamma0 (x) {
40696 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
40697 }
40698
40699 function gamma1 (x) {
40700 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
40701 }
40702
40703 Sha256.prototype._update = function (M) {
40704 var W = this._w
40705
40706 var a = this._a | 0
40707 var b = this._b | 0
40708 var c = this._c | 0
40709 var d = this._d | 0
40710 var e = this._e | 0
40711 var f = this._f | 0
40712 var g = this._g | 0
40713 var h = this._h | 0
40714
40715 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40716 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
40717
40718 for (var j = 0; j < 64; ++j) {
40719 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
40720 var T2 = (sigma0(a) + maj(a, b, c)) | 0
40721
40722 h = g
40723 g = f
40724 f = e
40725 e = (d + T1) | 0
40726 d = c
40727 c = b
40728 b = a
40729 a = (T1 + T2) | 0
40730 }
40731
40732 this._a = (a + this._a) | 0
40733 this._b = (b + this._b) | 0
40734 this._c = (c + this._c) | 0
40735 this._d = (d + this._d) | 0
40736 this._e = (e + this._e) | 0
40737 this._f = (f + this._f) | 0
40738 this._g = (g + this._g) | 0
40739 this._h = (h + this._h) | 0
40740 }
40741
40742 Sha256.prototype._hash = function () {
40743 var H = new Buffer(32)
40744
40745 H.writeInt32BE(this._a, 0)
40746 H.writeInt32BE(this._b, 4)
40747 H.writeInt32BE(this._c, 8)
40748 H.writeInt32BE(this._d, 12)
40749 H.writeInt32BE(this._e, 16)
40750 H.writeInt32BE(this._f, 20)
40751 H.writeInt32BE(this._g, 24)
40752 H.writeInt32BE(this._h, 28)
40753
40754 return H
40755 }
40756
40757 module.exports = Sha256
40758
40759 }).call(this,require("buffer").Buffer)
40760 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
40761 (function (Buffer){
40762 var inherits = require('inherits')
40763 var SHA512 = require('./sha512')
40764 var Hash = require('./hash')
40765
40766 var W = new Array(160)
40767
40768 function Sha384 () {
40769 this.init()
40770 this._w = W
40771
40772 Hash.call(this, 128, 112)
40773 }
40774
40775 inherits(Sha384, SHA512)
40776
40777 Sha384.prototype.init = function () {
40778 this._ah = 0xcbbb9d5d
40779 this._bh = 0x629a292a
40780 this._ch = 0x9159015a
40781 this._dh = 0x152fecd8
40782 this._eh = 0x67332667
40783 this._fh = 0x8eb44a87
40784 this._gh = 0xdb0c2e0d
40785 this._hh = 0x47b5481d
40786
40787 this._al = 0xc1059ed8
40788 this._bl = 0x367cd507
40789 this._cl = 0x3070dd17
40790 this._dl = 0xf70e5939
40791 this._el = 0xffc00b31
40792 this._fl = 0x68581511
40793 this._gl = 0x64f98fa7
40794 this._hl = 0xbefa4fa4
40795
40796 return this
40797 }
40798
40799 Sha384.prototype._hash = function () {
40800 var H = new Buffer(48)
40801
40802 function writeInt64BE (h, l, offset) {
40803 H.writeInt32BE(h, offset)
40804 H.writeInt32BE(l, offset + 4)
40805 }
40806
40807 writeInt64BE(this._ah, this._al, 0)
40808 writeInt64BE(this._bh, this._bl, 8)
40809 writeInt64BE(this._ch, this._cl, 16)
40810 writeInt64BE(this._dh, this._dl, 24)
40811 writeInt64BE(this._eh, this._el, 32)
40812 writeInt64BE(this._fh, this._fl, 40)
40813
40814 return H
40815 }
40816
40817 module.exports = Sha384
40818
40819 }).call(this,require("buffer").Buffer)
40820 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
40821 (function (Buffer){
40822 var inherits = require('inherits')
40823 var Hash = require('./hash')
40824
40825 var K = [
40826 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
40827 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
40828 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
40829 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
40830 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
40831 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
40832 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
40833 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
40834 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
40835 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
40836 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
40837 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
40838 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
40839 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
40840 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
40841 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
40842 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
40843 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
40844 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
40845 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
40846 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
40847 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
40848 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
40849 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
40850 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
40851 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
40852 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
40853 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
40854 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
40855 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
40856 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
40857 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
40858 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
40859 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
40860 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
40861 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
40862 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
40863 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
40864 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
40865 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
40866 ]
40867
40868 var W = new Array(160)
40869
40870 function Sha512 () {
40871 this.init()
40872 this._w = W
40873
40874 Hash.call(this, 128, 112)
40875 }
40876
40877 inherits(Sha512, Hash)
40878
40879 Sha512.prototype.init = function () {
40880 this._ah = 0x6a09e667
40881 this._bh = 0xbb67ae85
40882 this._ch = 0x3c6ef372
40883 this._dh = 0xa54ff53a
40884 this._eh = 0x510e527f
40885 this._fh = 0x9b05688c
40886 this._gh = 0x1f83d9ab
40887 this._hh = 0x5be0cd19
40888
40889 this._al = 0xf3bcc908
40890 this._bl = 0x84caa73b
40891 this._cl = 0xfe94f82b
40892 this._dl = 0x5f1d36f1
40893 this._el = 0xade682d1
40894 this._fl = 0x2b3e6c1f
40895 this._gl = 0xfb41bd6b
40896 this._hl = 0x137e2179
40897
40898 return this
40899 }
40900
40901 function Ch (x, y, z) {
40902 return z ^ (x & (y ^ z))
40903 }
40904
40905 function maj (x, y, z) {
40906 return (x & y) | (z & (x | y))
40907 }
40908
40909 function sigma0 (x, xl) {
40910 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
40911 }
40912
40913 function sigma1 (x, xl) {
40914 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
40915 }
40916
40917 function Gamma0 (x, xl) {
40918 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
40919 }
40920
40921 function Gamma0l (x, xl) {
40922 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
40923 }
40924
40925 function Gamma1 (x, xl) {
40926 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
40927 }
40928
40929 function Gamma1l (x, xl) {
40930 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
40931 }
40932
40933 function getCarry (a, b) {
40934 return (a >>> 0) < (b >>> 0) ? 1 : 0
40935 }
40936
40937 Sha512.prototype._update = function (M) {
40938 var W = this._w
40939
40940 var ah = this._ah | 0
40941 var bh = this._bh | 0
40942 var ch = this._ch | 0
40943 var dh = this._dh | 0
40944 var eh = this._eh | 0
40945 var fh = this._fh | 0
40946 var gh = this._gh | 0
40947 var hh = this._hh | 0
40948
40949 var al = this._al | 0
40950 var bl = this._bl | 0
40951 var cl = this._cl | 0
40952 var dl = this._dl | 0
40953 var el = this._el | 0
40954 var fl = this._fl | 0
40955 var gl = this._gl | 0
40956 var hl = this._hl | 0
40957
40958 for (var i = 0; i < 32; i += 2) {
40959 W[i] = M.readInt32BE(i * 4)
40960 W[i + 1] = M.readInt32BE(i * 4 + 4)
40961 }
40962 for (; i < 160; i += 2) {
40963 var xh = W[i - 15 * 2]
40964 var xl = W[i - 15 * 2 + 1]
40965 var gamma0 = Gamma0(xh, xl)
40966 var gamma0l = Gamma0l(xl, xh)
40967
40968 xh = W[i - 2 * 2]
40969 xl = W[i - 2 * 2 + 1]
40970 var gamma1 = Gamma1(xh, xl)
40971 var gamma1l = Gamma1l(xl, xh)
40972
40973 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
40974 var Wi7h = W[i - 7 * 2]
40975 var Wi7l = W[i - 7 * 2 + 1]
40976
40977 var Wi16h = W[i - 16 * 2]
40978 var Wi16l = W[i - 16 * 2 + 1]
40979
40980 var Wil = (gamma0l + Wi7l) | 0
40981 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
40982 Wil = (Wil + gamma1l) | 0
40983 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
40984 Wil = (Wil + Wi16l) | 0
40985 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
40986
40987 W[i] = Wih
40988 W[i + 1] = Wil
40989 }
40990
40991 for (var j = 0; j < 160; j += 2) {
40992 Wih = W[j]
40993 Wil = W[j + 1]
40994
40995 var majh = maj(ah, bh, ch)
40996 var majl = maj(al, bl, cl)
40997
40998 var sigma0h = sigma0(ah, al)
40999 var sigma0l = sigma0(al, ah)
41000 var sigma1h = sigma1(eh, el)
41001 var sigma1l = sigma1(el, eh)
41002
41003 // t1 = h + sigma1 + ch + K[j] + W[j]
41004 var Kih = K[j]
41005 var Kil = K[j + 1]
41006
41007 var chh = Ch(eh, fh, gh)
41008 var chl = Ch(el, fl, gl)
41009
41010 var t1l = (hl + sigma1l) | 0
41011 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
41012 t1l = (t1l + chl) | 0
41013 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
41014 t1l = (t1l + Kil) | 0
41015 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
41016 t1l = (t1l + Wil) | 0
41017 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
41018
41019 // t2 = sigma0 + maj
41020 var t2l = (sigma0l + majl) | 0
41021 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
41022
41023 hh = gh
41024 hl = gl
41025 gh = fh
41026 gl = fl
41027 fh = eh
41028 fl = el
41029 el = (dl + t1l) | 0
41030 eh = (dh + t1h + getCarry(el, dl)) | 0
41031 dh = ch
41032 dl = cl
41033 ch = bh
41034 cl = bl
41035 bh = ah
41036 bl = al
41037 al = (t1l + t2l) | 0
41038 ah = (t1h + t2h + getCarry(al, t1l)) | 0
41039 }
41040
41041 this._al = (this._al + al) | 0
41042 this._bl = (this._bl + bl) | 0
41043 this._cl = (this._cl + cl) | 0
41044 this._dl = (this._dl + dl) | 0
41045 this._el = (this._el + el) | 0
41046 this._fl = (this._fl + fl) | 0
41047 this._gl = (this._gl + gl) | 0
41048 this._hl = (this._hl + hl) | 0
41049
41050 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
41051 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
41052 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
41053 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
41054 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
41055 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
41056 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
41057 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
41058 }
41059
41060 Sha512.prototype._hash = function () {
41061 var H = new Buffer(64)
41062
41063 function writeInt64BE (h, l, offset) {
41064 H.writeInt32BE(h, offset)
41065 H.writeInt32BE(l, offset + 4)
41066 }
41067
41068 writeInt64BE(this._ah, this._al, 0)
41069 writeInt64BE(this._bh, this._bl, 8)
41070 writeInt64BE(this._ch, this._cl, 16)
41071 writeInt64BE(this._dh, this._dl, 24)
41072 writeInt64BE(this._eh, this._el, 32)
41073 writeInt64BE(this._fh, this._fl, 40)
41074 writeInt64BE(this._gh, this._gl, 48)
41075 writeInt64BE(this._hh, this._hl, 56)
41076
41077 return H
41078 }
41079
41080 module.exports = Sha512
41081
41082 }).call(this,require("buffer").Buffer)
41083 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
41084 var isHexPrefixed = require('is-hex-prefixed');
41085
41086 /**
41087 * Removes '0x' from a given `String` is present
41088 * @param {String} str the string value
41089 * @return {String|Optional} a string by pass if necessary
41090 */
41091 module.exports = function stripHexPrefix(str) {
41092 if (typeof str !== 'string') {
41093 return str;
41094 }
41095
41096 return isHexPrefixed(str) ? str.slice(2) : str;
41097 }
41098
41099 },{"is-hex-prefixed":64}]},{},[31])(31)
41100 });</script>
41101 <script>function convertRippleAdrr(address) {
41102 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
41103 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
41104 )
41105 }
41106
41107 function convertRipplePriv(priv) {
41108 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
41109 }
41110
41111 </script>
41112 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
41113
41114 //// base.js
41115
41116 /** @fileOverview Javascript cryptography implementation.
41117 *
41118 * Crush to remove comments, shorten variable names and
41119 * generally reduce transmission size.
41120 *
41121 * @author Emily Stark
41122 * @author Mike Hamburg
41123 * @author Dan Boneh
41124 */
41125
41126 "use strict";
41127 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
41128 /*global document, window, escape, unescape, module, require, Uint32Array */
41129
41130 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
41131 var sjcl = {
41132 /** @namespace Symmetric ciphers. */
41133 cipher: {},
41134
41135 /** @namespace Hash functions. Right now only SHA256 is implemented. */
41136 hash: {},
41137
41138 /** @namespace Key exchange functions. Right now only SRP is implemented. */
41139 keyexchange: {},
41140
41141 /** @namespace Block cipher modes of operation. */
41142 mode: {},
41143
41144 /** @namespace Miscellaneous. HMAC and PBKDF2. */
41145 misc: {},
41146
41147 /**
41148 * @namespace Bit array encoders and decoders.
41149 *
41150 * @description
41151 * The members of this namespace are functions which translate between
41152 * SJCL's bitArrays and other objects (usually strings). Because it
41153 * isn't always clear which direction is encoding and which is decoding,
41154 * the method names are "fromBits" and "toBits".
41155 */
41156 codec: {},
41157
41158 /** @namespace Exceptions. */
41159 exception: {
41160 /** @constructor Ciphertext is corrupt. */
41161 corrupt: function(message) {
41162 this.toString = function() { return "CORRUPT: "+this.message; };
41163 this.message = message;
41164 },
41165
41166 /** @constructor Invalid parameter. */
41167 invalid: function(message) {
41168 this.toString = function() { return "INVALID: "+this.message; };
41169 this.message = message;
41170 },
41171
41172 /** @constructor Bug or missing feature in SJCL. @constructor */
41173 bug: function(message) {
41174 this.toString = function() { return "BUG: "+this.message; };
41175 this.message = message;
41176 },
41177
41178 /** @constructor Something isn't ready. */
41179 notReady: function(message) {
41180 this.toString = function() { return "NOT READY: "+this.message; };
41181 this.message = message;
41182 }
41183 }
41184 };
41185
41186 if(typeof module !== 'undefined' && module.exports){
41187 module.exports = sjcl;
41188 }
41189 if (typeof define === "function") {
41190 define([], function () {
41191 return sjcl;
41192 });
41193 }
41194
41195
41196 //// bitArray.js
41197
41198 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
41199 *
41200 * @author Emily Stark
41201 * @author Mike Hamburg
41202 * @author Dan Boneh
41203 */
41204
41205 /** @namespace Arrays of bits, encoded as arrays of Numbers.
41206 *
41207 * @description
41208 * <p>
41209 * These objects are the currency accepted by SJCL's crypto functions.
41210 * </p>
41211 *
41212 * <p>
41213 * Most of our crypto primitives operate on arrays of 4-byte words internally,
41214 * but many of them can take arguments that are not a multiple of 4 bytes.
41215 * This library encodes arrays of bits (whose size need not be a multiple of 8
41216 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
41217 * array of words, 32 bits at a time. Since the words are double-precision
41218 * floating point numbers, they fit some extra data. We use this (in a private,
41219 * possibly-changing manner) to encode the number of bits actually present
41220 * in the last word of the array.
41221 * </p>
41222 *
41223 * <p>
41224 * Because bitwise ops clear this out-of-band data, these arrays can be passed
41225 * to ciphers like AES which want arrays of words.
41226 * </p>
41227 */
41228 sjcl.bitArray = {
41229 /**
41230 * Array slices in units of bits.
41231 * @param {bitArray} a The array to slice.
41232 * @param {Number} bstart The offset to the start of the slice, in bits.
41233 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
41234 * slice until the end of the array.
41235 * @return {bitArray} The requested slice.
41236 */
41237 bitSlice: function (a, bstart, bend) {
41238 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
41239 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
41240 },
41241
41242 /**
41243 * Extract a number packed into a bit array.
41244 * @param {bitArray} a The array to slice.
41245 * @param {Number} bstart The offset to the start of the slice, in bits.
41246 * @param {Number} length The length of the number to extract.
41247 * @return {Number} The requested slice.
41248 */
41249 extract: function(a, bstart, blength) {
41250 // FIXME: this Math.floor is not necessary at all, but for some reason
41251 // seems to suppress a bug in the Chromium JIT.
41252 var x, sh = Math.floor((-bstart-blength) & 31);
41253 if ((bstart + blength - 1 ^ bstart) & -32) {
41254 // it crosses a boundary
41255 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
41256 } else {
41257 // within a single word
41258 x = a[bstart/32|0] >>> sh;
41259 }
41260 return x & ((1<<blength) - 1);
41261 },
41262
41263 /**
41264 * Concatenate two bit arrays.
41265 * @param {bitArray} a1 The first array.
41266 * @param {bitArray} a2 The second array.
41267 * @return {bitArray} The concatenation of a1 and a2.
41268 */
41269 concat: function (a1, a2) {
41270 if (a1.length === 0 || a2.length === 0) {
41271 return a1.concat(a2);
41272 }
41273
41274 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
41275 if (shift === 32) {
41276 return a1.concat(a2);
41277 } else {
41278 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
41279 }
41280 },
41281
41282 /**
41283 * Find the length of an array of bits.
41284 * @param {bitArray} a The array.
41285 * @return {Number} The length of a, in bits.
41286 */
41287 bitLength: function (a) {
41288 var l = a.length, x;
41289 if (l === 0) { return 0; }
41290 x = a[l - 1];
41291 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
41292 },
41293
41294 /**
41295 * Truncate an array.
41296 * @param {bitArray} a The array.
41297 * @param {Number} len The length to truncate to, in bits.
41298 * @return {bitArray} A new array, truncated to len bits.
41299 */
41300 clamp: function (a, len) {
41301 if (a.length * 32 < len) { return a; }
41302 a = a.slice(0, Math.ceil(len / 32));
41303 var l = a.length;
41304 len = len & 31;
41305 if (l > 0 && len) {
41306 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
41307 }
41308 return a;
41309 },
41310
41311 /**
41312 * Make a partial word for a bit array.
41313 * @param {Number} len The number of bits in the word.
41314 * @param {Number} x The bits.
41315 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
41316 * @return {Number} The partial word.
41317 */
41318 partial: function (len, x, _end) {
41319 if (len === 32) { return x; }
41320 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
41321 },
41322
41323 /**
41324 * Get the number of bits used by a partial word.
41325 * @param {Number} x The partial word.
41326 * @return {Number} The number of bits used by the partial word.
41327 */
41328 getPartial: function (x) {
41329 return Math.round(x/0x10000000000) || 32;
41330 },
41331
41332 /**
41333 * Compare two arrays for equality in a predictable amount of time.
41334 * @param {bitArray} a The first array.
41335 * @param {bitArray} b The second array.
41336 * @return {boolean} true if a == b; false otherwise.
41337 */
41338 equal: function (a, b) {
41339 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
41340 return false;
41341 }
41342 var x = 0, i;
41343 for (i=0; i<a.length; i++) {
41344 x |= a[i]^b[i];
41345 }
41346 return (x === 0);
41347 },
41348
41349 /** Shift an array right.
41350 * @param {bitArray} a The array to shift.
41351 * @param {Number} shift The number of bits to shift.
41352 * @param {Number} [carry=0] A byte to carry in
41353 * @param {bitArray} [out=[]] An array to prepend to the output.
41354 * @private
41355 */
41356 _shiftRight: function (a, shift, carry, out) {
41357 var i, last2=0, shift2;
41358 if (out === undefined) { out = []; }
41359
41360 for (; shift >= 32; shift -= 32) {
41361 out.push(carry);
41362 carry = 0;
41363 }
41364 if (shift === 0) {
41365 return out.concat(a);
41366 }
41367
41368 for (i=0; i<a.length; i++) {
41369 out.push(carry | a[i]>>>shift);
41370 carry = a[i] << (32-shift);
41371 }
41372 last2 = a.length ? a[a.length-1] : 0;
41373 shift2 = sjcl.bitArray.getPartial(last2);
41374 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
41375 return out;
41376 },
41377
41378 /** xor a block of 4 words together.
41379 * @private
41380 */
41381 _xor4: function(x,y) {
41382 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
41383 },
41384
41385 /** byteswap a word array inplace.
41386 * (does not handle partial words)
41387 * @param {sjcl.bitArray} a word array
41388 * @return {sjcl.bitArray} byteswapped array
41389 */
41390 byteswapM: function(a) {
41391 var i, v, m = 0xff00;
41392 for (i = 0; i < a.length; ++i) {
41393 v = a[i];
41394 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
41395 }
41396 return a;
41397 }
41398 };
41399
41400
41401 //// codecString.js
41402
41403 /** @fileOverview Bit array codec implementations.
41404 *
41405 * @author Emily Stark
41406 * @author Mike Hamburg
41407 * @author Dan Boneh
41408 */
41409
41410 /** @namespace UTF-8 strings */
41411 sjcl.codec.utf8String = {
41412 /** Convert from a bitArray to a UTF-8 string. */
41413 fromBits: function (arr) {
41414 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
41415 for (i=0; i<bl/8; i++) {
41416 if ((i&3) === 0) {
41417 tmp = arr[i/4];
41418 }
41419 out += String.fromCharCode(tmp >>> 24);
41420 tmp <<= 8;
41421 }
41422 return decodeURIComponent(escape(out));
41423 },
41424
41425 /** Convert from a UTF-8 string to a bitArray. */
41426 toBits: function (str) {
41427 str = unescape(encodeURIComponent(str));
41428 var out = [], i, tmp=0;
41429 for (i=0; i<str.length; i++) {
41430 tmp = tmp << 8 | str.charCodeAt(i);
41431 if ((i&3) === 3) {
41432 out.push(tmp);
41433 tmp = 0;
41434 }
41435 }
41436 if (i&3) {
41437 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
41438 }
41439 return out;
41440 }
41441 };
41442
41443
41444 //// codecHex.js
41445
41446 /** @fileOverview Bit array codec implementations.
41447 *
41448 * @author Emily Stark
41449 * @author Mike Hamburg
41450 * @author Dan Boneh
41451 */
41452
41453 /** @namespace Hexadecimal */
41454 sjcl.codec.hex = {
41455 /** Convert from a bitArray to a hex string. */
41456 fromBits: function (arr) {
41457 var out = "", i;
41458 for (i=0; i<arr.length; i++) {
41459 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
41460 }
41461 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
41462 },
41463 /** Convert from a hex string to a bitArray. */
41464 toBits: function (str) {
41465 var i, out=[], len;
41466 str = str.replace(/\s|0x/g, "");
41467 len = str.length;
41468 str = str + "00000000";
41469 for (i=0; i<str.length; i+=8) {
41470 out.push(parseInt(str.substr(i,8),16)^0);
41471 }
41472 return sjcl.bitArray.clamp(out, len*4);
41473 }
41474 };
41475
41476
41477 //// sha512.js
41478
41479 /** @fileOverview Javascript SHA-512 implementation.
41480 *
41481 * This implementation was written for CryptoJS by Jeff Mott and adapted for
41482 * SJCL by Stefan Thomas.
41483 *
41484 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
41485 * Released with New BSD License
41486 *
41487 * @author Emily Stark
41488 * @author Mike Hamburg
41489 * @author Dan Boneh
41490 * @author Jeff Mott
41491 * @author Stefan Thomas
41492 */
41493
41494 /**
41495 * Context for a SHA-512 operation in progress.
41496 * @constructor
41497 * @class Secure Hash Algorithm, 512 bits.
41498 */
41499 sjcl.hash.sha512 = function (hash) {
41500 if (!this._key[0]) { this._precompute(); }
41501 if (hash) {
41502 this._h = hash._h.slice(0);
41503 this._buffer = hash._buffer.slice(0);
41504 this._length = hash._length;
41505 } else {
41506 this.reset();
41507 }
41508 };
41509
41510 /**
41511 * Hash a string or an array of words.
41512 * @static
41513 * @param {bitArray|String} data the data to hash.
41514 * @return {bitArray} The hash value, an array of 16 big-endian words.
41515 */
41516 sjcl.hash.sha512.hash = function (data) {
41517 return (new sjcl.hash.sha512()).update(data).finalize();
41518 };
41519
41520 sjcl.hash.sha512.prototype = {
41521 /**
41522 * The hash's block size, in bits.
41523 * @constant
41524 */
41525 blockSize: 1024,
41526
41527 /**
41528 * Reset the hash state.
41529 * @return this
41530 */
41531 reset:function () {
41532 this._h = this._init.slice(0);
41533 this._buffer = [];
41534 this._length = 0;
41535 return this;
41536 },
41537
41538 /**
41539 * Input several words to the hash.
41540 * @param {bitArray|String} data the data to hash.
41541 * @return this
41542 */
41543 update: function (data) {
41544 if (typeof data === "string") {
41545 data = sjcl.codec.utf8String.toBits(data);
41546 }
41547 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
41548 ol = this._length,
41549 nl = this._length = ol + sjcl.bitArray.bitLength(data);
41550 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
41551 this._block(b.splice(0,32));
41552 }
41553 return this;
41554 },
41555
41556 /**
41557 * Complete hashing and output the hash value.
41558 * @return {bitArray} The hash value, an array of 16 big-endian words.
41559 */
41560 finalize:function () {
41561 var i, b = this._buffer, h = this._h;
41562
41563 // Round out and push the buffer
41564 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
41565
41566 // Round out the buffer to a multiple of 32 words, less the 4 length words.
41567 for (i = b.length + 4; i & 31; i++) {
41568 b.push(0);
41569 }
41570
41571 // append the length
41572 b.push(0);
41573 b.push(0);
41574 b.push(Math.floor(this._length / 0x100000000));
41575 b.push(this._length | 0);
41576
41577 while (b.length) {
41578 this._block(b.splice(0,32));
41579 }
41580
41581 this.reset();
41582 return h;
41583 },
41584
41585 /**
41586 * The SHA-512 initialization vector, to be precomputed.
41587 * @private
41588 */
41589 _init:[],
41590
41591 /**
41592 * Least significant 24 bits of SHA512 initialization values.
41593 *
41594 * Javascript only has 53 bits of precision, so we compute the 40 most
41595 * significant bits and add the remaining 24 bits as constants.
41596 *
41597 * @private
41598 */
41599 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
41600
41601 /*
41602 _init:
41603 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
41604 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
41605 */
41606
41607 /**
41608 * The SHA-512 hash key, to be precomputed.
41609 * @private
41610 */
41611 _key:[],
41612
41613 /**
41614 * Least significant 24 bits of SHA512 key values.
41615 * @private
41616 */
41617 _keyr:
41618 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
41619 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
41620 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
41621 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
41622 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
41623 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
41624 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
41625 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
41626 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
41627 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
41628
41629 /*
41630 _key:
41631 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
41632 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
41633 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
41634 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
41635 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
41636 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
41637 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
41638 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
41639 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
41640 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
41641 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
41642 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
41643 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
41644 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
41645 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
41646 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
41647 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
41648 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
41649 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
41650 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
41651 */
41652
41653 /**
41654 * Function to precompute _init and _key.
41655 * @private
41656 */
41657 _precompute: function () {
41658 // XXX: This code is for precomputing the SHA256 constants, change for
41659 // SHA512 and re-enable.
41660 var i = 0, prime = 2, factor;
41661
41662 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
41663 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
41664
41665 outer: for (; i<80; prime++) {
41666 for (factor=2; factor*factor <= prime; factor++) {
41667 if (prime % factor === 0) {
41668 // not a prime
41669 continue outer;
41670 }
41671 }
41672
41673 if (i<8) {
41674 this._init[i*2] = frac(Math.pow(prime, 1/2));
41675 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
41676 }
41677 this._key[i*2] = frac(Math.pow(prime, 1/3));
41678 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
41679 i++;
41680 }
41681 },
41682
41683 /**
41684 * Perform one cycle of SHA-512.
41685 * @param {bitArray} words one block of words.
41686 * @private
41687 */
41688 _block:function (words) {
41689 var i, wrh, wrl,
41690 w = words.slice(0),
41691 h = this._h,
41692 k = this._key,
41693 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
41694 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
41695 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
41696 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
41697
41698 // Working variables
41699 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
41700 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
41701 eh = h4h, el = h4l, fh = h5h, fl = h5l,
41702 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
41703
41704 for (i=0; i<80; i++) {
41705 // load up the input word for this round
41706 if (i<16) {
41707 wrh = w[i * 2];
41708 wrl = w[i * 2 + 1];
41709 } else {
41710 // Gamma0
41711 var gamma0xh = w[(i-15) * 2];
41712 var gamma0xl = w[(i-15) * 2 + 1];
41713 var gamma0h =
41714 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
41715 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
41716 (gamma0xh >>> 7);
41717 var gamma0l =
41718 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
41719 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
41720 ((gamma0xh << 25) | (gamma0xl >>> 7));
41721
41722 // Gamma1
41723 var gamma1xh = w[(i-2) * 2];
41724 var gamma1xl = w[(i-2) * 2 + 1];
41725 var gamma1h =
41726 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
41727 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
41728 (gamma1xh >>> 6);
41729 var gamma1l =
41730 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
41731 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
41732 ((gamma1xh << 26) | (gamma1xl >>> 6));
41733
41734 // Shortcuts
41735 var wr7h = w[(i-7) * 2];
41736 var wr7l = w[(i-7) * 2 + 1];
41737
41738 var wr16h = w[(i-16) * 2];
41739 var wr16l = w[(i-16) * 2 + 1];
41740
41741 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
41742 wrl = gamma0l + wr7l;
41743 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
41744 wrl += gamma1l;
41745 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
41746 wrl += wr16l;
41747 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
41748 }
41749
41750 w[i*2] = wrh |= 0;
41751 w[i*2 + 1] = wrl |= 0;
41752
41753 // Ch
41754 var chh = (eh & fh) ^ (~eh & gh);
41755 var chl = (el & fl) ^ (~el & gl);
41756
41757 // Maj
41758 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
41759 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
41760
41761 // Sigma0
41762 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
41763 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
41764
41765 // Sigma1
41766 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
41767 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
41768
41769 // K(round)
41770 var krh = k[i*2];
41771 var krl = k[i*2+1];
41772
41773 // t1 = h + sigma1 + ch + K(round) + W(round)
41774 var t1l = hl + sigma1l;
41775 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
41776 t1l += chl;
41777 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
41778 t1l += krl;
41779 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
41780 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
41781 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
41782
41783 // t2 = sigma0 + maj
41784 var t2l = sigma0l + majl;
41785 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
41786
41787 // Update working variables
41788 hh = gh;
41789 hl = gl;
41790 gh = fh;
41791 gl = fl;
41792 fh = eh;
41793 fl = el;
41794 el = (dl + t1l) | 0;
41795 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41796 dh = ch;
41797 dl = cl;
41798 ch = bh;
41799 cl = bl;
41800 bh = ah;
41801 bl = al;
41802 al = (t1l + t2l) | 0;
41803 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
41804 }
41805
41806 // Intermediate hash
41807 h0l = h[1] = (h0l + al) | 0;
41808 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
41809 h1l = h[3] = (h1l + bl) | 0;
41810 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
41811 h2l = h[5] = (h2l + cl) | 0;
41812 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
41813 h3l = h[7] = (h3l + dl) | 0;
41814 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41815 h4l = h[9] = (h4l + el) | 0;
41816 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
41817 h5l = h[11] = (h5l + fl) | 0;
41818 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
41819 h6l = h[13] = (h6l + gl) | 0;
41820 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
41821 h7l = h[15] = (h7l + hl) | 0;
41822 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
41823 }
41824 };
41825
41826
41827 //// hmac.js
41828
41829 /** @fileOverview HMAC implementation.
41830 *
41831 * @author Emily Stark
41832 * @author Mike Hamburg
41833 * @author Dan Boneh
41834 */
41835
41836 /** HMAC with the specified hash function.
41837 * @constructor
41838 * @param {bitArray} key the key for HMAC.
41839 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
41840 */
41841 sjcl.misc.hmac = function (key, Hash) {
41842 this._hash = Hash = Hash || sjcl.hash.sha256;
41843 var exKey = [[],[]], i,
41844 bs = Hash.prototype.blockSize / 32;
41845 this._baseHash = [new Hash(), new Hash()];
41846
41847 if (key.length > bs) {
41848 key = Hash.hash(key);
41849 }
41850
41851 for (i=0; i<bs; i++) {
41852 exKey[0][i] = key[i]^0x36363636;
41853 exKey[1][i] = key[i]^0x5C5C5C5C;
41854 }
41855
41856 this._baseHash[0].update(exKey[0]);
41857 this._baseHash[1].update(exKey[1]);
41858 this._resultHash = new Hash(this._baseHash[0]);
41859 };
41860
41861 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
41862 * @param {bitArray|String} data The data to mac.
41863 */
41864 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
41865 if (!this._updated) {
41866 this.update(data);
41867 return this.digest(data);
41868 } else {
41869 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
41870 }
41871 };
41872
41873 sjcl.misc.hmac.prototype.reset = function () {
41874 this._resultHash = new this._hash(this._baseHash[0]);
41875 this._updated = false;
41876 };
41877
41878 sjcl.misc.hmac.prototype.update = function (data) {
41879 this._updated = true;
41880 this._resultHash.update(data);
41881 };
41882
41883 sjcl.misc.hmac.prototype.digest = function () {
41884 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
41885
41886 this.reset();
41887
41888 return result;
41889 };
41890
41891
41892 //// pbkdf2.js
41893
41894
41895 /** @fileOverview Password-based key-derivation function, version 2.0.
41896 *
41897 * @author Emily Stark
41898 * @author Mike Hamburg
41899 * @author Dan Boneh
41900 */
41901
41902 /** Password-Based Key-Derivation Function, version 2.0.
41903 *
41904 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
41905 *
41906 * This is the method specified by RSA's PKCS #5 standard.
41907 *
41908 * @param {bitArray|String} password The password.
41909 * @param {bitArray|String} salt The salt. Should have lots of entropy.
41910 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
41911 * @param {Number} [length] The length of the derived key. Defaults to the
41912 output size of the hash function.
41913 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
41914 * @return {bitArray} the derived key.
41915 */
41916 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
41917 count = count || 1000;
41918
41919 if (length < 0 || count < 0) {
41920 throw sjcl.exception.invalid("invalid params to pbkdf2");
41921 }
41922
41923 if (typeof password === "string") {
41924 password = sjcl.codec.utf8String.toBits(password);
41925 }
41926
41927 if (typeof salt === "string") {
41928 salt = sjcl.codec.utf8String.toBits(salt);
41929 }
41930
41931 Prff = Prff || sjcl.misc.hmac;
41932
41933 var prf = new Prff(password),
41934 u, ui, i, j, k, out = [], b = sjcl.bitArray;
41935
41936 for (k = 1; 32 * out.length < (length || 1); k++) {
41937 u = ui = prf.encrypt(b.concat(salt,[k]));
41938
41939 for (i=1; i<count; i++) {
41940 ui = prf.encrypt(ui);
41941 for (j=0; j<ui.length; j++) {
41942 u[j] ^= ui[j];
41943 }
41944 }
41945
41946 out = out.concat(u);
41947 }
41948
41949 if (length) { out = b.clamp(out, length); }
41950
41951 return out;
41952 };
41953
41954
41955 //// sha256.js
41956
41957 /** @fileOverview Javascript SHA-256 implementation.
41958 *
41959 * An older version of this implementation is available in the public
41960 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
41961 * Stanford University 2008-2010 and BSD-licensed for liability
41962 * reasons.
41963 *
41964 * Special thanks to Aldo Cortesi for pointing out several bugs in
41965 * this code.
41966 *
41967 * @author Emily Stark
41968 * @author Mike Hamburg
41969 * @author Dan Boneh
41970 */
41971
41972 /**
41973 * Context for a SHA-256 operation in progress.
41974 * @constructor
41975 * @class Secure Hash Algorithm, 256 bits.
41976 */
41977 sjcl.hash.sha256 = function (hash) {
41978 if (!this._key[0]) { this._precompute(); }
41979 if (hash) {
41980 this._h = hash._h.slice(0);
41981 this._buffer = hash._buffer.slice(0);
41982 this._length = hash._length;
41983 } else {
41984 this.reset();
41985 }
41986 };
41987
41988 /**
41989 * Hash a string or an array of words.
41990 * @static
41991 * @param {bitArray|String} data the data to hash.
41992 * @return {bitArray} The hash value, an array of 16 big-endian words.
41993 */
41994 sjcl.hash.sha256.hash = function (data) {
41995 return (new sjcl.hash.sha256()).update(data).finalize();
41996 };
41997
41998 sjcl.hash.sha256.prototype = {
41999 /**
42000 * The hash's block size, in bits.
42001 * @constant
42002 */
42003 blockSize: 512,
42004
42005 /**
42006 * Reset the hash state.
42007 * @return this
42008 */
42009 reset:function () {
42010 this._h = this._init.slice(0);
42011 this._buffer = [];
42012 this._length = 0;
42013 return this;
42014 },
42015
42016 /**
42017 * Input several words to the hash.
42018 * @param {bitArray|String} data the data to hash.
42019 * @return this
42020 */
42021 update: function (data) {
42022 if (typeof data === "string") {
42023 data = sjcl.codec.utf8String.toBits(data);
42024 }
42025 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
42026 ol = this._length,
42027 nl = this._length = ol + sjcl.bitArray.bitLength(data);
42028 for (i = 512+ol & -512; i <= nl; i+= 512) {
42029 this._block(b.splice(0,16));
42030 }
42031 return this;
42032 },
42033
42034 /**
42035 * Complete hashing and output the hash value.
42036 * @return {bitArray} The hash value, an array of 8 big-endian words.
42037 */
42038 finalize:function () {
42039 var i, b = this._buffer, h = this._h;
42040
42041 // Round out and push the buffer
42042 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
42043
42044 // Round out the buffer to a multiple of 16 words, less the 2 length words.
42045 for (i = b.length + 2; i & 15; i++) {
42046 b.push(0);
42047 }
42048
42049 // append the length
42050 b.push(Math.floor(this._length / 0x100000000));
42051 b.push(this._length | 0);
42052
42053 while (b.length) {
42054 this._block(b.splice(0,16));
42055 }
42056
42057 this.reset();
42058 return h;
42059 },
42060
42061 /**
42062 * The SHA-256 initialization vector, to be precomputed.
42063 * @private
42064 */
42065 _init:[],
42066 /*
42067 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
42068 */
42069
42070 /**
42071 * The SHA-256 hash key, to be precomputed.
42072 * @private
42073 */
42074 _key:[],
42075 /*
42076 _key:
42077 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
42078 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
42079 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
42080 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
42081 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
42082 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
42083 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
42084 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
42085 */
42086
42087
42088 /**
42089 * Function to precompute _init and _key.
42090 * @private
42091 */
42092 _precompute: function () {
42093 var i = 0, prime = 2, factor;
42094
42095 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
42096
42097 outer: for (; i<64; prime++) {
42098 for (factor=2; factor*factor <= prime; factor++) {
42099 if (prime % factor === 0) {
42100 // not a prime
42101 continue outer;
42102 }
42103 }
42104
42105 if (i<8) {
42106 this._init[i] = frac(Math.pow(prime, 1/2));
42107 }
42108 this._key[i] = frac(Math.pow(prime, 1/3));
42109 i++;
42110 }
42111 },
42112
42113 /**
42114 * Perform one cycle of SHA-256.
42115 * @param {bitArray} words one block of words.
42116 * @private
42117 */
42118 _block:function (words) {
42119 var i, tmp, a, b,
42120 w = words.slice(0),
42121 h = this._h,
42122 k = this._key,
42123 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
42124 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
42125
42126 /* Rationale for placement of |0 :
42127 * If a value can overflow is original 32 bits by a factor of more than a few
42128 * million (2^23 ish), there is a possibility that it might overflow the
42129 * 53-bit mantissa and lose precision.
42130 *
42131 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
42132 * propagates around the loop, and on the hash state h[]. I don't believe
42133 * that the clamps on h4 and on h0 are strictly necessary, but it's close
42134 * (for h4 anyway), and better safe than sorry.
42135 *
42136 * The clamps on h[] are necessary for the output to be correct even in the
42137 * common case and for short inputs.
42138 */
42139 for (i=0; i<64; i++) {
42140 // load up the input word for this round
42141 if (i<16) {
42142 tmp = w[i];
42143 } else {
42144 a = w[(i+1 ) & 15];
42145 b = w[(i+14) & 15];
42146 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
42147 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
42148 w[i&15] + w[(i+9) & 15]) | 0;
42149 }
42150
42151 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
42152
42153 // shift register
42154 h7 = h6; h6 = h5; h5 = h4;
42155 h4 = h3 + tmp | 0;
42156 h3 = h2; h2 = h1; h1 = h0;
42157
42158 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
42159 }
42160
42161 h[0] = h[0]+h0 | 0;
42162 h[1] = h[1]+h1 | 0;
42163 h[2] = h[2]+h2 | 0;
42164 h[3] = h[3]+h3 | 0;
42165 h[4] = h[4]+h4 | 0;
42166 h[5] = h[5]+h5 | 0;
42167 h[6] = h[6]+h6 | 0;
42168 h[7] = h[7]+h7 | 0;
42169 }
42170 };
42171 </script>
42172 <script>// An extremely basic translation library
42173 //
42174 // Example usage:
42175 //
42176 // Set some html to be translated. Do this using the 'data-translate' attribute:
42177 //
42178 // <div data-translate>Test</div>
42179 // <div data-translate-html><em>keep em tag</em></div>
42180 // <input data-translate-placeholder placeholder="Example placeholder">
42181 // <span data-translate-title title="Example title"></span>
42182 //
42183 // Obtain all the phrases to be translated via js debug console:
42184 //
42185 // Translate.phrasesAsJson();
42186 //
42187 // Use that template to translate the phrases into another language.
42188 // Leave the key the same. Change the value to the new language.
42189 //
42190 // Create a js file to load the new phrases. In this example for Spanish,
42191 // es.js will contain the following code:
42192 //
42193 // Translate.loadForeignPhrases("es", {
42194 // "Test": "Test in Spanish",
42195 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
42196 // "Example placeholder": "Example placeholder in Spanish"
42197 // "Example title": "Example title in Spanish"
42198 // });
42199 //
42200 // In your UI put a listener for clicking on the Spanish button:
42201 //
42202 // mySpanishButton.addEventListener("click", function() {
42203 // Translate.setLanguage("es");
42204 // });
42205 // myEnglishButton.addEventListener("click", function() {
42206 // Translate.setLanguage("en");
42207 // });
42208
42209 Translate = new (function() {
42210
42211 var defaultLanguage = "en";
42212
42213 var allPhrases = {};
42214 allPhrases[defaultLanguage] = {};
42215
42216 // Node types
42217
42218 var text = {
42219 selector: "[data-translate]",
42220 getKey: function() {
42221 return this.textContent.trim().replace(/\s+/g, " ");
42222 },
42223 setPhrase: function(p) {
42224 this.textContent = p;
42225 },
42226 }
42227
42228 var html = {
42229 selector: "[data-translate-html]",
42230 getKey: function() {
42231 return this.innerHTML.trim().replace(/\s+/g, " ");
42232 },
42233 setPhrase: function(p) {
42234 this.innerHTML = p;
42235 },
42236 }
42237
42238 var placeholder = {
42239 selector: "[data-translate-placeholder]",
42240 getKey: function() {
42241 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
42242 },
42243 setPhrase: function(p) {
42244 this.setAttribute("placeholder", p);
42245 },
42246 }
42247
42248 var title = {
42249 selector: "[data-translate-title]",
42250 getKey: function() {
42251 return this.getAttribute("title").trim().replace(/\s+/g, " ");
42252 },
42253 setPhrase: function(p) {
42254 this.setAttribute("title", p);
42255 },
42256 }
42257
42258 // Get elements to be translated
42259 var allEls = getEls(text)
42260 .concat(getEls(html))
42261 .concat(getEls(placeholder))
42262 .concat(getEls(title));
42263
42264 // Provides access to phrases from a non-default language.
42265 // See phrases_en.js for example usage.
42266 this.loadForeignPhrases = function(language, phrases) {
42267 allPhrases[language] = phrases;
42268 }
42269
42270 // Displays a different language, eg "en" or "fr"
42271 this.setLanguage = function(language) {
42272 for (var i=0; i<allEls.length; i++) {
42273 var el = allEls[i];
42274 var key = el.key;
42275 if (!(language in allPhrases)) {
42276 console.log(language + " not in allPhrases");
42277 return;
42278 }
42279 if (!(key in allPhrases[language])) {
42280 console.log(language + " does not contain phrase: " + key);
42281 return;
42282 }
42283 var phrase = allPhrases[language][key];
42284 el.setPhrase(phrase);
42285 }
42286 }
42287
42288 // Converts the phrases to a key-pair json file.
42289 // This is a good way to export phrases for use in translation tools.
42290 this.phrasesAsJson = function(language) {
42291 var keys = [];
42292 for (var i=0; i<allEls.length; i++) {
42293 var el = allEls[i];
42294 var key = el.key;
42295 keys.push(key);
42296 }
42297 keys.sort();
42298 var output = {};
42299 for (var i=0; i<keys.length; i++) {
42300 var key = keys[i];
42301 var translated = "";
42302 if (language in allPhrases && key in allPhrases[language]) {
42303 translated = allPhrases[language][key];
42304 }
42305 output[key] = translated;
42306 }
42307 return JSON.stringify(output, null, 2);
42308 }
42309
42310 function getEls(nodeType) {
42311 var nodes = document.querySelectorAll(nodeType.selector);
42312 var els = [];
42313 for (var i=0; i<nodes.length; i++) {
42314 var node = nodes[i];
42315 node.getKey = nodeType.getKey;
42316 node.setPhrase = nodeType.setPhrase;
42317 node.key = node.getKey();
42318 allPhrases[defaultLanguage][node.key] = node.key;
42319 els.push(node);
42320 }
42321 return els;
42322 }
42323
42324 })();
42325 </script>
42326 <script>Translate.loadForeignPhrases("en",
42327 {
42328 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
42329 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
42330 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
42331 "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).": "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).",
42332 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
42333 "Account": "Account",
42334 "Address": "Address",
42335 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
42336 "BIP32 Derivation Path": "BIP32 Derivation Path",
42337 "BIP32 Extended Key": "BIP32 Extended Key",
42338 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
42339 "BIP32 Root Key": "BIP32 Root Key",
42340 "BIP39 Mnemonic": "BIP39 Mnemonic",
42341 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
42342 "BIP39 Seed": "BIP39 Seed",
42343 "Base 10": "Base 10",
42344 "Base 6": "Base 6",
42345 "Be careful - it can be easy to make mistakes if you don't know what you're doing.": "Be careful - it can be easy to make mistakes if you don't know what you're doing.",
42346 "Binary": "Binary",
42347 "Bitcoin Core": "Bitcoin Core",
42348 "Bits Per Event": "Bits Per Event",
42349 "Block Explorers": "Block Explorers",
42350 "Can be used with": "Can be used with",
42351 "Card": "Card",
42352 "Coin": "Coin",
42353 "Dice": "Dice",
42354 "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.": "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.",
42355 "Double-click that file to open it in a browser on any offline computer.": "Double-click that file to open it in a browser on any offline computer.",
42356 "Entropy": "Entropy",
42357 "Entropy Type": "Entropy Type",
42358 "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.": "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.",
42359 "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.": "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.",
42360 "Event Count": "Event Count",
42361 "External / Internal": "External / Internal",
42362 "Filtered Entropy": "Filtered Entropy",
42363 "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>": "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>",
42364 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.",
42365 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.",
42366 "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>": "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>",
42367 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
42368 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
42369 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
42370 "Get the source code from the repository": "Get the source code from the repository",
42371 "Hex": "Hex",
42372 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
42373 "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.": "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.",
42374 "In that case you might choose to use your own source of entropy.": "In that case you might choose to use your own source of entropy.",
42375 "In your browser, select file save-as, and save this page as a file.": "In your browser, select file save-as, and save this page as a file.",
42376 "Libraries": "Libraries",
42377 "Mnemonic Language": "Mnemonic Language",
42378 "Mnemonic Length": "Mnemonic Length",
42379 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
42380 "More info": "More info",
42381 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
42382 "Mycelium Wallet": "Mycelium Wallet",
42383 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
42384 "Offline Usage": "Offline Usage",
42385 "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.": "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.",
42386 "Path": "Path",
42387 "Private Key": "Private Key",
42388 "Private Keys": "Private Keys",
42389 "Public Key": "Public Key",
42390 "Purpose": "Purpose",
42391 "Raw Binary": "Raw Binary",
42392 "Read more": "Read more",
42393 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>",
42394 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>",
42395 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>",
42396 "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>": "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>",
42397 "Show": "Show",
42398 "Show more rows": "Show more rows",
42399 "Strength": "Strength",
42400 "Supply my own source of entropy": "Supply my own source of entropy",
42401 "The built in random generator can generally be trusted more than your own intuition about randomness.": "The built in random generator can generally be trusted more than your own intuition about randomness.",
42402 "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.": "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.",
42403 "This means flipping a fair coin, rolling a fair dice, noise measurements etc.": "This means flipping a fair coin, rolling a fair dice, noise measurements etc.",
42404 "This project is 100% open-source code": "This project is 100% open-source code",
42405 "Toggle": "Toggle",
42406 "Total Bits": "Total Bits",
42407 "Use hardened addresses": "Use hardened addresses",
42408 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
42409 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
42410 "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.": "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.",
42411 "Valid entropy values include:": "Valid entropy values include:",
42412 "Warning": "Warning",
42413 "Word Count": "Word Count",
42414 "You are not a good source of entropy.": "You are not a good source of entropy.",
42415 "You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).": "You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).",
42416 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
42417 "words": "words"
42418 }
42419 );
42420 </script>
42421 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42422 WORDLISTS["english"] = [
42423 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
42424 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
42425 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
42426 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
42427 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
42428 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
42429 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
42430 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
42431 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
42432 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
42433 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
42434 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
42435 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
42436 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
42437 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
42438 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
42439 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
42440 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
42441 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
42442 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
42443 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
42444 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
42445 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
42446 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
42447 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
42448 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
42449 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
42450 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
42451 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
42452 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
42453 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
42454 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
42455 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
42456 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
42457 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
42458 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
42459 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
42460 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
42461 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
42462 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42463 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
42464 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
42465 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
42466 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
42467 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
42468 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
42469 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
42470 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
42471 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
42472 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
42473 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
42474 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
42475 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
42476 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
42477 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
42478 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
42479 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
42480 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
42481 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
42482 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
42483 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
42484 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
42485 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
42486 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
42487 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
42488 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
42489 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
42490 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
42491 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
42492 "film","filter","final","find","fine","finger","finish","fire","firm","first",
42493 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
42494 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
42495 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
42496 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
42497 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
42498 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
42499 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
42500 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
42501 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
42502 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
42503 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
42504 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
42505 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
42506 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
42507 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
42508 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
42509 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
42510 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
42511 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
42512 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
42513 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
42514 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
42515 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
42516 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
42517 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
42518 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
42519 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
42520 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
42521 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
42522 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
42523 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
42524 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
42525 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
42526 "liar","liberty","library","license","life","lift","light","like","limb","limit",
42527 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
42528 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
42529 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
42530 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
42531 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
42532 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
42533 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
42534 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
42535 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
42536 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
42537 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
42538 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
42539 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
42540 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
42541 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
42542 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
42543 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
42544 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
42545 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
42546 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
42547 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
42548 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
42549 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
42550 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
42551 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
42552 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
42553 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
42554 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
42555 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
42556 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
42557 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
42558 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
42559 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
42560 "prize","problem","process","produce","profit","program","project","promote","proof","property",
42561 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
42562 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
42563 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
42564 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
42565 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
42566 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
42567 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
42568 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
42569 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
42570 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
42571 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
42572 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
42573 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
42574 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
42575 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
42576 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
42577 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
42578 "scrub","sea","search","season","seat","second","secret","section","security","seed",
42579 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
42580 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
42581 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
42582 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
42583 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
42584 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
42585 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
42586 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
42587 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
42588 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
42589 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
42590 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
42591 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
42592 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
42593 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
42594 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
42595 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
42596 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
42597 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
42598 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
42599 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
42600 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
42601 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
42602 "thank","that","theme","then","theory","there","they","thing","this","thought",
42603 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
42604 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
42605 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
42606 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
42607 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
42608 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
42609 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
42610 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
42611 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
42612 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
42613 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
42614 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
42615 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
42616 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
42617 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
42618 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
42619 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
42620 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
42621 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
42622 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
42623 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
42624 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
42625 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
42626 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
42627 "yellow","you","young","youth","zebra","zero","zone","zoo"]
42628 </script>
42629 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42630 WORDLISTS["japanese"] = [
42631 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
42632 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
42633 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
42634 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
42635 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
42636 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
42637 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
42638 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
42639 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
42640 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
42641 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
42642 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
42643 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
42644 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
42645 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
42646 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
42647 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
42648 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
42649 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
42650 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
42651 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
42652 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
42653 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
42654 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
42655 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
42656 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
42657 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
42658 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
42659 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
42660 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
42661 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
42662 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
42663 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
42664 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
42665 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
42666 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
42667 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
42668 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
42669 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
42670 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
42671 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
42672 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
42673 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
42674 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
42675 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
42676 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
42677 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
42678 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
42679 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
42680 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
42681 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
42682 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
42683 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
42684 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
42685 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
42686 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
42687 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
42688 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
42689 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
42690 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
42691 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
42692 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
42693 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
42694 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
42695 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
42696 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
42697 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
42698 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
42699 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
42700 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
42701 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
42702 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
42703 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
42704 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
42705 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
42706 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
42707 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
42708 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
42709 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
42710 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
42711 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
42712 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
42713 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
42714 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
42715 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
42716 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
42717 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
42718 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
42719 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
42720 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
42721 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
42722 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
42723 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
42724 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
42725 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
42726 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
42727 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
42728 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
42729 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
42730 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
42731 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
42732 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
42733 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
42734 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
42735 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
42736 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
42737 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
42738 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
42739 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
42740 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
42741 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
42742 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
42743 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
42744 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
42745 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
42746 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
42747 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
42748 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
42749 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
42750 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
42751 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
42752 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
42753 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
42754 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
42755 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
42756 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
42757 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
42758 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
42759 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
42760 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
42761 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
42762 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
42763 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
42764 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
42765 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
42766 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
42767 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
42768 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
42769 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
42770 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
42771 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
42772 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
42773 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
42774 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
42775 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
42776 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
42777 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
42778 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
42779 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
42780 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
42781 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
42782 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
42783 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
42784 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
42785 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
42786 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
42787 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
42788 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
42789 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
42790 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
42791 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
42792 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
42793 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
42794 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
42795 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
42796 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
42797 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
42798 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
42799 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
42800 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
42801 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
42802 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
42803 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
42804 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
42805 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
42806 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
42807 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
42808 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
42809 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
42810 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
42811 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
42812 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
42813 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
42814 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
42815 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
42816 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
42817 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
42818 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
42819 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
42820 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
42821 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
42822 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
42823 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
42824 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
42825 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
42826 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
42827 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
42828 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
42829 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
42830 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
42831 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
42832 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
42833 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
42834 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
42835 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
42836 </script>
42837 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42838 WORDLISTS["spanish"] = [
42839 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
42840 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
42841 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
42842 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
42843 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
42844 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
42845 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
42846 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
42847 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
42848 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
42849 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
42850 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
42851 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
42852 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
42853 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
42854 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
42855 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
42856 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
42857 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
42858 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
42859 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
42860 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
42861 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
42862 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
42863 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
42864 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
42865 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
42866 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
42867 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
42868 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
42869 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
42870 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
42871 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
42872 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
42873 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
42874 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
42875 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
42876 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
42877 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
42878 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
42879 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
42880 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
42881 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
42882 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
42883 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
42884 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
42885 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
42886 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
42887 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
42888 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
42889 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
42890 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
42891 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
42892 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
42893 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
42894 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
42895 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
42896 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
42897 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
42898 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
42899 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
42900 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
42901 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
42902 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
42903 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
42904 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
42905 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
42906 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
42907 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
42908 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
42909 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
42910 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
42911 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
42912 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
42913 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
42914 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
42915 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
42916 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
42917 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
42918 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
42919 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
42920 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
42921 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
42922 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
42923 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
42924 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
42925 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
42926 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
42927 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
42928 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
42929 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
42930 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
42931 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
42932 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
42933 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
42934 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
42935 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
42936 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
42937 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
42938 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
42939 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
42940 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
42941 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
42942 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
42943 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
42944 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
42945 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
42946 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
42947 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
42948 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
42949 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
42950 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
42951 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
42952 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
42953 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
42954 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
42955 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
42956 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
42957 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
42958 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
42959 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
42960 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
42961 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
42962 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
42963 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
42964 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
42965 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
42966 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
42967 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
42968 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
42969 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
42970 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
42971 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
42972 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
42973 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
42974 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
42975 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
42976 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
42977 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
42978 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
42979 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
42980 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
42981 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
42982 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
42983 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
42984 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
42985 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
42986 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
42987 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
42988 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
42989 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
42990 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
42991 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
42992 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
42993 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
42994 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
42995 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
42996 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
42997 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
42998 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
42999 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
43000 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
43001 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
43002 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
43003 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
43004 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
43005 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
43006 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
43007 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
43008 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
43009 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
43010 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
43011 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
43012 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
43013 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
43014 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
43015 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
43016 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
43017 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
43018 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
43019 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
43020 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
43021 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
43022 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
43023 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
43024 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
43025 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
43026 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
43027 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
43028 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
43029 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
43030 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
43031 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
43032 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
43033 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
43034 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
43035 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
43036 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
43037 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
43038 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
43039 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
43040 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
43041 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
43042 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
43043 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
43044 </script>
43045 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43046 WORDLISTS["chinese_simplified"] = [
43047 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
43048 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
43049 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
43050 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
43051 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
43052 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
43053 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
43054 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
43055 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
43056 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
43057 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
43058 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43059 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
43060 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
43061 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
43062 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
43063 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
43064 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
43065 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
43066 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
43067 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
43068 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
43069 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
43070 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
43071 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
43072 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
43073 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
43074 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
43075 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
43076 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
43077 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
43078 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
43079 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
43080 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
43081 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
43082 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
43083 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
43084 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
43085 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
43086 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
43087 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
43088 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
43089 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
43090 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
43091 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
43092 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
43093 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
43094 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
43095 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
43096 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
43097 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
43098 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
43099 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
43100 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
43101 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
43102 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
43103 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
43104 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
43105 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
43106 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
43107 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
43108 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
43109 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
43110 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
43111 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
43112 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
43113 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
43114 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
43115 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
43116 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
43117 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
43118 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
43119 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
43120 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
43121 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
43122 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43123 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
43124 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
43125 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
43126 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
43127 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
43128 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
43129 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
43130 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
43131 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
43132 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
43133 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
43134 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
43135 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
43136 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
43137 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
43138 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
43139 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43140 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
43141 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
43142 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
43143 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
43144 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
43145 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
43146 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
43147 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
43148 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
43149 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
43150 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
43151 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
43152 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
43153 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
43154 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
43155 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43156 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43157 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
43158 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
43159 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
43160 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
43161 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
43162 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
43163 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
43164 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
43165 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
43166 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
43167 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
43168 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43169 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
43170 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
43171 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
43172 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
43173 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
43174 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
43175 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
43176 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
43177 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
43178 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
43179 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
43180 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
43181 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
43182 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
43183 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
43184 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
43185 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
43186 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
43187 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
43188 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
43189 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
43190 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
43191 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
43192 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
43193 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
43194 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
43195 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
43196 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
43197 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
43198 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
43199 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
43200 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
43201 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
43202 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
43203 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
43204 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
43205 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
43206 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
43207 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
43208 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
43209 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
43210 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
43211 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
43212 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
43213 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
43214 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
43215 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
43216 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
43217 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
43218 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
43219 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
43220 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
43221 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
43222 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
43223 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
43224 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
43225 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
43226 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
43227 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
43228 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
43229 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
43230 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
43231 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
43232 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
43233 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
43234 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
43235 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
43236 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
43237 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
43238 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
43239 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
43240 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
43241 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
43242 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
43243 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
43244 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
43245 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
43246 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
43247 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
43248 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
43249 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
43250 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
43251 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
43252 </script>
43253 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43254 WORDLISTS["chinese_traditional"] = [
43255 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
43256 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
43257 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
43258 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
43259 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
43260 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
43261 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
43262 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
43263 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
43264 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
43265 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
43266 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43267 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
43268 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
43269 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
43270 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
43271 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
43272 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
43273 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
43274 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
43275 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
43276 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
43277 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
43278 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
43279 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
43280 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
43281 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
43282 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
43283 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
43284 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
43285 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
43286 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
43287 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
43288 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
43289 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
43290 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
43291 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
43292 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
43293 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
43294 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
43295 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
43296 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
43297 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
43298 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
43299 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
43300 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
43301 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
43302 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
43303 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
43304 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
43305 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
43306 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
43307 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
43308 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
43309 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
43310 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
43311 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
43312 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
43313 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
43314 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
43315 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
43316 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
43317 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
43318 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
43319 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
43320 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
43321 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
43322 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
43323 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
43324 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
43325 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
43326 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
43327 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
43328 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
43329 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
43330 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43331 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
43332 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
43333 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
43334 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
43335 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
43336 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
43337 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
43338 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
43339 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
43340 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
43341 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
43342 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
43343 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
43344 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
43345 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
43346 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
43347 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43348 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
43349 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
43350 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
43351 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
43352 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
43353 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
43354 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
43355 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
43356 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
43357 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
43358 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
43359 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
43360 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
43361 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
43362 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
43363 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43364 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43365 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
43366 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
43367 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
43368 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
43369 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
43370 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
43371 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
43372 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
43373 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
43374 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
43375 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
43376 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43377 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
43378 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
43379 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
43380 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
43381 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
43382 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
43383 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
43384 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
43385 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
43386 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
43387 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
43388 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
43389 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
43390 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
43391 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
43392 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
43393 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
43394 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
43395 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
43396 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
43397 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
43398 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
43399 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
43400 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
43401 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
43402 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
43403 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
43404 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
43405 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
43406 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
43407 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
43408 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
43409 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
43410 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
43411 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
43412 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
43413 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
43414 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
43415 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
43416 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
43417 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
43418 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
43419 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
43420 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
43421 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
43422 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
43423 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
43424 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
43425 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
43426 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
43427 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
43428 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
43429 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
43430 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
43431 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
43432 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
43433 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
43434 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
43435 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
43436 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
43437 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
43438 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
43439 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
43440 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
43441 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
43442 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
43443 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
43444 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
43445 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
43446 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
43447 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
43448 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
43449 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
43450 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
43451 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
43452 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
43453 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
43454 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
43455 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
43456 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
43457 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
43458 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
43459 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
43460 </script>
43461 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43462 WORDLISTS["french"] = [
43463 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
43464 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
43465 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
43466 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
43467 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
43468 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
43469 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
43470 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
43471 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
43472 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
43473 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
43474 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
43475 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
43476 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
43477 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
43478 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
43479 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
43480 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
43481 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
43482 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
43483 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
43484 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
43485 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
43486 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
43487 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
43488 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
43489 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
43490 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
43491 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
43492 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
43493 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
43494 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
43495 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
43496 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
43497 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
43498 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
43499 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
43500 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
43501 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
43502 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
43503 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
43504 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
43505 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
43506 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
43507 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
43508 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
43509 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
43510 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
43511 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
43512 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
43513 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
43514 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
43515 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
43516 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
43517 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
43518 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
43519 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
43520 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
43521 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
43522 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
43523 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
43524 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
43525 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
43526 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
43527 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
43528 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
43529 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
43530 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
43531 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
43532 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
43533 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
43534 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
43535 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
43536 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
43537 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
43538 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
43539 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
43540 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
43541 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
43542 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
43543 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
43544 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
43545 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
43546 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
43547 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
43548 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
43549 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
43550 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
43551 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
43552 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
43553 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
43554 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
43555 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
43556 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
43557 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
43558 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
43559 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
43560 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
43561 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
43562 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
43563 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
43564 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
43565 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
43566 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
43567 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
43568 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
43569 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
43570 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
43571 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
43572 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
43573 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
43574 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
43575 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
43576 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
43577 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
43578 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
43579 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
43580 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
43581 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
43582 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
43583 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
43584 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
43585 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
43586 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
43587 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
43588 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
43589 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
43590 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
43591 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
43592 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
43593 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
43594 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
43595 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
43596 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
43597 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
43598 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
43599 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
43600 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
43601 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
43602 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
43603 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
43604 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
43605 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
43606 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
43607 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
43608 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
43609 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
43610 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
43611 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
43612 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
43613 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
43614 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
43615 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
43616 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
43617 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
43618 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
43619 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
43620 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
43621 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
43622 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
43623 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
43624 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
43625 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
43626 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
43627 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
43628 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
43629 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
43630 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
43631 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
43632 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
43633 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
43634 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
43635 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
43636 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
43637 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
43638 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
43639 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
43640 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
43641 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
43642 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
43643 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
43644 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
43645 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
43646 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
43647 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
43648 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
43649 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
43650 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
43651 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
43652 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
43653 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
43654 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
43655 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
43656 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
43657 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
43658 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
43659 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
43660 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
43661 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
43662 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
43663 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
43664 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
43665 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
43666 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
43667 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
43668 </script>
43669 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43670 WORDLISTS["italian"] = [
43671 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
43672 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
43673 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
43674 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
43675 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
43676 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
43677 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
43678 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
43679 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
43680 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
43681 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
43682 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
43683 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
43684 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
43685 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
43686 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
43687 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
43688 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
43689 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
43690 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
43691 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
43692 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
43693 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
43694 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
43695 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
43696 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
43697 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
43698 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
43699 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
43700 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
43701 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
43702 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
43703 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
43704 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
43705 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
43706 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
43707 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
43708 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
43709 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
43710 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
43711 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
43712 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
43713 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
43714 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
43715 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
43716 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
43717 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
43718 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
43719 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
43720 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
43721 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
43722 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
43723 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
43724 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
43725 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
43726 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
43727 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
43728 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
43729 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
43730 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
43731 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
43732 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
43733 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
43734 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
43735 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
43736 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
43737 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
43738 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
43739 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
43740 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
43741 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
43742 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
43743 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
43744 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
43745 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
43746 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
43747 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
43748 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
43749 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
43750 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
43751 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
43752 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
43753 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
43754 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
43755 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
43756 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
43757 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
43758 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
43759 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
43760 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
43761 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
43762 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
43763 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
43764 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
43765 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
43766 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
43767 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
43768 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
43769 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
43770 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
43771 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
43772 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
43773 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
43774 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
43775 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
43776 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
43777 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
43778 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
43779 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
43780 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
43781 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
43782 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
43783 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
43784 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
43785 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
43786 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
43787 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
43788 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
43789 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
43790 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
43791 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
43792 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
43793 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
43794 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
43795 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
43796 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
43797 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
43798 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
43799 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
43800 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
43801 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
43802 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
43803 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
43804 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
43805 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
43806 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
43807 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
43808 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
43809 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
43810 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
43811 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
43812 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
43813 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
43814 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
43815 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
43816 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
43817 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
43818 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
43819 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
43820 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
43821 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
43822 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
43823 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
43824 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
43825 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
43826 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
43827 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
43828 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
43829 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
43830 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
43831 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
43832 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
43833 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
43834 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
43835 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
43836 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
43837 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
43838 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
43839 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
43840 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
43841 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
43842 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
43843 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
43844 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
43845 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
43846 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
43847 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
43848 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
43849 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
43850 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
43851 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
43852 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
43853 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
43854 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
43855 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
43856 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
43857 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
43858 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
43859 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
43860 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
43861 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
43862 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
43863 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
43864 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
43865 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
43866 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
43867 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
43868 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
43869 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
43870 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
43871 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
43872 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
43873 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
43874 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
43875 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
43876 </script>
43877 <script>/*
43878 * Copyright (c) 2013 Pavol Rusnak
43879 *
43880 * Permission is hereby granted, free of charge, to any person obtaining a copy of
43881 * this software and associated documentation files (the "Software"), to deal in
43882 * the Software without restriction, including without limitation the rights to
43883 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
43884 * of the Software, and to permit persons to whom the Software is furnished to do
43885 * so, subject to the following conditions:
43886 *
43887 * The above copyright notice and this permission notice shall be included in all
43888 * copies or substantial portions of the Software.
43889 *
43890 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43891 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43892 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43893 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43894 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43895 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43896 */
43897
43898 /*
43899 * Javascript port from python by Ian Coleman
43900 *
43901 * Requires code from sjcl
43902 * https://github.com/bitwiseshiftleft/sjcl
43903 */
43904
43905 var Mnemonic = function(language) {
43906
43907 var PBKDF2_ROUNDS = 2048;
43908 var RADIX = 2048;
43909
43910 var self = this;
43911 var wordlist = [];
43912
43913 var hmacSHA512 = function(key) {
43914 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
43915 this.encrypt = function() {
43916 return hasher.encrypt.apply(hasher, arguments);
43917 };
43918 };
43919
43920 function init() {
43921 wordlist = WORDLISTS[language];
43922 if (wordlist.length != RADIX) {
43923 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
43924 throw err;
43925 }
43926 }
43927
43928 self.generate = function(strength) {
43929 strength = strength || 128;
43930 var r = strength % 32;
43931 if (r > 0) {
43932 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
43933 }
43934 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
43935 if (!hasStrongCrypto) {
43936 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
43937 }
43938 var buffer = new Uint8Array(strength / 8);
43939 var data = crypto.getRandomValues(buffer);
43940 return self.toMnemonic(data);
43941 }
43942
43943 self.toMnemonic = function(byteArray) {
43944 if (byteArray.length % 4 > 0) {
43945 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
43946 }
43947
43948 //h = hashlib.sha256(data).hexdigest()
43949 var data = byteArrayToWordArray(byteArray);
43950 var hash = sjcl.hash.sha256.hash(data);
43951 var h = sjcl.codec.hex.fromBits(hash);
43952
43953 // b is a binary string, eg '00111010101100...'
43954 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
43955 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
43956 //
43957 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
43958 // c = bin(int(h, 16))[2:].zfill(256)
43959 // d = c[:len(data) * 8 / 32]
43960 var a = byteArrayToBinaryString(byteArray);
43961 var c = zfill(hexStringToBinaryString(h), 256);
43962 var d = c.substring(0, byteArray.length * 8 / 32);
43963 // b = line1 + line2
43964 var b = a + d;
43965
43966 var result = [];
43967 var blen = b.length / 11;
43968 for (var i=0; i<blen; i++) {
43969 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
43970 result.push(wordlist[idx]);
43971 }
43972 return self.joinWords(result);
43973 }
43974
43975 self.check = function(mnemonic) {
43976 var mnemonic = self.splitWords(mnemonic);
43977 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
43978 return false
43979 }
43980 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
43981 var idx = [];
43982 for (var i=0; i<mnemonic.length; i++) {
43983 var word = mnemonic[i];
43984 var wordIndex = wordlist.indexOf(word);
43985 if (wordIndex == -1) {
43986 return false;
43987 }
43988 var binaryIndex = zfill(wordIndex.toString(2), 11);
43989 idx.push(binaryIndex);
43990 }
43991 var b = idx.join('');
43992 var l = b.length;
43993 //d = b[:l / 33 * 32]
43994 //h = b[-l / 33:]
43995 var d = b.substring(0, l / 33 * 32);
43996 var h = b.substring(l - l / 33, l);
43997 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
43998 var nd = binaryStringToWordArray(d);
43999 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
44000 var ndHash = sjcl.hash.sha256.hash(nd);
44001 var ndHex = sjcl.codec.hex.fromBits(ndHash);
44002 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
44003 var nh = ndBstr.substring(0,l/33);
44004 return h == nh;
44005 }
44006
44007 self.toSeed = function(mnemonic, passphrase) {
44008 passphrase = passphrase || '';
44009 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
44010 var mnemonicNormalized = self.normalizeString(mnemonic);
44011 passphrase = self.normalizeString(passphrase)
44012 passphrase = "mnemonic" + passphrase;
44013 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
44014 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
44015 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
44016 var hashHex = sjcl.codec.hex.fromBits(result);
44017 return hashHex;
44018 }
44019
44020 self.splitWords = function(mnemonic) {
44021 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
44022 }
44023
44024 self.joinWords = function(words) {
44025 // Set space correctly depending on the language
44026 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
44027 var space = " ";
44028 if (language == "japanese") {
44029 space = "\u3000"; // ideographic space
44030 }
44031 return words.join(space);
44032 }
44033
44034 self.normalizeString = function(str) {
44035 if (typeof str.normalize == "function") {
44036 return str.normalize("NFKD");
44037 }
44038 else {
44039 // TODO decide how to handle this in the future.
44040 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
44041 return str;
44042 }
44043 }
44044
44045 function byteArrayToWordArray(data) {
44046 var a = [];
44047 for (var i=0; i<data.length/4; i++) {
44048 v = 0;
44049 v += data[i*4 + 0] << 8 * 3;
44050 v += data[i*4 + 1] << 8 * 2;
44051 v += data[i*4 + 2] << 8 * 1;
44052 v += data[i*4 + 3] << 8 * 0;
44053 a.push(v);
44054 }
44055 return a;
44056 }
44057
44058 function byteArrayToBinaryString(data) {
44059 var bin = "";
44060 for (var i=0; i<data.length; i++) {
44061 bin += zfill(data[i].toString(2), 8);
44062 }
44063 return bin;
44064 }
44065
44066 function hexStringToBinaryString(hexString) {
44067 binaryString = "";
44068 for (var i=0; i<hexString.length; i++) {
44069 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
44070 }
44071 return binaryString;
44072 }
44073
44074 function binaryStringToWordArray(binary) {
44075 var aLen = binary.length / 32;
44076 var a = [];
44077 for (var i=0; i<aLen; i++) {
44078 var valueStr = binary.substring(0,32);
44079 var value = parseInt(valueStr, 2);
44080 a.push(value);
44081 binary = binary.slice(32);
44082 }
44083 return a;
44084 }
44085
44086 // Pad a numeric string on the left with zero digits until the given width
44087 // is reached.
44088 // Note this differs to the python implementation because it does not
44089 // handle numbers starting with a sign.
44090 function zfill(source, length) {
44091 source = source.toString();
44092 while (source.length < length) {
44093 source = '0' + source;
44094 }
44095 return source;
44096 }
44097
44098 init();
44099
44100 }
44101 </script>
44102 <script>/*
44103 JavaScript BigInteger library version 0.9.1
44104 http://silentmatt.com/biginteger/
44105
44106 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
44107 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
44108 Licensed under the MIT license.
44109
44110 Support for arbitrary internal representation base was added by
44111 Vitaly Magerya.
44112 */
44113
44114 /*
44115 File: biginteger.js
44116
44117 Exports:
44118
44119 <BigInteger>
44120 */
44121 (function(exports) {
44122 "use strict";
44123 /*
44124 Class: BigInteger
44125 An arbitrarily-large integer.
44126
44127 <BigInteger> objects should be considered immutable. None of the "built-in"
44128 methods modify *this* or their arguments. All properties should be
44129 considered private.
44130
44131 All the methods of <BigInteger> instances can be called "statically". The
44132 static versions are convenient if you don't already have a <BigInteger>
44133 object.
44134
44135 As an example, these calls are equivalent.
44136
44137 > BigInteger(4).multiply(5); // returns BigInteger(20);
44138 > BigInteger.multiply(4, 5); // returns BigInteger(20);
44139
44140 > var a = 42;
44141 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
44142 */
44143
44144 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
44145
44146 /*
44147 Constructor: BigInteger()
44148 Convert a value to a <BigInteger>.
44149
44150 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
44151 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
44152 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
44153 without a radix argument.
44154
44155 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
44156 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
44157 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
44158 > var n3 = BigInteger(n2); // Return n2, unchanged
44159
44160 The constructor form only takes an array and a sign. *n* must be an
44161 array of numbers in little-endian order, where each digit is between 0
44162 and BigInteger.base. The second parameter sets the sign: -1 for
44163 negative, +1 for positive, or 0 for zero. The array is *not copied and
44164 may be modified*. If the array contains only zeros, the sign parameter
44165 is ignored and is forced to zero.
44166
44167 > new BigInteger([5], -1): create a new BigInteger with value -5
44168
44169 Parameters:
44170
44171 n - Value to convert to a <BigInteger>.
44172
44173 Returns:
44174
44175 A <BigInteger> value.
44176
44177 See Also:
44178
44179 <parse>, <BigInteger>
44180 */
44181 function BigInteger(n, s, token) {
44182 if (token !== CONSTRUCT) {
44183 if (n instanceof BigInteger) {
44184 return n;
44185 }
44186 else if (typeof n === "undefined") {
44187 return ZERO;
44188 }
44189 return BigInteger.parse(n);
44190 }
44191
44192 n = n || []; // Provide the nullary constructor for subclasses.
44193 while (n.length && !n[n.length - 1]) {
44194 --n.length;
44195 }
44196 this._d = n;
44197 this._s = n.length ? (s || 1) : 0;
44198 }
44199
44200 BigInteger._construct = function(n, s) {
44201 return new BigInteger(n, s, CONSTRUCT);
44202 };
44203
44204 // Base-10 speedup hacks in parse, toString, exp10 and log functions
44205 // require base to be a power of 10. 10^7 is the largest such power
44206 // that won't cause a precision loss when digits are multiplied.
44207 var BigInteger_base = 10000000;
44208 var BigInteger_base_log10 = 7;
44209
44210 BigInteger.base = BigInteger_base;
44211 BigInteger.base_log10 = BigInteger_base_log10;
44212
44213 var ZERO = new BigInteger([], 0, CONSTRUCT);
44214 // Constant: ZERO
44215 // <BigInteger> 0.
44216 BigInteger.ZERO = ZERO;
44217
44218 var ONE = new BigInteger([1], 1, CONSTRUCT);
44219 // Constant: ONE
44220 // <BigInteger> 1.
44221 BigInteger.ONE = ONE;
44222
44223 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
44224 // Constant: M_ONE
44225 // <BigInteger> -1.
44226 BigInteger.M_ONE = M_ONE;
44227
44228 // Constant: _0
44229 // Shortcut for <ZERO>.
44230 BigInteger._0 = ZERO;
44231
44232 // Constant: _1
44233 // Shortcut for <ONE>.
44234 BigInteger._1 = ONE;
44235
44236 /*
44237 Constant: small
44238 Array of <BigIntegers> from 0 to 36.
44239
44240 These are used internally for parsing, but useful when you need a "small"
44241 <BigInteger>.
44242
44243 See Also:
44244
44245 <ZERO>, <ONE>, <_0>, <_1>
44246 */
44247 BigInteger.small = [
44248 ZERO,
44249 ONE,
44250 /* Assuming BigInteger_base > 36 */
44251 new BigInteger( [2], 1, CONSTRUCT),
44252 new BigInteger( [3], 1, CONSTRUCT),
44253 new BigInteger( [4], 1, CONSTRUCT),
44254 new BigInteger( [5], 1, CONSTRUCT),
44255 new BigInteger( [6], 1, CONSTRUCT),
44256 new BigInteger( [7], 1, CONSTRUCT),
44257 new BigInteger( [8], 1, CONSTRUCT),
44258 new BigInteger( [9], 1, CONSTRUCT),
44259 new BigInteger([10], 1, CONSTRUCT),
44260 new BigInteger([11], 1, CONSTRUCT),
44261 new BigInteger([12], 1, CONSTRUCT),
44262 new BigInteger([13], 1, CONSTRUCT),
44263 new BigInteger([14], 1, CONSTRUCT),
44264 new BigInteger([15], 1, CONSTRUCT),
44265 new BigInteger([16], 1, CONSTRUCT),
44266 new BigInteger([17], 1, CONSTRUCT),
44267 new BigInteger([18], 1, CONSTRUCT),
44268 new BigInteger([19], 1, CONSTRUCT),
44269 new BigInteger([20], 1, CONSTRUCT),
44270 new BigInteger([21], 1, CONSTRUCT),
44271 new BigInteger([22], 1, CONSTRUCT),
44272 new BigInteger([23], 1, CONSTRUCT),
44273 new BigInteger([24], 1, CONSTRUCT),
44274 new BigInteger([25], 1, CONSTRUCT),
44275 new BigInteger([26], 1, CONSTRUCT),
44276 new BigInteger([27], 1, CONSTRUCT),
44277 new BigInteger([28], 1, CONSTRUCT),
44278 new BigInteger([29], 1, CONSTRUCT),
44279 new BigInteger([30], 1, CONSTRUCT),
44280 new BigInteger([31], 1, CONSTRUCT),
44281 new BigInteger([32], 1, CONSTRUCT),
44282 new BigInteger([33], 1, CONSTRUCT),
44283 new BigInteger([34], 1, CONSTRUCT),
44284 new BigInteger([35], 1, CONSTRUCT),
44285 new BigInteger([36], 1, CONSTRUCT)
44286 ];
44287
44288 // Used for parsing/radix conversion
44289 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
44290
44291 /*
44292 Method: toString
44293 Convert a <BigInteger> to a string.
44294
44295 When *base* is greater than 10, letters are upper case.
44296
44297 Parameters:
44298
44299 base - Optional base to represent the number in (default is base 10).
44300 Must be between 2 and 36 inclusive, or an Error will be thrown.
44301
44302 Returns:
44303
44304 The string representation of the <BigInteger>.
44305 */
44306 BigInteger.prototype.toString = function(base) {
44307 base = +base || 10;
44308 if (base < 2 || base > 36) {
44309 throw new Error("illegal radix " + base + ".");
44310 }
44311 if (this._s === 0) {
44312 return "0";
44313 }
44314 if (base === 10) {
44315 var str = this._s < 0 ? "-" : "";
44316 str += this._d[this._d.length - 1].toString();
44317 for (var i = this._d.length - 2; i >= 0; i--) {
44318 var group = this._d[i].toString();
44319 while (group.length < BigInteger_base_log10) group = '0' + group;
44320 str += group;
44321 }
44322 return str;
44323 }
44324 else {
44325 var numerals = BigInteger.digits;
44326 base = BigInteger.small[base];
44327 var sign = this._s;
44328
44329 var n = this.abs();
44330 var digits = [];
44331 var digit;
44332
44333 while (n._s !== 0) {
44334 var divmod = n.divRem(base);
44335 n = divmod[0];
44336 digit = divmod[1];
44337 // TODO: This could be changed to unshift instead of reversing at the end.
44338 // Benchmark both to compare speeds.
44339 digits.push(numerals[digit.valueOf()]);
44340 }
44341 return (sign < 0 ? "-" : "") + digits.reverse().join("");
44342 }
44343 };
44344
44345 // Verify strings for parsing
44346 BigInteger.radixRegex = [
44347 /^$/,
44348 /^$/,
44349 /^[01]*$/,
44350 /^[012]*$/,
44351 /^[0-3]*$/,
44352 /^[0-4]*$/,
44353 /^[0-5]*$/,
44354 /^[0-6]*$/,
44355 /^[0-7]*$/,
44356 /^[0-8]*$/,
44357 /^[0-9]*$/,
44358 /^[0-9aA]*$/,
44359 /^[0-9abAB]*$/,
44360 /^[0-9abcABC]*$/,
44361 /^[0-9a-dA-D]*$/,
44362 /^[0-9a-eA-E]*$/,
44363 /^[0-9a-fA-F]*$/,
44364 /^[0-9a-gA-G]*$/,
44365 /^[0-9a-hA-H]*$/,
44366 /^[0-9a-iA-I]*$/,
44367 /^[0-9a-jA-J]*$/,
44368 /^[0-9a-kA-K]*$/,
44369 /^[0-9a-lA-L]*$/,
44370 /^[0-9a-mA-M]*$/,
44371 /^[0-9a-nA-N]*$/,
44372 /^[0-9a-oA-O]*$/,
44373 /^[0-9a-pA-P]*$/,
44374 /^[0-9a-qA-Q]*$/,
44375 /^[0-9a-rA-R]*$/,
44376 /^[0-9a-sA-S]*$/,
44377 /^[0-9a-tA-T]*$/,
44378 /^[0-9a-uA-U]*$/,
44379 /^[0-9a-vA-V]*$/,
44380 /^[0-9a-wA-W]*$/,
44381 /^[0-9a-xA-X]*$/,
44382 /^[0-9a-yA-Y]*$/,
44383 /^[0-9a-zA-Z]*$/
44384 ];
44385
44386 /*
44387 Function: parse
44388 Parse a string into a <BigInteger>.
44389
44390 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
44391 *base* is not provided, it will be guessed based on the leading characters
44392 of *s* as follows:
44393
44394 - "0x" or "0X": *base* = 16
44395 - "0c" or "0C": *base* = 8
44396 - "0b" or "0B": *base* = 2
44397 - else: *base* = 10
44398
44399 If no base is provided, or *base* is 10, the number can be in exponential
44400 form. For example, these are all valid:
44401
44402 > BigInteger.parse("1e9"); // Same as "1000000000"
44403 > BigInteger.parse("1.234*10^3"); // Same as 1234
44404 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
44405
44406 If any characters fall outside the range defined by the radix, an exception
44407 will be thrown.
44408
44409 Parameters:
44410
44411 s - The string to parse.
44412 base - Optional radix (default is to guess based on *s*).
44413
44414 Returns:
44415
44416 a <BigInteger> instance.
44417 */
44418 BigInteger.parse = function(s, base) {
44419 // Expands a number in exponential form to decimal form.
44420 // expandExponential("-13.441*10^5") === "1344100";
44421 // expandExponential("1.12300e-1") === "0.112300";
44422 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
44423 function expandExponential(str) {
44424 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
44425
44426 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
44427 c = +c;
44428 var l = c < 0;
44429 var i = n.length + c;
44430 x = (l ? n : f).length;
44431 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
44432 var z = (new Array(c + 1)).join("0");
44433 var r = n + f;
44434 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
44435 });
44436 }
44437
44438 s = s.toString();
44439 if (typeof base === "undefined" || +base === 10) {
44440 s = expandExponential(s);
44441 }
44442
44443 var prefixRE;
44444 if (typeof base === "undefined") {
44445 prefixRE = '0[xcb]';
44446 }
44447 else if (base == 16) {
44448 prefixRE = '0x';
44449 }
44450 else if (base == 8) {
44451 prefixRE = '0c';
44452 }
44453 else if (base == 2) {
44454 prefixRE = '0b';
44455 }
44456 else {
44457 prefixRE = '';
44458 }
44459 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
44460 if (parts) {
44461 var sign = parts[1] || "+";
44462 var baseSection = parts[2] || "";
44463 var digits = parts[3] || "";
44464
44465 if (typeof base === "undefined") {
44466 // Guess base
44467 if (baseSection === "0x" || baseSection === "0X") { // Hex
44468 base = 16;
44469 }
44470 else if (baseSection === "0c" || baseSection === "0C") { // Octal
44471 base = 8;
44472 }
44473 else if (baseSection === "0b" || baseSection === "0B") { // Binary
44474 base = 2;
44475 }
44476 else {
44477 base = 10;
44478 }
44479 }
44480 else if (base < 2 || base > 36) {
44481 throw new Error("Illegal radix " + base + ".");
44482 }
44483
44484 base = +base;
44485
44486 // Check for digits outside the range
44487 if (!(BigInteger.radixRegex[base].test(digits))) {
44488 throw new Error("Bad digit for radix " + base);
44489 }
44490
44491 // Strip leading zeros, and convert to array
44492 digits = digits.replace(/^0+/, "").split("");
44493 if (digits.length === 0) {
44494 return ZERO;
44495 }
44496
44497 // Get the sign (we know it's not zero)
44498 sign = (sign === "-") ? -1 : 1;
44499
44500 // Optimize 10
44501 if (base == 10) {
44502 var d = [];
44503 while (digits.length >= BigInteger_base_log10) {
44504 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
44505 }
44506 d.push(parseInt(digits.join(''), 10));
44507 return new BigInteger(d, sign, CONSTRUCT);
44508 }
44509
44510 // Do the conversion
44511 var d = ZERO;
44512 base = BigInteger.small[base];
44513 var small = BigInteger.small;
44514 for (var i = 0; i < digits.length; i++) {
44515 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
44516 }
44517 return new BigInteger(d._d, sign, CONSTRUCT);
44518 }
44519 else {
44520 throw new Error("Invalid BigInteger format: " + s);
44521 }
44522 };
44523
44524 /*
44525 Function: add
44526 Add two <BigIntegers>.
44527
44528 Parameters:
44529
44530 n - The number to add to *this*. Will be converted to a <BigInteger>.
44531
44532 Returns:
44533
44534 The numbers added together.
44535
44536 See Also:
44537
44538 <subtract>, <multiply>, <quotient>, <next>
44539 */
44540 BigInteger.prototype.add = function(n) {
44541 if (this._s === 0) {
44542 return BigInteger(n);
44543 }
44544
44545 n = BigInteger(n);
44546 if (n._s === 0) {
44547 return this;
44548 }
44549 if (this._s !== n._s) {
44550 n = n.negate();
44551 return this.subtract(n);
44552 }
44553
44554 var a = this._d;
44555 var b = n._d;
44556 var al = a.length;
44557 var bl = b.length;
44558 var sum = new Array(Math.max(al, bl) + 1);
44559 var size = Math.min(al, bl);
44560 var carry = 0;
44561 var digit;
44562
44563 for (var i = 0; i < size; i++) {
44564 digit = a[i] + b[i] + carry;
44565 sum[i] = digit % BigInteger_base;
44566 carry = (digit / BigInteger_base) | 0;
44567 }
44568 if (bl > al) {
44569 a = b;
44570 al = bl;
44571 }
44572 for (i = size; carry && i < al; i++) {
44573 digit = a[i] + carry;
44574 sum[i] = digit % BigInteger_base;
44575 carry = (digit / BigInteger_base) | 0;
44576 }
44577 if (carry) {
44578 sum[i] = carry;
44579 }
44580
44581 for ( ; i < al; i++) {
44582 sum[i] = a[i];
44583 }
44584
44585 return new BigInteger(sum, this._s, CONSTRUCT);
44586 };
44587
44588 /*
44589 Function: negate
44590 Get the additive inverse of a <BigInteger>.
44591
44592 Returns:
44593
44594 A <BigInteger> with the same magnatude, but with the opposite sign.
44595
44596 See Also:
44597
44598 <abs>
44599 */
44600 BigInteger.prototype.negate = function() {
44601 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
44602 };
44603
44604 /*
44605 Function: abs
44606 Get the absolute value of a <BigInteger>.
44607
44608 Returns:
44609
44610 A <BigInteger> with the same magnatude, but always positive (or zero).
44611
44612 See Also:
44613
44614 <negate>
44615 */
44616 BigInteger.prototype.abs = function() {
44617 return (this._s < 0) ? this.negate() : this;
44618 };
44619
44620 /*
44621 Function: subtract
44622 Subtract two <BigIntegers>.
44623
44624 Parameters:
44625
44626 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
44627
44628 Returns:
44629
44630 The *n* subtracted from *this*.
44631
44632 See Also:
44633
44634 <add>, <multiply>, <quotient>, <prev>
44635 */
44636 BigInteger.prototype.subtract = function(n) {
44637 if (this._s === 0) {
44638 return BigInteger(n).negate();
44639 }
44640
44641 n = BigInteger(n);
44642 if (n._s === 0) {
44643 return this;
44644 }
44645 if (this._s !== n._s) {
44646 n = n.negate();
44647 return this.add(n);
44648 }
44649
44650 var m = this;
44651 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
44652 if (this._s < 0) {
44653 m = new BigInteger(n._d, 1, CONSTRUCT);
44654 n = new BigInteger(this._d, 1, CONSTRUCT);
44655 }
44656
44657 // Both are positive => a - b
44658 var sign = m.compareAbs(n);
44659 if (sign === 0) {
44660 return ZERO;
44661 }
44662 else if (sign < 0) {
44663 // swap m and n
44664 var t = n;
44665 n = m;
44666 m = t;
44667 }
44668
44669 // a > b
44670 var a = m._d;
44671 var b = n._d;
44672 var al = a.length;
44673 var bl = b.length;
44674 var diff = new Array(al); // al >= bl since a > b
44675 var borrow = 0;
44676 var i;
44677 var digit;
44678
44679 for (i = 0; i < bl; i++) {
44680 digit = a[i] - borrow - b[i];
44681 if (digit < 0) {
44682 digit += BigInteger_base;
44683 borrow = 1;
44684 }
44685 else {
44686 borrow = 0;
44687 }
44688 diff[i] = digit;
44689 }
44690 for (i = bl; i < al; i++) {
44691 digit = a[i] - borrow;
44692 if (digit < 0) {
44693 digit += BigInteger_base;
44694 }
44695 else {
44696 diff[i++] = digit;
44697 break;
44698 }
44699 diff[i] = digit;
44700 }
44701 for ( ; i < al; i++) {
44702 diff[i] = a[i];
44703 }
44704
44705 return new BigInteger(diff, sign, CONSTRUCT);
44706 };
44707
44708 (function() {
44709 function addOne(n, sign) {
44710 var a = n._d;
44711 var sum = a.slice();
44712 var carry = true;
44713 var i = 0;
44714
44715 while (true) {
44716 var digit = (a[i] || 0) + 1;
44717 sum[i] = digit % BigInteger_base;
44718 if (digit <= BigInteger_base - 1) {
44719 break;
44720 }
44721 ++i;
44722 }
44723
44724 return new BigInteger(sum, sign, CONSTRUCT);
44725 }
44726
44727 function subtractOne(n, sign) {
44728 var a = n._d;
44729 var sum = a.slice();
44730 var borrow = true;
44731 var i = 0;
44732
44733 while (true) {
44734 var digit = (a[i] || 0) - 1;
44735 if (digit < 0) {
44736 sum[i] = digit + BigInteger_base;
44737 }
44738 else {
44739 sum[i] = digit;
44740 break;
44741 }
44742 ++i;
44743 }
44744
44745 return new BigInteger(sum, sign, CONSTRUCT);
44746 }
44747
44748 /*
44749 Function: next
44750 Get the next <BigInteger> (add one).
44751
44752 Returns:
44753
44754 *this* + 1.
44755
44756 See Also:
44757
44758 <add>, <prev>
44759 */
44760 BigInteger.prototype.next = function() {
44761 switch (this._s) {
44762 case 0:
44763 return ONE;
44764 case -1:
44765 return subtractOne(this, -1);
44766 // case 1:
44767 default:
44768 return addOne(this, 1);
44769 }
44770 };
44771
44772 /*
44773 Function: prev
44774 Get the previous <BigInteger> (subtract one).
44775
44776 Returns:
44777
44778 *this* - 1.
44779
44780 See Also:
44781
44782 <next>, <subtract>
44783 */
44784 BigInteger.prototype.prev = function() {
44785 switch (this._s) {
44786 case 0:
44787 return M_ONE;
44788 case -1:
44789 return addOne(this, -1);
44790 // case 1:
44791 default:
44792 return subtractOne(this, 1);
44793 }
44794 };
44795 })();
44796
44797 /*
44798 Function: compareAbs
44799 Compare the absolute value of two <BigIntegers>.
44800
44801 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
44802
44803 Parameters:
44804
44805 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44806
44807 Returns:
44808
44809 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
44810
44811 See Also:
44812
44813 <compare>, <abs>
44814 */
44815 BigInteger.prototype.compareAbs = function(n) {
44816 if (this === n) {
44817 return 0;
44818 }
44819
44820 if (!(n instanceof BigInteger)) {
44821 if (!isFinite(n)) {
44822 return(isNaN(n) ? n : -1);
44823 }
44824 n = BigInteger(n);
44825 }
44826
44827 if (this._s === 0) {
44828 return (n._s !== 0) ? -1 : 0;
44829 }
44830 if (n._s === 0) {
44831 return 1;
44832 }
44833
44834 var l = this._d.length;
44835 var nl = n._d.length;
44836 if (l < nl) {
44837 return -1;
44838 }
44839 else if (l > nl) {
44840 return 1;
44841 }
44842
44843 var a = this._d;
44844 var b = n._d;
44845 for (var i = l-1; i >= 0; i--) {
44846 if (a[i] !== b[i]) {
44847 return a[i] < b[i] ? -1 : 1;
44848 }
44849 }
44850
44851 return 0;
44852 };
44853
44854 /*
44855 Function: compare
44856 Compare two <BigIntegers>.
44857
44858 Parameters:
44859
44860 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44861
44862 Returns:
44863
44864 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
44865
44866 See Also:
44867
44868 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
44869 */
44870 BigInteger.prototype.compare = function(n) {
44871 if (this === n) {
44872 return 0;
44873 }
44874
44875 n = BigInteger(n);
44876
44877 if (this._s === 0) {
44878 return -n._s;
44879 }
44880
44881 if (this._s === n._s) { // both positive or both negative
44882 var cmp = this.compareAbs(n);
44883 return cmp * this._s;
44884 }
44885 else {
44886 return this._s;
44887 }
44888 };
44889
44890 /*
44891 Function: isUnit
44892 Return true iff *this* is either 1 or -1.
44893
44894 Returns:
44895
44896 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
44897
44898 See Also:
44899
44900 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
44901 <BigInteger.ONE>, <BigInteger.M_ONE>
44902 */
44903 BigInteger.prototype.isUnit = function() {
44904 return this === ONE ||
44905 this === M_ONE ||
44906 (this._d.length === 1 && this._d[0] === 1);
44907 };
44908
44909 /*
44910 Function: multiply
44911 Multiply two <BigIntegers>.
44912
44913 Parameters:
44914
44915 n - The number to multiply *this* by. Will be converted to a
44916 <BigInteger>.
44917
44918 Returns:
44919
44920 The numbers multiplied together.
44921
44922 See Also:
44923
44924 <add>, <subtract>, <quotient>, <square>
44925 */
44926 BigInteger.prototype.multiply = function(n) {
44927 // TODO: Consider adding Karatsuba multiplication for large numbers
44928 if (this._s === 0) {
44929 return ZERO;
44930 }
44931
44932 n = BigInteger(n);
44933 if (n._s === 0) {
44934 return ZERO;
44935 }
44936 if (this.isUnit()) {
44937 if (this._s < 0) {
44938 return n.negate();
44939 }
44940 return n;
44941 }
44942 if (n.isUnit()) {
44943 if (n._s < 0) {
44944 return this.negate();
44945 }
44946 return this;
44947 }
44948 if (this === n) {
44949 return this.square();
44950 }
44951
44952 var r = (this._d.length >= n._d.length);
44953 var a = (r ? this : n)._d; // a will be longer than b
44954 var b = (r ? n : this)._d;
44955 var al = a.length;
44956 var bl = b.length;
44957
44958 var pl = al + bl;
44959 var partial = new Array(pl);
44960 var i;
44961 for (i = 0; i < pl; i++) {
44962 partial[i] = 0;
44963 }
44964
44965 for (i = 0; i < bl; i++) {
44966 var carry = 0;
44967 var bi = b[i];
44968 var jlimit = al + i;
44969 var digit;
44970 for (var j = i; j < jlimit; j++) {
44971 digit = partial[j] + bi * a[j - i] + carry;
44972 carry = (digit / BigInteger_base) | 0;
44973 partial[j] = (digit % BigInteger_base) | 0;
44974 }
44975 if (carry) {
44976 digit = partial[j] + carry;
44977 carry = (digit / BigInteger_base) | 0;
44978 partial[j] = digit % BigInteger_base;
44979 }
44980 }
44981 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
44982 };
44983
44984 // Multiply a BigInteger by a single-digit native number
44985 // Assumes that this and n are >= 0
44986 // This is not really intended to be used outside the library itself
44987 BigInteger.prototype.multiplySingleDigit = function(n) {
44988 if (n === 0 || this._s === 0) {
44989 return ZERO;
44990 }
44991 if (n === 1) {
44992 return this;
44993 }
44994
44995 var digit;
44996 if (this._d.length === 1) {
44997 digit = this._d[0] * n;
44998 if (digit >= BigInteger_base) {
44999 return new BigInteger([(digit % BigInteger_base)|0,
45000 (digit / BigInteger_base)|0], 1, CONSTRUCT);
45001 }
45002 return new BigInteger([digit], 1, CONSTRUCT);
45003 }
45004
45005 if (n === 2) {
45006 return this.add(this);
45007 }
45008 if (this.isUnit()) {
45009 return new BigInteger([n], 1, CONSTRUCT);
45010 }
45011
45012 var a = this._d;
45013 var al = a.length;
45014
45015 var pl = al + 1;
45016 var partial = new Array(pl);
45017 for (var i = 0; i < pl; i++) {
45018 partial[i] = 0;
45019 }
45020
45021 var carry = 0;
45022 for (var j = 0; j < al; j++) {
45023 digit = n * a[j] + carry;
45024 carry = (digit / BigInteger_base) | 0;
45025 partial[j] = (digit % BigInteger_base) | 0;
45026 }
45027 if (carry) {
45028 partial[j] = carry;
45029 }
45030
45031 return new BigInteger(partial, 1, CONSTRUCT);
45032 };
45033
45034 /*
45035 Function: square
45036 Multiply a <BigInteger> by itself.
45037
45038 This is slightly faster than regular multiplication, since it removes the
45039 duplicated multiplcations.
45040
45041 Returns:
45042
45043 > this.multiply(this)
45044
45045 See Also:
45046 <multiply>
45047 */
45048 BigInteger.prototype.square = function() {
45049 // Normally, squaring a 10-digit number would take 100 multiplications.
45050 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
45051 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
45052 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
45053
45054 if (this._s === 0) {
45055 return ZERO;
45056 }
45057 if (this.isUnit()) {
45058 return ONE;
45059 }
45060
45061 var digits = this._d;
45062 var length = digits.length;
45063 var imult1 = new Array(length + length + 1);
45064 var product, carry, k;
45065 var i;
45066
45067 // Calculate diagonal
45068 for (i = 0; i < length; i++) {
45069 k = i * 2;
45070 product = digits[i] * digits[i];
45071 carry = (product / BigInteger_base) | 0;
45072 imult1[k] = product % BigInteger_base;
45073 imult1[k + 1] = carry;
45074 }
45075
45076 // Calculate repeating part
45077 for (i = 0; i < length; i++) {
45078 carry = 0;
45079 k = i * 2 + 1;
45080 for (var j = i + 1; j < length; j++, k++) {
45081 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
45082 carry = (product / BigInteger_base) | 0;
45083 imult1[k] = product % BigInteger_base;
45084 }
45085 k = length + i;
45086 var digit = carry + imult1[k];
45087 carry = (digit / BigInteger_base) | 0;
45088 imult1[k] = digit % BigInteger_base;
45089 imult1[k + 1] += carry;
45090 }
45091
45092 return new BigInteger(imult1, 1, CONSTRUCT);
45093 };
45094
45095 /*
45096 Function: quotient
45097 Divide two <BigIntegers> and truncate towards zero.
45098
45099 <quotient> throws an exception if *n* is zero.
45100
45101 Parameters:
45102
45103 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45104
45105 Returns:
45106
45107 The *this* / *n*, truncated to an integer.
45108
45109 See Also:
45110
45111 <add>, <subtract>, <multiply>, <divRem>, <remainder>
45112 */
45113 BigInteger.prototype.quotient = function(n) {
45114 return this.divRem(n)[0];
45115 };
45116
45117 /*
45118 Function: divide
45119 Deprecated synonym for <quotient>.
45120 */
45121 BigInteger.prototype.divide = BigInteger.prototype.quotient;
45122
45123 /*
45124 Function: remainder
45125 Calculate the remainder of two <BigIntegers>.
45126
45127 <remainder> throws an exception if *n* is zero.
45128
45129 Parameters:
45130
45131 n - The remainder after *this* is divided *this* by *n*. Will be
45132 converted to a <BigInteger>.
45133
45134 Returns:
45135
45136 *this* % *n*.
45137
45138 See Also:
45139
45140 <divRem>, <quotient>
45141 */
45142 BigInteger.prototype.remainder = function(n) {
45143 return this.divRem(n)[1];
45144 };
45145
45146 /*
45147 Function: divRem
45148 Calculate the integer quotient and remainder of two <BigIntegers>.
45149
45150 <divRem> throws an exception if *n* is zero.
45151
45152 Parameters:
45153
45154 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45155
45156 Returns:
45157
45158 A two-element array containing the quotient and the remainder.
45159
45160 > a.divRem(b)
45161
45162 is exactly equivalent to
45163
45164 > [a.quotient(b), a.remainder(b)]
45165
45166 except it is faster, because they are calculated at the same time.
45167
45168 See Also:
45169
45170 <quotient>, <remainder>
45171 */
45172 BigInteger.prototype.divRem = function(n) {
45173 n = BigInteger(n);
45174 if (n._s === 0) {
45175 throw new Error("Divide by zero");
45176 }
45177 if (this._s === 0) {
45178 return [ZERO, ZERO];
45179 }
45180 if (n._d.length === 1) {
45181 return this.divRemSmall(n._s * n._d[0]);
45182 }
45183
45184 // Test for easy cases -- |n1| <= |n2|
45185 switch (this.compareAbs(n)) {
45186 case 0: // n1 == n2
45187 return [this._s === n._s ? ONE : M_ONE, ZERO];
45188 case -1: // |n1| < |n2|
45189 return [ZERO, this];
45190 }
45191
45192 var sign = this._s * n._s;
45193 var a = n.abs();
45194 var b_digits = this._d;
45195 var b_index = b_digits.length;
45196 var digits = n._d.length;
45197 var quot = [];
45198 var guess;
45199
45200 var part = new BigInteger([], 0, CONSTRUCT);
45201
45202 while (b_index) {
45203 part._d.unshift(b_digits[--b_index]);
45204 part = new BigInteger(part._d, 1, CONSTRUCT);
45205
45206 if (part.compareAbs(n) < 0) {
45207 quot.push(0);
45208 continue;
45209 }
45210 if (part._s === 0) {
45211 guess = 0;
45212 }
45213 else {
45214 var xlen = part._d.length, ylen = a._d.length;
45215 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
45216 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
45217 if (part._d.length > a._d.length) {
45218 // The length of part._d can either match a._d length,
45219 // or exceed it by one.
45220 highx = (highx+1)*BigInteger_base;
45221 }
45222 guess = Math.ceil(highx/highy);
45223 }
45224 do {
45225 var check = a.multiplySingleDigit(guess);
45226 if (check.compareAbs(part) <= 0) {
45227 break;
45228 }
45229 guess--;
45230 } while (guess);
45231
45232 quot.push(guess);
45233 if (!guess) {
45234 continue;
45235 }
45236 var diff = part.subtract(check);
45237 part._d = diff._d.slice();
45238 }
45239
45240 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
45241 new BigInteger(part._d, this._s, CONSTRUCT)];
45242 };
45243
45244 // Throws an exception if n is outside of (-BigInteger.base, -1] or
45245 // [1, BigInteger.base). It's not necessary to call this, since the
45246 // other division functions will call it if they are able to.
45247 BigInteger.prototype.divRemSmall = function(n) {
45248 var r;
45249 n = +n;
45250 if (n === 0) {
45251 throw new Error("Divide by zero");
45252 }
45253
45254 var n_s = n < 0 ? -1 : 1;
45255 var sign = this._s * n_s;
45256 n = Math.abs(n);
45257
45258 if (n < 1 || n >= BigInteger_base) {
45259 throw new Error("Argument out of range");
45260 }
45261
45262 if (this._s === 0) {
45263 return [ZERO, ZERO];
45264 }
45265
45266 if (n === 1 || n === -1) {
45267 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
45268 }
45269
45270 // 2 <= n < BigInteger_base
45271
45272 // divide a single digit by a single digit
45273 if (this._d.length === 1) {
45274 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
45275 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
45276 if (sign < 0) {
45277 q = q.negate();
45278 }
45279 if (this._s < 0) {
45280 r = r.negate();
45281 }
45282 return [q, r];
45283 }
45284
45285 var digits = this._d.slice();
45286 var quot = new Array(digits.length);
45287 var part = 0;
45288 var diff = 0;
45289 var i = 0;
45290 var guess;
45291
45292 while (digits.length) {
45293 part = part * BigInteger_base + digits[digits.length - 1];
45294 if (part < n) {
45295 quot[i++] = 0;
45296 digits.pop();
45297 diff = BigInteger_base * diff + part;
45298 continue;
45299 }
45300 if (part === 0) {
45301 guess = 0;
45302 }
45303 else {
45304 guess = (part / n) | 0;
45305 }
45306
45307 var check = n * guess;
45308 diff = part - check;
45309 quot[i++] = guess;
45310 if (!guess) {
45311 digits.pop();
45312 continue;
45313 }
45314
45315 digits.pop();
45316 part = diff;
45317 }
45318
45319 r = new BigInteger([diff], 1, CONSTRUCT);
45320 if (this._s < 0) {
45321 r = r.negate();
45322 }
45323 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
45324 };
45325
45326 /*
45327 Function: isEven
45328 Return true iff *this* is divisible by two.
45329
45330 Note that <BigInteger.ZERO> is even.
45331
45332 Returns:
45333
45334 true if *this* is even, false otherwise.
45335
45336 See Also:
45337
45338 <isOdd>
45339 */
45340 BigInteger.prototype.isEven = function() {
45341 var digits = this._d;
45342 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
45343 };
45344
45345 /*
45346 Function: isOdd
45347 Return true iff *this* is not divisible by two.
45348
45349 Returns:
45350
45351 true if *this* is odd, false otherwise.
45352
45353 See Also:
45354
45355 <isEven>
45356 */
45357 BigInteger.prototype.isOdd = function() {
45358 return !this.isEven();
45359 };
45360
45361 /*
45362 Function: sign
45363 Get the sign of a <BigInteger>.
45364
45365 Returns:
45366
45367 * -1 if *this* < 0
45368 * 0 if *this* == 0
45369 * +1 if *this* > 0
45370
45371 See Also:
45372
45373 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
45374 */
45375 BigInteger.prototype.sign = function() {
45376 return this._s;
45377 };
45378
45379 /*
45380 Function: isPositive
45381 Return true iff *this* > 0.
45382
45383 Returns:
45384
45385 true if *this*.compare(<BigInteger.ZERO>) == 1.
45386
45387 See Also:
45388
45389 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
45390 */
45391 BigInteger.prototype.isPositive = function() {
45392 return this._s > 0;
45393 };
45394
45395 /*
45396 Function: isNegative
45397 Return true iff *this* < 0.
45398
45399 Returns:
45400
45401 true if *this*.compare(<BigInteger.ZERO>) == -1.
45402
45403 See Also:
45404
45405 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
45406 */
45407 BigInteger.prototype.isNegative = function() {
45408 return this._s < 0;
45409 };
45410
45411 /*
45412 Function: isZero
45413 Return true iff *this* == 0.
45414
45415 Returns:
45416
45417 true if *this*.compare(<BigInteger.ZERO>) == 0.
45418
45419 See Also:
45420
45421 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
45422 */
45423 BigInteger.prototype.isZero = function() {
45424 return this._s === 0;
45425 };
45426
45427 /*
45428 Function: exp10
45429 Multiply a <BigInteger> by a power of 10.
45430
45431 This is equivalent to, but faster than
45432
45433 > if (n >= 0) {
45434 > return this.multiply(BigInteger("1e" + n));
45435 > }
45436 > else { // n <= 0
45437 > return this.quotient(BigInteger("1e" + -n));
45438 > }
45439
45440 Parameters:
45441
45442 n - The power of 10 to multiply *this* by. *n* is converted to a
45443 javascipt number and must be no greater than <BigInteger.MAX_EXP>
45444 (0x7FFFFFFF), or an exception will be thrown.
45445
45446 Returns:
45447
45448 *this* * (10 ** *n*), truncated to an integer if necessary.
45449
45450 See Also:
45451
45452 <pow>, <multiply>
45453 */
45454 BigInteger.prototype.exp10 = function(n) {
45455 n = +n;
45456 if (n === 0) {
45457 return this;
45458 }
45459 if (Math.abs(n) > Number(MAX_EXP)) {
45460 throw new Error("exponent too large in BigInteger.exp10");
45461 }
45462 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
45463 if (this._s === 0) {
45464 return ZERO;
45465 }
45466 if (n > 0) {
45467 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45468
45469 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45470 k._d.unshift(0);
45471 }
45472 if (n == 0)
45473 return k;
45474 k._s = 1;
45475 k = k.multiplySingleDigit(Math.pow(10, n));
45476 return (this._s < 0 ? k.negate() : k);
45477 } else if (-n >= this._d.length*BigInteger_base_log10) {
45478 return ZERO;
45479 } else {
45480 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45481
45482 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45483 k._d.shift();
45484 }
45485 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
45486 }
45487 };
45488
45489 /*
45490 Function: pow
45491 Raise a <BigInteger> to a power.
45492
45493 In this implementation, 0**0 is 1.
45494
45495 Parameters:
45496
45497 n - The exponent to raise *this* by. *n* must be no greater than
45498 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
45499
45500 Returns:
45501
45502 *this* raised to the *nth* power.
45503
45504 See Also:
45505
45506 <modPow>
45507 */
45508 BigInteger.prototype.pow = function(n) {
45509 if (this.isUnit()) {
45510 if (this._s > 0) {
45511 return this;
45512 }
45513 else {
45514 return BigInteger(n).isOdd() ? this : this.negate();
45515 }
45516 }
45517
45518 n = BigInteger(n);
45519 if (n._s === 0) {
45520 return ONE;
45521 }
45522 else if (n._s < 0) {
45523 if (this._s === 0) {
45524 throw new Error("Divide by zero");
45525 }
45526 else {
45527 return ZERO;
45528 }
45529 }
45530 if (this._s === 0) {
45531 return ZERO;
45532 }
45533 if (n.isUnit()) {
45534 return this;
45535 }
45536
45537 if (n.compareAbs(MAX_EXP) > 0) {
45538 throw new Error("exponent too large in BigInteger.pow");
45539 }
45540 var x = this;
45541 var aux = ONE;
45542 var two = BigInteger.small[2];
45543
45544 while (n.isPositive()) {
45545 if (n.isOdd()) {
45546 aux = aux.multiply(x);
45547 if (n.isUnit()) {
45548 return aux;
45549 }
45550 }
45551 x = x.square();
45552 n = n.quotient(two);
45553 }
45554
45555 return aux;
45556 };
45557
45558 /*
45559 Function: modPow
45560 Raise a <BigInteger> to a power (mod m).
45561
45562 Because it is reduced by a modulus, <modPow> is not limited by
45563 <BigInteger.MAX_EXP> like <pow>.
45564
45565 Parameters:
45566
45567 exponent - The exponent to raise *this* by. Must be positive.
45568 modulus - The modulus.
45569
45570 Returns:
45571
45572 *this* ^ *exponent* (mod *modulus*).
45573
45574 See Also:
45575
45576 <pow>, <mod>
45577 */
45578 BigInteger.prototype.modPow = function(exponent, modulus) {
45579 var result = ONE;
45580 var base = this;
45581
45582 while (exponent.isPositive()) {
45583 if (exponent.isOdd()) {
45584 result = result.multiply(base).remainder(modulus);
45585 }
45586
45587 exponent = exponent.quotient(BigInteger.small[2]);
45588 if (exponent.isPositive()) {
45589 base = base.square().remainder(modulus);
45590 }
45591 }
45592
45593 return result;
45594 };
45595
45596 /*
45597 Function: log
45598 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
45599
45600 This is equivalent to
45601
45602 > Math.log(this.toJSValue())
45603
45604 but handles values outside of the native number range.
45605
45606 Returns:
45607
45608 log( *this* )
45609
45610 See Also:
45611
45612 <toJSValue>
45613 */
45614 BigInteger.prototype.log = function() {
45615 switch (this._s) {
45616 case 0: return -Infinity;
45617 case -1: return NaN;
45618 default: // Fall through.
45619 }
45620
45621 var l = this._d.length;
45622
45623 if (l*BigInteger_base_log10 < 30) {
45624 return Math.log(this.valueOf());
45625 }
45626
45627 var N = Math.ceil(30/BigInteger_base_log10);
45628 var firstNdigits = this._d.slice(l - N);
45629 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
45630 };
45631
45632 /*
45633 Function: valueOf
45634 Convert a <BigInteger> to a native JavaScript integer.
45635
45636 This is called automatically by JavaScipt to convert a <BigInteger> to a
45637 native value.
45638
45639 Returns:
45640
45641 > parseInt(this.toString(), 10)
45642
45643 See Also:
45644
45645 <toString>, <toJSValue>
45646 */
45647 BigInteger.prototype.valueOf = function() {
45648 return parseInt(this.toString(), 10);
45649 };
45650
45651 /*
45652 Function: toJSValue
45653 Convert a <BigInteger> to a native JavaScript integer.
45654
45655 This is the same as valueOf, but more explicitly named.
45656
45657 Returns:
45658
45659 > parseInt(this.toString(), 10)
45660
45661 See Also:
45662
45663 <toString>, <valueOf>
45664 */
45665 BigInteger.prototype.toJSValue = function() {
45666 return parseInt(this.toString(), 10);
45667 };
45668
45669 var MAX_EXP = BigInteger(0x7FFFFFFF);
45670 // Constant: MAX_EXP
45671 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
45672 BigInteger.MAX_EXP = MAX_EXP;
45673
45674 (function() {
45675 function makeUnary(fn) {
45676 return function(a) {
45677 return fn.call(BigInteger(a));
45678 };
45679 }
45680
45681 function makeBinary(fn) {
45682 return function(a, b) {
45683 return fn.call(BigInteger(a), BigInteger(b));
45684 };
45685 }
45686
45687 function makeTrinary(fn) {
45688 return function(a, b, c) {
45689 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
45690 };
45691 }
45692
45693 (function() {
45694 var i, fn;
45695 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
45696 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
45697 var trinary = ["modPow"];
45698
45699 for (i = 0; i < unary.length; i++) {
45700 fn = unary[i];
45701 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
45702 }
45703
45704 for (i = 0; i < binary.length; i++) {
45705 fn = binary[i];
45706 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
45707 }
45708
45709 for (i = 0; i < trinary.length; i++) {
45710 fn = trinary[i];
45711 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
45712 }
45713
45714 BigInteger.exp10 = function(x, n) {
45715 return BigInteger(x).exp10(n);
45716 };
45717 })();
45718 })();
45719
45720 exports.BigInteger = BigInteger;
45721 })(typeof exports !== 'undefined' ? exports : this);
45722 </script>
45723 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.zxcvbn = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
45724 var adjacency_graphs;adjacency_graphs={qwerty:{"!":["`~",null,null,"2@","qQ",null],'"':[";:","[{","]}",null,null,"/?"],"#":["2@",null,null,"4$","eE","wW"],$:["3#",null,null,"5%","rR","eE"],"%":["4$",null,null,"6^","tT","rR"],"&":["6^",null,null,"8*","uU","yY"],"'":[";:","[{","]}",null,null,"/?"],"(":["8*",null,null,"0)","oO","iI"],")":["9(",null,null,"-_","pP","oO"],"*":["7&",null,null,"9(","iI","uU"],"+":["-_",null,null,null,"]}","[{"],",":["mM","kK","lL",".>",null,null],"-":["0)",null,null,"=+","[{","pP"],".":[",<","lL",";:","/?",null,null],"/":[".>",";:","'\"",null,null,null],0:["9(",null,null,"-_","pP","oO"],1:["`~",null,null,"2@","qQ",null],2:["1!",null,null,"3#","wW","qQ"],3:["2@",null,null,"4$","eE","wW"],4:["3#",null,null,"5%","rR","eE"],5:["4$",null,null,"6^","tT","rR"],6:["5%",null,null,"7&","yY","tT"],7:["6^",null,null,"8*","uU","yY"],8:["7&",null,null,"9(","iI","uU"],9:["8*",null,null,"0)","oO","iI"],":":["lL","pP","[{","'\"","/?",".>"],";":["lL","pP","[{","'\"","/?",".>"],"<":["mM","kK","lL",".>",null,null],"=":["-_",null,null,null,"]}","[{"],">":[",<","lL",";:","/?",null,null],"?":[".>",";:","'\"",null,null,null],"@":["1!",null,null,"3#","wW","qQ"],A:[null,"qQ","wW","sS","zZ",null],B:["vV","gG","hH","nN",null,null],C:["xX","dD","fF","vV",null,null],D:["sS","eE","rR","fF","cC","xX"],E:["wW","3#","4$","rR","dD","sS"],F:["dD","rR","tT","gG","vV","cC"],G:["fF","tT","yY","hH","bB","vV"],H:["gG","yY","uU","jJ","nN","bB"],I:["uU","8*","9(","oO","kK","jJ"],J:["hH","uU","iI","kK","mM","nN"],K:["jJ","iI","oO","lL",",<","mM"],L:["kK","oO","pP",";:",".>",",<"],M:["nN","jJ","kK",",<",null,null],N:["bB","hH","jJ","mM",null,null],O:["iI","9(","0)","pP","lL","kK"],P:["oO","0)","-_","[{",";:","lL"],Q:[null,"1!","2@","wW","aA",null],R:["eE","4$","5%","tT","fF","dD"],S:["aA","wW","eE","dD","xX","zZ"],T:["rR","5%","6^","yY","gG","fF"],U:["yY","7&","8*","iI","jJ","hH"],V:["cC","fF","gG","bB",null,null],W:["qQ","2@","3#","eE","sS","aA"],X:["zZ","sS","dD","cC",null,null],Y:["tT","6^","7&","uU","hH","gG"],Z:[null,"aA","sS","xX",null,null],"[":["pP","-_","=+","]}","'\"",";:"],"\\":["]}",null,null,null,null,null],"]":["[{","=+",null,"\\|",null,"'\""],"^":["5%",null,null,"7&","yY","tT"],_:["0)",null,null,"=+","[{","pP"],"`":[null,null,null,"1!",null,null],a:[null,"qQ","wW","sS","zZ",null],b:["vV","gG","hH","nN",null,null],c:["xX","dD","fF","vV",null,null],d:["sS","eE","rR","fF","cC","xX"],e:["wW","3#","4$","rR","dD","sS"],f:["dD","rR","tT","gG","vV","cC"],g:["fF","tT","yY","hH","bB","vV"],h:["gG","yY","uU","jJ","nN","bB"],i:["uU","8*","9(","oO","kK","jJ"],j:["hH","uU","iI","kK","mM","nN"],k:["jJ","iI","oO","lL",",<","mM"],l:["kK","oO","pP",";:",".>",",<"],m:["nN","jJ","kK",",<",null,null],n:["bB","hH","jJ","mM",null,null],o:["iI","9(","0)","pP","lL","kK"],p:["oO","0)","-_","[{",";:","lL"],q:[null,"1!","2@","wW","aA",null],r:["eE","4$","5%","tT","fF","dD"],s:["aA","wW","eE","dD","xX","zZ"],t:["rR","5%","6^","yY","gG","fF"],u:["yY","7&","8*","iI","jJ","hH"],v:["cC","fF","gG","bB",null,null],w:["qQ","2@","3#","eE","sS","aA"],x:["zZ","sS","dD","cC",null,null],y:["tT","6^","7&","uU","hH","gG"],z:[null,"aA","sS","xX",null,null],"{":["pP","-_","=+","]}","'\"",";:"],"|":["]}",null,null,null,null,null],"}":["[{","=+",null,"\\|",null,"'\""],"~":[null,null,null,"1!",null,null]},dvorak:{"!":["`~",null,null,"2@","'\"",null],'"':[null,"1!","2@",",<","aA",null],"#":["2@",null,null,"4$",".>",",<"],$:["3#",null,null,"5%","pP",".>"],"%":["4$",null,null,"6^","yY","pP"],"&":["6^",null,null,"8*","gG","fF"],"'":[null,"1!","2@",",<","aA",null],"(":["8*",null,null,"0)","rR","cC"],")":["9(",null,null,"[{","lL","rR"],"*":["7&",null,null,"9(","cC","gG"],"+":["/?","]}",null,"\\|",null,"-_"],",":["'\"","2@","3#",".>","oO","aA"],"-":["sS","/?","=+",null,null,"zZ"],".":[",<","3#","4$","pP","eE","oO"],"/":["lL","[{","]}","=+","-_","sS"],0:["9(",null,null,"[{","lL","rR"],1:["`~",null,null,"2@","'\"",null],2:["1!",null,null,"3#",",<","'\""],3:["2@",null,null,"4$",".>",",<"],4:["3#",null,null,"5%","pP",".>"],5:["4$",null,null,"6^","yY","pP"],6:["5%",null,null,"7&","fF","yY"],7:["6^",null,null,"8*","gG","fF"],8:["7&",null,null,"9(","cC","gG"],9:["8*",null,null,"0)","rR","cC"],":":[null,"aA","oO","qQ",null,null],";":[null,"aA","oO","qQ",null,null],"<":["'\"","2@","3#",".>","oO","aA"],"=":["/?","]}",null,"\\|",null,"-_"],">":[",<","3#","4$","pP","eE","oO"],"?":["lL","[{","]}","=+","-_","sS"],"@":["1!",null,null,"3#",",<","'\""],A:[null,"'\"",",<","oO",";:",null],B:["xX","dD","hH","mM",null,null],C:["gG","8*","9(","rR","tT","hH"],D:["iI","fF","gG","hH","bB","xX"],E:["oO",".>","pP","uU","jJ","qQ"],F:["yY","6^","7&","gG","dD","iI"],G:["fF","7&","8*","cC","hH","dD"],H:["dD","gG","cC","tT","mM","bB"],I:["uU","yY","fF","dD","xX","kK"],J:["qQ","eE","uU","kK",null,null],K:["jJ","uU","iI","xX",null,null],L:["rR","0)","[{","/?","sS","nN"],M:["bB","hH","tT","wW",null,null],N:["tT","rR","lL","sS","vV","wW"],O:["aA",",<",".>","eE","qQ",";:"],P:[".>","4$","5%","yY","uU","eE"],Q:[";:","oO","eE","jJ",null,null],R:["cC","9(","0)","lL","nN","tT"],S:["nN","lL","/?","-_","zZ","vV"],T:["hH","cC","rR","nN","wW","mM"],U:["eE","pP","yY","iI","kK","jJ"],V:["wW","nN","sS","zZ",null,null],W:["mM","tT","nN","vV",null,null],X:["kK","iI","dD","bB",null,null],Y:["pP","5%","6^","fF","iI","uU"],Z:["vV","sS","-_",null,null,null],"[":["0)",null,null,"]}","/?","lL"],"\\":["=+",null,null,null,null,null],"]":["[{",null,null,null,"=+","/?"],"^":["5%",null,null,"7&","fF","yY"],_:["sS","/?","=+",null,null,"zZ"],"`":[null,null,null,"1!",null,null],a:[null,"'\"",",<","oO",";:",null],b:["xX","dD","hH","mM",null,null],c:["gG","8*","9(","rR","tT","hH"],d:["iI","fF","gG","hH","bB","xX"],e:["oO",".>","pP","uU","jJ","qQ"],f:["yY","6^","7&","gG","dD","iI"],g:["fF","7&","8*","cC","hH","dD"],h:["dD","gG","cC","tT","mM","bB"],i:["uU","yY","fF","dD","xX","kK"],j:["qQ","eE","uU","kK",null,null],k:["jJ","uU","iI","xX",null,null],l:["rR","0)","[{","/?","sS","nN"],m:["bB","hH","tT","wW",null,null],n:["tT","rR","lL","sS","vV","wW"],o:["aA",",<",".>","eE","qQ",";:"],p:[".>","4$","5%","yY","uU","eE"],q:[";:","oO","eE","jJ",null,null],r:["cC","9(","0)","lL","nN","tT"],s:["nN","lL","/?","-_","zZ","vV"],t:["hH","cC","rR","nN","wW","mM"],u:["eE","pP","yY","iI","kK","jJ"],v:["wW","nN","sS","zZ",null,null],w:["mM","tT","nN","vV",null,null],x:["kK","iI","dD","bB",null,null],y:["pP","5%","6^","fF","iI","uU"],z:["vV","sS","-_",null,null,null],"{":["0)",null,null,"]}","/?","lL"],"|":["=+",null,null,null,null,null],"}":["[{",null,null,null,"=+","/?"],"~":[null,null,null,"1!",null,null]},keypad:{"*":["/",null,null,null,"-","+","9","8"],"+":["9","*","-",null,null,null,null,"6"],"-":["*",null,null,null,null,null,"+","9"],".":["0","2","3",null,null,null,null,null],"/":[null,null,null,null,"*","9","8","7"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6",null,null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","+",null,null,"3","2"],7:[null,null,null,"/","8","5","4",null],8:["7",null,"/","*","9","6","5","4"],9:["8","/","*","-","+",null,"6","5"]},mac_keypad:{"*":["/",null,null,null,null,null,"-","9"],"+":["6","9","-",null,null,null,null,"3"],"-":["9","/","*",null,null,null,"+","6"],".":["0","2","3",null,null,null,null,null],"/":["=",null,null,null,"*","-","9","8"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6","+",null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","-","+",null,"3","2"],7:[null,null,null,"=","8","5","4",null],8:["7",null,"=","/","9","6","5","4"],9:["8","=","/","*","-","+","6","5"],"=":[null,null,null,null,"/","9","8","7"]}},module.exports=adjacency_graphs;
45725
45726 },{}],2:[function(require,module,exports){
45727 var feedback,scoring;scoring=require("./scoring"),feedback={default_feedback:{warning:"",suggestions:["Use a few words, avoid common phrases","No need for symbols, digits, or uppercase letters"]},get_feedback:function(e,s){var a,t,r,n,o,i;if(0===s.length)return this.default_feedback;if(e>2)return{warning:"",suggestions:[]};for(n=s[0],i=s.slice(1),t=0,r=i.length;t<r;t++)o=i[t],o.token.length>n.token.length&&(n=o);return feedback=this.get_match_feedback(n,1===s.length),a="Add another word or two. Uncommon words are better.",null!=feedback?(feedback.suggestions.unshift(a),null==feedback.warning&&(feedback.warning="")):feedback={warning:"",suggestions:[a]},feedback},get_match_feedback:function(e,s){var a,t;switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,s);case"spatial":return a=e.graph.toUpperCase(),t=1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",{warning:t,suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return t=1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',{warning:t,suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or 6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,s){var a,t,r,n,o;return n="passwords"===e.dictionary_name?!s||e.l33t||e.reversed?e.guesses_log10<=4?"This is similar to a commonly used password":void 0:e.rank<=10?"This is a top-10 common password":e.rank<=100?"This is a top-100 common password":"This is a very common password":"english"===e.dictionary_name?s?"A word by itself is easy to guess":void 0:"surnames"===(a=e.dictionary_name)||"male_names"===a||"female_names"===a?s?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",r=[],o=e.token,o.match(scoring.START_UPPER)?r.push("Capitalization doesn't help very much"):o.match(scoring.ALL_UPPER)&&o.toLowerCase()!==o&&r.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length>=4&&r.push("Reversed words aren't much harder to guess"),e.l33t&&r.push("Predictable substitutions like '@' instead of 'a' don't help very much"),t={warning:n,suggestions:r}}},module.exports=feedback;
45728
45729 },{"./scoring":6}],3:[function(require,module,exports){
45730 var frequency_lists;frequency_lists={passwords:"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy".split(","),
45731 english_wikipedia:"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),
45732 female_names:"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),surnames:"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),
45733 us_tv_and_film:"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),
45734 male_names:"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")},module.exports=frequency_lists;
45735
45736 },{}],4:[function(require,module,exports){
45737 var feedback,matching,scoring,time,time_estimates,zxcvbn;matching=require("./matching"),scoring=require("./scoring"),time_estimates=require("./time_estimates"),feedback=require("./feedback"),time=function(){return(new Date).getTime()},zxcvbn=function(e,t){var i,n,c,s,a,r,m,o,u,g,_;for(null==t&&(t=[]),g=time(),u=[],c=0,s=t.length;c<s;c++)i=t[c],"string"!=(m=typeof i)&&"number"!==m&&"boolean"!==m||u.push(i.toString().toLowerCase());matching.set_user_input_dictionary(u),a=matching.omnimatch(e),o=scoring.most_guessable_match_sequence(e,a),o.calc_time=time()-g,n=time_estimates.estimate_attack_times(o.guesses);for(r in n)_=n[r],o[r]=_;return o.feedback=feedback.get_feedback(o.score,o.sequence),o},module.exports=zxcvbn;
45738
45739 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
45740 var DATE_MAX_YEAR,DATE_MIN_YEAR,DATE_SPLITS,GRAPHS,L33T_TABLE,RANKED_DICTIONARIES,REGEXEN,adjacency_graphs,build_ranked_dict,frequency_lists,lst,matching,name,scoring;frequency_lists=require("./frequency_lists"),adjacency_graphs=require("./adjacency_graphs"),scoring=require("./scoring"),build_ranked_dict=function(e){var t,n,r,i,a;for(i={},t=1,r=0,n=e.length;r<n;r++)a=e[r],i[a]=t,t+=1;return i},RANKED_DICTIONARIES={};for(name in frequency_lists)lst=frequency_lists[name],RANKED_DICTIONARIES[name]=build_ranked_dict(lst);GRAPHS={qwerty:adjacency_graphs.qwerty,dvorak:adjacency_graphs.dvorak,keypad:adjacency_graphs.keypad,mac_keypad:adjacency_graphs.mac_keypad},L33T_TABLE={a:["4","@"],b:["8"],c:["(","{","[","<"],e:["3"],g:["6","9"],i:["1","!","|"],l:["1","|","7"],o:["0"],s:["$","5"],t:["+","7"],x:["%"],z:["2"]},REGEXEN={recent_year:/19\d\d|200\d|201\d/g},DATE_MAX_YEAR=2050,DATE_MIN_YEAR=1e3,DATE_SPLITS={4:[[1,2],[2,3]],5:[[1,3],[2,3]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]},matching={empty:function(e){var t;return 0===function(){var n;n=[];for(t in e)n.push(t);return n}().length},extend:function(e,t){return e.push.apply(e,t)},translate:function(e,t){var n;return function(){var r,i,a,s;for(a=e.split(""),s=[],i=0,r=a.length;i<r;i++)n=a[i],s.push(t[n]||n);return s}().join("")},mod:function(e,t){return(e%t+t)%t},sorted:function(e){return e.sort(function(e,t){return e.i-t.i||e.j-t.j})},omnimatch:function(e){var t,n,r,i,a;for(i=[],r=[this.dictionary_match,this.reverse_dictionary_match,this.l33t_match,this.spatial_match,this.repeat_match,this.sequence_match,this.regex_match,this.date_match],a=0,t=r.length;a<t;a++)n=r[a],this.extend(i,n.call(this,e));return this.sorted(i)},dictionary_match:function(e,t){var n,r,i,a,s,o,h,u,c,l,_,f,d,p;null==t&&(t=RANKED_DICTIONARIES),s=[],a=e.length,u=e.toLowerCase();for(n in t)for(l=t[n],r=o=0,_=a;0<=_?o<_:o>_;r=0<=_?++o:--o)for(i=h=f=r,d=a;f<=d?h<d:h>d;i=f<=d?++h:--h)u.slice(r,+i+1||9e9)in l&&(p=u.slice(r,+i+1||9e9),c=l[p],s.push({pattern:"dictionary",i:r,j:i,token:e.slice(r,+i+1||9e9),matched_word:p,rank:c,dictionary_name:n,reversed:!1,l33t:!1}));return this.sorted(s)},reverse_dictionary_match:function(e,t){var n,r,i,a,s,o;for(null==t&&(t=RANKED_DICTIONARIES),o=e.split("").reverse().join(""),i=this.dictionary_match(o,t),a=0,n=i.length;a<n;a++)r=i[a],r.token=r.token.split("").reverse().join(""),r.reversed=!0,s=[e.length-1-r.j,e.length-1-r.i],r.i=s[0],r.j=s[1];return this.sorted(i)},set_user_input_dictionary:function(e){return RANKED_DICTIONARIES.user_inputs=build_ranked_dict(e.slice())},relevant_l33t_subtable:function(e,t){var n,r,i,a,s,o,h,u,c,l;for(s={},o=e.split(""),a=0,r=o.length;a<r;a++)n=o[a],s[n]=!0;l={};for(i in t)c=t[i],h=function(){var e,t,n;for(n=[],t=0,e=c.length;t<e;t++)u=c[t],u in s&&n.push(u);return n}(),h.length>0&&(l[i]=h);return l},enumerate_l33t_subs:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;a=function(){var t;t=[];for(i in e)t.push(i);return t}(),p=[[]],n=function(e){var t,n,r,a,s,o,h,u;for(n=[],s={},o=0,a=e.length;o<a;o++)h=e[o],t=function(){var e,t,n;for(n=[],u=t=0,e=h.length;t<e;u=++t)i=h[u],n.push([i,u]);return n}(),t.sort(),r=function(){var e,n,r;for(r=[],u=n=0,e=t.length;n<e;u=++n)i=t[u],r.push(i+","+u);return r}().join("-"),r in s||(s[r]=!0,n.push(h));return n},r=function(t){var i,a,s,o,h,u,c,l,_,f,d,g,m,A,E,y;if(t.length){for(a=t[0],m=t.slice(1),c=[],d=e[a],l=0,h=d.length;l<h;l++)for(o=d[l],_=0,u=p.length;_<u;_++){for(A=p[_],i=-1,s=f=0,g=A.length;0<=g?f<g:f>g;s=0<=g?++f:--f)if(A[s][0]===o){i=s;break}i===-1?(y=A.concat([[o,a]]),c.push(y)):(E=A.slice(0),E.splice(i,1),E.push([o,a]),c.push(A),c.push(E))}return p=n(c),r(m)}},r(a),d=[];for(u=0,o=p.length;u<o;u++){for(_=p[u],f={},c=0,h=_.length;c<h;c++)l=_[c],s=l[0],t=l[1],f[s]=t;d.push(f)}return d},l33t_match:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A;for(null==t&&(t=RANKED_DICTIONARIES),null==n&&(n=L33T_TABLE),u=[],_=this.enumerate_l33t_subs(this.relevant_l33t_subtable(e,n)),c=0,a=_.length;c<a&&(d=_[c],!this.empty(d));c++)for(g=this.translate(e,d),f=this.dictionary_match(g,t),l=0,s=f.length;l<s;l++)if(o=f[l],m=e.slice(o.i,+o.j+1||9e9),m.toLowerCase()!==o.matched_word){h={};for(p in d)r=d[p],m.indexOf(p)!==-1&&(h[p]=r);o.l33t=!0,o.token=m,o.sub=h,o.sub_display=function(){var e;e=[];for(i in h)A=h[i],e.push(i+" -> "+A);return e}().join(", "),u.push(o)}return this.sorted(u.filter(function(e){return e.token.length>1}))},spatial_match:function(e,t){var n,r,i;null==t&&(t=GRAPHS),i=[];for(r in t)n=t[r],this.extend(i,this.spatial_match_helper(e,n,r));return this.sorted(i)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/,spatial_match_helper:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m;for(f=[],u=0;u<e.length-1;)for(c=u+1,l=null,m=0,g="qwerty"!==n&&"dvorak"!==n||!this.SHIFTED_RX.exec(e.charAt(u))?0:1;;){if(p=e.charAt(c-1),o=!1,h=-1,s=-1,i=t[p]||[],c<e.length)for(a=e.charAt(c),d=0,_=i.length;d<_;d++)if(r=i[d],s+=1,r&&r.indexOf(a)!==-1){o=!0,h=s,1===r.indexOf(a)&&(g+=1),l!==h&&(m+=1,l=h);break}if(!o){c-u>2&&f.push({pattern:"spatial",i:u,j:c-1,token:e.slice(u,c),graph:n,turns:m,shifted_count:g}),u=c;break}c+=1}return f},repeat_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;for(d=[],a=/(.+)\1+/g,c=/(.+?)\1+/g,l=/^(.+?)\1+$/,u=0;u<e.length&&(a.lastIndex=c.lastIndex=u,s=a.exec(e),_=c.exec(e),null!=s);)s[0].length>_[0].length?(f=s,i=l.exec(f[0])[1]):(f=_,i=f[1]),p=[f.index,f.index+f[0].length-1],o=p[0],h=p[1],t=scoring.most_guessable_match_sequence(i,this.omnimatch(i)),r=t.sequence,n=t.guesses,d.push({pattern:"repeat",i:o,j:h,token:f[0],base_token:i,base_guesses:n,base_matches:r,repeat_count:f[0].length/i.length}),u=h+1;return d},MAX_DELTA:5,sequence_match:function(e){var t,n,r,i,a,s,o,h,u;if(1===e.length)return[];for(u=function(t){return function(n,r,i){var a,s,o,u;if((r-n>1||1===Math.abs(i))&&0<(a=Math.abs(i))&&a<=t.MAX_DELTA)return u=e.slice(n,+r+1||9e9),/^[a-z]+$/.test(u)?(s="lower",o=26):/^[A-Z]+$/.test(u)?(s="upper",o=26):/^\d+$/.test(u)?(s="digits",o=10):(s="unicode",o=26),h.push({pattern:"sequence",i:n,j:r,token:e.slice(n,+r+1||9e9),sequence_name:s,sequence_space:o,ascending:i>0})}}(this),h=[],n=0,a=null,i=s=1,o=e.length;1<=o?s<o:s>o;i=1<=o?++s:--s)t=e.charCodeAt(i)-e.charCodeAt(i-1),null==a&&(a=t),t!==a&&(r=i-1,u(n,r,a),n=r,a=t);return u(n,e.length-1,a),h},regex_match:function(e,t){var n,r,i,a;null==t&&(t=REGEXEN),n=[];for(name in t)for(r=t[name],r.lastIndex=0;i=r.exec(e);)a=i[0],n.push({pattern:"regex",token:a,i:i.index,j:i.index+i[0].length-1,regex_name:name,regex_match:i});return this.sorted(n)},date_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A,E,y,v,I,R,T,D,k,x,j,b,N,S,q,L,M;for(_=[],f=/^\d{4,8}$/,d=/^(\d{1,4})([\s\/\\_.-])(\d{1,2})\2(\d{1,4})$/,s=m=0,v=e.length-4;0<=v?m<=v:m>=v;s=0<=v?++m:--m)for(o=A=I=s+3,R=s+7;(I<=R?A<=R:A>=R)&&!(o>=e.length);o=I<=R?++A:--A)if(M=e.slice(s,+o+1||9e9),f.exec(M)){for(r=[],T=DATE_SPLITS[M.length],E=0,c=T.length;E<c;E++)D=T[E],h=D[0],u=D[1],a=this.map_ints_to_dmy([parseInt(M.slice(0,h)),parseInt(M.slice(h,u)),parseInt(M.slice(u))]),null!=a&&r.push(a);if(r.length>0){for(t=r[0],p=function(e){return Math.abs(e.year-scoring.REFERENCE_YEAR)},g=p(r[0]),k=r.slice(1),y=0,l=k.length;y<l;y++)n=k[y],i=p(n),i<g&&(x=[n,i],t=x[0],g=x[1]);_.push({pattern:"date",token:M,i:s,j:o,separator:"",year:t.year,month:t.month,day:t.day})}}for(s=q=0,j=e.length-6;0<=j?q<=j:q>=j;s=0<=j?++q:--q)for(o=L=b=s+5,N=s+9;(b<=N?L<=N:L>=N)&&!(o>=e.length);o=b<=N?++L:--L)M=e.slice(s,+o+1||9e9),S=d.exec(M),null!=S&&(a=this.map_ints_to_dmy([parseInt(S[1]),parseInt(S[3]),parseInt(S[4])]),null!=a&&_.push({pattern:"date",token:M,i:s,j:o,separator:S[2],year:a.year,month:a.month,day:a.day}));return this.sorted(_.filter(function(e){var t,n,r,i;for(t=!1,i=0,n=_.length;i<n;i++)if(r=_[i],e!==r&&r.i<=e.i&&r.j>=e.j){t=!0;break}return!t}))},map_ints_to_dmy:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g;if(!(e[1]>31||e[1]<=0)){for(o=0,h=0,p=0,s=0,r=e.length;s<r;s++){if(n=e[s],99<n&&n<DATE_MIN_YEAR||n>DATE_MAX_YEAR)return;n>31&&(h+=1),n>12&&(o+=1),n<=0&&(p+=1)}if(!(h>=2||3===o||p>=2)){for(c=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]],u=0,i=c.length;u<i;u++)if(_=c[u],g=_[0],d=_[1],DATE_MIN_YEAR<=g&&g<=DATE_MAX_YEAR)return t=this.map_ints_to_dm(d),null!=t?{year:g,month:t.month,day:t.day}:void 0;for(l=0,a=c.length;l<a;l++)if(f=c[l],g=f[0],d=f[1],t=this.map_ints_to_dm(d),null!=t)return g=this.two_to_four_digit_year(g),{year:g,month:t.month,day:t.day}}}},map_ints_to_dm:function(e){var t,n,r,i,a,s;for(a=[e,e.slice().reverse()],i=0,n=a.length;i<n;i++)if(s=a[i],t=s[0],r=s[1],1<=t&&t<=31&&1<=r&&r<=12)return{day:t,month:r}},two_to_four_digit_year:function(e){return e>99?e:e>50?e+1900:e+2e3}},module.exports=matching;
45741
45742 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
45743 var BRUTEFORCE_CARDINALITY,MIN_GUESSES_BEFORE_GROWING_SEQUENCE,MIN_SUBMATCH_GUESSES_MULTI_CHAR,MIN_SUBMATCH_GUESSES_SINGLE_CHAR,adjacency_graphs,calc_average_degree,k,scoring,v;adjacency_graphs=require("./adjacency_graphs"),calc_average_degree=function(e){var t,r,n,s,a,u;t=0;for(n in e)a=e[n],t+=function(){var e,t,r;for(r=[],t=0,e=a.length;t<e;t++)s=a[t],s&&r.push(s);return r}().length;return t/=function(){var t;t=[];for(r in e)u=e[r],t.push(r);return t}().length},BRUTEFORCE_CARDINALITY=10,MIN_GUESSES_BEFORE_GROWING_SEQUENCE=1e4,MIN_SUBMATCH_GUESSES_SINGLE_CHAR=10,MIN_SUBMATCH_GUESSES_MULTI_CHAR=50,scoring={nCk:function(e,t){var r,n,s,a;if(t>e)return 0;if(0===t)return 1;for(s=1,r=n=1,a=t;1<=a?n<=a:n>=a;r=1<=a?++n:--n)s*=e,s/=r,e-=1;return s},log10:function(e){return Math.log(e)/Math.log(10)},log2:function(e){return Math.log(e)/Math.log(2)},factorial:function(e){var t,r,n,s;if(e<2)return 1;for(t=1,r=n=2,s=e;2<=s?n<=s:n>=s;r=2<=s?++n:--n)t*=r;return t},most_guessable_match_sequence:function(e,t,r){var n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S,R,v,I,M,N,C,U,T;for(null==r&&(r=!1),l=e.length,f=function(){var e,t,r;for(r=[],n=e=0,t=l;0<=t?e<t:e>t;n=0<=t?++e:--e)r.push([]);return r}(),p=0,_=t.length;p<_;p++)c=t[p],f[c.j].push(c);for(v=0,o=f.length;v<o;v++)E=f[v],E.sort(function(e,t){return e.i-t.i});for(A={m:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),pi:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),g:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}()},U=function(t){return function(n,s){var a,u,i,_,o,h;_=n.j,o=t.estimate_guesses(n,e),s>1&&(o*=A.pi[n.i-1][s-1]),i=t.factorial(s)*o,r||(i+=Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE,s-1)),h=A.g[_];for(u in h)if(a=h[u],!(u>s)&&a<=i)return;return A.g[_][s]=i,A.m[_][s]=n,A.pi[_][s]=o}}(this),s=function(e){return function(e){var t,r,n,s,a,u;for(c=g(0,e),U(c,1),a=[],t=u=1,s=e;1<=s?u<=s:u>=s;t=1<=s?++u:--u)c=g(t,e),a.push(function(){var e,s;e=A.m[t-1],s=[];for(r in e)n=e[r],r=parseInt(r),"bruteforce"!==n.pattern&&s.push(U(c,r+1));return s}());return a}}(this),g=function(t){return function(t,r){return{pattern:"bruteforce",token:e.slice(t,+r+1||9e9),i:t,j:r}}}(this),C=function(e){return function(e){var t,r,n,s,a,u,i;u=[],s=e-1,a=void 0,n=1/0,i=A.g[s];for(r in i)t=i[r],t<n&&(a=r,n=t);for(;s>=0;)c=A.m[s][a],u.unshift(c),s=c.i-1,a--;return u}}(this),u=N=0,I=l;0<=I?N<I:N>I;u=0<=I?++N:--N){for(M=f[u],T=0,h=M.length;T<h;T++)if(c=M[T],c.i>0)for(i in A.m[c.i-1])i=parseInt(i),U(c,i+1);else U(c,1);s(u)}return R=C(l),S=R.length,a=0===e.length?1:A.g[l-1][S],{password:e,guesses:a,guesses_log10:this.log10(a),sequence:R}},estimate_guesses:function(e,t){var r,n,s;return null!=e.guesses?e.guesses:(s=1,e.token.length<t.length&&(s=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR:MIN_SUBMATCH_GUESSES_MULTI_CHAR),r={bruteforce:this.bruteforce_guesses,dictionary:this.dictionary_guesses,spatial:this.spatial_guesses,repeat:this.repeat_guesses,sequence:this.sequence_guesses,regex:this.regex_guesses,date:this.date_guesses},n=r[e.pattern].call(this,e),e.guesses=Math.max(n,s),e.guesses_log10=this.log10(e.guesses),e.guesses)},bruteforce_guesses:function(e){var t,r;return t=Math.pow(BRUTEFORCE_CARDINALITY,e.token.length),r=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR+1:MIN_SUBMATCH_GUESSES_MULTI_CHAR+1,Math.max(t,r)},repeat_guesses:function(e){return e.base_guesses*e.repeat_count},sequence_guesses:function(e){var t,r;return r=e.token.charAt(0),t="a"===r||"A"===r||"z"===r||"Z"===r||"0"===r||"1"===r||"9"===r?4:r.match(/\d/)?10:26,e.ascending||(t*=2),t*e.token.length},MIN_YEAR_SPACE:20,REFERENCE_YEAR:2016,regex_guesses:function(e){var t,r;if(t={alpha_lower:26,alpha_upper:26,alpha:52,alphanumeric:62,digits:10,symbols:33},e.regex_name in t)return Math.pow(t[e.regex_name],e.token.length);switch(e.regex_name){case"recent_year":return r=Math.abs(parseInt(e.regex_match[0])-this.REFERENCE_YEAR),r=Math.max(r,this.MIN_YEAR_SPACE)}},date_guesses:function(e){var t,r;return r=Math.max(Math.abs(e.year-this.REFERENCE_YEAR),this.MIN_YEAR_SPACE),t=365*r,e.separator&&(t*=4),t},KEYBOARD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.qwerty),KEYPAD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.keypad),KEYBOARD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.qwerty,t=[];for(k in e)v=e[k],t.push(k);return t}().length,KEYPAD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.keypad,t=[];for(k in e)v=e[k],t.push(k);return t}().length,spatial_guesses:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S;for("qwerty"===(E=e.graph)||"dvorak"===E?(l=this.KEYBOARD_STARTING_POSITIONS,s=this.KEYBOARD_AVERAGE_DEGREE):(l=this.KEYPAD_STARTING_POSITIONS,s=this.KEYPAD_AVERAGE_DEGREE),a=0,t=e.token.length,A=e.turns,u=_=2,c=t;2<=c?_<=c:_>=c;u=2<=c?++_:--_)for(o=Math.min(A,u-1),i=h=1,g=o;1<=g?h<=g:h>=g;i=1<=g?++h:--h)a+=this.nCk(u-1,i-1)*l*Math.pow(s,i);if(e.shifted_count)if(r=e.shifted_count,n=e.token.length-e.shifted_count,0===r||0===n)a*=2;else{for(p=0,u=S=1,f=Math.min(r,n);1<=f?S<=f:S>=f;u=1<=f?++S:--S)p+=this.nCk(r+n,u);a*=p}return a},dictionary_guesses:function(e){var t;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),t=e.reversed&&2||1,e.base_guesses*e.uppercase_variations*e.l33t_variations*t},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c;if(c=e.token,c.match(this.ALL_LOWER)||c.toLowerCase()===c)return 1;for(_=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER],u=0,a=_.length;u<a;u++)if(h=_[u],c.match(h))return 2;for(r=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[A-Z]/)&&s.push(n);return s}().length,t=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[a-z]/)&&s.push(n);return s}().length,E=0,s=i=1,o=Math.min(r,t);1<=o?i<=o:i>=o;s=1<=o?++i:--i)E+=this.nCk(r+t,s);return E},l33t_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g;if(!e.l33t)return 1;g=1,o=e.sub;for(E in o)if(c=o[E],s=e.token.toLowerCase().split(""),t=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===E&&r.push(n);return r}().length,r=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===c&&r.push(n);return r}().length,0===t||0===r)g*=2;else{for(i=Math.min(r,t),_=0,a=u=1,h=i;1<=h?u<=h:u>=h;a=1<=h?++u:--u)_+=this.nCk(r+t,a);g*=_}return g}},module.exports=scoring;
45744
45745 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
45746 var time_estimates;time_estimates={estimate_attack_times:function(e){var t,n,s,o;n={online_throttling_100_per_hour:e/(100/3600),online_no_throttling_10_per_second:e/10,offline_slow_hashing_1e4_per_second:e/1e4,offline_fast_hashing_1e10_per_second:e/1e10},t={};for(s in n)o=n[s],t[s]=this.display_time(o);return{crack_times_seconds:n,crack_times_display:t,score:this.guesses_to_score(e)}},guesses_to_score:function(e){var t;return t=5,e<1e3+t?0:e<1e6+t?1:e<1e8+t?2:e<1e10+t?3:4},display_time:function(e){var t,n,s,o,_,r,i,a,u,c;return i=60,r=60*i,s=24*r,a=31*s,c=12*a,n=100*c,u=e<1?[null,"less than a second"]:e<i?(t=Math.round(e),[t,t+" second"]):e<r?(t=Math.round(e/i),[t,t+" minute"]):e<s?(t=Math.round(e/r),[t,t+" hour"]):e<a?(t=Math.round(e/s),[t,t+" day"]):e<c?(t=Math.round(e/a),[t,t+" month"]):e<n?(t=Math.round(e/c),[t,t+" year"]):[null,"centuries"],o=u[0],_=u[1],null!=o&&1!==o&&(_+="s"),_}},module.exports=time_estimates;
45747
45748 },{}]},{},[4])(4)
45749 });
45750 //# sourceMappingURL=zxcvbn.js.map
45751 </script>
45752 <script>/*
45753 * Detects entropy from a string.
45754 *
45755 * Formats include:
45756 * binary [0-1]
45757 * base 6 [0-5]
45758 * dice 6 [1-6]
45759 * decimal [0-9]
45760 * hexadecimal [0-9A-F]
45761 * card [A2-9TJQK][CDHS]
45762 *
45763 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
45764 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
45765 * entropy.
45766 */
45767
45768 window.Entropy = new (function() {
45769
45770 var TWO = new BigInteger(2);
45771
45772 // matchers returns an array of the matched events for each type of entropy.
45773 // eg
45774 // matchers.binary("010") returns ["0", "1", "0"]
45775 // matchers.binary("a10") returns ["1", "0"]
45776 // matchers.hex("a10") returns ["a", "1", "0"]
45777 var matchers = {
45778 binary: function(str) {
45779 return str.match(/[0-1]/gi) || [];
45780 },
45781 base6: function(str) {
45782 return str.match(/[0-5]/gi) || [];
45783 },
45784 dice: function(str) {
45785 return str.match(/[1-6]/gi) || []; // ie dice numbers
45786 },
45787 base10: function(str) {
45788 return str.match(/[0-9]/gi) || [];
45789 },
45790 hex: function(str) {
45791 return str.match(/[0-9A-F]/gi) || [];
45792 },
45793 card: function(str) {
45794 // Format is NumberSuit, eg
45795 // AH ace of hearts
45796 // 8C eight of clubs
45797 // TD ten of diamonds
45798 // JS jack of spades
45799 // QH queen of hearts
45800 // KC king of clubs
45801 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
45802 }
45803 }
45804
45805 // Convert array of cards from ["ac", "4d", "ks"]
45806 // to numbers between 0 and 51 [0, 16, 51]
45807 function convertCardsToInts(cards) {
45808 var ints = [];
45809 var values = "a23456789tjqk";
45810 var suits = "cdhs";
45811 for (var i=0; i<cards.length; i++) {
45812 var card = cards[i].toLowerCase();
45813 var value = card[0];
45814 var suit = card[1];
45815 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
45816 ints.push(asInt);
45817 }
45818 return ints;
45819 }
45820
45821 this.fromString = function(rawEntropyStr) {
45822 // Find type of entropy being used (binary, hex, dice etc)
45823 var base = getBase(rawEntropyStr);
45824 // Convert dice to base6 entropy (ie 1-6 to 0-5)
45825 // This is done by changing all 6s to 0s
45826 if (base.str == "dice") {
45827 var newParts = [];
45828 var newInts = [];
45829 for (var i=0; i<base.parts.length; i++) {
45830 var c = base.parts[i];
45831 if ("12345".indexOf(c) > -1) {
45832 newParts[i] = base.parts[i];
45833 newInts[i] = base.ints[i];
45834 }
45835 else {
45836 newParts[i] = "0";
45837 newInts[i] = 0;
45838 }
45839 }
45840 base.str = "base 6 (dice)";
45841 base.ints = newInts;
45842 base.parts = newParts;
45843 base.matcher = matchers.base6;
45844 }
45845 // Detect empty entropy
45846 if (base.parts.length == 0) {
45847 return {
45848 binaryStr: "",
45849 cleanStr: "",
45850 cleanHtml: "",
45851 base: base,
45852 };
45853 }
45854 // Convert base.ints to BigInteger.
45855 // Due to using unusual bases, eg cards of base52, this is not as simple as
45856 // using BigInteger.parse()
45857 var entropyInt = BigInteger.ZERO;
45858 for (var i=base.ints.length-1; i>=0; i--) {
45859 var thisInt = BigInteger.parse(base.ints[i]);
45860 var power = (base.ints.length - 1) - i;
45861 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
45862 entropyInt = entropyInt.add(additionalEntropy);
45863 }
45864 // Convert entropy to binary
45865 var entropyBin = entropyInt.toString(2);
45866 // If the first integer is small, it must be padded with zeros.
45867 // Otherwise the chance of the first bit being 1 is 100%, which is
45868 // obviously incorrect.
45869 // This is not perfect for non-2^n bases.
45870 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
45871 while (entropyBin.length < expectedBits) {
45872 entropyBin = "0" + entropyBin;
45873 }
45874 // Calculate the number of bits per event
45875 var bitsPerEvent = Math.log2(base.asInt);
45876 // Cards binary must be handled differently, since they're not replaced
45877 if (base.asInt == 52) {
45878 var cardEntropy = processCardEntropy(base.parts);
45879 entropyBin = cardEntropy.binaryStr;
45880 bitsPerEvent = cardEntropy.bitsPerEvent;
45881 }
45882 // Supply a 'filtered' entropy string for display purposes
45883 var entropyClean = base.parts.join("");
45884 var entropyHtml = base.parts.join("");
45885 if (base.asInt == 52) {
45886 entropyClean = base.parts.join(" ").toUpperCase();
45887 entropyClean = entropyClean.replace(/C/g, "\u2663");
45888 entropyClean = entropyClean.replace(/D/g, "\u2666");
45889 entropyClean = entropyClean.replace(/H/g, "\u2665");
45890 entropyClean = entropyClean.replace(/S/g, "\u2660");
45891 entropyHtml = base.parts.join(" ").toUpperCase();
45892 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
45893 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
45894 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
45895 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
45896 }
45897 // Return the result
45898 var e = {
45899 binaryStr: entropyBin,
45900 cleanStr: entropyClean,
45901 cleanHtml: entropyHtml,
45902 bitsPerEvent: bitsPerEvent,
45903 base: base,
45904 }
45905 return e;
45906 }
45907
45908 function getSortedDeck() {
45909 var s = [];
45910 var suits = "CDHS";
45911 var values = "A23456789TJQK";
45912 for (var i=0; i<suits.length; i++) {
45913 for (var j=0; j<values.length; j++) {
45914 s.push(values[j]+suits[i]);
45915 }
45916 }
45917 return s;
45918 }
45919
45920 function getBase(str) {
45921 // Need to get the lowest base for the supplied entropy.
45922 // This prevents interpreting, say, dice rolls as hexadecimal.
45923 var binaryMatches = matchers.binary(str);
45924 var hexMatches = matchers.hex(str);
45925 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
45926 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
45927 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
45928 return {
45929 ints: ints,
45930 parts: binaryMatches,
45931 matcher: matchers.binary,
45932 asInt: 2,
45933 str: "binary",
45934 }
45935 }
45936 var cardMatches = matchers.card(str);
45937 if (cardMatches.length >= hexMatches.length / 2) {
45938 var ints = convertCardsToInts(cardMatches);
45939 return {
45940 ints: ints,
45941 parts: cardMatches,
45942 matcher: matchers.card,
45943 asInt: 52,
45944 str: "card",
45945 }
45946 }
45947 var diceMatches = matchers.dice(str);
45948 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
45949 var ints = diceMatches.map(function(i) { return parseInt(i) });
45950 return {
45951 ints: ints,
45952 parts: diceMatches,
45953 matcher: matchers.dice,
45954 asInt: 6,
45955 str: "dice",
45956 }
45957 }
45958 var base6Matches = matchers.base6(str);
45959 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
45960 var ints = base6Matches.map(function(i) { return parseInt(i) });
45961 return {
45962 ints: ints,
45963 parts: base6Matches,
45964 matcher: matchers.base6,
45965 asInt: 6,
45966 str: "base 6",
45967 }
45968 }
45969 var base10Matches = matchers.base10(str);
45970 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
45971 var ints = base10Matches.map(function(i) { return parseInt(i) });
45972 return {
45973 ints: ints,
45974 parts: base10Matches,
45975 matcher: matchers.base10,
45976 asInt: 10,
45977 str: "base 10",
45978 }
45979 }
45980 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
45981 return {
45982 ints: ints,
45983 parts: hexMatches,
45984 matcher: matchers.hex,
45985 asInt: 16,
45986 str: "hexadecimal",
45987 }
45988 }
45989
45990 // Assume cards are NOT replaced.
45991 // Additional entropy decreases as more cards are used. This means
45992 // total possible entropy is measured using n!, not base^n.
45993 // eg the second last card can be only one of two, not one of fifty two
45994 // so the added entropy for that card is only one bit at most
45995 function processCardEntropy(cards) {
45996 // Track how many instances of each card have been used, and thus
45997 // how many decks are in use.
45998 var cardCounts = {};
45999 var numberOfDecks = 0;
46000 // Work out number of decks by max(duplicates)
46001 for (var i=0; i<cards.length; i++) {
46002 // Get the card that was drawn
46003 var cardLower = cards[i];
46004 var card = cardLower.toUpperCase();
46005 // Initialize the count for this card if needed
46006 if (!(card in cardCounts)) {
46007 cardCounts[card] = 0;
46008 }
46009 cardCounts[card] += 1;
46010 // See if this is max(duplicates)
46011 if (cardCounts[card] > numberOfDecks) {
46012 numberOfDecks = cardCounts[card];
46013 }
46014 }
46015 // Work out the total number of bits for this many decks
46016 // See http://crypto.stackexchange.com/q/41886
46017 var gainedBits = 0;
46018 // Equivalent of Math.log2(factorial(52*numberOfDecks))
46019 // which becomes infinity for numberOfDecks > 4
46020 for (var i=1; i<=52*numberOfDecks; i++) {
46021 gainedBits = gainedBits + Math.log2(i);
46022 }
46023 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
46024 var maxBits = gainedBits - lostBits;
46025 // Convert the drawn cards to a binary representation.
46026 // The exact technique for doing this is unclear.
46027 // See
46028 // http://crypto.stackexchange.com/a/41896
46029 // "I even doubt that this is well defined (only the average entropy
46030 // is, I believe)."
46031 // See
46032 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
46033 // "The binary representation can be the first log(permutations,2) bits
46034 // of the sha-2 hash of the normalized deck string."
46035 //
46036 // In this specific implementation, the first N bits of the hash of the
46037 // normalized cards string is being used. Uppercase, no spaces; eg
46038 // sha256("AH8DQSTC2H")
46039 var totalCards = numberOfDecks * 52;
46040 var percentUsed = cards.length / totalCards;
46041 // Calculate the average number of bits of entropy for the number of
46042 // cards drawn.
46043 var numberOfBits = Math.floor(maxBits * percentUsed);
46044 // Create a normalized string of the selected cards
46045 var normalizedCards = cards.join("").toUpperCase();
46046 // Convert to binary using the SHA256 hash of the normalized cards.
46047 // If the number of bits is more than 256, multiple hashes
46048 // are used until the required number of bits is reached.
46049 var entropyBin = "";
46050 var iterations = 0;
46051 while (entropyBin.length < numberOfBits) {
46052 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
46053 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
46054 for (var i=0; i<hashHex.length; i++) {
46055 var decimal = parseInt(hashHex[i], 16);
46056 var binary = decimal.toString(2);
46057 while (binary.length < 4) {
46058 binary = "0" + binary;
46059 }
46060 entropyBin = entropyBin + binary;
46061 }
46062 iterations = iterations + 1;
46063 }
46064 // Truncate to the appropriate number of bits.
46065 entropyBin = entropyBin.substring(0, numberOfBits);
46066 // Get the number of bits per event
46067 bitsPerEvent = maxBits / totalCards;
46068 return {
46069 binaryStr: entropyBin,
46070 bitsPerEvent: bitsPerEvent,
46071 }
46072 }
46073
46074 // Polyfill for Math.log2
46075 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
46076 Math.log2 = Math.log2 || function(x) {
46077 // The polyfill isn't good enough because of the poor accuracy of
46078 // Math.LOG2E
46079 // log2(8) gave 2.9999999999999996 which when floored causes issues.
46080 // So instead use the BigInteger library to get it right.
46081 return BigInteger.log(x) / BigInteger.log(2);
46082 };
46083
46084 // Depends on BigInteger
46085 function factorial(n) {
46086 if (n == 0) {
46087 return 1;
46088 }
46089 f = BigInteger.ONE;
46090 for (var i=1; i<=n; i++) {
46091 f = f.multiply(new BigInteger(i));
46092 }
46093 return f;
46094 }
46095
46096 })();
46097 </script>
46098 <script>(function() {
46099
46100 // mnemonics is populated as required by getLanguage
46101 var mnemonics = { "english": new Mnemonic("english") };
46102 var mnemonic = mnemonics["english"];
46103 var seed = null;
46104 var bip32RootKey = null;
46105 var bip32ExtendedKey = null;
46106 var network = bitcoinjs.bitcoin.networks.bitcoin;
46107 var addressRowTemplate = $("#address-row-template");
46108
46109 var showIndex = true;
46110 var showAddress = true;
46111 var showPubKey = true;
46112 var showPrivKey = true;
46113 var showQr = false;
46114
46115 var entropyChangeTimeoutEvent = null;
46116 var phraseChangeTimeoutEvent = null;
46117 var rootKeyChangedTimeoutEvent = null;
46118
46119 var generationProcesses = [];
46120
46121 var DOM = {};
46122 DOM.network = $(".network");
46123 DOM.bip32Client = $("#bip32-client");
46124 DOM.phraseNetwork = $("#network-phrase");
46125 DOM.useEntropy = $(".use-entropy");
46126 DOM.entropyContainer = $(".entropy-container");
46127 DOM.entropy = $(".entropy");
46128 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
46129 DOM.entropyType = DOM.entropyContainer.find(".type");
46130 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
46131 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
46132 DOM.entropyBits = DOM.entropyContainer.find(".bits");
46133 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
46134 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
46135 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
46136 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
46137 DOM.phrase = $(".phrase");
46138 DOM.passphrase = $(".passphrase");
46139 DOM.generateContainer = $(".generate-container");
46140 DOM.generate = $(".generate");
46141 DOM.seed = $(".seed");
46142 DOM.rootKey = $(".root-key");
46143 DOM.extendedPrivKey = $(".extended-priv-key");
46144 DOM.extendedPubKey = $(".extended-pub-key");
46145 DOM.bip32tab = $("#bip32-tab");
46146 DOM.bip44tab = $("#bip44-tab");
46147 DOM.bip49tab = $("#bip49-tab");
46148 DOM.bip32panel = $("#bip32");
46149 DOM.bip44panel = $("#bip44");
46150 DOM.bip49panel = $("#bip49");
46151 DOM.bip32path = $("#bip32-path");
46152 DOM.bip44path = $("#bip44-path");
46153 DOM.bip44purpose = $("#bip44 .purpose");
46154 DOM.bip44coin = $("#bip44 .coin");
46155 DOM.bip44account = $("#bip44 .account");
46156 DOM.bip44accountXprv = $("#bip44 .account-xprv");
46157 DOM.bip44accountXpub = $("#bip44 .account-xpub");
46158 DOM.bip44change = $("#bip44 .change");
46159 DOM.bip49unavailable = $("#bip49 .unavailable");
46160 DOM.bip49available = $("#bip49 .available");
46161 DOM.bip49path = $("#bip49-path");
46162 DOM.bip49purpose = $("#bip49 .purpose");
46163 DOM.bip49coin = $("#bip49 .coin");
46164 DOM.bip49account = $("#bip49 .account");
46165 DOM.bip49accountXprv = $("#bip49 .account-xprv");
46166 DOM.bip49accountXpub = $("#bip49 .account-xpub");
46167 DOM.bip49change = $("#bip49 .change");
46168 DOM.generatedStrength = $(".generate-container .strength");
46169 DOM.hardenedAddresses = $(".hardened-addresses");
46170 DOM.addresses = $(".addresses");
46171 DOM.rowsToAdd = $(".rows-to-add");
46172 DOM.more = $(".more");
46173 DOM.feedback = $(".feedback");
46174 DOM.tab = $(".derivation-type a");
46175 DOM.indexToggle = $(".index-toggle");
46176 DOM.addressToggle = $(".address-toggle");
46177 DOM.publicKeyToggle = $(".public-key-toggle");
46178 DOM.privateKeyToggle = $(".private-key-toggle");
46179 DOM.languages = $(".languages a");
46180 DOM.qrContainer = $(".qr-container");
46181 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
46182 DOM.qrImage = DOM.qrContainer.find(".qr-image");
46183 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
46184 DOM.showQrEls = $("[data-show-qr]");
46185
46186 function init() {
46187 // Events
46188 DOM.network.on("change", networkChanged);
46189 DOM.bip32Client.on("change", bip32ClientChanged);
46190 DOM.useEntropy.on("change", setEntropyVisibility);
46191 DOM.entropy.on("input", delayedEntropyChanged);
46192 DOM.entropyMnemonicLength.on("change", entropyChanged);
46193 DOM.phrase.on("input", delayedPhraseChanged);
46194 DOM.passphrase.on("input", delayedPhraseChanged);
46195 DOM.generate.on("click", generateClicked);
46196 DOM.more.on("click", showMore);
46197 DOM.rootKey.on("input", delayedRootKeyChanged);
46198 DOM.bip32path.on("input", calcForDerivationPath);
46199 DOM.bip44account.on("input", calcForDerivationPath);
46200 DOM.bip44change.on("input", calcForDerivationPath);
46201 DOM.bip49account.on("input", calcForDerivationPath);
46202 DOM.bip49change.on("input", calcForDerivationPath);
46203 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
46204 DOM.hardenedAddresses.on("change", calcForDerivationPath);
46205 DOM.indexToggle.on("click", toggleIndexes);
46206 DOM.addressToggle.on("click", toggleAddresses);
46207 DOM.publicKeyToggle.on("click", togglePublicKeys);
46208 DOM.privateKeyToggle.on("click", togglePrivateKeys);
46209 DOM.languages.on("click", languageChanged);
46210 setQrEvents(DOM.showQrEls);
46211 disableForms();
46212 hidePending();
46213 hideValidationError();
46214 populateNetworkSelect();
46215 populateClientSelect();
46216 }
46217
46218 // Event handlers
46219
46220 function networkChanged(e) {
46221 clearDerivedKeys();
46222 clearAddressesList();
46223 var networkIndex = e.target.value;
46224 var network = networks[networkIndex];
46225 network.onSelect();
46226 if (network.bip49available) {
46227 showBip49();
46228 }
46229 else {
46230 hideBip49();
46231 }
46232 if (seed != null) {
46233 phraseChanged();
46234 }
46235 else {
46236 rootKeyChanged();
46237 }
46238 }
46239
46240 function bip32ClientChanged(e) {
46241 var clientIndex = DOM.bip32Client.val();
46242 if (clientIndex == "custom") {
46243 DOM.bip32path.prop("readonly", false);
46244 }
46245 else {
46246 DOM.bip32path.prop("readonly", true);
46247 clients[clientIndex].onSelect();
46248 if (seed != null) {
46249 phraseChanged();
46250 }
46251 else {
46252 rootKeyChanged();
46253 }
46254 }
46255 }
46256
46257 function setEntropyVisibility() {
46258 if (isUsingOwnEntropy()) {
46259 DOM.entropyContainer.removeClass("hidden");
46260 DOM.generateContainer.addClass("hidden");
46261 DOM.phrase.prop("readonly", true);
46262 DOM.entropy.focus();
46263 entropyChanged();
46264 }
46265 else {
46266 DOM.entropyContainer.addClass("hidden");
46267 DOM.generateContainer.removeClass("hidden");
46268 DOM.phrase.prop("readonly", false);
46269 hidePending();
46270 }
46271 }
46272
46273 function delayedPhraseChanged() {
46274 hideValidationError();
46275 seed = null;
46276 bip32RootKey = null;
46277 bip32ExtendedKey = null;
46278 clearAddressesList();
46279 showPending();
46280 if (phraseChangeTimeoutEvent != null) {
46281 clearTimeout(phraseChangeTimeoutEvent);
46282 }
46283 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
46284 }
46285
46286 function phraseChanged() {
46287 showPending();
46288 setMnemonicLanguage();
46289 // Get the mnemonic phrase
46290 var phrase = DOM.phrase.val();
46291 var errorText = findPhraseErrors(phrase);
46292 if (errorText) {
46293 showValidationError(errorText);
46294 return;
46295 }
46296 // Calculate and display
46297 var passphrase = DOM.passphrase.val();
46298 calcBip32RootKeyFromSeed(phrase, passphrase);
46299 calcForDerivationPath();
46300 }
46301
46302 function delayedEntropyChanged() {
46303 hideValidationError();
46304 showPending();
46305 if (entropyChangeTimeoutEvent != null) {
46306 clearTimeout(entropyChangeTimeoutEvent);
46307 }
46308 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
46309 }
46310
46311 function entropyChanged() {
46312 // If blank entropy, clear mnemonic, addresses, errors
46313 if (DOM.entropy.val().trim().length == 0) {
46314 clearDisplay();
46315 clearEntropyFeedback();
46316 DOM.phrase.val("");
46317 showValidationError("Blank entropy");
46318 return;
46319 }
46320 // Get the current phrase to detect changes
46321 var phrase = DOM.phrase.val();
46322 // Set the phrase from the entropy
46323 setMnemonicFromEntropy();
46324 // Recalc addresses if the phrase has changed
46325 var newPhrase = DOM.phrase.val();
46326 if (newPhrase != phrase) {
46327 if (newPhrase.length == 0) {
46328 clearDisplay();
46329 }
46330 else {
46331 phraseChanged();
46332 }
46333 }
46334 else {
46335 hidePending();
46336 }
46337 }
46338
46339 function delayedRootKeyChanged() {
46340 // Warn if there is an existing mnemonic or passphrase.
46341 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
46342 if (!confirm("This will clear existing mnemonic and passphrase")) {
46343 DOM.rootKey.val(bip32RootKey);
46344 return
46345 }
46346 }
46347 hideValidationError();
46348 showPending();
46349 // Clear existing mnemonic and passphrase
46350 DOM.phrase.val("");
46351 DOM.passphrase.val("");
46352 seed = null;
46353 if (rootKeyChangedTimeoutEvent != null) {
46354 clearTimeout(rootKeyChangedTimeoutEvent);
46355 }
46356 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
46357 }
46358
46359 function rootKeyChanged() {
46360 showPending();
46361 hideValidationError();
46362 // Validate the root key TODO
46363 var rootKeyBase58 = DOM.rootKey.val();
46364 var errorText = validateRootKey(rootKeyBase58);
46365 if (errorText) {
46366 showValidationError(errorText);
46367 return;
46368 }
46369 // Calculate and display
46370 calcBip32RootKeyFromBase58(rootKeyBase58);
46371 calcForDerivationPath();
46372 }
46373
46374 function calcForDerivationPath() {
46375 clearDerivedKeys();
46376 clearAddressesList();
46377 showPending();
46378 // Don't show bip49 if it's selected but network doesn't support it
46379 if (bip49TabSelected() && !networkHasBip49()) {
46380 return;
46381 }
46382 // Get the derivation path
46383 var derivationPath = getDerivationPath();
46384 var errorText = findDerivationPathErrors(derivationPath);
46385 if (errorText) {
46386 showValidationError(errorText);
46387 return;
46388 }
46389 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
46390 if (bip44TabSelected()) {
46391 displayBip44Info();
46392 }
46393 if (bip49TabSelected()) {
46394 displayBip49Info();
46395 }
46396 displayBip32Info();
46397 }
46398
46399 function generateClicked() {
46400 if (isUsingOwnEntropy()) {
46401 return;
46402 }
46403 clearDisplay();
46404 showPending();
46405 setTimeout(function() {
46406 setMnemonicLanguage();
46407 var phrase = generateRandomPhrase();
46408 if (!phrase) {
46409 return;
46410 }
46411 phraseChanged();
46412 }, 50);
46413 }
46414
46415 function languageChanged() {
46416 setTimeout(function() {
46417 setMnemonicLanguage();
46418 if (DOM.phrase.val().length > 0) {
46419 var newPhrase = convertPhraseToNewLanguage();
46420 DOM.phrase.val(newPhrase);
46421 phraseChanged();
46422 }
46423 else {
46424 DOM.generate.trigger("click");
46425 }
46426 }, 50);
46427 }
46428
46429 function toggleIndexes() {
46430 showIndex = !showIndex;
46431 $("td.index span").toggleClass("invisible");
46432 }
46433
46434 function toggleAddresses() {
46435 showAddress = !showAddress;
46436 $("td.address span").toggleClass("invisible");
46437 }
46438
46439 function togglePublicKeys() {
46440 showPubKey = !showPubKey;
46441 $("td.pubkey span").toggleClass("invisible");
46442 }
46443
46444 function togglePrivateKeys() {
46445 showPrivKey = !showPrivKey;
46446 $("td.privkey span").toggleClass("invisible");
46447 }
46448
46449 // Private methods
46450
46451 function generateRandomPhrase() {
46452 if (!hasStrongRandom()) {
46453 var errorText = "This browser does not support strong randomness";
46454 showValidationError(errorText);
46455 return;
46456 }
46457 var numWords = parseInt(DOM.generatedStrength.val());
46458 var strength = numWords / 3 * 32;
46459 var words = mnemonic.generate(strength);
46460 DOM.phrase.val(words);
46461 return words;
46462 }
46463
46464 function calcBip32RootKeyFromSeed(phrase, passphrase) {
46465 seed = mnemonic.toSeed(phrase, passphrase);
46466 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
46467 }
46468
46469 function calcBip32RootKeyFromBase58(rootKeyBase58) {
46470 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46471 }
46472
46473 function calcBip32ExtendedKey(path) {
46474 // Check there's a root key to derive from
46475 if (!bip32RootKey) {
46476 return bip32RootKey;
46477 }
46478 var extendedKey = bip32RootKey;
46479 // Derive the key from the path
46480 var pathBits = path.split("/");
46481 for (var i=0; i<pathBits.length; i++) {
46482 var bit = pathBits[i];
46483 var index = parseInt(bit);
46484 if (isNaN(index)) {
46485 continue;
46486 }
46487 var hardened = bit[bit.length-1] == "'";
46488 var isPriv = !(extendedKey.isNeutered());
46489 var invalidDerivationPath = hardened && !isPriv;
46490 if (invalidDerivationPath) {
46491 extendedKey = null;
46492 }
46493 else if (hardened) {
46494 extendedKey = extendedKey.deriveHardened(index);
46495 }
46496 else {
46497 extendedKey = extendedKey.derive(index);
46498 }
46499 }
46500 return extendedKey
46501 }
46502
46503 function showValidationError(errorText) {
46504 DOM.feedback
46505 .text(errorText)
46506 .show();
46507 }
46508
46509 function hideValidationError() {
46510 DOM.feedback
46511 .text("")
46512 .hide();
46513 }
46514
46515 function findPhraseErrors(phrase) {
46516 // Preprocess the words
46517 phrase = mnemonic.normalizeString(phrase);
46518 var words = phraseToWordArray(phrase);
46519 // Detect blank phrase
46520 if (words.length == 0) {
46521 return "Blank mnemonic";
46522 }
46523 // Check each word
46524 for (var i=0; i<words.length; i++) {
46525 var word = words[i];
46526 var language = getLanguage();
46527 if (WORDLISTS[language].indexOf(word) == -1) {
46528 console.log("Finding closest match to " + word);
46529 var nearestWord = findNearestWord(word);
46530 return word + " not in wordlist, did you mean " + nearestWord + "?";
46531 }
46532 }
46533 // Check the words are valid
46534 var properPhrase = wordArrayToPhrase(words);
46535 var isValid = mnemonic.check(properPhrase);
46536 if (!isValid) {
46537 return "Invalid mnemonic";
46538 }
46539 return false;
46540 }
46541
46542 function validateRootKey(rootKeyBase58) {
46543 try {
46544 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58);
46545 }
46546 catch (e) {
46547 return "Invalid root key";
46548 }
46549 return "";
46550 }
46551
46552 function getDerivationPath() {
46553 if (bip44TabSelected()) {
46554 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46555 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46556 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46557 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
46558 var path = "m/";
46559 path += purpose + "'/";
46560 path += coin + "'/";
46561 path += account + "'/";
46562 path += change;
46563 DOM.bip44path.val(path);
46564 var derivationPath = DOM.bip44path.val();
46565 console.log("Using derivation path from BIP44 tab: " + derivationPath);
46566 return derivationPath;
46567 }
46568 if (bip49TabSelected()) {
46569 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46570 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46571 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46572 var change = parseIntNoNaN(DOM.bip49change.val(), 0);
46573 var path = "m/";
46574 path += purpose + "'/";
46575 path += coin + "'/";
46576 path += account + "'/";
46577 path += change;
46578 DOM.bip49path.val(path);
46579 var derivationPath = DOM.bip49path.val();
46580 console.log("Using derivation path from BIP49 tab: " + derivationPath);
46581 return derivationPath;
46582 }
46583 else if (bip32TabSelected()) {
46584 var derivationPath = DOM.bip32path.val();
46585 console.log("Using derivation path from BIP32 tab: " + derivationPath);
46586 return derivationPath;
46587 }
46588 else {
46589 console.log("Unknown derivation path");
46590 }
46591 }
46592
46593 function findDerivationPathErrors(path) {
46594 // TODO is not perfect but is better than nothing
46595 // Inspired by
46596 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
46597 // and
46598 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
46599 var maxDepth = 255; // TODO verify this!!
46600 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
46601 if (path[0] != "m") {
46602 return "First character must be 'm'";
46603 }
46604 if (path.length > 1) {
46605 if (path[1] != "/") {
46606 return "Separator must be '/'";
46607 }
46608 var indexes = path.split("/");
46609 if (indexes.length > maxDepth) {
46610 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
46611 }
46612 for (var depth = 1; depth<indexes.length; depth++) {
46613 var index = indexes[depth];
46614 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
46615 if (invalidChars.length > 0) {
46616 return "Invalid characters " + invalidChars + " found at depth " + depth;
46617 }
46618 var indexValue = parseInt(index.replace("'", ""));
46619 if (isNaN(depth)) {
46620 return "Invalid number at depth " + depth;
46621 }
46622 if (indexValue > maxIndexValue) {
46623 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
46624 }
46625 }
46626 }
46627 // Check root key exists or else derivation path is useless!
46628 if (!bip32RootKey) {
46629 return "No root key";
46630 }
46631 // Check no hardened derivation path when using xpub keys
46632 var hardened = path.indexOf("'") > -1;
46633 var isXpubkey = bip32RootKey.isNeutered();
46634 if (hardened && isXpubkey) {
46635 return "Hardened derivation path is invalid with xpub key";
46636 }
46637 return false;
46638 }
46639
46640 function displayBip44Info() {
46641 // Get the derivation path for the account
46642 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46643 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46644 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46645 var path = "m/";
46646 path += purpose + "'/";
46647 path += coin + "'/";
46648 path += account + "'/";
46649 // Calculate the account extended keys
46650 var accountExtendedKey = calcBip32ExtendedKey(path);
46651 var accountXprv = accountExtendedKey.toBase58();
46652 var accountXpub = accountExtendedKey.neutered().toBase58();
46653 // Display the extended keys
46654 DOM.bip44accountXprv.val(accountXprv);
46655 DOM.bip44accountXpub.val(accountXpub);
46656 }
46657
46658 function displayBip49Info() {
46659 // Get the derivation path for the account
46660 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46661 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46662 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46663 var path = "m/";
46664 path += purpose + "'/";
46665 path += coin + "'/";
46666 path += account + "'/";
46667 // Calculate the account extended keys
46668 var accountExtendedKey = calcBip32ExtendedKey(path);
46669 var accountXprv = accountExtendedKey.toBase58();
46670 var accountXpub = accountExtendedKey.neutered().toBase58();
46671 // Display the extended keys
46672 DOM.bip49accountXprv.val(accountXprv);
46673 DOM.bip49accountXpub.val(accountXpub);
46674 }
46675
46676 function displayBip32Info() {
46677 // Display the key
46678 DOM.seed.val(seed);
46679 var rootKey = bip32RootKey.toBase58();
46680 DOM.rootKey.val(rootKey);
46681 var xprvkeyB58 = "NA";
46682 if (!bip32ExtendedKey.isNeutered()) {
46683 xprvkeyB58 = bip32ExtendedKey.toBase58();
46684 }
46685 var extendedPrivKey = xprvkeyB58;
46686 DOM.extendedPrivKey.val(extendedPrivKey);
46687 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
46688 DOM.extendedPubKey.val(extendedPubKey);
46689 // Display the addresses and privkeys
46690 clearAddressesList();
46691 displayAddresses(0, 20);
46692 }
46693
46694 function displayAddresses(start, total) {
46695 generationProcesses.push(new (function() {
46696
46697 var rows = [];
46698
46699 this.stop = function() {
46700 for (var i=0; i<rows.length; i++) {
46701 rows[i].shouldGenerate = false;
46702 }
46703 hidePending();
46704 }
46705
46706 for (var i=0; i<total; i++) {
46707 var index = i + start;
46708 var isLast = i == total - 1;
46709 rows.push(new TableRow(index, isLast));
46710 }
46711
46712 })());
46713 }
46714
46715 function TableRow(index, isLast) {
46716
46717 var self = this;
46718 this.shouldGenerate = true;
46719 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
46720 var isBip49 = bip49TabSelected();
46721 var bip49available = networkHasBip49();
46722
46723 function init() {
46724 calculateValues();
46725 }
46726
46727 function calculateValues() {
46728 setTimeout(function() {
46729 if (!self.shouldGenerate) {
46730 return;
46731 }
46732 var key = "NA";
46733 if (useHardenedAddresses) {
46734 key = bip32ExtendedKey.deriveHardened(index);
46735 }
46736 else {
46737 key = bip32ExtendedKey.derive(index);
46738 }
46739 var address = key.getAddress().toString();
46740 var privkey = "NA";
46741 if (!key.isNeutered()) {
46742 privkey = key.keyPair.toWIF(network);
46743 }
46744 var pubkey = key.getPublicKeyBuffer().toString('hex');
46745 var indexText = getDerivationPath() + "/" + index;
46746 if (useHardenedAddresses) {
46747 indexText = indexText + "'";
46748 }
46749 // Ethereum values are different
46750 if (networks[DOM.network.val()].name == "ETH - Ethereum") {
46751 var privKeyBuffer = key.keyPair.d.toBuffer();
46752 privkey = privKeyBuffer.toString('hex');
46753 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
46754 var hexAddress = addressBuffer.toString('hex');
46755 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
46756 address = ethUtil.addHexPrefix(checksumAddress);
46757 privkey = ethUtil.addHexPrefix(privkey);
46758 pubkey = ethUtil.addHexPrefix(pubkey);
46759 }
46760 // Ripple values are different
46761 if (networks[DOM.network.val()].name == "XRP - Ripple") {
46762 privkey = convertRipplePriv(privkey);
46763 address = convertRippleAdrr(address);
46764 }
46765 // BIP49 addresses are different
46766 if (isBip49) {
46767 if (!bip49available) {
46768 return;
46769 }
46770 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
46771 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
46772 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
46773 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
46774 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
46775 }
46776 addAddressToList(indexText, address, pubkey, privkey);
46777 if (isLast) {
46778 hidePending();
46779 }
46780 }, 50)
46781 }
46782
46783 init();
46784
46785 }
46786
46787 function showMore() {
46788 var start = DOM.addresses.children().length;
46789 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
46790 if (isNaN(rowsToAdd)) {
46791 rowsToAdd = 20;
46792 DOM.rowsToAdd.val("20");
46793 }
46794 if (rowsToAdd > 200) {
46795 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
46796 msg += "Do you want to continue?";
46797 if (!confirm(msg)) {
46798 return;
46799 }
46800 }
46801 displayAddresses(start, rowsToAdd);
46802 }
46803
46804 function clearDisplay() {
46805 clearAddressesList();
46806 clearKeys();
46807 hideValidationError();
46808 }
46809
46810 function clearAddressesList() {
46811 DOM.addresses.empty();
46812 stopGenerating();
46813 }
46814
46815 function stopGenerating() {
46816 while (generationProcesses.length > 0) {
46817 var generation = generationProcesses.shift();
46818 generation.stop();
46819 }
46820 }
46821
46822 function clearKeys() {
46823 clearRootKey();
46824 clearDerivedKeys();
46825 }
46826
46827 function clearRootKey() {
46828 DOM.rootKey.val("");
46829 }
46830
46831 function clearDerivedKeys() {
46832 DOM.extendedPrivKey.val("");
46833 DOM.extendedPubKey.val("");
46834 DOM.bip44accountXprv.val("");
46835 DOM.bip44accountXpub.val("");
46836 }
46837
46838 function addAddressToList(indexText, address, pubkey, privkey) {
46839 var row = $(addressRowTemplate.html());
46840 // Elements
46841 var indexCell = row.find(".index span");
46842 var addressCell = row.find(".address span");
46843 var pubkeyCell = row.find(".pubkey span");
46844 var privkeyCell = row.find(".privkey span");
46845 // Content
46846 indexCell.text(indexText);
46847 addressCell.text(address);
46848 pubkeyCell.text(pubkey);
46849 privkeyCell.text(privkey);
46850 // Visibility
46851 if (!showIndex) {
46852 indexCell.addClass("invisible");
46853 }
46854 if (!showAddress) {
46855 addressCell.addClass("invisible");
46856 }
46857 if (!showPubKey) {
46858 pubkeyCell.addClass("invisible");
46859 }
46860 if (!showPrivKey) {
46861 privkeyCell.addClass("invisible");
46862 }
46863 DOM.addresses.append(row);
46864 var rowShowQrEls = row.find("[data-show-qr]");
46865 setQrEvents(rowShowQrEls);
46866 }
46867
46868 function hasStrongRandom() {
46869 return 'crypto' in window && window['crypto'] !== null;
46870 }
46871
46872 function disableForms() {
46873 $("form").on("submit", function(e) {
46874 e.preventDefault();
46875 });
46876 }
46877
46878 function parseIntNoNaN(val, defaultVal) {
46879 var v = parseInt(val);
46880 if (isNaN(v)) {
46881 return defaultVal;
46882 }
46883 return v;
46884 }
46885
46886 function showPending() {
46887 DOM.feedback
46888 .text("Calculating...")
46889 .show();
46890 }
46891
46892 function findNearestWord(word) {
46893 var language = getLanguage();
46894 var words = WORDLISTS[language];
46895 var minDistance = 99;
46896 var closestWord = words[0];
46897 for (var i=0; i<words.length; i++) {
46898 var comparedTo = words[i];
46899 if (comparedTo.indexOf(word) == 0) {
46900 return comparedTo;
46901 }
46902 var distance = Levenshtein.get(word, comparedTo);
46903 if (distance < minDistance) {
46904 closestWord = comparedTo;
46905 minDistance = distance;
46906 }
46907 }
46908 return closestWord;
46909 }
46910
46911 function hidePending() {
46912 DOM.feedback
46913 .text("")
46914 .hide();
46915 }
46916
46917 function populateNetworkSelect() {
46918 for (var i=0; i<networks.length; i++) {
46919 var network = networks[i];
46920 var option = $("<option>");
46921 option.attr("value", i);
46922 option.text(network.name);
46923 if (network.name == "BTC - Bitcoin") {
46924 option.prop("selected", true);
46925 }
46926 DOM.phraseNetwork.append(option);
46927 }
46928 }
46929
46930 function populateClientSelect() {
46931 for (var i=0; i<clients.length; i++) {
46932 var client = clients[i];
46933 var option = $("<option>");
46934 option.attr("value", i);
46935 option.text(client.name);
46936 DOM.bip32Client.append(option);
46937 }
46938 }
46939
46940 function getLanguage() {
46941 var defaultLanguage = "english";
46942 // Try to get from existing phrase
46943 var language = getLanguageFromPhrase();
46944 // Try to get from url if not from phrase
46945 if (language.length == 0) {
46946 language = getLanguageFromUrl();
46947 }
46948 // Default to English if no other option
46949 if (language.length == 0) {
46950 language = defaultLanguage;
46951 }
46952 return language;
46953 }
46954
46955 function getLanguageFromPhrase(phrase) {
46956 // Check if how many words from existing phrase match a language.
46957 var language = "";
46958 if (!phrase) {
46959 phrase = DOM.phrase.val();
46960 }
46961 if (phrase.length > 0) {
46962 var words = phraseToWordArray(phrase);
46963 var languageMatches = {};
46964 for (l in WORDLISTS) {
46965 // Track how many words match in this language
46966 languageMatches[l] = 0;
46967 for (var i=0; i<words.length; i++) {
46968 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
46969 if (wordInLanguage) {
46970 languageMatches[l]++;
46971 }
46972 }
46973 // Find languages with most word matches.
46974 // This is made difficult due to commonalities between Chinese
46975 // simplified vs traditional.
46976 var mostMatches = 0;
46977 var mostMatchedLanguages = [];
46978 for (var l in languageMatches) {
46979 var numMatches = languageMatches[l];
46980 if (numMatches > mostMatches) {
46981 mostMatches = numMatches;
46982 mostMatchedLanguages = [l];
46983 }
46984 else if (numMatches == mostMatches) {
46985 mostMatchedLanguages.push(l);
46986 }
46987 }
46988 }
46989 if (mostMatchedLanguages.length > 0) {
46990 // Use first language and warn if multiple detected
46991 language = mostMatchedLanguages[0];
46992 if (mostMatchedLanguages.length > 1) {
46993 console.warn("Multiple possible languages");
46994 console.warn(mostMatchedLanguages);
46995 }
46996 }
46997 }
46998 return language;
46999 }
47000
47001 function getLanguageFromUrl() {
47002 for (var language in WORDLISTS) {
47003 if (window.location.hash.indexOf(language) > -1) {
47004 return language;
47005 }
47006 }
47007 return "";
47008 }
47009
47010 function setMnemonicLanguage() {
47011 var language = getLanguage();
47012 // Load the bip39 mnemonic generator for this language if required
47013 if (!(language in mnemonics)) {
47014 mnemonics[language] = new Mnemonic(language);
47015 }
47016 mnemonic = mnemonics[language];
47017 }
47018
47019 function convertPhraseToNewLanguage() {
47020 var oldLanguage = getLanguageFromPhrase();
47021 var newLanguage = getLanguageFromUrl();
47022 var oldPhrase = DOM.phrase.val();
47023 var oldWords = phraseToWordArray(oldPhrase);
47024 var newWords = [];
47025 for (var i=0; i<oldWords.length; i++) {
47026 var oldWord = oldWords[i];
47027 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
47028 var newWord = WORDLISTS[newLanguage][index];
47029 newWords.push(newWord);
47030 }
47031 newPhrase = wordArrayToPhrase(newWords);
47032 return newPhrase;
47033 }
47034
47035 // TODO look at jsbip39 - mnemonic.splitWords
47036 function phraseToWordArray(phrase) {
47037 var words = phrase.split(/\s/g);
47038 var noBlanks = [];
47039 for (var i=0; i<words.length; i++) {
47040 var word = words[i];
47041 if (word.length > 0) {
47042 noBlanks.push(word);
47043 }
47044 }
47045 return noBlanks;
47046 }
47047
47048 // TODO look at jsbip39 - mnemonic.joinWords
47049 function wordArrayToPhrase(words) {
47050 var phrase = words.join(" ");
47051 var language = getLanguageFromPhrase(phrase);
47052 if (language == "japanese") {
47053 phrase = words.join("\u3000");
47054 }
47055 return phrase;
47056 }
47057
47058 function isUsingOwnEntropy() {
47059 return DOM.useEntropy.prop("checked");
47060 }
47061
47062 function setMnemonicFromEntropy() {
47063 clearEntropyFeedback();
47064 // Get entropy value
47065 var entropyStr = DOM.entropy.val();
47066 // Work out minimum base for entropy
47067 var entropy = Entropy.fromString(entropyStr);
47068 if (entropy.binaryStr.length == 0) {
47069 return;
47070 }
47071 // Show entropy details
47072 showEntropyFeedback(entropy);
47073 // Use entropy hash if not using raw entropy
47074 var bits = entropy.binaryStr;
47075 var mnemonicLength = DOM.entropyMnemonicLength.val();
47076 if (mnemonicLength != "raw") {
47077 // Get bits by hashing entropy with SHA256
47078 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
47079 var hex = sjcl.codec.hex.fromBits(hash);
47080 bits = BigInteger.parse(hex, 16).toString(2);
47081 while (bits.length % 256 != 0) {
47082 bits = "0" + bits;
47083 }
47084 // Truncate hash to suit number of words
47085 mnemonicLength = parseInt(mnemonicLength);
47086 var numberOfBits = 32 * mnemonicLength / 3;
47087 bits = bits.substring(0, numberOfBits);
47088 }
47089 // Discard trailing entropy
47090 var bitsToUse = Math.floor(bits.length / 32) * 32;
47091 var start = bits.length - bitsToUse;
47092 var binaryStr = bits.substring(start);
47093 // Convert entropy string to numeric array
47094 var entropyArr = [];
47095 for (var i=0; i<binaryStr.length / 8; i++) {
47096 var byteAsBits = binaryStr.substring(i*8, i*8+8);
47097 var entropyByte = parseInt(byteAsBits, 2);
47098 entropyArr.push(entropyByte)
47099 }
47100 // Convert entropy array to mnemonic
47101 var phrase = mnemonic.toMnemonic(entropyArr);
47102 // Set the mnemonic in the UI
47103 DOM.phrase.val(phrase);
47104 }
47105
47106 function clearEntropyFeedback() {
47107 DOM.entropyCrackTime.text("...");
47108 DOM.entropyType.text("");
47109 DOM.entropyWordCount.text("0");
47110 DOM.entropyEventCount.text("0");
47111 DOM.entropyBitsPerEvent.text("0");
47112 DOM.entropyBits.text("0");
47113 DOM.entropyFiltered.html("&nbsp;");
47114 DOM.entropyBinary.html("&nbsp;");
47115 }
47116
47117 function showEntropyFeedback(entropy) {
47118 var numberOfBits = entropy.binaryStr.length;
47119 var timeToCrack = "unknown";
47120 try {
47121 var z = zxcvbn(entropy.base.parts.join(""));
47122 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
47123 if (z.feedback.warning != "") {
47124 timeToCrack = timeToCrack + " - " + z.feedback.warning;
47125 };
47126 }
47127 catch (e) {
47128 console.log("Error detecting entropy strength with zxcvbn:");
47129 console.log(e);
47130 }
47131 var entropyTypeStr = getEntropyTypeStr(entropy);
47132 var wordCount = Math.floor(numberOfBits / 32) * 3;
47133 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
47134 DOM.entropyFiltered.html(entropy.cleanHtml);
47135 DOM.entropyType.text(entropyTypeStr);
47136 DOM.entropyCrackTime.text(timeToCrack);
47137 DOM.entropyEventCount.text(entropy.base.ints.length);
47138 DOM.entropyBits.text(numberOfBits);
47139 DOM.entropyWordCount.text(wordCount);
47140 DOM.entropyBinary.text(entropy.binaryStr);
47141 DOM.entropyBitsPerEvent.text(bitsPerEvent);
47142 }
47143
47144 function getEntropyTypeStr(entropy) {
47145 var typeStr = entropy.base.str;
47146 // Add some detail if these are cards
47147 if (entropy.base.asInt == 52) {
47148 var cardDetail = []; // array of message strings
47149 // Detect duplicates
47150 var dupes = [];
47151 var dupeTracker = {};
47152 for (var i=0; i<entropy.base.parts.length; i++) {
47153 var card = entropy.base.parts[i];
47154 var cardUpper = card.toUpperCase();
47155 if (cardUpper in dupeTracker) {
47156 dupes.push(card);
47157 }
47158 dupeTracker[cardUpper] = true;
47159 }
47160 if (dupes.length > 0) {
47161 var dupeWord = "duplicates";
47162 if (dupes.length == 1) {
47163 dupeWord = "duplicate";
47164 }
47165 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
47166 if (dupes.length > 3) {
47167 msg += "...";
47168 }
47169 cardDetail.push(msg);
47170 }
47171 // Detect full deck
47172 var uniqueCards = [];
47173 for (var uniqueCard in dupeTracker) {
47174 uniqueCards.push(uniqueCard);
47175 }
47176 if (uniqueCards.length == 52) {
47177 cardDetail.unshift("full deck");
47178 }
47179 // Detect missing cards
47180 var values = "A23456789TJQK";
47181 var suits = "CDHS";
47182 var missingCards = [];
47183 for (var i=0; i<suits.length; i++) {
47184 for (var j=0; j<values.length; j++) {
47185 var card = values[j] + suits[i];
47186 if (!(card in dupeTracker)) {
47187 missingCards.push(card);
47188 }
47189 }
47190 }
47191 // Display missing cards if six or less, ie clearly going for full deck
47192 if (missingCards.length > 0 && missingCards.length <= 6) {
47193 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
47194 if (missingCards.length > 3) {
47195 msg += "...";
47196 }
47197 cardDetail.push(msg);
47198 }
47199 // Add card details to typeStr
47200 if (cardDetail.length > 0) {
47201 typeStr += " (" + cardDetail.join(", ") + ")";
47202 }
47203 }
47204 return typeStr;
47205 }
47206
47207 function setQrEvents(els) {
47208 els.on("mouseenter", createQr);
47209 els.on("mouseleave", destroyQr);
47210 els.on("click", toggleQr);
47211 }
47212
47213 function createQr(e) {
47214 var content = e.target.textContent || e.target.value;
47215 if (content) {
47216 var size = 130;
47217 DOM.qrImage.qrcode({width: size, height: size, text: content});
47218 if (!showQr) {
47219 DOM.qrHider.addClass("hidden");
47220 }
47221 else {
47222 DOM.qrHider.removeClass("hidden");
47223 }
47224 DOM.qrContainer.removeClass("hidden");
47225 }
47226 }
47227
47228 function destroyQr() {
47229 DOM.qrImage.text("");
47230 DOM.qrContainer.addClass("hidden");
47231 }
47232
47233 function toggleQr() {
47234 showQr = !showQr;
47235 DOM.qrHider.toggleClass("hidden");
47236 DOM.qrHint.toggleClass("hidden");
47237 }
47238
47239 function bip44TabSelected() {
47240 return DOM.bip44tab.hasClass("active");
47241 }
47242
47243 function bip32TabSelected() {
47244 return DOM.bip32tab.hasClass("active");
47245 }
47246
47247 function networkHasBip49() {
47248 return networks[DOM.network.val()].bip49available;
47249 }
47250
47251 function bip49TabSelected() {
47252 return DOM.bip49tab.hasClass("active");
47253 }
47254
47255 function setHdCoin(coinValue) {
47256 DOM.bip44coin.val(coinValue);
47257 DOM.bip49coin.val(coinValue);
47258 }
47259
47260 function showBip49() {
47261 DOM.bip49unavailable.addClass("hidden");
47262 DOM.bip49available.removeClass("hidden");
47263 }
47264
47265 function hideBip49() {
47266 DOM.bip49available.addClass("hidden");
47267 DOM.bip49unavailable.removeClass("hidden");
47268 }
47269
47270 var networks = [
47271 {
47272 name: "BCH - Bitcoin Cash",
47273 bip49available: false,
47274 onSelect: function() {
47275 network = bitcoinjs.bitcoin.networks.bitcoin;
47276 setHdCoin(145);
47277 },
47278 },
47279 {
47280 name: "BTC - Bitcoin",
47281 bip49available: true,
47282 onSelect: function() {
47283 network = bitcoinjs.bitcoin.networks.bitcoin;
47284 setHdCoin(0);
47285 },
47286 },
47287 {
47288 name: "BTC - Bitcoin Testnet",
47289 bip49available: true,
47290 onSelect: function() {
47291 network = bitcoinjs.bitcoin.networks.testnet;
47292 setHdCoin(1);
47293 },
47294 },
47295 {
47296 name: "CLAM - Clams",
47297 bip49available: false,
47298 onSelect: function() {
47299 network = bitcoinjs.bitcoin.networks.clam;
47300 setHdCoin(23);
47301 },
47302 },
47303 {
47304 name: "CRW - Crown",
47305 bip49available: false,
47306 onSelect: function() {
47307 network = bitcoinjs.bitcoin.networks.crown;
47308 setHdCoin(72);
47309 },
47310 },
47311 {
47312 name: "DASH - Dash",
47313 bip49available: false,
47314 onSelect: function() {
47315 network = bitcoinjs.bitcoin.networks.dash;
47316 setHdCoin(5);
47317 },
47318 },
47319 {
47320 name: "DASH - Dash Testnet",
47321 bip49available: false,
47322 onSelect: function() {
47323 network = bitcoinjs.bitcoin.networks.dashtn;
47324 setHdCoin(1);
47325 },
47326 },
47327 {
47328 name: "DOGE - Dogecoin",
47329 bip49available: false,
47330 onSelect: function() {
47331 network = bitcoinjs.bitcoin.networks.dogecoin;
47332 setHdCoin(3);
47333 },
47334 },
47335 {
47336 name: "ETH - Ethereum",
47337 bip49available: false,
47338 onSelect: function() {
47339 network = bitcoinjs.bitcoin.networks.bitcoin;
47340 setHdCoin(60);
47341 },
47342 },
47343 {
47344 name: "GAME - GameCredits",
47345 bip49available: false,
47346 onSelect: function() {
47347 network = bitcoinjs.bitcoin.networks.game;
47348 setHdCoin(101);
47349 },
47350 },
47351 {
47352 name: "JBS - Jumbucks",
47353 bip49available: false,
47354 onSelect: function() {
47355 network = bitcoinjs.bitcoin.networks.jumbucks;
47356 setHdCoin(26);
47357 },
47358 },
47359 {
47360 name: "LTC - Litecoin",
47361 bip49available: false,
47362 onSelect: function() {
47363 network = bitcoinjs.bitcoin.networks.litecoin;
47364 setHdCoin(2);
47365 },
47366 },
47367 {
47368 name: "MAZA - Maza",
47369 bip49available: false,
47370 onSelect: function() {
47371 network = bitcoinjs.bitcoin.networks.maza;
47372 setHdCoin(13);
47373 },
47374 },
47375
47376 {
47377 name: "NMC - Namecoin",
47378 bip49available: false,
47379 onSelect: function() {
47380 network = bitcoinjs.bitcoin.networks.namecoin;
47381 setHdCoin(7);
47382 },
47383 },
47384 {
47385 name: "PIVX - PIVX",
47386 bip49available: false,
47387 onSelect: function() {
47388 network = bitcoinjs.bitcoin.networks.pivx;
47389 setHdCoin(119);
47390 },
47391 },
47392 {
47393 name: "PIVX - PIVX Testnet",
47394 bip49available: false,
47395 onSelect: function() {
47396 network = bitcoinjs.bitcoin.networks.pivxtestnet;
47397 setHdCoin(1);
47398 },
47399 },
47400 {
47401 name: "PPC - Peercoin",
47402 bip49available: false,
47403 onSelect: function() {
47404 network = bitcoinjs.bitcoin.networks.peercoin;
47405 setHdCoin(6);
47406 },
47407 },
47408 {
47409 name: "SDC - ShadowCash",
47410 bip49available: false,
47411 onSelect: function() {
47412 network = bitcoinjs.bitcoin.networks.shadow;
47413 setHdCoin(35);
47414 },
47415 },
47416 {
47417 name: "SDC - ShadowCash Testnet",
47418 bip49available: false,
47419 onSelect: function() {
47420 network = bitcoinjs.bitcoin.networks.shadowtn;
47421 setHdCoin(1);
47422 },
47423 },
47424 {
47425 name: "SLM - Slimcoin",
47426 bip49available: false,
47427 onSelect: function() {
47428 network = bitcoinjs.bitcoin.networks.slimcoin;
47429 setHdCoin(63);
47430 },
47431 },
47432 {
47433 name: "SLM - Slimcoin Testnet",
47434 bip49available: false,
47435 onSelect: function() {
47436 network = bitcoinjs.bitcoin.networks.slimcointn;
47437 setHdCoin(111);
47438 },
47439 },
47440 {
47441 name: "VIA - Viacoin",
47442 bip49available: false,
47443 onSelect: function() {
47444 network = bitcoinjs.bitcoin.networks.viacoin;
47445 setHdCoin(14);
47446 },
47447 },
47448 {
47449 name: "VIA - Viacoin Testnet",
47450 bip49available: false,
47451 onSelect: function() {
47452 network = bitcoinjs.bitcoin.networks.viacointestnet;
47453 setHdCoin(1);
47454 },
47455 },
47456 {
47457 name: "XMY - Myriadcoin",
47458 bip49available: false,
47459 onSelect: function() {
47460 network = bitcoinjs.bitcoin.networks.myriadcoin;
47461 setHdCoin(90);
47462 },
47463 },
47464 {
47465 name: "XRP - Ripple",
47466 bip49available: false,
47467 onSelect: function() {
47468 network = bitcoinjs.bitcoin.networks.bitcoin;
47469 setHdCoin(144);
47470 },
47471 }
47472 ]
47473
47474 var clients = [
47475 {
47476 name: "Bitcoin Core",
47477 onSelect: function() {
47478 DOM.bip32path.val("m/0'/0'");
47479 DOM.hardenedAddresses.prop('checked', true);
47480 },
47481 },
47482 {
47483 name: "blockchain.info",
47484 onSelect: function() {
47485 DOM.bip32path.val("m/44'/0'/0'");
47486 DOM.hardenedAddresses.prop('checked', false);
47487 },
47488 },
47489 {
47490 name: "MultiBit HD",
47491 onSelect: function() {
47492 DOM.bip32path.val("m/0'/0");
47493 DOM.hardenedAddresses.prop('checked', false);
47494 },
47495 }
47496 ]
47497
47498 init();
47499
47500 })();
47501 </script>
47502 </body>
47503 </html>