]>
Commit | Line | Data |
---|---|---|
ebd8d4e8 IC |
1 | <!DOCTYPE html> |
2 | <html> | |
3 | <head lang="en"> | |
4 | <meta charset="utf-8" /> | |
5 | <title>BIP39 - Mnemonic Code</title> | |
ab78acc6 | 6 | <style>/*! |
ebd8d4e8 IC |
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) | |
ab78acc6 IC |
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" /> | |
b630f83d | 14 | <meta content="Ian Coleman" name="author" /> |
3af2954a | 15 | |
ab78acc6 IC |
16 | <style> |
17 | body { | |
18 | padding-bottom: 32px; | |
19 | } | |
20 | .form-control[readonly] { | |
21 | cursor: text; | |
22 | } | |
23 | .feedback-container { | |
24 | position: fixed; | |
25 | top: 0; | |
26 | width: 100%; | |
27 | text-align: center; | |
28 | z-index: 4; | |
29 | } | |
30 | .feedback { | |
31 | display: table; | |
32 | padding: 0.5em 1em; | |
33 | background-color: orange; | |
34 | margin: 0 auto; | |
35 | font-size: 2em; | |
36 | color: #444; | |
37 | border: 2px solid #555; | |
38 | border-top: 0; | |
39 | border-bottom-left-radius: 20px 20px; | |
40 | border-bottom-right-radius: 20px 20px; | |
41 | } | |
d5dc92fd IC |
42 | .no-border { |
43 | border: 0; | |
44 | box-shadow: inset 0 1px 1px rgba(0,0,0,.0); | |
45 | -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0); | |
46 | } | |
0515eeec IC |
47 | .phrase { |
48 | word-break: keep-all; | |
49 | } | |
2a6dd137 | 50 | .generate-container .strength { |
b0818b31 IC |
51 | /* override mobile width from bootstrap */ |
52 | width: auto!important; | |
53 | display: inline-block; | |
54 | } | |
ea87f1d3 | 55 | .languages a { |
0515eeec IC |
56 | padding-left: 10px; |
57 | } | |
ea87f1d3 IC |
58 | .languages a:nth-of-type(1) { |
59 | margin-left: -12px; | |
60 | padding-left: 0; | |
61 | } | |
d737abf6 IC |
62 | .monospace { |
63 | font-family: monospace; | |
64 | } | |
2a6dd137 IC |
65 | .entropy-container .filtered, |
66 | .entropy-container .binary { | |
67 | word-wrap: break-word; | |
68 | } | |
69 | .entropy-container li { | |
70 | padding-bottom: 5px; | |
71 | } | |
72 | .card-suit { | |
73 | font-size: 19px; | |
74 | line-height: 0; | |
75 | } | |
76 | .card-suit.club { | |
77 | color: #009F00; | |
78 | } | |
79 | .card-suit.diamond { | |
80 | color: #3D5DC4; | |
81 | } | |
82 | .card-suit.heart { | |
83 | color: #F00; | |
84 | } | |
85 | .card-suit.spade { | |
86 | color: #000; | |
87 | } | |
e00964cc IC |
88 | .qr-container { |
89 | position: fixed; | |
90 | top: 0; | |
91 | right: 0; | |
92 | text-align: center; | |
93 | background-color: #FFF; | |
94 | border: 1px solid #CCC; | |
95 | } | |
96 | .qr-image { | |
97 | margin: 5px; | |
98 | } | |
52da415f IC |
99 | .qr-hint, |
100 | .qr-warning { | |
e00964cc | 101 | padding: 2px; |
52da415f IC |
102 | max-width: 150px; |
103 | } | |
104 | .more-info { | |
105 | cursor: help; | |
106 | border-bottom: 1px dashed #000; | |
107 | text-decoration: none; | |
e00964cc | 108 | } |
ab78acc6 IC |
109 | </style> |
110 | </head> | |
111 | <body> | |
112 | <div class="container"> | |
3af2954a | 113 | |
ab78acc6 IC |
114 | <h1 class="text-center">Mnemonic Code Converter</h1> |
115 | <hr> | |
116 | <div class="row"> | |
117 | <div class="col-md-12"> | |
118 | <h2>Mnemonic</h2> | |
119 | <form class="form-horizontal" role="form"> | |
ab78acc6 | 120 | <div class="form-group"> |
c6624d51 IC |
121 | <div class="col-sm-2"></div> |
122 | <div class="col-sm-10"> | |
ea87f1d3 IC |
123 | <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> |
124 | <p data-translate-html> | |
125 | For more info see the | |
126 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>. | |
127 | </p> | |
c6624d51 IC |
128 | </div> |
129 | </div> | |
130 | <div class="form-group generate-container"> | |
b0818b31 | 131 | <label class="col-sm-2 control-label"></label> |
ab78acc6 | 132 | <div class="col-sm-10"> |
b0818b31 IC |
133 | <div class="form-inline"> |
134 | <div class="input-group-inline"> | |
ea87f1d3 | 135 | <span data-translate>Generate a random mnemonic, or enter your own below</span>: |
b0818b31 | 136 | <button class="btn generate">Generate</button> |
b0818b31 IC |
137 | <select id="strength" class="strength form-control"> |
138 | <option value="3">3</option> | |
139 | <option value="6">6</option> | |
140 | <option value="9">9</option> | |
141 | <option value="12">12</option> | |
142 | <option value="15" selected>15</option> | |
143 | <option value="18">18</option> | |
144 | <option value="21">21</option> | |
145 | <option value="24">24</option> | |
146 | </select> | |
ea87f1d3 | 147 | <span data-translate>words</span> |
b0818b31 IC |
148 | </div> |
149 | </div> | |
ab78acc6 | 150 | </div> |
0515eeec | 151 | </div> |
c6624d51 | 152 | <div class="entropy-container hidden"> |
2a6dd137 | 153 | <div class="form-group text-danger"> |
ea87f1d3 | 154 | <label class="col-sm-2 control-label" data-translate>Warning</label> |
2a6dd137 | 155 | <div class="col-sm-10 form-control-static"> |
ea87f1d3 IC |
156 | <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span> |
157 | <a href="#entropy-notes" data-translate>Read more</a> | |
18abe53b IC |
158 | </div> |
159 | </div> | |
2a6dd137 | 160 | <div class="form-group"> |
ea87f1d3 | 161 | <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label> |
2a6dd137 | 162 | <div class="col-sm-7"> |
ea87f1d3 | 163 | <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> |
95f04905 | 164 | <div class="row"> |
ea87f1d3 | 165 | <label class="col-sm-3 control-label" data-translate>Strength</label> |
95f04905 | 166 | <div class="strength col-sm-3 form-control-static"></div> |
ea87f1d3 | 167 | <label class="col-sm-3 control-label" data-translate>Event Count</label> |
95f04905 IC |
168 | <div class="event-count col-sm-3 form-control-static"></div> |
169 | </div> | |
170 | <div class="row"> | |
ea87f1d3 | 171 | <label class="col-sm-3 control-label" data-translate>Entropy Type</label> |
95f04905 | 172 | <div class="type col-sm-3 form-control-static"></div> |
ea87f1d3 | 173 | <label class="col-sm-3 control-label" data-translate>Bits Per Event</label> |
95f04905 IC |
174 | <div class="bits-per-event col-sm-3 form-control-static"></div> |
175 | </div> | |
176 | <div class="row"> | |
ea87f1d3 | 177 | <label class="col-sm-3 control-label" data-translate>Word Count</label> |
95f04905 | 178 | <div class="word-count col-sm-3 form-control-static"></div> |
52da415f | 179 | <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> |
95f04905 IC |
180 | <div class="bits col-sm-3 form-control-static"></div> |
181 | </div> | |
ea87f1d3 | 182 | <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label> |
2a6dd137 | 183 | <div class="filtered col-sm-9 form-control-static"></div> |
ea87f1d3 | 184 | <label class="col-sm-3 control-label" data-translate>Raw Binary</label> |
2a6dd137 | 185 | <div class="binary col-sm-9 form-control-static"></div> |
ea87f1d3 | 186 | <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label> |
2a6dd137 | 187 | <div class="col-sm-9"> |
18abe53b | 188 | <select class="mnemonic-length form-control"> |
ea87f1d3 IC |
189 | <option value="raw" data-translate>From entropy length (3 words per 32 bits)</option> |
190 | <option value="12">12 <span data-translate>Words</span></option> | |
191 | <option value="15" selected>15 <span data-translate>Words</option> | |
192 | <option value="18">18 <span data-translate>Words</span></option> | |
193 | <option value="21">21 <span data-translate>Words</span></option> | |
194 | <option value="24">24 <span data-translate>Words</span></option> | |
18abe53b | 195 | </select> |
c6624d51 | 196 | </div> |
18abe53b | 197 | </div> |
2a6dd137 | 198 | <div class="col-sm-3"> |
ea87f1d3 | 199 | <p data-translate>Valid entropy values include:</p> |
2a6dd137 | 200 | <ul> |
ea87f1d3 IC |
201 | <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li> |
202 | <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li> | |
203 | <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li> | |
204 | <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li> | |
205 | <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li> | |
206 | <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li> | |
2a6dd137 IC |
207 | </ul> |
208 | </div> | |
c6624d51 IC |
209 | </div> |
210 | </div> | |
211 | <div class="form-group"> | |
212 | <div class="col-sm-2"></div> | |
213 | <div class="col-sm-10 checkbox"> | |
214 | <label> | |
215 | <input type="checkbox" class="use-entropy"> | |
ea87f1d3 | 216 | <span data-translate>Supply my own source of entropy</span> |
c6624d51 IC |
217 | </label> |
218 | </div> | |
219 | </div> | |
220 | <div class="form-group"> | |
ea87f1d3 | 221 | <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label> |
0515eeec | 222 | <div class="col-sm-10 languages"> |
ea87f1d3 IC |
223 | <div class="form-control no-border"> |
224 | <a href="#english">English</a> | |
225 | <a href="#japanese" title="Japanese">日本語</a> | |
226 | <a href="#spanish" title="Spanish">Español</a> | |
227 | <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a> | |
228 | <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a> | |
229 | <a href="#french" title="French">Français</a> | |
230 | <a href="#italian" title="Italian">Italiano</a> | |
231 | </div> | |
0515eeec | 232 | </div> |
ab78acc6 IC |
233 | </div> |
234 | <div class="form-group"> | |
ea87f1d3 | 235 | <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label> |
ab78acc6 | 236 | <div class="col-sm-10"> |
e00964cc | 237 | <textarea id="phrase" class="phrase form-control" data-show-qr></textarea> |
ab78acc6 IC |
238 | </div> |
239 | </div> | |
240 | <div class="form-group"> | |
ea87f1d3 | 241 | <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label> |
ab78acc6 IC |
242 | <div class="col-sm-10"> |
243 | <textarea id="passphrase" class="passphrase form-control"></textarea> | |
244 | </div> | |
245 | </div> | |
73161a92 | 246 | <div class="form-group"> |
ea87f1d3 | 247 | <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label> |
73161a92 | 248 | <div class="col-sm-10"> |
e00964cc | 249 | <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea> |
73161a92 IC |
250 | </div> |
251 | </div> | |
ab78acc6 | 252 | <div class="form-group"> |
ea87f1d3 | 253 | <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label> |
ab78acc6 IC |
254 | <div class="col-sm-10"> |
255 | <select id="network-phrase" class="network form-control"> | |
256 | <!-- populated by javascript --> | |
257 | </select> | |
258 | </div> | |
259 | </div> | |
260 | <div class="form-group"> | |
ea87f1d3 | 261 | <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label> |
ab78acc6 | 262 | <div class="col-sm-10"> |
e00964cc | 263 | <textarea id="root-key" class="root-key form-control" data-show-qr></textarea> |
ab78acc6 IC |
264 | </div> |
265 | </div> | |
266 | </form> | |
267 | </div> | |
268 | </div> | |
3af2954a | 269 | |
ab78acc6 | 270 | <hr> |
3af2954a | 271 | |
ab78acc6 IC |
272 | <div class="row"> |
273 | <div class="col-md-12"> | |
274 | <h2>Derivation Path</h2> | |
275 | <ul class="derivation-type nav nav-tabs" role="tablist"> | |
d5dc92fd | 276 | <li id="bip44-tab" class="active"> |
ab78acc6 IC |
277 | <a href="#bip44" role="tab" data-toggle="tab">BIP44</a> |
278 | </li> | |
279 | <li id="bip32-tab"> | |
280 | <a href="#bip32" role="tab" data-toggle="tab">BIP32</a> | |
281 | </li> | |
282 | </ul> | |
283 | <div class="derivation-type tab-content"> | |
d5dc92fd | 284 | <div id="bip44" class="tab-pane active"> |
ab78acc6 IC |
285 | <form class="form-horizontal" role="form"> |
286 | <br> | |
287 | <div class="col-sm-2"></div> | |
288 | <div class="col-sm-10"> | |
ea87f1d3 IC |
289 | <p data-translate-html> |
290 | For more info see the | |
291 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>. | |
292 | </p> | |
ab78acc6 IC |
293 | </div> |
294 | <div class="form-group"> | |
295 | <label for="purpose" class="col-sm-2 control-label"> | |
ea87f1d3 | 296 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a> |
ab78acc6 IC |
297 | </label> |
298 | <div class="col-sm-10"> | |
299 | <input id="purpose" type="text" class="purpose form-control" value="44"> | |
300 | </div> | |
301 | </div> | |
302 | <div class="form-group"> | |
303 | <label for="coin" class="col-sm-2 control-label"> | |
ea87f1d3 | 304 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a> |
ab78acc6 IC |
305 | </label> |
306 | <div class="col-sm-10"> | |
307 | <input id="coin" type="text" class="coin form-control" value="0"> | |
308 | </div> | |
309 | </div> | |
310 | <div class="form-group"> | |
311 | <label for="account" class="col-sm-2 control-label"> | |
ea87f1d3 | 312 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a> |
ab78acc6 IC |
313 | </label> |
314 | <div class="col-sm-10"> | |
315 | <input id="account" type="text" class="account form-control" value="0"> | |
316 | </div> | |
317 | </div> | |
318 | <div class="form-group"> | |
319 | <label for="change" class="col-sm-2 control-label"> | |
ea87f1d3 | 320 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a> |
ab78acc6 IC |
321 | </label> |
322 | <div class="col-sm-10"> | |
323 | <input id="change" type="text" class="change form-control" value="0"> | |
324 | </div> | |
325 | </div> | |
20083ab9 IC |
326 | <div class="form-group"> |
327 | <label class="col-sm-2 control-label"> | |
328 | </label> | |
329 | <div class="col-sm-10"> | |
f3bfd2a5 | 330 | <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p> |
20083ab9 IC |
331 | </div> |
332 | </div> | |
333 | <div class="form-group"> | |
334 | <label for="account-xprv" class="col-sm-2 control-label"> | |
335 | <span data-translate>Account Extended Private Key</span> | |
336 | </label> | |
337 | <div class="col-sm-10"> | |
338 | <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea> | |
339 | </div> | |
340 | </div> | |
341 | <div class="form-group"> | |
342 | <label for="account-xpub" class="col-sm-2 control-label"> | |
343 | <span data-translate>Account Extended Public Key</span> | |
344 | </label> | |
345 | <div class="col-sm-10"> | |
346 | <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea> | |
347 | </div> | |
348 | </div> | |
349 | <div class="form-group"> | |
350 | <label class="col-sm-2 control-label"> | |
351 | </label> | |
352 | <div class="col-sm-10"> | |
353 | <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p> | |
354 | </div> | |
355 | </div> | |
ab78acc6 | 356 | <div class="form-group"> |
ea87f1d3 | 357 | <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label> |
ab78acc6 IC |
358 | <div class="col-sm-10"> |
359 | <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly"> | |
360 | </div> | |
361 | </div> | |
362 | </form> | |
363 | </div> | |
364 | <div id="bip32" class="tab-pane"> | |
365 | <form class="form-horizontal" role="form"> | |
366 | <br> | |
367 | <div class="col-sm-2"></div> | |
368 | <div class="col-sm-10"> | |
ea87f1d3 IC |
369 | <p data-translate> |
370 | For more info see the | |
371 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a> | |
372 | </p> | |
ab78acc6 IC |
373 | </div> |
374 | <div class="form-group"> | |
ea87f1d3 | 375 | <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label> |
ab78acc6 IC |
376 | <div class="col-sm-10"> |
377 | <input id="bip32-path" type="text" class="path form-control" value="m/0"> | |
378 | </div> | |
379 | </div> | |
1975bfbc IC |
380 | <div class="form-group"> |
381 | <div class="col-sm-2"></div> | |
382 | <label class="col-sm-10"> | |
383 | <input class="hardened-addresses" type="checkbox"> | |
ea87f1d3 | 384 | <span data-translate>Use hardened addresses</span> |
1975bfbc IC |
385 | </label> |
386 | </div> | |
1975bfbc | 387 | <div class="form-group"> |
ea87f1d3 | 388 | <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label> |
1975bfbc | 389 | <div class="col-sm-10"> |
ea87f1d3 | 390 | <p class="form-control no-border" data-translate-html> |
1975bfbc | 391 | Use path <code>m/0'/0'</code> with hardened addresses. |
c866242d | 392 | </p> |
ea87f1d3 IC |
393 | <p class="form-control no-border" data-translate-html> |
394 | For more info see the | |
395 | <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a> | |
1975bfbc IC |
396 | </p> |
397 | </div> | |
398 | </div> | |
aa51da11 | 399 | <div class="form-group"> |
ea87f1d3 | 400 | <label class="col-sm-2 control-label" data-translate>Block Explorers</label> |
aa51da11 IC |
401 | <div class="col-sm-10"> |
402 | <p class="form-control no-border"> | |
ea87f1d3 IC |
403 | <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span> |
404 | <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span> | |
c866242d IC |
405 | </p> |
406 | <p class="form-control no-border"> | |
ea87f1d3 IC |
407 | <span data-translate>Can be used with</span>: |
408 | <a href="https://blockchain.info/" target="_blank">blockchain.info</a> | |
aa51da11 IC |
409 | </p> |
410 | </div> | |
411 | </div> | |
ab78acc6 IC |
412 | </form> |
413 | </div> | |
414 | </div> | |
415 | <form class="form-horizontal" role="form"> | |
416 | <div class="form-group"> | |
20083ab9 | 417 | <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label> |
ab78acc6 | 418 | <div class="col-sm-10"> |
e00964cc | 419 | <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea> |
ab78acc6 IC |
420 | </div> |
421 | </div> | |
422 | <div class="form-group"> | |
20083ab9 | 423 | <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label> |
ab78acc6 | 424 | <div class="col-sm-10"> |
e00964cc | 425 | <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea> |
ab78acc6 IC |
426 | </div> |
427 | </div> | |
428 | </form> | |
429 | </div> | |
430 | </div> | |
3af2954a | 431 | |
ab78acc6 | 432 | <hr> |
3af2954a | 433 | |
ab78acc6 IC |
434 | <div class="row"> |
435 | <div class="col-md-12"> | |
436 | <h2>Derived Addresses</h2> | |
ea87f1d3 | 437 | <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p> |
ab78acc6 IC |
438 | <table class="table table-striped"> |
439 | <thead> | |
440 | <th> | |
441 | <div class="input-group"> | |
ea87f1d3 IC |
442 | <span data-translate>Path</span> |
443 | <button class="index-toggle" data-translate>Toggle</button> | |
ab78acc6 IC |
444 | </div> |
445 | </th> | |
446 | <th> | |
447 | <div class="input-group"> | |
ea87f1d3 IC |
448 | <span data-translate>Address</span> |
449 | <button class="address-toggle" data-translate>Toggle</button> | |
ab78acc6 IC |
450 | </div> |
451 | </th> | |
1b12b2f5 IC |
452 | <th> |
453 | <div class="input-group"> | |
ea87f1d3 IC |
454 | <span data-translate>Public Key</span> |
455 | <button class="public-key-toggle" data-translate>Toggle</button> | |
1b12b2f5 IC |
456 | </div> |
457 | </th> | |
ab78acc6 IC |
458 | <th> |
459 | <div class="input-group"> | |
ea87f1d3 IC |
460 | <span data-translate>Private Key</span> |
461 | <button class="private-key-toggle" data-translate>Toggle</button> | |
ab78acc6 IC |
462 | </div> |
463 | </th> | |
464 | </thead> | |
d737abf6 | 465 | <tbody class="addresses monospace"> |
c866242d IC |
466 | <tr><td> </td><td> </td><td> </td><td> </td></tr> |
467 | <tr><td> </td><td> </td><td> </td><td> </td></tr> | |
468 | <tr><td> </td><td> </td><td> </td><td> </td></tr> | |
469 | <tr><td> </td><td> </td><td> </td><td> </td></tr> | |
470 | <tr><td> </td><td> </td><td> </td><td> </td></tr> | |
ab78acc6 IC |
471 | </tbody> |
472 | </table> | |
473 | </div> | |
474 | </div> | |
ea87f1d3 | 475 | <span data-translate>Show more rows</span>: |
ab78acc6 | 476 | <input type="number" class="rows-to-add" value="20"> |
ea87f1d3 | 477 | <button class="more" data-translate>Show</button> |
3af2954a | 478 | |
ab78acc6 | 479 | <hr> |
3af2954a | 480 | |
ab78acc6 IC |
481 | <div class="row"> |
482 | <div class="col-md-12"> | |
ea87f1d3 IC |
483 | <h2 data-translate>More info</h2> |
484 | <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3> | |
485 | <p data-translate-html> | |
ab78acc6 IC |
486 | Read more at the |
487 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a> | |
488 | </p> | |
ea87f1d3 IC |
489 | <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3> |
490 | <p data-translate-html> | |
ab78acc6 IC |
491 | Read more at the |
492 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a> | |
ea87f1d3 IC |
493 | </p> |
494 | <p data-translate-html> | |
495 | See the demo at | |
ab78acc6 IC |
496 | <a href="http://bip32.org/" target="_blank">bip32.org</a> |
497 | </p> | |
ea87f1d3 IC |
498 | <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3> |
499 | <p data-translate-html> | |
ab78acc6 IC |
500 | Read more at the |
501 | <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a> | |
502 | </p> | |
ea87f1d3 | 503 | <h3 data-translate>Private Keys</h3> |
ab78acc6 | 504 | <p> |
ea87f1d3 IC |
505 | <span data-translate-html> |
506 | Use private keys at | |
507 | <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>. | |
508 | </span> | |
509 | <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span> | |
ab78acc6 | 510 | </p> |
ea87f1d3 | 511 | <h3 id="entropy-notes" data-translate>Entropy</h3> |
c6624d51 | 512 | <p> |
ea87f1d3 IC |
513 | <span data-translate-html> |
514 | Entropy values must be sourced from a | |
515 | <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>. | |
516 | </span> | |
517 | <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span> | |
518 | <span data-translate-html> | |
519 | Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, | |
520 | keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't | |
521 | random enough for the needs of this tool. | |
522 | </span> | |
c6624d51 | 523 | </p> |
434caecd IC |
524 | <p> |
525 | <strong><span data-translate>Do not store entropy.</span></strong> | |
526 | </p> | |
527 | <p> | |
528 | <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> | |
529 | <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span> | |
530 | <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> | |
531 | </p> | |
c6624d51 | 532 | <p> |
ea87f1d3 IC |
533 | <span data-translate-html> |
534 | The random mnemonic generator on this page uses a | |
535 | <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>. | |
536 | </span> | |
537 | <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span> | |
538 | <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> | |
539 | <span data-translate>In that case you might choose to use your own source of entropy.</span> | |
c6624d51 IC |
540 | </p> |
541 | <p> | |
ea87f1d3 | 542 | <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a> |
c6624d51 | 543 | </p> |
52da415f IC |
544 | <h3 data-translate>License</h3> |
545 | <p> | |
546 | <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. | |
547 | </span> | |
548 | </p> | |
549 | <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> | |
ab78acc6 IC |
550 | </div> |
551 | </div> | |
3af2954a | 552 | |
ab78acc6 | 553 | <hr> |
3af2954a | 554 | |
ab78acc6 IC |
555 | <div class="row"> |
556 | <div class="col-md-12"> | |
3af2954a | 557 | |
ea87f1d3 | 558 | <h2 data-translate>Offline Usage</h2> |
3af2954a | 559 | |
ea87f1d3 | 560 | <p data-translate> |
ab78acc6 IC |
561 | You can use this tool without having to be online. |
562 | </p> | |
ea87f1d3 | 563 | <p data-translate> |
ab78acc6 IC |
564 | In your browser, select file save-as, and save this page |
565 | as a file. | |
566 | </p> | |
ea87f1d3 | 567 | <p data-translate> |
ab78acc6 IC |
568 | Double-click that file to open it in a browser |
569 | on any offline computer. | |
570 | </p> | |
571 | <p> | |
ea87f1d3 IC |
572 | <span data-translate>Alternatively, download the file from the repository</span> |
573 | - | |
574 | <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a> | |
575 | </p> | |
3af2954a | 576 | |
ab78acc6 IC |
577 | </div> |
578 | </div> | |
3af2954a | 579 | |
ab78acc6 | 580 | <hr> |
3af2954a | 581 | |
ab78acc6 IC |
582 | <div class="row"> |
583 | <div class="col-md-12"> | |
3af2954a | 584 | |
ea87f1d3 | 585 | <h2 data-translate>This project is 100% open-source code</h2> |
3af2954a | 586 | |
ab78acc6 | 587 | <p> |
ea87f1d3 IC |
588 | <span data-translate>Get the source code from the repository</span> |
589 | - | |
b630f83d IC |
590 | <a href="https://github.com/iancoleman/bip39" target="_blank"> |
591 | https://github.com/iancoleman/bip39 | |
ab78acc6 IC |
592 | </a> |
593 | </p> | |
3af2954a | 594 | |
ea87f1d3 | 595 | <h3 data-translate>Libraries</h3> |
3af2954a | 596 | |
ab78acc6 IC |
597 | <p> |
598 | <span>BitcoinJS - </span> | |
599 | <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank"> | |
600 | https://github.com/bitcoinjs/bitcoinjs-lib | |
601 | </a> | |
602 | </p> | |
3af2954a | 603 | |
ab78acc6 IC |
604 | <p> |
605 | <span>jsBIP39 - </span> | |
606 | <a href="https://github.com/iancoleman/jsbip39" target="_blank"> | |
607 | https://github.com/iancoleman/jsbip39 | |
608 | </a> | |
609 | </p> | |
3af2954a | 610 | |
ab78acc6 IC |
611 | <p> |
612 | <span>sjcl - </span> | |
613 | <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank"> | |
614 | https://github.com/bitwiseshiftleft/sjcl | |
615 | </a> | |
616 | </p> | |
3af2954a | 617 | |
ab78acc6 IC |
618 | <p> |
619 | <span>jQuery - </span> | |
620 | <a href="https://jquery.com/" target="_blank"> | |
621 | https://jquery.com/ | |
622 | </a> | |
623 | </p> | |
3af2954a | 624 | |
ab78acc6 IC |
625 | <p> |
626 | <span>Twitter Bootstrap - </span> | |
627 | <a href="http://getbootstrap.com/" target="_blank"> | |
628 | http://getbootstrap.com/ | |
629 | </a> | |
630 | </p> | |
3af2954a | 631 | |
ab78acc6 IC |
632 | </div> |
633 | </div> | |
3af2954a | 634 | |
ab78acc6 | 635 | </div> |
3af2954a | 636 | |
e00964cc | 637 | <div class="qr-container hidden"> |
52da415f IC |
638 | <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div> |
639 | <div class="qr-hint bg-primary" data-translate>Click field to show QR</div> | |
640 | <div class="qr-hider hidden"> | |
641 | <div class="qr-image"></div> | |
642 | <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div> | |
643 | </div> | |
e00964cc IC |
644 | </div> |
645 | ||
ab78acc6 IC |
646 | <div class="feedback-container"> |
647 | <div class="feedback">Loading...</div> | |
648 | </div> | |
3af2954a | 649 | |
ab78acc6 IC |
650 | <script type="text/template" id="address-row-template"> |
651 | <tr> | |
652 | <td class="index"><span></span></td> | |
e00964cc IC |
653 | <td class="address"><span data-show-qr></span></td> |
654 | <td class="pubkey"><span data-show-qr></span></td> | |
655 | <td class="privkey"><span data-show-qr></span></td> | |
ab78acc6 IC |
656 | </tr> |
657 | </script> | |
658 | <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ | |
659 | !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) | |
660 | },_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)) | |
661 | },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}); | |
662 | </script> | |
663 | <script>/*! | |
664 | * Bootstrap v3.2.0 (http://getbootstrap.com) | |
3af2954a IC |
665 | * Copyright 2011-2014 Twitter, Inc. |
666 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | |
ab78acc6 IC |
667 | */ |
668 | 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> | |
563e401a IC |
669 | <script>(function() { |
670 | 'use strict'; | |
671 | ||
672 | /** | |
673 | * Extend an Object with another Object's properties. | |
674 | * | |
675 | * The source objects are specified as additional arguments. | |
676 | * | |
677 | * @param dst Object the object to extend. | |
678 | * | |
679 | * @return Object the final object. | |
680 | */ | |
681 | var _extend = function(dst) { | |
682 | var sources = Array.prototype.slice.call(arguments, 1); | |
683 | for (var i=0; i<sources.length; ++i) { | |
684 | var src = sources[i]; | |
685 | for (var p in src) { | |
686 | if (src.hasOwnProperty(p)) dst[p] = src[p]; | |
687 | } | |
688 | } | |
689 | return dst; | |
690 | }; | |
691 | ||
692 | ||
693 | /** | |
694 | * Defer execution of given function. | |
695 | * @param {Function} func | |
696 | */ | |
697 | var _defer = function(func) { | |
698 | if (typeof setImmediate === 'function') { | |
699 | return setImmediate(func); | |
700 | } else { | |
701 | return setTimeout(func, 0); | |
702 | } | |
703 | }; | |
704 | ||
705 | /** | |
706 | * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance. | |
707 | */ | |
708 | var Levenshtein = { | |
709 | /** | |
710 | * Calculate levenshtein distance of the two strings. | |
711 | * | |
712 | * @param str1 String the first string. | |
713 | * @param str2 String the second string. | |
714 | * @return Integer the levenshtein distance (0 and above). | |
715 | */ | |
716 | get: function(str1, str2) { | |
717 | // base cases | |
718 | if (str1 === str2) return 0; | |
719 | if (str1.length === 0) return str2.length; | |
720 | if (str2.length === 0) return str1.length; | |
721 | ||
722 | // two rows | |
723 | var prevRow = new Array(str2.length + 1), | |
724 | curCol, nextCol, i, j, tmp; | |
725 | ||
726 | // initialise previous row | |
727 | for (i=0; i<prevRow.length; ++i) { | |
728 | prevRow[i] = i; | |
729 | } | |
730 | ||
731 | // calculate current row distance from previous row | |
732 | for (i=0; i<str1.length; ++i) { | |
733 | nextCol = i + 1; | |
734 | ||
735 | for (j=0; j<str2.length; ++j) { | |
736 | curCol = nextCol; | |
737 | ||
738 | // substution | |
739 | nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 ); | |
740 | // insertion | |
741 | tmp = curCol + 1; | |
742 | if (nextCol > tmp) { | |
743 | nextCol = tmp; | |
744 | } | |
745 | // deletion | |
746 | tmp = prevRow[j + 1] + 1; | |
747 | if (nextCol > tmp) { | |
748 | nextCol = tmp; | |
749 | } | |
750 | ||
751 | // copy current col value into previous (in preparation for next iteration) | |
752 | prevRow[j] = curCol; | |
753 | } | |
754 | ||
755 | // copy last col value into previous (in preparation for next iteration) | |
756 | prevRow[j] = nextCol; | |
757 | } | |
758 | ||
759 | return nextCol; | |
760 | }, | |
761 | ||
762 | /** | |
763 | * Asynchronously calculate levenshtein distance of the two strings. | |
764 | * | |
765 | * @param str1 String the first string. | |
766 | * @param str2 String the second string. | |
767 | * @param cb Function callback function with signature: function(Error err, int distance) | |
768 | * @param [options] Object additional options. | |
769 | * @param [options.progress] Function progress callback with signature: function(percentComplete) | |
770 | */ | |
771 | getAsync: function(str1, str2, cb, options) { | |
772 | options = _extend({}, { | |
773 | progress: null | |
774 | }, options); | |
775 | ||
776 | // base cases | |
777 | if (str1 === str2) return cb(null, 0); | |
778 | if (str1.length === 0) return cb(null, str2.length); | |
779 | if (str2.length === 0) return cb(null, str1.length); | |
780 | ||
781 | // two rows | |
782 | var prevRow = new Array(str2.length + 1), | |
783 | curCol, nextCol, | |
784 | i, j, tmp, | |
785 | startTime, currentTime; | |
786 | ||
787 | // initialise previous row | |
788 | for (i=0; i<prevRow.length; ++i) { | |
789 | prevRow[i] = i; | |
790 | } | |
791 | ||
792 | nextCol = 1; | |
793 | i = 0; | |
794 | j = -1; | |
795 | ||
796 | var __calculate = function() { | |
797 | // reset timer | |
798 | startTime = new Date().valueOf(); | |
799 | currentTime = startTime; | |
800 | ||
801 | // keep going until one second has elapsed | |
802 | while (currentTime - startTime < 1000) { | |
803 | // reached end of current row? | |
804 | if (str2.length <= (++j)) { | |
805 | // copy current into previous (in preparation for next iteration) | |
806 | prevRow[j] = nextCol; | |
807 | ||
808 | // if already done all chars | |
809 | if (str1.length <= (++i)) { | |
810 | return cb(null, nextCol); | |
811 | } | |
812 | // else if we have more left to do | |
813 | else { | |
814 | nextCol = i + 1; | |
815 | j = 0; | |
816 | } | |
817 | } | |
818 | ||
819 | // calculation | |
820 | curCol = nextCol; | |
821 | ||
822 | // substution | |
823 | nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 ); | |
824 | // insertion | |
825 | tmp = curCol + 1; | |
826 | if (nextCol > tmp) { | |
827 | nextCol = tmp; | |
828 | } | |
829 | // deletion | |
830 | tmp = prevRow[j + 1] + 1; | |
831 | if (nextCol > tmp) { | |
832 | nextCol = tmp; | |
833 | } | |
834 | ||
835 | // copy current into previous (in preparation for next iteration) | |
836 | prevRow[j] = curCol; | |
837 | ||
838 | // get current time | |
839 | currentTime = new Date().valueOf(); | |
840 | } | |
841 | ||
842 | // send a progress update? | |
843 | if (null !== options.progress) { | |
844 | try { | |
845 | options.progress.call(null, (i * 100.0/ str1.length)); | |
846 | } catch (err) { | |
847 | return cb('Progress callback: ' + err.toString()); | |
848 | } | |
849 | } | |
850 | ||
851 | // next iteration | |
852 | _defer(__calculate); | |
853 | }; | |
854 | ||
855 | __calculate(); | |
856 | } | |
857 | ||
858 | }; | |
859 | ||
860 | // amd | |
861 | if (typeof define !== "undefined" && define !== null && define.amd) { | |
862 | define(function() { | |
863 | return Levenshtein; | |
864 | }); | |
865 | } | |
866 | // commonjs | |
867 | else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) { | |
868 | module.exports = Levenshtein; | |
869 | } | |
870 | // web worker | |
871 | else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') { | |
872 | self.Levenshtein = Levenshtein; | |
873 | } | |
874 | // browser main thread | |
875 | else if (typeof window !== "undefined" && window !== null) { | |
876 | window.Levenshtein = Levenshtein; | |
877 | } | |
878 | }()); | |
879 | ||
e00964cc IC |
880 | </script> |
881 | <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}, | |
882 | 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; | |
883 | 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- | |
884 | 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]= | |
885 | 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}, | |
886 | 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= | |
887 | 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- | |
888 | 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, | |
889 | 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= | |
890 | 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&& | |
891 | (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, | |
892 | 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)- | |
893 | 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:"+ | |
894 | 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:"+ | |
895 | 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+ | |
896 | 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), | |
897 | 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> | |
898 | 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], | |
899 | [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, | |
900 | 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, | |
901 | 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, | |
902 | 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, | |
903 | 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, | |
904 | 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* | |
905 | (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, | |
906 | 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), | |
907 | 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", | |
908 | d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($); | |
563e401a | 909 | </script> |
ab78acc6 IC |
910 | <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.bitcoin = 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){ |
911 | // (public) Constructor | |
912 | function BigInteger(a, b, c) { | |
913 | if (!(this instanceof BigInteger)) | |
914 | return new BigInteger(a, b, c) | |
3af2954a | 915 | |
ab78acc6 IC |
916 | if (a != null) { |
917 | if ("number" == typeof a) this.fromNumber(a, b, c) | |
918 | else if (b == null && "string" != typeof a) this.fromString(a, 256) | |
919 | else this.fromString(a, b) | |
920 | } | |
921 | } | |
3af2954a | 922 | |
ab78acc6 | 923 | var proto = BigInteger.prototype |
3af2954a | 924 | |
ab78acc6 IC |
925 | // duck-typed isBigInteger |
926 | proto.__bigi = require('../package.json').version | |
927 | BigInteger.isBigInteger = function (obj, check_ver) { | |
928 | return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi) | |
929 | } | |
3af2954a | 930 | |
ab78acc6 IC |
931 | // Bits per digit |
932 | var dbits | |
3af2954a | 933 | |
ab78acc6 IC |
934 | // am: Compute w_j += (x*this_i), propagate carries, |
935 | // c is initial carry, returns final carry. | |
936 | // c < 3*dvalue, x < 2*dvalue, this_i < dvalue | |
937 | // We need to select the fastest one that works in this environment. | |
3af2954a | 938 | |
ab78acc6 IC |
939 | // am1: use a single mult and divide to get the high bits, |
940 | // max digit bits should be 26 because | |
941 | // max internal value = 2*dvalue^2-2*dvalue (< 2^53) | |
942 | function am1(i, x, w, j, c, n) { | |
943 | while (--n >= 0) { | |
944 | var v = x * this[i++] + w[j] + c | |
945 | c = Math.floor(v / 0x4000000) | |
946 | w[j++] = v & 0x3ffffff | |
3af2954a | 947 | } |
ab78acc6 IC |
948 | return c |
949 | } | |
950 | // am2 avoids a big mult-and-extract completely. | |
951 | // Max digit bits should be <= 30 because we do bitwise ops | |
952 | // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) | |
953 | function am2(i, x, w, j, c, n) { | |
954 | var xl = x & 0x7fff, | |
955 | xh = x >> 15 | |
956 | while (--n >= 0) { | |
957 | var l = this[i] & 0x7fff | |
958 | var h = this[i++] >> 15 | |
959 | var m = xh * l + h * xl | |
960 | l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff) | |
961 | c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30) | |
962 | w[j++] = l & 0x3fffffff | |
963 | } | |
964 | return c | |
965 | } | |
966 | // Alternately, set max digit bits to 28 since some | |
967 | // browsers slow down when dealing with 32-bit numbers. | |
968 | function am3(i, x, w, j, c, n) { | |
969 | var xl = x & 0x3fff, | |
970 | xh = x >> 14 | |
971 | while (--n >= 0) { | |
972 | var l = this[i] & 0x3fff | |
973 | var h = this[i++] >> 14 | |
974 | var m = xh * l + h * xl | |
975 | l = xl * l + ((m & 0x3fff) << 14) + w[j] + c | |
976 | c = (l >> 28) + (m >> 14) + xh * h | |
977 | w[j++] = l & 0xfffffff | |
3af2954a | 978 | } |
ab78acc6 IC |
979 | return c |
980 | } | |
3af2954a | 981 | |
ab78acc6 IC |
982 | // wtf? |
983 | BigInteger.prototype.am = am1 | |
984 | dbits = 26 | |
3af2954a | 985 | |
ab78acc6 IC |
986 | BigInteger.prototype.DB = dbits |
987 | BigInteger.prototype.DM = ((1 << dbits) - 1) | |
988 | var DV = BigInteger.prototype.DV = (1 << dbits) | |
3af2954a | 989 | |
ab78acc6 IC |
990 | var BI_FP = 52 |
991 | BigInteger.prototype.FV = Math.pow(2, BI_FP) | |
992 | BigInteger.prototype.F1 = BI_FP - dbits | |
993 | BigInteger.prototype.F2 = 2 * dbits - BI_FP | |
3af2954a | 994 | |
ab78acc6 IC |
995 | // Digit conversions |
996 | var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz" | |
997 | var BI_RC = new Array() | |
998 | var rr, vv | |
999 | rr = "0".charCodeAt(0) | |
1000 | for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv | |
1001 | rr = "a".charCodeAt(0) | |
1002 | for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv | |
1003 | rr = "A".charCodeAt(0) | |
1004 | for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv | |
3af2954a | 1005 | |
ab78acc6 IC |
1006 | function int2char(n) { |
1007 | return BI_RM.charAt(n) | |
1008 | } | |
3af2954a | 1009 | |
ab78acc6 IC |
1010 | function intAt(s, i) { |
1011 | var c = BI_RC[s.charCodeAt(i)] | |
1012 | return (c == null) ? -1 : c | |
1013 | } | |
3af2954a | 1014 | |
ab78acc6 IC |
1015 | // (protected) copy this to r |
1016 | function bnpCopyTo(r) { | |
1017 | for (var i = this.t - 1; i >= 0; --i) r[i] = this[i] | |
1018 | r.t = this.t | |
1019 | r.s = this.s | |
1020 | } | |
3af2954a | 1021 | |
ab78acc6 IC |
1022 | // (protected) set from integer value x, -DV <= x < DV |
1023 | function bnpFromInt(x) { | |
1024 | this.t = 1 | |
1025 | this.s = (x < 0) ? -1 : 0 | |
1026 | if (x > 0) this[0] = x | |
1027 | else if (x < -1) this[0] = x + DV | |
1028 | else this.t = 0 | |
1029 | } | |
3af2954a | 1030 | |
ab78acc6 IC |
1031 | // return bigint initialized to value |
1032 | function nbv(i) { | |
1033 | var r = new BigInteger() | |
1034 | r.fromInt(i) | |
1035 | return r | |
1036 | } | |
3af2954a | 1037 | |
ab78acc6 IC |
1038 | // (protected) set from string and radix |
1039 | function bnpFromString(s, b) { | |
1040 | var self = this | |
3af2954a | 1041 | |
ab78acc6 IC |
1042 | var k |
1043 | if (b == 16) k = 4 | |
1044 | else if (b == 8) k = 3 | |
1045 | else if (b == 256) k = 8; // byte array | |
1046 | else if (b == 2) k = 1 | |
1047 | else if (b == 32) k = 5 | |
1048 | else if (b == 4) k = 2 | |
1049 | else { | |
1050 | self.fromRadix(s, b) | |
1051 | return | |
1052 | } | |
1053 | self.t = 0 | |
1054 | self.s = 0 | |
1055 | var i = s.length, | |
1056 | mi = false, | |
1057 | sh = 0 | |
1058 | while (--i >= 0) { | |
1059 | var x = (k == 8) ? s[i] & 0xff : intAt(s, i) | |
1060 | if (x < 0) { | |
1061 | if (s.charAt(i) == "-") mi = true | |
1062 | continue | |
1063 | } | |
1064 | mi = false | |
1065 | if (sh == 0) | |
1066 | self[self.t++] = x | |
1067 | else if (sh + k > self.DB) { | |
1068 | self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh | |
1069 | self[self.t++] = (x >> (self.DB - sh)) | |
1070 | } else | |
1071 | self[self.t - 1] |= x << sh | |
1072 | sh += k | |
1073 | if (sh >= self.DB) sh -= self.DB | |
1074 | } | |
1075 | if (k == 8 && (s[0] & 0x80) != 0) { | |
1076 | self.s = -1 | |
1077 | if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh | |
1078 | } | |
1079 | self.clamp() | |
1080 | if (mi) BigInteger.ZERO.subTo(self, self) | |
1081 | } | |
3af2954a | 1082 | |
ab78acc6 IC |
1083 | // (protected) clamp off excess high words |
1084 | function bnpClamp() { | |
1085 | var c = this.s & this.DM | |
1086 | while (this.t > 0 && this[this.t - 1] == c)--this.t | |
1087 | } | |
3af2954a | 1088 | |
ab78acc6 IC |
1089 | // (public) return string representation in given radix |
1090 | function bnToString(b) { | |
1091 | var self = this | |
1092 | if (self.s < 0) return "-" + self.negate() | |
1093 | .toString(b) | |
1094 | var k | |
1095 | if (b == 16) k = 4 | |
1096 | else if (b == 8) k = 3 | |
1097 | else if (b == 2) k = 1 | |
1098 | else if (b == 32) k = 5 | |
1099 | else if (b == 4) k = 2 | |
1100 | else return self.toRadix(b) | |
1101 | var km = (1 << k) - 1, | |
1102 | d, m = false, | |
1103 | r = "", | |
1104 | i = self.t | |
1105 | var p = self.DB - (i * self.DB) % k | |
1106 | if (i-- > 0) { | |
1107 | if (p < self.DB && (d = self[i] >> p) > 0) { | |
1108 | m = true | |
1109 | r = int2char(d) | |
1110 | } | |
1111 | while (i >= 0) { | |
1112 | if (p < k) { | |
1113 | d = (self[i] & ((1 << p) - 1)) << (k - p) | |
1114 | d |= self[--i] >> (p += self.DB - k) | |
1115 | } else { | |
1116 | d = (self[i] >> (p -= k)) & km | |
1117 | if (p <= 0) { | |
1118 | p += self.DB | |
1119 | --i | |
1120 | } | |
1121 | } | |
1122 | if (d > 0) m = true | |
1123 | if (m) r += int2char(d) | |
3af2954a | 1124 | } |
3af2954a | 1125 | } |
ab78acc6 IC |
1126 | return m ? r : "0" |
1127 | } | |
3af2954a | 1128 | |
ab78acc6 IC |
1129 | // (public) -this |
1130 | function bnNegate() { | |
1131 | var r = new BigInteger() | |
1132 | BigInteger.ZERO.subTo(this, r) | |
1133 | return r | |
1134 | } | |
3af2954a | 1135 | |
ab78acc6 IC |
1136 | // (public) |this| |
1137 | function bnAbs() { | |
1138 | return (this.s < 0) ? this.negate() : this | |
1139 | } | |
3af2954a | 1140 | |
ab78acc6 IC |
1141 | // (public) return + if this > a, - if this < a, 0 if equal |
1142 | function bnCompareTo(a) { | |
1143 | var r = this.s - a.s | |
1144 | if (r != 0) return r | |
1145 | var i = this.t | |
1146 | r = i - a.t | |
1147 | if (r != 0) return (this.s < 0) ? -r : r | |
1148 | while (--i >= 0) | |
1149 | if ((r = this[i] - a[i]) != 0) return r | |
1150 | return 0 | |
1151 | } | |
3af2954a | 1152 | |
ab78acc6 IC |
1153 | // returns bit length of the integer x |
1154 | function nbits(x) { | |
1155 | var r = 1, | |
1156 | t | |
1157 | if ((t = x >>> 16) != 0) { | |
1158 | x = t | |
1159 | r += 16 | |
1160 | } | |
1161 | if ((t = x >> 8) != 0) { | |
1162 | x = t | |
1163 | r += 8 | |
1164 | } | |
1165 | if ((t = x >> 4) != 0) { | |
1166 | x = t | |
1167 | r += 4 | |
1168 | } | |
1169 | if ((t = x >> 2) != 0) { | |
1170 | x = t | |
1171 | r += 2 | |
3af2954a | 1172 | } |
ab78acc6 IC |
1173 | if ((t = x >> 1) != 0) { |
1174 | x = t | |
1175 | r += 1 | |
1176 | } | |
1177 | return r | |
1178 | } | |
1179 | ||
1180 | // (public) return the number of bits in "this" | |
1181 | function bnBitLength() { | |
1182 | if (this.t <= 0) return 0 | |
1183 | return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM)) | |
1184 | } | |
3af2954a | 1185 | |
ab78acc6 IC |
1186 | // (public) return the number of bytes in "this" |
1187 | function bnByteLength() { | |
1188 | return this.bitLength() >> 3 | |
1189 | } | |
3af2954a | 1190 | |
ab78acc6 IC |
1191 | // (protected) r = this << n*DB |
1192 | function bnpDLShiftTo(n, r) { | |
1193 | var i | |
1194 | for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i] | |
1195 | for (i = n - 1; i >= 0; --i) r[i] = 0 | |
1196 | r.t = this.t + n | |
1197 | r.s = this.s | |
1198 | } | |
3af2954a | 1199 | |
ab78acc6 IC |
1200 | // (protected) r = this >> n*DB |
1201 | function bnpDRShiftTo(n, r) { | |
1202 | for (var i = n; i < this.t; ++i) r[i - n] = this[i] | |
1203 | r.t = Math.max(this.t - n, 0) | |
1204 | r.s = this.s | |
1205 | } | |
3af2954a | 1206 | |
ab78acc6 IC |
1207 | // (protected) r = this << n |
1208 | function bnpLShiftTo(n, r) { | |
1209 | var self = this | |
1210 | var bs = n % self.DB | |
1211 | var cbs = self.DB - bs | |
1212 | var bm = (1 << cbs) - 1 | |
1213 | var ds = Math.floor(n / self.DB), | |
1214 | c = (self.s << bs) & self.DM, | |
1215 | i | |
1216 | for (i = self.t - 1; i >= 0; --i) { | |
1217 | r[i + ds + 1] = (self[i] >> cbs) | c | |
1218 | c = (self[i] & bm) << bs | |
1219 | } | |
1220 | for (i = ds - 1; i >= 0; --i) r[i] = 0 | |
1221 | r[ds] = c | |
1222 | r.t = self.t + ds + 1 | |
1223 | r.s = self.s | |
1224 | r.clamp() | |
1225 | } | |
3af2954a | 1226 | |
ab78acc6 IC |
1227 | // (protected) r = this >> n |
1228 | function bnpRShiftTo(n, r) { | |
1229 | var self = this | |
1230 | r.s = self.s | |
1231 | var ds = Math.floor(n / self.DB) | |
1232 | if (ds >= self.t) { | |
1233 | r.t = 0 | |
1234 | return | |
3af2954a | 1235 | } |
ab78acc6 IC |
1236 | var bs = n % self.DB |
1237 | var cbs = self.DB - bs | |
1238 | var bm = (1 << bs) - 1 | |
1239 | r[0] = self[ds] >> bs | |
1240 | for (var i = ds + 1; i < self.t; ++i) { | |
1241 | r[i - ds - 1] |= (self[i] & bm) << cbs | |
1242 | r[i - ds] = self[i] >> bs | |
1243 | } | |
1244 | if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs | |
1245 | r.t = self.t - ds | |
1246 | r.clamp() | |
1247 | } | |
3af2954a | 1248 | |
ab78acc6 IC |
1249 | // (protected) r = this - a |
1250 | function bnpSubTo(a, r) { | |
1251 | var self = this | |
1252 | var i = 0, | |
1253 | c = 0, | |
1254 | m = Math.min(a.t, self.t) | |
1255 | while (i < m) { | |
1256 | c += self[i] - a[i] | |
1257 | r[i++] = c & self.DM | |
1258 | c >>= self.DB | |
1259 | } | |
1260 | if (a.t < self.t) { | |
1261 | c -= a.s | |
1262 | while (i < self.t) { | |
1263 | c += self[i] | |
1264 | r[i++] = c & self.DM | |
1265 | c >>= self.DB | |
1266 | } | |
1267 | c += self.s | |
1268 | } else { | |
1269 | c += self.s | |
1270 | while (i < a.t) { | |
1271 | c -= a[i] | |
1272 | r[i++] = c & self.DM | |
1273 | c >>= self.DB | |
1274 | } | |
1275 | c -= a.s | |
1276 | } | |
1277 | r.s = (c < 0) ? -1 : 0 | |
1278 | if (c < -1) r[i++] = self.DV + c | |
1279 | else if (c > 0) r[i++] = c | |
1280 | r.t = i | |
1281 | r.clamp() | |
1282 | } | |
3af2954a | 1283 | |
ab78acc6 IC |
1284 | // (protected) r = this * a, r != this,a (HAC 14.12) |
1285 | // "this" should be the larger one if appropriate. | |
1286 | function bnpMultiplyTo(a, r) { | |
1287 | var x = this.abs(), | |
1288 | y = a.abs() | |
1289 | var i = x.t | |
1290 | r.t = i + y.t | |
1291 | while (--i >= 0) r[i] = 0 | |
1292 | for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t) | |
1293 | r.s = 0 | |
1294 | r.clamp() | |
1295 | if (this.s != a.s) BigInteger.ZERO.subTo(r, r) | |
1296 | } | |
3af2954a | 1297 | |
ab78acc6 IC |
1298 | // (protected) r = this^2, r != this (HAC 14.16) |
1299 | function bnpSquareTo(r) { | |
1300 | var x = this.abs() | |
1301 | var i = r.t = 2 * x.t | |
1302 | while (--i >= 0) r[i] = 0 | |
1303 | for (i = 0; i < x.t - 1; ++i) { | |
1304 | var c = x.am(i, x[i], r, 2 * i, 0, 1) | |
1305 | if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) { | |
1306 | r[i + x.t] -= x.DV | |
1307 | r[i + x.t + 1] = 1 | |
1308 | } | |
1309 | } | |
1310 | if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1) | |
1311 | r.s = 0 | |
1312 | r.clamp() | |
1313 | } | |
3af2954a | 1314 | |
ab78acc6 IC |
1315 | // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) |
1316 | // r != q, this != m. q or r may be null. | |
1317 | function bnpDivRemTo(m, q, r) { | |
1318 | var self = this | |
1319 | var pm = m.abs() | |
1320 | if (pm.t <= 0) return | |
1321 | var pt = self.abs() | |
1322 | if (pt.t < pm.t) { | |
1323 | if (q != null) q.fromInt(0) | |
1324 | if (r != null) self.copyTo(r) | |
1325 | return | |
1326 | } | |
1327 | if (r == null) r = new BigInteger() | |
1328 | var y = new BigInteger(), | |
1329 | ts = self.s, | |
1330 | ms = m.s | |
1331 | var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus | |
1332 | if (nsh > 0) { | |
1333 | pm.lShiftTo(nsh, y) | |
1334 | pt.lShiftTo(nsh, r) | |
1335 | } else { | |
1336 | pm.copyTo(y) | |
1337 | pt.copyTo(r) | |
1338 | } | |
1339 | var ys = y.t | |
1340 | var y0 = y[ys - 1] | |
1341 | if (y0 == 0) return | |
1342 | var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0) | |
1343 | var d1 = self.FV / yt, | |
1344 | d2 = (1 << self.F1) / yt, | |
1345 | e = 1 << self.F2 | |
1346 | var i = r.t, | |
1347 | j = i - ys, | |
1348 | t = (q == null) ? new BigInteger() : q | |
1349 | y.dlShiftTo(j, t) | |
1350 | if (r.compareTo(t) >= 0) { | |
1351 | r[r.t++] = 1 | |
1352 | r.subTo(t, r) | |
1353 | } | |
1354 | BigInteger.ONE.dlShiftTo(ys, t) | |
1355 | t.subTo(y, y); // "negative" y so we can replace sub with am later | |
1356 | while (y.t < ys) y[y.t++] = 0 | |
1357 | while (--j >= 0) { | |
1358 | // Estimate quotient digit | |
1359 | var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2) | |
1360 | if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out | |
1361 | y.dlShiftTo(j, t) | |
1362 | r.subTo(t, r) | |
1363 | while (r[i] < --qd) r.subTo(t, r) | |
3af2954a | 1364 | } |
ab78acc6 IC |
1365 | } |
1366 | if (q != null) { | |
1367 | r.drShiftTo(ys, q) | |
1368 | if (ts != ms) BigInteger.ZERO.subTo(q, q) | |
1369 | } | |
1370 | r.t = ys | |
1371 | r.clamp() | |
1372 | if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder | |
1373 | if (ts < 0) BigInteger.ZERO.subTo(r, r) | |
1374 | } | |
3af2954a | 1375 | |
ab78acc6 IC |
1376 | // (public) this mod a |
1377 | function bnMod(a) { | |
1378 | var r = new BigInteger() | |
1379 | this.abs() | |
1380 | .divRemTo(a, null, r) | |
1381 | if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r) | |
1382 | return r | |
1383 | } | |
3af2954a | 1384 | |
ab78acc6 IC |
1385 | // Modular reduction using "classic" algorithm |
1386 | function Classic(m) { | |
1387 | this.m = m | |
1388 | } | |
3af2954a | 1389 | |
ab78acc6 IC |
1390 | function cConvert(x) { |
1391 | if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m) | |
1392 | else return x | |
1393 | } | |
1394 | ||
1395 | function cRevert(x) { | |
1396 | return x | |
1397 | } | |
3af2954a | 1398 | |
ab78acc6 IC |
1399 | function cReduce(x) { |
1400 | x.divRemTo(this.m, null, x) | |
1401 | } | |
3af2954a | 1402 | |
ab78acc6 IC |
1403 | function cMulTo(x, y, r) { |
1404 | x.multiplyTo(y, r) | |
1405 | this.reduce(r) | |
1406 | } | |
3af2954a | 1407 | |
ab78acc6 IC |
1408 | function cSqrTo(x, r) { |
1409 | x.squareTo(r) | |
1410 | this.reduce(r) | |
1411 | } | |
3af2954a | 1412 | |
ab78acc6 IC |
1413 | Classic.prototype.convert = cConvert |
1414 | Classic.prototype.revert = cRevert | |
1415 | Classic.prototype.reduce = cReduce | |
1416 | Classic.prototype.mulTo = cMulTo | |
1417 | Classic.prototype.sqrTo = cSqrTo | |
3af2954a | 1418 | |
ab78acc6 IC |
1419 | // (protected) return "-1/this % 2^DB"; useful for Mont. reduction |
1420 | // justification: | |
1421 | // xy == 1 (mod m) | |
1422 | // xy = 1+km | |
1423 | // xy(2-xy) = (1+km)(1-km) | |
1424 | // x[y(2-xy)] = 1-k^2m^2 | |
1425 | // x[y(2-xy)] == 1 (mod m^2) | |
1426 | // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 | |
1427 | // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. | |
1428 | // JS multiply "overflows" differently from C/C++, so care is needed here. | |
1429 | function bnpInvDigit() { | |
1430 | if (this.t < 1) return 0 | |
1431 | var x = this[0] | |
1432 | if ((x & 1) == 0) return 0 | |
1433 | var y = x & 3; // y == 1/x mod 2^2 | |
1434 | y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4 | |
1435 | y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8 | |
1436 | y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16 | |
1437 | // last step - calculate inverse mod DV directly | |
1438 | // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints | |
1439 | y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits | |
1440 | // we really want the negative inverse, and -DV < y < DV | |
1441 | return (y > 0) ? this.DV - y : -y | |
1442 | } | |
3af2954a | 1443 | |
ab78acc6 IC |
1444 | // Montgomery reduction |
1445 | function Montgomery(m) { | |
1446 | this.m = m | |
1447 | this.mp = m.invDigit() | |
1448 | this.mpl = this.mp & 0x7fff | |
1449 | this.mph = this.mp >> 15 | |
1450 | this.um = (1 << (m.DB - 15)) - 1 | |
1451 | this.mt2 = 2 * m.t | |
1452 | } | |
3af2954a | 1453 | |
ab78acc6 IC |
1454 | // xR mod m |
1455 | function montConvert(x) { | |
1456 | var r = new BigInteger() | |
1457 | x.abs() | |
1458 | .dlShiftTo(this.m.t, r) | |
1459 | r.divRemTo(this.m, null, r) | |
1460 | if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r) | |
1461 | return r | |
1462 | } | |
3af2954a | 1463 | |
ab78acc6 IC |
1464 | // x/R mod m |
1465 | function montRevert(x) { | |
1466 | var r = new BigInteger() | |
1467 | x.copyTo(r) | |
1468 | this.reduce(r) | |
1469 | return r | |
1470 | } | |
3af2954a | 1471 | |
ab78acc6 IC |
1472 | // x = x/R mod m (HAC 14.32) |
1473 | function montReduce(x) { | |
1474 | while (x.t <= this.mt2) // pad x so am has enough room later | |
1475 | x[x.t++] = 0 | |
1476 | for (var i = 0; i < this.m.t; ++i) { | |
1477 | // faster way of calculating u0 = x[i]*mp mod DV | |
1478 | var j = x[i] & 0x7fff | |
1479 | var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM | |
1480 | // use am to combine the multiply-shift-add into one call | |
1481 | j = i + this.m.t | |
1482 | x[j] += this.m.am(0, u0, x, i, 0, this.m.t) | |
1483 | // propagate carry | |
1484 | while (x[j] >= x.DV) { | |
1485 | x[j] -= x.DV | |
1486 | x[++j]++ | |
1487 | } | |
1488 | } | |
1489 | x.clamp() | |
1490 | x.drShiftTo(this.m.t, x) | |
1491 | if (x.compareTo(this.m) >= 0) x.subTo(this.m, x) | |
1492 | } | |
3af2954a | 1493 | |
ab78acc6 IC |
1494 | // r = "x^2/R mod m"; x != r |
1495 | function montSqrTo(x, r) { | |
1496 | x.squareTo(r) | |
1497 | this.reduce(r) | |
1498 | } | |
3af2954a | 1499 | |
ab78acc6 IC |
1500 | // r = "xy/R mod m"; x,y != r |
1501 | function montMulTo(x, y, r) { | |
1502 | x.multiplyTo(y, r) | |
1503 | this.reduce(r) | |
1504 | } | |
3af2954a | 1505 | |
ab78acc6 IC |
1506 | Montgomery.prototype.convert = montConvert |
1507 | Montgomery.prototype.revert = montRevert | |
1508 | Montgomery.prototype.reduce = montReduce | |
1509 | Montgomery.prototype.mulTo = montMulTo | |
1510 | Montgomery.prototype.sqrTo = montSqrTo | |
3af2954a | 1511 | |
ab78acc6 IC |
1512 | // (protected) true iff this is even |
1513 | function bnpIsEven() { | |
1514 | return ((this.t > 0) ? (this[0] & 1) : this.s) == 0 | |
1515 | } | |
3af2954a | 1516 | |
ab78acc6 IC |
1517 | // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) |
1518 | function bnpExp(e, z) { | |
1519 | if (e > 0xffffffff || e < 1) return BigInteger.ONE | |
1520 | var r = new BigInteger(), | |
1521 | r2 = new BigInteger(), | |
1522 | g = z.convert(this), | |
1523 | i = nbits(e) - 1 | |
1524 | g.copyTo(r) | |
1525 | while (--i >= 0) { | |
1526 | z.sqrTo(r, r2) | |
1527 | if ((e & (1 << i)) > 0) z.mulTo(r2, g, r) | |
1528 | else { | |
1529 | var t = r | |
1530 | r = r2 | |
1531 | r2 = t | |
3af2954a | 1532 | } |
3af2954a | 1533 | } |
ab78acc6 IC |
1534 | return z.revert(r) |
1535 | } | |
3af2954a | 1536 | |
ab78acc6 IC |
1537 | // (public) this^e % m, 0 <= e < 2^32 |
1538 | function bnModPowInt(e, m) { | |
1539 | var z | |
1540 | if (e < 256 || m.isEven()) z = new Classic(m) | |
1541 | else z = new Montgomery(m) | |
1542 | return this.exp(e, z) | |
1543 | } | |
3af2954a | 1544 | |
ab78acc6 IC |
1545 | // protected |
1546 | proto.copyTo = bnpCopyTo | |
1547 | proto.fromInt = bnpFromInt | |
1548 | proto.fromString = bnpFromString | |
1549 | proto.clamp = bnpClamp | |
1550 | proto.dlShiftTo = bnpDLShiftTo | |
1551 | proto.drShiftTo = bnpDRShiftTo | |
1552 | proto.lShiftTo = bnpLShiftTo | |
1553 | proto.rShiftTo = bnpRShiftTo | |
1554 | proto.subTo = bnpSubTo | |
1555 | proto.multiplyTo = bnpMultiplyTo | |
1556 | proto.squareTo = bnpSquareTo | |
1557 | proto.divRemTo = bnpDivRemTo | |
1558 | proto.invDigit = bnpInvDigit | |
1559 | proto.isEven = bnpIsEven | |
1560 | proto.exp = bnpExp | |
3af2954a | 1561 | |
ab78acc6 IC |
1562 | // public |
1563 | proto.toString = bnToString | |
1564 | proto.negate = bnNegate | |
1565 | proto.abs = bnAbs | |
1566 | proto.compareTo = bnCompareTo | |
1567 | proto.bitLength = bnBitLength | |
1568 | proto.byteLength = bnByteLength | |
1569 | proto.mod = bnMod | |
1570 | proto.modPowInt = bnModPowInt | |
3af2954a | 1571 | |
ab78acc6 IC |
1572 | // (public) |
1573 | function bnClone() { | |
1574 | var r = new BigInteger() | |
1575 | this.copyTo(r) | |
1576 | return r | |
1577 | } | |
3af2954a | 1578 | |
ab78acc6 IC |
1579 | // (public) return value as integer |
1580 | function bnIntValue() { | |
1581 | if (this.s < 0) { | |
1582 | if (this.t == 1) return this[0] - this.DV | |
1583 | else if (this.t == 0) return -1 | |
1584 | } else if (this.t == 1) return this[0] | |
1585 | else if (this.t == 0) return 0 | |
1586 | // assumes 16 < DB < 32 | |
1587 | return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0] | |
1588 | } | |
3af2954a | 1589 | |
ab78acc6 IC |
1590 | // (public) return value as byte |
1591 | function bnByteValue() { | |
1592 | return (this.t == 0) ? this.s : (this[0] << 24) >> 24 | |
1593 | } | |
3af2954a | 1594 | |
ab78acc6 IC |
1595 | // (public) return value as short (assumes DB>=16) |
1596 | function bnShortValue() { | |
1597 | return (this.t == 0) ? this.s : (this[0] << 16) >> 16 | |
1598 | } | |
3af2954a | 1599 | |
ab78acc6 IC |
1600 | // (protected) return x s.t. r^x < DV |
1601 | function bnpChunkSize(r) { | |
1602 | return Math.floor(Math.LN2 * this.DB / Math.log(r)) | |
1603 | } | |
3af2954a | 1604 | |
ab78acc6 IC |
1605 | // (public) 0 if this == 0, 1 if this > 0 |
1606 | function bnSigNum() { | |
1607 | if (this.s < 0) return -1 | |
1608 | else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0 | |
1609 | else return 1 | |
1610 | } | |
3af2954a | 1611 | |
ab78acc6 IC |
1612 | // (protected) convert to radix string |
1613 | function bnpToRadix(b) { | |
1614 | if (b == null) b = 10 | |
1615 | if (this.signum() == 0 || b < 2 || b > 36) return "0" | |
1616 | var cs = this.chunkSize(b) | |
1617 | var a = Math.pow(b, cs) | |
1618 | var d = nbv(a), | |
1619 | y = new BigInteger(), | |
1620 | z = new BigInteger(), | |
1621 | r = "" | |
1622 | this.divRemTo(d, y, z) | |
1623 | while (y.signum() > 0) { | |
1624 | r = (a + z.intValue()) | |
1625 | .toString(b) | |
1626 | .substr(1) + r | |
1627 | y.divRemTo(d, y, z) | |
1628 | } | |
1629 | return z.intValue() | |
1630 | .toString(b) + r | |
1631 | } | |
3af2954a | 1632 | |
ab78acc6 IC |
1633 | // (protected) convert from radix string |
1634 | function bnpFromRadix(s, b) { | |
1635 | var self = this | |
1636 | self.fromInt(0) | |
1637 | if (b == null) b = 10 | |
1638 | var cs = self.chunkSize(b) | |
1639 | var d = Math.pow(b, cs), | |
1640 | mi = false, | |
1641 | j = 0, | |
1642 | w = 0 | |
1643 | for (var i = 0; i < s.length; ++i) { | |
1644 | var x = intAt(s, i) | |
1645 | if (x < 0) { | |
1646 | if (s.charAt(i) == "-" && self.signum() == 0) mi = true | |
1647 | continue | |
1648 | } | |
1649 | w = b * w + x | |
1650 | if (++j >= cs) { | |
1651 | self.dMultiply(d) | |
1652 | self.dAddOffset(w, 0) | |
1653 | j = 0 | |
1654 | w = 0 | |
1655 | } | |
1656 | } | |
1657 | if (j > 0) { | |
1658 | self.dMultiply(Math.pow(b, j)) | |
1659 | self.dAddOffset(w, 0) | |
1660 | } | |
1661 | if (mi) BigInteger.ZERO.subTo(self, self) | |
1662 | } | |
3af2954a | 1663 | |
ab78acc6 IC |
1664 | // (protected) alternate constructor |
1665 | function bnpFromNumber(a, b, c) { | |
1666 | var self = this | |
1667 | if ("number" == typeof b) { | |
1668 | // new BigInteger(int,int,RNG) | |
1669 | if (a < 2) self.fromInt(1) | |
1670 | else { | |
1671 | self.fromNumber(a, c) | |
1672 | if (!self.testBit(a - 1)) // force MSB set | |
1673 | self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self) | |
1674 | if (self.isEven()) self.dAddOffset(1, 0); // force odd | |
1675 | while (!self.isProbablePrime(b)) { | |
1676 | self.dAddOffset(2, 0) | |
1677 | if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self) | |
1678 | } | |
1679 | } | |
1680 | } else { | |
1681 | // new BigInteger(int,RNG) | |
1682 | var x = new Array(), | |
1683 | t = a & 7 | |
1684 | x.length = (a >> 3) + 1 | |
1685 | b.nextBytes(x) | |
1686 | if (t > 0) x[0] &= ((1 << t) - 1) | |
1687 | else x[0] = 0 | |
1688 | self.fromString(x, 256) | |
3af2954a | 1689 | } |
ab78acc6 | 1690 | } |
3af2954a | 1691 | |
ab78acc6 IC |
1692 | // (public) convert to bigendian byte array |
1693 | function bnToByteArray() { | |
1694 | var self = this | |
1695 | var i = self.t, | |
1696 | r = new Array() | |
1697 | r[0] = self.s | |
1698 | var p = self.DB - (i * self.DB) % 8, | |
1699 | d, k = 0 | |
1700 | if (i-- > 0) { | |
1701 | if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p) | |
1702 | r[k++] = d | (self.s << (self.DB - p)) | |
1703 | while (i >= 0) { | |
1704 | if (p < 8) { | |
1705 | d = (self[i] & ((1 << p) - 1)) << (8 - p) | |
1706 | d |= self[--i] >> (p += self.DB - 8) | |
1707 | } else { | |
1708 | d = (self[i] >> (p -= 8)) & 0xff | |
1709 | if (p <= 0) { | |
1710 | p += self.DB | |
1711 | --i | |
1712 | } | |
1713 | } | |
1714 | if ((d & 0x80) != 0) d |= -256 | |
1715 | if (k === 0 && (self.s & 0x80) != (d & 0x80))++k | |
1716 | if (k > 0 || d != self.s) r[k++] = d | |
3af2954a | 1717 | } |
3af2954a | 1718 | } |
ab78acc6 IC |
1719 | return r |
1720 | } | |
3af2954a | 1721 | |
ab78acc6 IC |
1722 | function bnEquals(a) { |
1723 | return (this.compareTo(a) == 0) | |
1724 | } | |
3af2954a | 1725 | |
ab78acc6 IC |
1726 | function bnMin(a) { |
1727 | return (this.compareTo(a) < 0) ? this : a | |
1728 | } | |
3af2954a | 1729 | |
ab78acc6 IC |
1730 | function bnMax(a) { |
1731 | return (this.compareTo(a) > 0) ? this : a | |
1732 | } | |
3af2954a | 1733 | |
ab78acc6 IC |
1734 | // (protected) r = this op a (bitwise) |
1735 | function bnpBitwiseTo(a, op, r) { | |
1736 | var self = this | |
1737 | var i, f, m = Math.min(a.t, self.t) | |
1738 | for (i = 0; i < m; ++i) r[i] = op(self[i], a[i]) | |
1739 | if (a.t < self.t) { | |
1740 | f = a.s & self.DM | |
1741 | for (i = m; i < self.t; ++i) r[i] = op(self[i], f) | |
1742 | r.t = self.t | |
1743 | } else { | |
1744 | f = self.s & self.DM | |
1745 | for (i = m; i < a.t; ++i) r[i] = op(f, a[i]) | |
1746 | r.t = a.t | |
3af2954a | 1747 | } |
ab78acc6 IC |
1748 | r.s = op(self.s, a.s) |
1749 | r.clamp() | |
1750 | } | |
3af2954a | 1751 | |
ab78acc6 IC |
1752 | // (public) this & a |
1753 | function op_and(x, y) { | |
1754 | return x & y | |
1755 | } | |
3af2954a | 1756 | |
ab78acc6 IC |
1757 | function bnAnd(a) { |
1758 | var r = new BigInteger() | |
1759 | this.bitwiseTo(a, op_and, r) | |
1760 | return r | |
1761 | } | |
3af2954a | 1762 | |
ab78acc6 IC |
1763 | // (public) this | a |
1764 | function op_or(x, y) { | |
1765 | return x | y | |
1766 | } | |
3af2954a | 1767 | |
ab78acc6 IC |
1768 | function bnOr(a) { |
1769 | var r = new BigInteger() | |
1770 | this.bitwiseTo(a, op_or, r) | |
1771 | return r | |
1772 | } | |
3af2954a | 1773 | |
ab78acc6 IC |
1774 | // (public) this ^ a |
1775 | function op_xor(x, y) { | |
1776 | return x ^ y | |
1777 | } | |
3af2954a | 1778 | |
ab78acc6 IC |
1779 | function bnXor(a) { |
1780 | var r = new BigInteger() | |
1781 | this.bitwiseTo(a, op_xor, r) | |
1782 | return r | |
1783 | } | |
3af2954a | 1784 | |
ab78acc6 IC |
1785 | // (public) this & ~a |
1786 | function op_andnot(x, y) { | |
1787 | return x & ~y | |
1788 | } | |
3af2954a | 1789 | |
ab78acc6 IC |
1790 | function bnAndNot(a) { |
1791 | var r = new BigInteger() | |
1792 | this.bitwiseTo(a, op_andnot, r) | |
1793 | return r | |
1794 | } | |
3af2954a | 1795 | |
ab78acc6 IC |
1796 | // (public) ~this |
1797 | function bnNot() { | |
1798 | var r = new BigInteger() | |
1799 | for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i] | |
1800 | r.t = this.t | |
1801 | r.s = ~this.s | |
1802 | return r | |
1803 | } | |
3af2954a | 1804 | |
ab78acc6 IC |
1805 | // (public) this << n |
1806 | function bnShiftLeft(n) { | |
1807 | var r = new BigInteger() | |
1808 | if (n < 0) this.rShiftTo(-n, r) | |
1809 | else this.lShiftTo(n, r) | |
1810 | return r | |
1811 | } | |
3af2954a | 1812 | |
ab78acc6 IC |
1813 | // (public) this >> n |
1814 | function bnShiftRight(n) { | |
1815 | var r = new BigInteger() | |
1816 | if (n < 0) this.lShiftTo(-n, r) | |
1817 | else this.rShiftTo(n, r) | |
1818 | return r | |
1819 | } | |
3af2954a | 1820 | |
ab78acc6 IC |
1821 | // return index of lowest 1-bit in x, x < 2^31 |
1822 | function lbit(x) { | |
1823 | if (x == 0) return -1 | |
1824 | var r = 0 | |
1825 | if ((x & 0xffff) == 0) { | |
1826 | x >>= 16 | |
1827 | r += 16 | |
3af2954a | 1828 | } |
ab78acc6 IC |
1829 | if ((x & 0xff) == 0) { |
1830 | x >>= 8 | |
1831 | r += 8 | |
1832 | } | |
1833 | if ((x & 0xf) == 0) { | |
1834 | x >>= 4 | |
1835 | r += 4 | |
1836 | } | |
1837 | if ((x & 3) == 0) { | |
1838 | x >>= 2 | |
1839 | r += 2 | |
1840 | } | |
1841 | if ((x & 1) == 0)++r | |
1842 | return r | |
1843 | } | |
3af2954a | 1844 | |
ab78acc6 IC |
1845 | // (public) returns index of lowest 1-bit (or -1 if none) |
1846 | function bnGetLowestSetBit() { | |
1847 | for (var i = 0; i < this.t; ++i) | |
1848 | if (this[i] != 0) return i * this.DB + lbit(this[i]) | |
1849 | if (this.s < 0) return this.t * this.DB | |
1850 | return -1 | |
1851 | } | |
3af2954a | 1852 | |
ab78acc6 IC |
1853 | // return number of 1 bits in x |
1854 | function cbit(x) { | |
1855 | var r = 0 | |
1856 | while (x != 0) { | |
1857 | x &= x - 1 | |
1858 | ++r | |
3af2954a | 1859 | } |
ab78acc6 IC |
1860 | return r |
1861 | } | |
3af2954a | 1862 | |
ab78acc6 IC |
1863 | // (public) return number of set bits |
1864 | function bnBitCount() { | |
1865 | var r = 0, | |
1866 | x = this.s & this.DM | |
1867 | for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x) | |
1868 | return r | |
1869 | } | |
1870 | ||
1871 | // (public) true iff nth bit is set | |
1872 | function bnTestBit(n) { | |
1873 | var j = Math.floor(n / this.DB) | |
1874 | if (j >= this.t) return (this.s != 0) | |
1875 | return ((this[j] & (1 << (n % this.DB))) != 0) | |
1876 | } | |
3af2954a | 1877 | |
ab78acc6 IC |
1878 | // (protected) this op (1<<n) |
1879 | function bnpChangeBit(n, op) { | |
1880 | var r = BigInteger.ONE.shiftLeft(n) | |
1881 | this.bitwiseTo(r, op, r) | |
1882 | return r | |
1883 | } | |
3af2954a | 1884 | |
ab78acc6 IC |
1885 | // (public) this | (1<<n) |
1886 | function bnSetBit(n) { | |
1887 | return this.changeBit(n, op_or) | |
1888 | } | |
3af2954a | 1889 | |
ab78acc6 IC |
1890 | // (public) this & ~(1<<n) |
1891 | function bnClearBit(n) { | |
1892 | return this.changeBit(n, op_andnot) | |
1893 | } | |
3af2954a | 1894 | |
ab78acc6 IC |
1895 | // (public) this ^ (1<<n) |
1896 | function bnFlipBit(n) { | |
1897 | return this.changeBit(n, op_xor) | |
1898 | } | |
3af2954a | 1899 | |
ab78acc6 IC |
1900 | // (protected) r = this + a |
1901 | function bnpAddTo(a, r) { | |
1902 | var self = this | |
3af2954a | 1903 | |
ab78acc6 IC |
1904 | var i = 0, |
1905 | c = 0, | |
1906 | m = Math.min(a.t, self.t) | |
1907 | while (i < m) { | |
1908 | c += self[i] + a[i] | |
1909 | r[i++] = c & self.DM | |
1910 | c >>= self.DB | |
1911 | } | |
1912 | if (a.t < self.t) { | |
1913 | c += a.s | |
1914 | while (i < self.t) { | |
1915 | c += self[i] | |
1916 | r[i++] = c & self.DM | |
1917 | c >>= self.DB | |
1918 | } | |
1919 | c += self.s | |
1920 | } else { | |
1921 | c += self.s | |
1922 | while (i < a.t) { | |
1923 | c += a[i] | |
1924 | r[i++] = c & self.DM | |
1925 | c >>= self.DB | |
1926 | } | |
1927 | c += a.s | |
1928 | } | |
1929 | r.s = (c < 0) ? -1 : 0 | |
1930 | if (c > 0) r[i++] = c | |
1931 | else if (c < -1) r[i++] = self.DV + c | |
1932 | r.t = i | |
1933 | r.clamp() | |
1934 | } | |
3af2954a | 1935 | |
ab78acc6 IC |
1936 | // (public) this + a |
1937 | function bnAdd(a) { | |
1938 | var r = new BigInteger() | |
1939 | this.addTo(a, r) | |
1940 | return r | |
1941 | } | |
3af2954a | 1942 | |
ab78acc6 IC |
1943 | // (public) this - a |
1944 | function bnSubtract(a) { | |
1945 | var r = new BigInteger() | |
1946 | this.subTo(a, r) | |
1947 | return r | |
1948 | } | |
3af2954a | 1949 | |
ab78acc6 IC |
1950 | // (public) this * a |
1951 | function bnMultiply(a) { | |
1952 | var r = new BigInteger() | |
1953 | this.multiplyTo(a, r) | |
1954 | return r | |
1955 | } | |
3af2954a | 1956 | |
ab78acc6 IC |
1957 | // (public) this^2 |
1958 | function bnSquare() { | |
1959 | var r = new BigInteger() | |
1960 | this.squareTo(r) | |
1961 | return r | |
1962 | } | |
3af2954a | 1963 | |
ab78acc6 IC |
1964 | // (public) this / a |
1965 | function bnDivide(a) { | |
1966 | var r = new BigInteger() | |
1967 | this.divRemTo(a, r, null) | |
1968 | return r | |
1969 | } | |
3af2954a | 1970 | |
ab78acc6 IC |
1971 | // (public) this % a |
1972 | function bnRemainder(a) { | |
1973 | var r = new BigInteger() | |
1974 | this.divRemTo(a, null, r) | |
1975 | return r | |
1976 | } | |
3af2954a | 1977 | |
ab78acc6 IC |
1978 | // (public) [this/a,this%a] |
1979 | function bnDivideAndRemainder(a) { | |
1980 | var q = new BigInteger(), | |
1981 | r = new BigInteger() | |
1982 | this.divRemTo(a, q, r) | |
1983 | return new Array(q, r) | |
1984 | } | |
3af2954a | 1985 | |
ab78acc6 IC |
1986 | // (protected) this *= n, this >= 0, 1 < n < DV |
1987 | function bnpDMultiply(n) { | |
1988 | this[this.t] = this.am(0, n - 1, this, 0, 0, this.t) | |
1989 | ++this.t | |
1990 | this.clamp() | |
1991 | } | |
3af2954a | 1992 | |
ab78acc6 IC |
1993 | // (protected) this += n << w words, this >= 0 |
1994 | function bnpDAddOffset(n, w) { | |
1995 | if (n == 0) return | |
1996 | while (this.t <= w) this[this.t++] = 0 | |
1997 | this[w] += n | |
1998 | while (this[w] >= this.DV) { | |
1999 | this[w] -= this.DV | |
2000 | if (++w >= this.t) this[this.t++] = 0 | |
2001 | ++this[w] | |
3af2954a | 2002 | } |
ab78acc6 | 2003 | } |
3af2954a | 2004 | |
ab78acc6 IC |
2005 | // A "null" reducer |
2006 | function NullExp() {} | |
3af2954a | 2007 | |
ab78acc6 IC |
2008 | function nNop(x) { |
2009 | return x | |
2010 | } | |
3af2954a | 2011 | |
ab78acc6 IC |
2012 | function nMulTo(x, y, r) { |
2013 | x.multiplyTo(y, r) | |
2014 | } | |
3af2954a | 2015 | |
ab78acc6 IC |
2016 | function nSqrTo(x, r) { |
2017 | x.squareTo(r) | |
2018 | } | |
3af2954a | 2019 | |
ab78acc6 IC |
2020 | NullExp.prototype.convert = nNop |
2021 | NullExp.prototype.revert = nNop | |
2022 | NullExp.prototype.mulTo = nMulTo | |
2023 | NullExp.prototype.sqrTo = nSqrTo | |
3af2954a | 2024 | |
ab78acc6 IC |
2025 | // (public) this^e |
2026 | function bnPow(e) { | |
2027 | return this.exp(e, new NullExp()) | |
2028 | } | |
3af2954a | 2029 | |
ab78acc6 IC |
2030 | // (protected) r = lower n words of "this * a", a.t <= n |
2031 | // "this" should be the larger one if appropriate. | |
2032 | function bnpMultiplyLowerTo(a, n, r) { | |
2033 | var i = Math.min(this.t + a.t, n) | |
2034 | r.s = 0; // assumes a,this >= 0 | |
2035 | r.t = i | |
2036 | while (i > 0) r[--i] = 0 | |
2037 | var j | |
2038 | for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t) | |
2039 | for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i) | |
2040 | r.clamp() | |
2041 | } | |
3af2954a | 2042 | |
ab78acc6 IC |
2043 | // (protected) r = "this * a" without lower n words, n > 0 |
2044 | // "this" should be the larger one if appropriate. | |
2045 | function bnpMultiplyUpperTo(a, n, r) { | |
2046 | --n | |
2047 | var i = r.t = this.t + a.t - n | |
2048 | r.s = 0; // assumes a,this >= 0 | |
2049 | while (--i >= 0) r[i] = 0 | |
2050 | for (i = Math.max(n - this.t, 0); i < a.t; ++i) | |
2051 | r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n) | |
2052 | r.clamp() | |
2053 | r.drShiftTo(1, r) | |
2054 | } | |
3af2954a | 2055 | |
ab78acc6 IC |
2056 | // Barrett modular reduction |
2057 | function Barrett(m) { | |
2058 | // setup Barrett | |
2059 | this.r2 = new BigInteger() | |
2060 | this.q3 = new BigInteger() | |
2061 | BigInteger.ONE.dlShiftTo(2 * m.t, this.r2) | |
2062 | this.mu = this.r2.divide(m) | |
2063 | this.m = m | |
2064 | } | |
3af2954a | 2065 | |
ab78acc6 IC |
2066 | function barrettConvert(x) { |
2067 | if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m) | |
2068 | else if (x.compareTo(this.m) < 0) return x | |
2069 | else { | |
2070 | var r = new BigInteger() | |
2071 | x.copyTo(r) | |
2072 | this.reduce(r) | |
2073 | return r | |
3af2954a | 2074 | } |
ab78acc6 | 2075 | } |
3af2954a | 2076 | |
ab78acc6 IC |
2077 | function barrettRevert(x) { |
2078 | return x | |
2079 | } | |
3af2954a | 2080 | |
ab78acc6 IC |
2081 | // x = x mod m (HAC 14.42) |
2082 | function barrettReduce(x) { | |
2083 | var self = this | |
2084 | x.drShiftTo(self.m.t - 1, self.r2) | |
2085 | if (x.t > self.m.t + 1) { | |
2086 | x.t = self.m.t + 1 | |
2087 | x.clamp() | |
3af2954a | 2088 | } |
ab78acc6 IC |
2089 | self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3) |
2090 | self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2) | |
2091 | while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1) | |
2092 | x.subTo(self.r2, x) | |
2093 | while (x.compareTo(self.m) >= 0) x.subTo(self.m, x) | |
2094 | } | |
3af2954a | 2095 | |
ab78acc6 IC |
2096 | // r = x^2 mod m; x != r |
2097 | function barrettSqrTo(x, r) { | |
2098 | x.squareTo(r) | |
2099 | this.reduce(r) | |
2100 | } | |
3af2954a | 2101 | |
ab78acc6 IC |
2102 | // r = x*y mod m; x,y != r |
2103 | function barrettMulTo(x, y, r) { | |
2104 | x.multiplyTo(y, r) | |
2105 | this.reduce(r) | |
2106 | } | |
3af2954a | 2107 | |
ab78acc6 IC |
2108 | Barrett.prototype.convert = barrettConvert |
2109 | Barrett.prototype.revert = barrettRevert | |
2110 | Barrett.prototype.reduce = barrettReduce | |
2111 | Barrett.prototype.mulTo = barrettMulTo | |
2112 | Barrett.prototype.sqrTo = barrettSqrTo | |
3af2954a | 2113 | |
ab78acc6 IC |
2114 | // (public) this^e % m (HAC 14.85) |
2115 | function bnModPow(e, m) { | |
2116 | var i = e.bitLength(), | |
2117 | k, r = nbv(1), | |
2118 | z | |
2119 | if (i <= 0) return r | |
2120 | else if (i < 18) k = 1 | |
2121 | else if (i < 48) k = 3 | |
2122 | else if (i < 144) k = 4 | |
2123 | else if (i < 768) k = 5 | |
2124 | else k = 6 | |
2125 | if (i < 8) | |
2126 | z = new Classic(m) | |
2127 | else if (m.isEven()) | |
2128 | z = new Barrett(m) | |
2129 | else | |
2130 | z = new Montgomery(m) | |
3af2954a | 2131 | |
ab78acc6 IC |
2132 | // precomputation |
2133 | var g = new Array(), | |
2134 | n = 3, | |
2135 | k1 = k - 1, | |
2136 | km = (1 << k) - 1 | |
2137 | g[1] = z.convert(this) | |
2138 | if (k > 1) { | |
2139 | var g2 = new BigInteger() | |
2140 | z.sqrTo(g[1], g2) | |
2141 | while (n <= km) { | |
2142 | g[n] = new BigInteger() | |
2143 | z.mulTo(g2, g[n - 2], g[n]) | |
2144 | n += 2 | |
2145 | } | |
2146 | } | |
2147 | ||
2148 | var j = e.t - 1, | |
2149 | w, is1 = true, | |
2150 | r2 = new BigInteger(), | |
2151 | t | |
2152 | i = nbits(e[j]) - 1 | |
2153 | while (j >= 0) { | |
2154 | if (i >= k1) w = (e[j] >> (i - k1)) & km | |
2155 | else { | |
2156 | w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i) | |
2157 | if (j > 0) w |= e[j - 1] >> (this.DB + i - k1) | |
2158 | } | |
3af2954a | 2159 | |
ab78acc6 IC |
2160 | n = k |
2161 | while ((w & 1) == 0) { | |
2162 | w >>= 1 | |
2163 | --n | |
2164 | } | |
2165 | if ((i -= n) < 0) { | |
2166 | i += this.DB | |
2167 | --j | |
2168 | } | |
2169 | if (is1) { // ret == 1, don't bother squaring or multiplying it | |
2170 | g[w].copyTo(r) | |
2171 | is1 = false | |
2172 | } else { | |
2173 | while (n > 1) { | |
2174 | z.sqrTo(r, r2) | |
2175 | z.sqrTo(r2, r) | |
2176 | n -= 2 | |
2177 | } | |
2178 | if (n > 0) z.sqrTo(r, r2) | |
2179 | else { | |
2180 | t = r | |
2181 | r = r2 | |
2182 | r2 = t | |
2183 | } | |
2184 | z.mulTo(r2, g[w], r) | |
2185 | } | |
3af2954a | 2186 | |
ab78acc6 IC |
2187 | while (j >= 0 && (e[j] & (1 << i)) == 0) { |
2188 | z.sqrTo(r, r2) | |
2189 | t = r | |
2190 | r = r2 | |
2191 | r2 = t | |
2192 | if (--i < 0) { | |
2193 | i = this.DB - 1 | |
2194 | --j | |
3af2954a | 2195 | } |
3af2954a IC |
2196 | } |
2197 | } | |
ab78acc6 IC |
2198 | return z.revert(r) |
2199 | } | |
3af2954a | 2200 | |
ab78acc6 IC |
2201 | // (public) gcd(this,a) (HAC 14.54) |
2202 | function bnGCD(a) { | |
2203 | var x = (this.s < 0) ? this.negate() : this.clone() | |
2204 | var y = (a.s < 0) ? a.negate() : a.clone() | |
2205 | if (x.compareTo(y) < 0) { | |
2206 | var t = x | |
2207 | x = y | |
2208 | y = t | |
2209 | } | |
2210 | var i = x.getLowestSetBit(), | |
2211 | g = y.getLowestSetBit() | |
2212 | if (g < 0) return x | |
2213 | if (i < g) g = i | |
2214 | if (g > 0) { | |
2215 | x.rShiftTo(g, x) | |
2216 | y.rShiftTo(g, y) | |
2217 | } | |
2218 | while (x.signum() > 0) { | |
2219 | if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x) | |
2220 | if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y) | |
2221 | if (x.compareTo(y) >= 0) { | |
2222 | x.subTo(y, x) | |
2223 | x.rShiftTo(1, x) | |
2224 | } else { | |
2225 | y.subTo(x, y) | |
2226 | y.rShiftTo(1, y) | |
2227 | } | |
3af2954a | 2228 | } |
ab78acc6 IC |
2229 | if (g > 0) y.lShiftTo(g, y) |
2230 | return y | |
2231 | } | |
3af2954a | 2232 | |
ab78acc6 IC |
2233 | // (protected) this % n, n < 2^26 |
2234 | function bnpModInt(n) { | |
2235 | if (n <= 0) return 0 | |
2236 | var d = this.DV % n, | |
2237 | r = (this.s < 0) ? n - 1 : 0 | |
2238 | if (this.t > 0) | |
2239 | if (d == 0) r = this[0] % n | |
2240 | else | |
2241 | for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n | |
2242 | return r | |
2243 | } | |
3af2954a | 2244 | |
ab78acc6 IC |
2245 | // (public) 1/this % m (HAC 14.61) |
2246 | function bnModInverse(m) { | |
2247 | var ac = m.isEven() | |
2248 | if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO | |
2249 | var u = m.clone(), | |
2250 | v = this.clone() | |
2251 | var a = nbv(1), | |
2252 | b = nbv(0), | |
2253 | c = nbv(0), | |
2254 | d = nbv(1) | |
2255 | while (u.signum() != 0) { | |
2256 | while (u.isEven()) { | |
2257 | u.rShiftTo(1, u) | |
2258 | if (ac) { | |
2259 | if (!a.isEven() || !b.isEven()) { | |
2260 | a.addTo(this, a) | |
2261 | b.subTo(m, b) | |
2262 | } | |
2263 | a.rShiftTo(1, a) | |
2264 | } else if (!b.isEven()) b.subTo(m, b) | |
2265 | b.rShiftTo(1, b) | |
2266 | } | |
2267 | while (v.isEven()) { | |
2268 | v.rShiftTo(1, v) | |
2269 | if (ac) { | |
2270 | if (!c.isEven() || !d.isEven()) { | |
2271 | c.addTo(this, c) | |
2272 | d.subTo(m, d) | |
2273 | } | |
2274 | c.rShiftTo(1, c) | |
2275 | } else if (!d.isEven()) d.subTo(m, d) | |
2276 | d.rShiftTo(1, d) | |
2277 | } | |
2278 | if (u.compareTo(v) >= 0) { | |
2279 | u.subTo(v, u) | |
2280 | if (ac) a.subTo(c, a) | |
2281 | b.subTo(d, b) | |
2282 | } else { | |
2283 | v.subTo(u, v) | |
2284 | if (ac) c.subTo(a, c) | |
2285 | d.subTo(b, d) | |
2286 | } | |
2287 | } | |
2288 | if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO | |
2289 | if (d.compareTo(m) >= 0) return d.subtract(m) | |
2290 | if (d.signum() < 0) d.addTo(m, d) | |
2291 | else return d | |
2292 | if (d.signum() < 0) return d.add(m) | |
2293 | else return d | |
2294 | } | |
2295 | ||
2296 | var lowprimes = [ | |
2297 | 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, | |
2298 | 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, | |
2299 | 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, | |
2300 | 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, | |
2301 | 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, | |
2302 | 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, | |
2303 | 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, | |
2304 | 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, | |
2305 | 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, | |
2306 | 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, | |
2307 | 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997 | |
2308 | ] | |
2309 | ||
2310 | var lplim = (1 << 26) / lowprimes[lowprimes.length - 1] | |
2311 | ||
2312 | // (public) test primality with certainty >= 1-.5^t | |
2313 | function bnIsProbablePrime(t) { | |
2314 | var i, x = this.abs() | |
2315 | if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) { | |
2316 | for (i = 0; i < lowprimes.length; ++i) | |
2317 | if (x[0] == lowprimes[i]) return true | |
2318 | return false | |
3af2954a | 2319 | } |
ab78acc6 IC |
2320 | if (x.isEven()) return false |
2321 | i = 1 | |
2322 | while (i < lowprimes.length) { | |
2323 | var m = lowprimes[i], | |
2324 | j = i + 1 | |
2325 | while (j < lowprimes.length && m < lplim) m *= lowprimes[j++] | |
2326 | m = x.modInt(m) | |
2327 | while (i < j) if (m % lowprimes[i++] == 0) return false | |
2328 | } | |
2329 | return x.millerRabin(t) | |
2330 | } | |
2331 | ||
2332 | // (protected) true if probably prime (HAC 4.24, Miller-Rabin) | |
2333 | function bnpMillerRabin(t) { | |
2334 | var n1 = this.subtract(BigInteger.ONE) | |
2335 | var k = n1.getLowestSetBit() | |
2336 | if (k <= 0) return false | |
2337 | var r = n1.shiftRight(k) | |
2338 | t = (t + 1) >> 1 | |
2339 | if (t > lowprimes.length) t = lowprimes.length | |
2340 | var a = new BigInteger(null) | |
2341 | var j, bases = [] | |
2342 | for (var i = 0; i < t; ++i) { | |
2343 | for (;;) { | |
2344 | j = lowprimes[Math.floor(Math.random() * lowprimes.length)] | |
2345 | if (bases.indexOf(j) == -1) break | |
2346 | } | |
2347 | bases.push(j) | |
2348 | a.fromInt(j) | |
2349 | var y = a.modPow(r, this) | |
2350 | if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { | |
2351 | var j = 1 | |
2352 | while (j++ < k && y.compareTo(n1) != 0) { | |
2353 | y = y.modPowInt(2, this) | |
2354 | if (y.compareTo(BigInteger.ONE) == 0) return false | |
2355 | } | |
2356 | if (y.compareTo(n1) != 0) return false | |
2357 | } | |
3af2954a | 2358 | } |
ab78acc6 IC |
2359 | return true |
2360 | } | |
3af2954a | 2361 | |
ab78acc6 IC |
2362 | // protected |
2363 | proto.chunkSize = bnpChunkSize | |
2364 | proto.toRadix = bnpToRadix | |
2365 | proto.fromRadix = bnpFromRadix | |
2366 | proto.fromNumber = bnpFromNumber | |
2367 | proto.bitwiseTo = bnpBitwiseTo | |
2368 | proto.changeBit = bnpChangeBit | |
2369 | proto.addTo = bnpAddTo | |
2370 | proto.dMultiply = bnpDMultiply | |
2371 | proto.dAddOffset = bnpDAddOffset | |
2372 | proto.multiplyLowerTo = bnpMultiplyLowerTo | |
2373 | proto.multiplyUpperTo = bnpMultiplyUpperTo | |
2374 | proto.modInt = bnpModInt | |
2375 | proto.millerRabin = bnpMillerRabin | |
3af2954a | 2376 | |
ab78acc6 IC |
2377 | // public |
2378 | proto.clone = bnClone | |
2379 | proto.intValue = bnIntValue | |
2380 | proto.byteValue = bnByteValue | |
2381 | proto.shortValue = bnShortValue | |
2382 | proto.signum = bnSigNum | |
2383 | proto.toByteArray = bnToByteArray | |
2384 | proto.equals = bnEquals | |
2385 | proto.min = bnMin | |
2386 | proto.max = bnMax | |
2387 | proto.and = bnAnd | |
2388 | proto.or = bnOr | |
2389 | proto.xor = bnXor | |
2390 | proto.andNot = bnAndNot | |
2391 | proto.not = bnNot | |
2392 | proto.shiftLeft = bnShiftLeft | |
2393 | proto.shiftRight = bnShiftRight | |
2394 | proto.getLowestSetBit = bnGetLowestSetBit | |
2395 | proto.bitCount = bnBitCount | |
2396 | proto.testBit = bnTestBit | |
2397 | proto.setBit = bnSetBit | |
2398 | proto.clearBit = bnClearBit | |
2399 | proto.flipBit = bnFlipBit | |
2400 | proto.add = bnAdd | |
2401 | proto.subtract = bnSubtract | |
2402 | proto.multiply = bnMultiply | |
2403 | proto.divide = bnDivide | |
2404 | proto.remainder = bnRemainder | |
2405 | proto.divideAndRemainder = bnDivideAndRemainder | |
2406 | proto.modPow = bnModPow | |
2407 | proto.modInverse = bnModInverse | |
2408 | proto.pow = bnPow | |
2409 | proto.gcd = bnGCD | |
2410 | proto.isProbablePrime = bnIsProbablePrime | |
3af2954a | 2411 | |
ab78acc6 IC |
2412 | // JSBN-specific extension |
2413 | proto.square = bnSquare | |
3af2954a | 2414 | |
ab78acc6 IC |
2415 | // constants |
2416 | BigInteger.ZERO = nbv(0) | |
2417 | BigInteger.ONE = nbv(1) | |
2418 | BigInteger.valueOf = nbv | |
3af2954a | 2419 | |
ab78acc6 | 2420 | module.exports = BigInteger |
3af2954a | 2421 | |
ab78acc6 IC |
2422 | },{"../package.json":4}],2:[function(require,module,exports){ |
2423 | (function (Buffer){ | |
2424 | // FIXME: Kind of a weird way to throw exceptions, consider removing | |
2425 | var assert = require('assert') | |
2426 | var BigInteger = require('./bigi') | |
3af2954a | 2427 | |
ab78acc6 IC |
2428 | /** |
2429 | * Turns a byte array into a big integer. | |
2430 | * | |
2431 | * This function will interpret a byte array as a big integer in big | |
2432 | * endian notation. | |
2433 | */ | |
2434 | BigInteger.fromByteArrayUnsigned = function(byteArray) { | |
2435 | // BigInteger expects a DER integer conformant byte array | |
2436 | if (byteArray[0] & 0x80) { | |
2437 | return new BigInteger([0].concat(byteArray)) | |
3af2954a IC |
2438 | } |
2439 | ||
ab78acc6 IC |
2440 | return new BigInteger(byteArray) |
2441 | } | |
3af2954a | 2442 | |
ab78acc6 IC |
2443 | /** |
2444 | * Returns a byte array representation of the big integer. | |
2445 | * | |
2446 | * This returns the absolute of the contained value in big endian | |
2447 | * form. A value of zero results in an empty array. | |
2448 | */ | |
2449 | BigInteger.prototype.toByteArrayUnsigned = function() { | |
2450 | var byteArray = this.toByteArray() | |
2451 | return byteArray[0] === 0 ? byteArray.slice(1) : byteArray | |
2452 | } | |
3af2954a | 2453 | |
ab78acc6 IC |
2454 | BigInteger.fromDERInteger = function(byteArray) { |
2455 | return new BigInteger(byteArray) | |
2456 | } | |
3af2954a | 2457 | |
ab78acc6 IC |
2458 | /* |
2459 | * Converts BigInteger to a DER integer representation. | |
2460 | * | |
2461 | * The format for this value uses the most significant bit as a sign | |
2462 | * bit. If the most significant bit is already set and the integer is | |
2463 | * positive, a 0x00 is prepended. | |
2464 | * | |
2465 | * Examples: | |
2466 | * | |
2467 | * 0 => 0x00 | |
2468 | * 1 => 0x01 | |
2469 | * -1 => 0xff | |
2470 | * 127 => 0x7f | |
2471 | * -127 => 0x81 | |
2472 | * 128 => 0x0080 | |
2473 | * -128 => 0x80 | |
2474 | * 255 => 0x00ff | |
2475 | * -255 => 0xff01 | |
2476 | * 16300 => 0x3fac | |
2477 | * -16300 => 0xc054 | |
2478 | * 62300 => 0x00f35c | |
2479 | * -62300 => 0xff0ca4 | |
2480 | */ | |
2481 | BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray | |
3af2954a | 2482 | |
ab78acc6 IC |
2483 | BigInteger.fromBuffer = function(buffer) { |
2484 | // BigInteger expects a DER integer conformant byte array | |
2485 | if (buffer[0] & 0x80) { | |
2486 | var byteArray = Array.prototype.slice.call(buffer) | |
3af2954a | 2487 | |
ab78acc6 | 2488 | return new BigInteger([0].concat(byteArray)) |
3af2954a IC |
2489 | } |
2490 | ||
ab78acc6 IC |
2491 | return new BigInteger(buffer) |
2492 | } | |
3af2954a | 2493 | |
ab78acc6 IC |
2494 | BigInteger.fromHex = function(hex) { |
2495 | if (hex === '') return BigInteger.ZERO | |
3af2954a | 2496 | |
ab78acc6 IC |
2497 | assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string') |
2498 | assert.equal(hex.length % 2, 0, 'Incomplete hex') | |
2499 | return new BigInteger(hex, 16) | |
2500 | } | |
3af2954a | 2501 | |
ab78acc6 IC |
2502 | BigInteger.prototype.toBuffer = function(size) { |
2503 | var byteArray = this.toByteArrayUnsigned() | |
2504 | var zeros = [] | |
3af2954a | 2505 | |
ab78acc6 IC |
2506 | var padding = size - byteArray.length |
2507 | while (zeros.length < padding) zeros.push(0) | |
3af2954a | 2508 | |
ab78acc6 IC |
2509 | return new Buffer(zeros.concat(byteArray)) |
2510 | } | |
3af2954a | 2511 | |
ab78acc6 IC |
2512 | BigInteger.prototype.toHex = function(size) { |
2513 | return this.toBuffer(size).toString('hex') | |
2514 | } | |
3af2954a | 2515 | |
ab78acc6 IC |
2516 | }).call(this,require("buffer").Buffer) |
2517 | },{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){ | |
2518 | var BigInteger = require('./bigi') | |
3af2954a | 2519 | |
ab78acc6 IC |
2520 | //addons |
2521 | require('./convert') | |
3af2954a | 2522 | |
ab78acc6 IC |
2523 | module.exports = BigInteger |
2524 | },{"./bigi":1,"./convert":2}],4:[function(require,module,exports){ | |
2525 | module.exports={ | |
2526 | "name": "bigi", | |
2527 | "version": "1.4.0", | |
2528 | "description": "Big integers.", | |
2529 | "keywords": [ | |
2530 | "cryptography", | |
2531 | "math", | |
2532 | "bitcoin", | |
2533 | "arbitrary", | |
2534 | "precision", | |
2535 | "arithmetic", | |
2536 | "big", | |
2537 | "integer", | |
2538 | "int", | |
2539 | "number", | |
2540 | "biginteger", | |
2541 | "bigint", | |
2542 | "bignumber", | |
2543 | "decimal", | |
2544 | "float" | |
2545 | ], | |
2546 | "devDependencies": { | |
2547 | "mocha": "^1.20.1", | |
2548 | "jshint": "^2.5.1", | |
2549 | "coveralls": "^2.10.0", | |
2550 | "istanbul": "^0.2.11" | |
2551 | }, | |
2552 | "repository": { | |
2553 | "url": "https://github.com/cryptocoinjs/bigi", | |
2554 | "type": "git" | |
2555 | }, | |
2556 | "main": "./lib/index.js", | |
2557 | "scripts": { | |
2558 | "test": "_mocha -- test/*.js", | |
2559 | "jshint": "jshint --config jshint.json lib/*.js ; true", | |
2560 | "unit": "mocha", | |
2561 | "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js", | |
2562 | "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info" | |
2563 | }, | |
2564 | "dependencies": {}, | |
2565 | "testling": { | |
2566 | "files": "test/*.js", | |
2567 | "harness": "mocha", | |
2568 | "browsers": [ | |
2569 | "ie/9..latest", | |
2570 | "firefox/latest", | |
2571 | "chrome/latest", | |
2572 | "safari/6.0..latest", | |
2573 | "iphone/6.0..latest", | |
2574 | "android-browser/4.2..latest" | |
2575 | ] | |
2576 | }, | |
2577 | "bugs": { | |
2578 | "url": "https://github.com/cryptocoinjs/bigi/issues" | |
2579 | }, | |
2580 | "homepage": "https://github.com/cryptocoinjs/bigi", | |
2581 | "_id": "bigi@1.4.0", | |
2582 | "dist": { | |
2583 | "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac", | |
2584 | "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz" | |
2585 | }, | |
2586 | "_from": "bigi@^1.4.0", | |
2587 | "_npmVersion": "1.4.3", | |
2588 | "_npmUser": { | |
2589 | "name": "jp", | |
2590 | "email": "jprichardson@gmail.com" | |
2591 | }, | |
2592 | "maintainers": [ | |
2593 | { | |
2594 | "name": "jp", | |
2595 | "email": "jprichardson@gmail.com" | |
2596 | }, | |
2597 | { | |
2598 | "name": "midnightlightning", | |
2599 | "email": "boydb@midnightdesign.ws" | |
2600 | }, | |
2601 | { | |
2602 | "name": "sidazhang", | |
2603 | "email": "sidazhang89@gmail.com" | |
2604 | }, | |
2605 | { | |
2606 | "name": "nadav", | |
2607 | "email": "npm@shesek.info" | |
3af2954a | 2608 | } |
ab78acc6 IC |
2609 | ], |
2610 | "directories": {}, | |
2611 | "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac", | |
2612 | "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz" | |
2613 | } | |
3af2954a | 2614 | |
ab78acc6 IC |
2615 | },{}],5:[function(require,module,exports){ |
2616 | // http://wiki.commonjs.org/wiki/Unit_Testing/1.0 | |
2617 | // | |
2618 | // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! | |
2619 | // | |
2620 | // Originally from narwhal.js (http://narwhaljs.org) | |
2621 | // Copyright (c) 2009 Thomas Robinson <280north.com> | |
2622 | // | |
2623 | // Permission is hereby granted, free of charge, to any person obtaining a copy | |
2624 | // of this software and associated documentation files (the 'Software'), to | |
2625 | // deal in the Software without restriction, including without limitation the | |
2626 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | |
2627 | // sell copies of the Software, and to permit persons to whom the Software is | |
2628 | // furnished to do so, subject to the following conditions: | |
2629 | // | |
2630 | // The above copyright notice and this permission notice shall be included in | |
2631 | // all copies or substantial portions of the Software. | |
2632 | // | |
2633 | // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
2634 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
2635 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
2636 | // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | |
2637 | // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
2638 | // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
3af2954a | 2639 | |
ab78acc6 IC |
2640 | // when used in node, this will actually load the util module we depend on |
2641 | // versus loading the builtin util module as happens otherwise | |
2642 | // this is a bug in node module loading as far as I am concerned | |
2643 | var util = require('util/'); | |
3af2954a | 2644 | |
ab78acc6 IC |
2645 | var pSlice = Array.prototype.slice; |
2646 | var hasOwn = Object.prototype.hasOwnProperty; | |
3af2954a | 2647 | |
ab78acc6 IC |
2648 | // 1. The assert module provides functions that throw |
2649 | // AssertionError's when particular conditions are not met. The | |
2650 | // assert module must conform to the following interface. | |
3af2954a | 2651 | |
ab78acc6 | 2652 | var assert = module.exports = ok; |
3af2954a | 2653 | |
ab78acc6 IC |
2654 | // 2. The AssertionError is defined in assert. |
2655 | // new assert.AssertionError({ message: message, | |
2656 | // actual: actual, | |
2657 | // expected: expected }) | |
3af2954a | 2658 | |
ab78acc6 IC |
2659 | assert.AssertionError = function AssertionError(options) { |
2660 | this.name = 'AssertionError'; | |
2661 | this.actual = options.actual; | |
2662 | this.expected = options.expected; | |
2663 | this.operator = options.operator; | |
2664 | if (options.message) { | |
2665 | this.message = options.message; | |
2666 | this.generatedMessage = false; | |
2667 | } else { | |
2668 | this.message = getMessage(this); | |
2669 | this.generatedMessage = true; | |
2670 | } | |
2671 | var stackStartFunction = options.stackStartFunction || fail; | |
3af2954a | 2672 | |
ab78acc6 IC |
2673 | if (Error.captureStackTrace) { |
2674 | Error.captureStackTrace(this, stackStartFunction); | |
3af2954a | 2675 | } |
ab78acc6 IC |
2676 | else { |
2677 | // non v8 browsers so we can have a stacktrace | |
2678 | var err = new Error(); | |
2679 | if (err.stack) { | |
2680 | var out = err.stack; | |
3af2954a | 2681 | |
ab78acc6 IC |
2682 | // try to strip useless frames |
2683 | var fn_name = stackStartFunction.name; | |
2684 | var idx = out.indexOf('\n' + fn_name); | |
2685 | if (idx >= 0) { | |
2686 | // once we have located the function frame | |
2687 | // we need to strip out everything before it (and its line) | |
2688 | var next_line = out.indexOf('\n', idx + 1); | |
2689 | out = out.substring(next_line + 1); | |
2690 | } | |
3af2954a | 2691 | |
ab78acc6 | 2692 | this.stack = out; |
3af2954a | 2693 | } |
3af2954a | 2694 | } |
ab78acc6 | 2695 | }; |
3af2954a | 2696 | |
ab78acc6 IC |
2697 | // assert.AssertionError instanceof Error |
2698 | util.inherits(assert.AssertionError, Error); | |
3af2954a | 2699 | |
ab78acc6 IC |
2700 | function replacer(key, value) { |
2701 | if (util.isUndefined(value)) { | |
2702 | return '' + value; | |
2703 | } | |
2704 | if (util.isNumber(value) && !isFinite(value)) { | |
2705 | return value.toString(); | |
2706 | } | |
2707 | if (util.isFunction(value) || util.isRegExp(value)) { | |
2708 | return value.toString(); | |
2709 | } | |
2710 | return value; | |
2711 | } | |
3af2954a | 2712 | |
ab78acc6 IC |
2713 | function truncate(s, n) { |
2714 | if (util.isString(s)) { | |
2715 | return s.length < n ? s : s.slice(0, n); | |
2716 | } else { | |
2717 | return s; | |
2718 | } | |
2719 | } | |
3af2954a | 2720 | |
ab78acc6 IC |
2721 | function getMessage(self) { |
2722 | return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + | |
2723 | self.operator + ' ' + | |
2724 | truncate(JSON.stringify(self.expected, replacer), 128); | |
2725 | } | |
3af2954a | 2726 | |
ab78acc6 IC |
2727 | // At present only the three keys mentioned above are used and |
2728 | // understood by the spec. Implementations or sub modules can pass | |
2729 | // other keys to the AssertionError's constructor - they will be | |
2730 | // ignored. | |
3af2954a | 2731 | |
ab78acc6 IC |
2732 | // 3. All of the following functions must throw an AssertionError |
2733 | // when a corresponding condition is not met, with a message that | |
2734 | // may be undefined if not provided. All assertion methods provide | |
2735 | // both the actual and expected values to the assertion error for | |
2736 | // display purposes. | |
3af2954a | 2737 | |
ab78acc6 IC |
2738 | function fail(actual, expected, message, operator, stackStartFunction) { |
2739 | throw new assert.AssertionError({ | |
2740 | message: message, | |
2741 | actual: actual, | |
2742 | expected: expected, | |
2743 | operator: operator, | |
2744 | stackStartFunction: stackStartFunction | |
2745 | }); | |
2746 | } | |
3af2954a | 2747 | |
ab78acc6 IC |
2748 | // EXTENSION! allows for well behaved errors defined elsewhere. |
2749 | assert.fail = fail; | |
ebd8d4e8 | 2750 | |
ab78acc6 IC |
2751 | // 4. Pure assertion tests whether a value is truthy, as determined |
2752 | // by !!guard. | |
2753 | // assert.ok(guard, message_opt); | |
2754 | // This statement is equivalent to assert.equal(true, !!guard, | |
2755 | // message_opt);. To test strictly for the value true, use | |
2756 | // assert.strictEqual(true, guard, message_opt);. | |
3af2954a | 2757 | |
ab78acc6 IC |
2758 | function ok(value, message) { |
2759 | if (!value) fail(value, true, message, '==', assert.ok); | |
2760 | } | |
2761 | assert.ok = ok; | |
3af2954a | 2762 | |
ab78acc6 IC |
2763 | // 5. The equality assertion tests shallow, coercive equality with |
2764 | // ==. | |
2765 | // assert.equal(actual, expected, message_opt); | |
3af2954a | 2766 | |
ab78acc6 IC |
2767 | assert.equal = function equal(actual, expected, message) { |
2768 | if (actual != expected) fail(actual, expected, message, '==', assert.equal); | |
2769 | }; | |
3af2954a | 2770 | |
ab78acc6 IC |
2771 | // 6. The non-equality assertion tests for whether two objects are not equal |
2772 | // with != assert.notEqual(actual, expected, message_opt); | |
3af2954a | 2773 | |
ab78acc6 IC |
2774 | assert.notEqual = function notEqual(actual, expected, message) { |
2775 | if (actual == expected) { | |
2776 | fail(actual, expected, message, '!=', assert.notEqual); | |
3af2954a | 2777 | } |
ab78acc6 | 2778 | }; |
3af2954a | 2779 | |
ab78acc6 IC |
2780 | // 7. The equivalence assertion tests a deep equality relation. |
2781 | // assert.deepEqual(actual, expected, message_opt); | |
3af2954a | 2782 | |
ab78acc6 IC |
2783 | assert.deepEqual = function deepEqual(actual, expected, message) { |
2784 | if (!_deepEqual(actual, expected)) { | |
2785 | fail(actual, expected, message, 'deepEqual', assert.deepEqual); | |
2786 | } | |
2787 | }; | |
3af2954a | 2788 | |
ab78acc6 IC |
2789 | function _deepEqual(actual, expected) { |
2790 | // 7.1. All identical values are equivalent, as determined by ===. | |
2791 | if (actual === expected) { | |
2792 | return true; | |
3af2954a | 2793 | |
ab78acc6 IC |
2794 | } else if (util.isBuffer(actual) && util.isBuffer(expected)) { |
2795 | if (actual.length != expected.length) return false; | |
3af2954a | 2796 | |
ab78acc6 IC |
2797 | for (var i = 0; i < actual.length; i++) { |
2798 | if (actual[i] !== expected[i]) return false; | |
3af2954a IC |
2799 | } |
2800 | ||
ab78acc6 | 2801 | return true; |
3af2954a | 2802 | |
ab78acc6 IC |
2803 | // 7.2. If the expected value is a Date object, the actual value is |
2804 | // equivalent if it is also a Date object that refers to the same time. | |
2805 | } else if (util.isDate(actual) && util.isDate(expected)) { | |
2806 | return actual.getTime() === expected.getTime(); | |
3af2954a | 2807 | |
ab78acc6 IC |
2808 | // 7.3 If the expected value is a RegExp object, the actual value is |
2809 | // equivalent if it is also a RegExp object with the same source and | |
2810 | // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). | |
2811 | } else if (util.isRegExp(actual) && util.isRegExp(expected)) { | |
2812 | return actual.source === expected.source && | |
2813 | actual.global === expected.global && | |
2814 | actual.multiline === expected.multiline && | |
2815 | actual.lastIndex === expected.lastIndex && | |
2816 | actual.ignoreCase === expected.ignoreCase; | |
3af2954a | 2817 | |
ab78acc6 IC |
2818 | // 7.4. Other pairs that do not both pass typeof value == 'object', |
2819 | // equivalence is determined by ==. | |
2820 | } else if (!util.isObject(actual) && !util.isObject(expected)) { | |
2821 | return actual == expected; | |
3af2954a | 2822 | |
ab78acc6 IC |
2823 | // 7.5 For all other Object pairs, including Array objects, equivalence is |
2824 | // determined by having the same number of owned properties (as verified | |
2825 | // with Object.prototype.hasOwnProperty.call), the same set of keys | |
2826 | // (although not necessarily the same order), equivalent values for every | |
2827 | // corresponding key, and an identical 'prototype' property. Note: this | |
2828 | // accounts for both named and indexed properties on Arrays. | |
2829 | } else { | |
2830 | return objEquiv(actual, expected); | |
3af2954a | 2831 | } |
ab78acc6 | 2832 | } |
3af2954a | 2833 | |
ab78acc6 IC |
2834 | function isArguments(object) { |
2835 | return Object.prototype.toString.call(object) == '[object Arguments]'; | |
2836 | } | |
3af2954a | 2837 | |
ab78acc6 IC |
2838 | function objEquiv(a, b) { |
2839 | if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) | |
2840 | return false; | |
2841 | // an identical 'prototype' property. | |
2842 | if (a.prototype !== b.prototype) return false; | |
2843 | // if one is a primitive, the other must be same | |
2844 | if (util.isPrimitive(a) || util.isPrimitive(b)) { | |
2845 | return a === b; | |
3af2954a | 2846 | } |
ab78acc6 IC |
2847 | var aIsArgs = isArguments(a), |
2848 | bIsArgs = isArguments(b); | |
2849 | if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) | |
2850 | return false; | |
2851 | if (aIsArgs) { | |
2852 | a = pSlice.call(a); | |
2853 | b = pSlice.call(b); | |
2854 | return _deepEqual(a, b); | |
3af2954a | 2855 | } |
ab78acc6 IC |
2856 | var ka = objectKeys(a), |
2857 | kb = objectKeys(b), | |
2858 | key, i; | |
2859 | // having the same number of owned properties (keys incorporates | |
2860 | // hasOwnProperty) | |
2861 | if (ka.length != kb.length) | |
2862 | return false; | |
2863 | //the same set of keys (although not necessarily the same order), | |
2864 | ka.sort(); | |
2865 | kb.sort(); | |
2866 | //~~~cheap key test | |
2867 | for (i = ka.length - 1; i >= 0; i--) { | |
2868 | if (ka[i] != kb[i]) | |
2869 | return false; | |
3af2954a | 2870 | } |
ab78acc6 IC |
2871 | //equivalent values for every corresponding key, and |
2872 | //~~~possibly expensive deep test | |
2873 | for (i = ka.length - 1; i >= 0; i--) { | |
2874 | key = ka[i]; | |
2875 | if (!_deepEqual(a[key], b[key])) return false; | |
3af2954a | 2876 | } |
ab78acc6 IC |
2877 | return true; |
2878 | } | |
2879 | ||
2880 | // 8. The non-equivalence assertion tests for any deep inequality. | |
2881 | // assert.notDeepEqual(actual, expected, message_opt); | |
3af2954a | 2882 | |
ab78acc6 IC |
2883 | assert.notDeepEqual = function notDeepEqual(actual, expected, message) { |
2884 | if (_deepEqual(actual, expected)) { | |
2885 | fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); | |
3af2954a | 2886 | } |
ab78acc6 | 2887 | }; |
3af2954a | 2888 | |
ab78acc6 IC |
2889 | // 9. The strict equality assertion tests strict equality, as determined by ===. |
2890 | // assert.strictEqual(actual, expected, message_opt); | |
3af2954a | 2891 | |
ab78acc6 IC |
2892 | assert.strictEqual = function strictEqual(actual, expected, message) { |
2893 | if (actual !== expected) { | |
2894 | fail(actual, expected, message, '===', assert.strictEqual); | |
3af2954a | 2895 | } |
ab78acc6 | 2896 | }; |
3af2954a | 2897 | |
ab78acc6 IC |
2898 | // 10. The strict non-equality assertion tests for strict inequality, as |
2899 | // determined by !==. assert.notStrictEqual(actual, expected, message_opt); | |
3af2954a | 2900 | |
ab78acc6 IC |
2901 | assert.notStrictEqual = function notStrictEqual(actual, expected, message) { |
2902 | if (actual === expected) { | |
2903 | fail(actual, expected, message, '!==', assert.notStrictEqual); | |
2904 | } | |
2905 | }; | |
3af2954a | 2906 | |
ab78acc6 IC |
2907 | function expectedException(actual, expected) { |
2908 | if (!actual || !expected) { | |
2909 | return false; | |
2910 | } | |
3af2954a | 2911 | |
ab78acc6 IC |
2912 | if (Object.prototype.toString.call(expected) == '[object RegExp]') { |
2913 | return expected.test(actual); | |
2914 | } else if (actual instanceof expected) { | |
2915 | return true; | |
2916 | } else if (expected.call({}, actual) === true) { | |
2917 | return true; | |
3af2954a IC |
2918 | } |
2919 | ||
ab78acc6 IC |
2920 | return false; |
2921 | } | |
3af2954a | 2922 | |
ab78acc6 IC |
2923 | function _throws(shouldThrow, block, expected, message) { |
2924 | var actual; | |
3af2954a | 2925 | |
ab78acc6 IC |
2926 | if (util.isString(expected)) { |
2927 | message = expected; | |
2928 | expected = null; | |
3af2954a IC |
2929 | } |
2930 | ||
ab78acc6 IC |
2931 | try { |
2932 | block(); | |
2933 | } catch (e) { | |
2934 | actual = e; | |
3af2954a IC |
2935 | } |
2936 | ||
ab78acc6 IC |
2937 | message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + |
2938 | (message ? ' ' + message : '.'); | |
3af2954a | 2939 | |
ab78acc6 IC |
2940 | if (shouldThrow && !actual) { |
2941 | fail(actual, expected, 'Missing expected exception' + message); | |
3af2954a IC |
2942 | } |
2943 | ||
ab78acc6 IC |
2944 | if (!shouldThrow && expectedException(actual, expected)) { |
2945 | fail(actual, expected, 'Got unwanted exception' + message); | |
3af2954a IC |
2946 | } |
2947 | ||
ab78acc6 IC |
2948 | if ((shouldThrow && actual && expected && |
2949 | !expectedException(actual, expected)) || (!shouldThrow && actual)) { | |
2950 | throw actual; | |
3af2954a | 2951 | } |
ab78acc6 | 2952 | } |
3af2954a | 2953 | |
ab78acc6 IC |
2954 | // 11. Expected to throw an error: |
2955 | // assert.throws(block, Error_opt, message_opt); | |
3af2954a | 2956 | |
ab78acc6 IC |
2957 | assert.throws = function(block, /*optional*/error, /*optional*/message) { |
2958 | _throws.apply(this, [true].concat(pSlice.call(arguments))); | |
2959 | }; | |
3af2954a | 2960 | |
ab78acc6 IC |
2961 | // EXTENSION! This is annoying to write outside this module. |
2962 | assert.doesNotThrow = function(block, /*optional*/message) { | |
2963 | _throws.apply(this, [false].concat(pSlice.call(arguments))); | |
2964 | }; | |
3af2954a | 2965 | |
ab78acc6 | 2966 | assert.ifError = function(err) { if (err) {throw err;}}; |
3af2954a | 2967 | |
ab78acc6 IC |
2968 | var objectKeys = Object.keys || function (obj) { |
2969 | var keys = []; | |
2970 | for (var key in obj) { | |
2971 | if (hasOwn.call(obj, key)) keys.push(key); | |
3af2954a | 2972 | } |
ab78acc6 IC |
2973 | return keys; |
2974 | }; | |
3af2954a | 2975 | |
ab78acc6 | 2976 | },{"util/":29}],6:[function(require,module,exports){ |
3af2954a | 2977 | |
ab78acc6 IC |
2978 | },{}],7:[function(require,module,exports){ |
2979 | /*! | |
2980 | * The buffer module from node.js, for the browser. | |
2981 | * | |
2982 | * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> | |
2983 | * @license MIT | |
2984 | */ | |
3af2954a | 2985 | |
ab78acc6 IC |
2986 | var base64 = require('base64-js') |
2987 | var ieee754 = require('ieee754') | |
2988 | var isArray = require('is-array') | |
3af2954a | 2989 | |
ab78acc6 IC |
2990 | exports.Buffer = Buffer |
2991 | exports.SlowBuffer = SlowBuffer | |
2992 | exports.INSPECT_MAX_BYTES = 50 | |
2993 | Buffer.poolSize = 8192 // not used by this implementation | |
3af2954a | 2994 | |
ab78acc6 | 2995 | var rootParent = {} |
3af2954a | 2996 | |
ab78acc6 IC |
2997 | /** |
2998 | * If `Buffer.TYPED_ARRAY_SUPPORT`: | |
2999 | * === true Use Uint8Array implementation (fastest) | |
3000 | * === false Use Object implementation (most compatible, even IE6) | |
3001 | * | |
3002 | * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, | |
3003 | * Opera 11.6+, iOS 4.2+. | |
3004 | * | |
3005 | * Due to various browser bugs, sometimes the Object implementation will be used even | |
3006 | * when the browser supports typed arrays. | |
3007 | * | |
3008 | * Note: | |
3009 | * | |
3010 | * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, | |
3011 | * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. | |
3012 | * | |
3013 | * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property | |
3014 | * on objects. | |
3015 | * | |
3016 | * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. | |
3017 | * | |
3018 | * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of | |
3019 | * incorrect length in some situations. | |
3af2954a | 3020 | |
ab78acc6 IC |
3021 | * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they |
3022 | * get the Object implementation, which is slower but behaves correctly. | |
3023 | */ | |
3024 | Buffer.TYPED_ARRAY_SUPPORT = (function () { | |
3025 | function Bar () {} | |
3026 | try { | |
3027 | var arr = new Uint8Array(1) | |
3028 | arr.foo = function () { return 42 } | |
3029 | arr.constructor = Bar | |
3030 | return arr.foo() === 42 && // typed array instances can be augmented | |
3031 | arr.constructor === Bar && // constructor can be set | |
3032 | typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` | |
3033 | arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` | |
3034 | } catch (e) { | |
3035 | return false | |
3036 | } | |
3037 | })() | |
3af2954a | 3038 | |
ab78acc6 IC |
3039 | function kMaxLength () { |
3040 | return Buffer.TYPED_ARRAY_SUPPORT | |
3041 | ? 0x7fffffff | |
3042 | : 0x3fffffff | |
3043 | } | |
3af2954a | 3044 | |
ab78acc6 IC |
3045 | /** |
3046 | * Class: Buffer | |
3047 | * ============= | |
3048 | * | |
3049 | * The Buffer constructor returns instances of `Uint8Array` that are augmented | |
3050 | * with function properties for all the node `Buffer` API functions. We use | |
3051 | * `Uint8Array` so that square bracket notation works as expected -- it returns | |
3052 | * a single octet. | |
3053 | * | |
3054 | * By augmenting the instances, we can avoid modifying the `Uint8Array` | |
3055 | * prototype. | |
3056 | */ | |
3057 | function Buffer (arg) { | |
3058 | if (!(this instanceof Buffer)) { | |
3059 | // Avoid going through an ArgumentsAdaptorTrampoline in the common case. | |
3060 | if (arguments.length > 1) return new Buffer(arg, arguments[1]) | |
3061 | return new Buffer(arg) | |
3af2954a IC |
3062 | } |
3063 | ||
ab78acc6 IC |
3064 | this.length = 0 |
3065 | this.parent = undefined | |
3af2954a | 3066 | |
ab78acc6 IC |
3067 | // Common case. |
3068 | if (typeof arg === 'number') { | |
3069 | return fromNumber(this, arg) | |
3070 | } | |
3af2954a | 3071 | |
ab78acc6 IC |
3072 | // Slightly less common case. |
3073 | if (typeof arg === 'string') { | |
3074 | return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8') | |
3075 | } | |
3af2954a | 3076 | |
ab78acc6 IC |
3077 | // Unusual. |
3078 | return fromObject(this, arg) | |
3079 | } | |
3af2954a | 3080 | |
ab78acc6 IC |
3081 | function fromNumber (that, length) { |
3082 | that = allocate(that, length < 0 ? 0 : checked(length) | 0) | |
3083 | if (!Buffer.TYPED_ARRAY_SUPPORT) { | |
3084 | for (var i = 0; i < length; i++) { | |
3085 | that[i] = 0 | |
3086 | } | |
3af2954a | 3087 | } |
ab78acc6 IC |
3088 | return that |
3089 | } | |
3af2954a | 3090 | |
ab78acc6 IC |
3091 | function fromString (that, string, encoding) { |
3092 | if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8' | |
3af2954a | 3093 | |
ab78acc6 IC |
3094 | // Assumption: byteLength() return value is always < kMaxLength. |
3095 | var length = byteLength(string, encoding) | 0 | |
3096 | that = allocate(that, length) | |
3af2954a | 3097 | |
ab78acc6 IC |
3098 | that.write(string, encoding) |
3099 | return that | |
3100 | } | |
3af2954a | 3101 | |
ab78acc6 IC |
3102 | function fromObject (that, object) { |
3103 | if (Buffer.isBuffer(object)) return fromBuffer(that, object) | |
3af2954a | 3104 | |
ab78acc6 | 3105 | if (isArray(object)) return fromArray(that, object) |
3af2954a | 3106 | |
ab78acc6 IC |
3107 | if (object == null) { |
3108 | throw new TypeError('must start with number, buffer, array or string') | |
3109 | } | |
3af2954a | 3110 | |
ab78acc6 IC |
3111 | if (typeof ArrayBuffer !== 'undefined') { |
3112 | if (object.buffer instanceof ArrayBuffer) { | |
3113 | return fromTypedArray(that, object) | |
3114 | } | |
3115 | if (object instanceof ArrayBuffer) { | |
3116 | return fromArrayBuffer(that, object) | |
3117 | } | |
3af2954a IC |
3118 | } |
3119 | ||
ab78acc6 | 3120 | if (object.length) return fromArrayLike(that, object) |
3af2954a | 3121 | |
ab78acc6 IC |
3122 | return fromJsonObject(that, object) |
3123 | } | |
3af2954a | 3124 | |
ab78acc6 IC |
3125 | function fromBuffer (that, buffer) { |
3126 | var length = checked(buffer.length) | 0 | |
3127 | that = allocate(that, length) | |
3128 | buffer.copy(that, 0, 0, length) | |
3129 | return that | |
3130 | } | |
3af2954a | 3131 | |
ab78acc6 IC |
3132 | function fromArray (that, array) { |
3133 | var length = checked(array.length) | 0 | |
3134 | that = allocate(that, length) | |
3135 | for (var i = 0; i < length; i += 1) { | |
3136 | that[i] = array[i] & 255 | |
3af2954a | 3137 | } |
ab78acc6 IC |
3138 | return that |
3139 | } | |
3af2954a | 3140 | |
ab78acc6 IC |
3141 | // Duplicate of fromArray() to keep fromArray() monomorphic. |
3142 | function fromTypedArray (that, array) { | |
3143 | var length = checked(array.length) | 0 | |
3144 | that = allocate(that, length) | |
3145 | // Truncating the elements is probably not what people expect from typed | |
3146 | // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior | |
3147 | // of the old Buffer constructor. | |
3148 | for (var i = 0; i < length; i += 1) { | |
3149 | that[i] = array[i] & 255 | |
3af2954a | 3150 | } |
ab78acc6 IC |
3151 | return that |
3152 | } | |
3af2954a | 3153 | |
ab78acc6 IC |
3154 | function fromArrayBuffer (that, array) { |
3155 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
3156 | // Return an augmented `Uint8Array` instance, for best performance | |
3157 | array.byteLength | |
3158 | that = Buffer._augment(new Uint8Array(array)) | |
3159 | } else { | |
3160 | // Fallback: Return an object instance of the Buffer class | |
3161 | that = fromTypedArray(that, new Uint8Array(array)) | |
3162 | } | |
3163 | return that | |
3164 | } | |
3af2954a | 3165 | |
ab78acc6 IC |
3166 | function fromArrayLike (that, array) { |
3167 | var length = checked(array.length) | 0 | |
3168 | that = allocate(that, length) | |
3169 | for (var i = 0; i < length; i += 1) { | |
3170 | that[i] = array[i] & 255 | |
3af2954a | 3171 | } |
ab78acc6 IC |
3172 | return that |
3173 | } | |
3af2954a | 3174 | |
ab78acc6 IC |
3175 | // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object. |
3176 | // Returns a zero-length buffer for inputs that don't conform to the spec. | |
3177 | function fromJsonObject (that, object) { | |
3178 | var array | |
3179 | var length = 0 | |
3180 | ||
3181 | if (object.type === 'Buffer' && isArray(object.data)) { | |
3182 | array = object.data | |
3183 | length = checked(array.length) | 0 | |
3af2954a | 3184 | } |
ab78acc6 | 3185 | that = allocate(that, length) |
3af2954a | 3186 | |
ab78acc6 IC |
3187 | for (var i = 0; i < length; i += 1) { |
3188 | that[i] = array[i] & 255 | |
3af2954a | 3189 | } |
ab78acc6 IC |
3190 | return that |
3191 | } | |
3af2954a | 3192 | |
ab78acc6 IC |
3193 | function allocate (that, length) { |
3194 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
3195 | // Return an augmented `Uint8Array` instance, for best performance | |
3196 | that = Buffer._augment(new Uint8Array(length)) | |
3197 | } else { | |
3198 | // Fallback: Return an object instance of the Buffer class | |
3199 | that.length = length | |
3200 | that._isBuffer = true | |
3201 | } | |
3af2954a | 3202 | |
ab78acc6 IC |
3203 | var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1 |
3204 | if (fromPool) that.parent = rootParent | |
3af2954a | 3205 | |
ab78acc6 IC |
3206 | return that |
3207 | } | |
3af2954a | 3208 | |
ab78acc6 IC |
3209 | function checked (length) { |
3210 | // Note: cannot use `length < kMaxLength` here because that fails when | |
3211 | // length is NaN (which is otherwise coerced to zero.) | |
3212 | if (length >= kMaxLength()) { | |
3213 | throw new RangeError('Attempt to allocate Buffer larger than maximum ' + | |
3214 | 'size: 0x' + kMaxLength().toString(16) + ' bytes') | |
3af2954a | 3215 | } |
ab78acc6 IC |
3216 | return length | 0 |
3217 | } | |
3af2954a | 3218 | |
ab78acc6 IC |
3219 | function SlowBuffer (subject, encoding) { |
3220 | if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding) | |
3af2954a | 3221 | |
ab78acc6 IC |
3222 | var buf = new Buffer(subject, encoding) |
3223 | delete buf.parent | |
3224 | return buf | |
3225 | } | |
3af2954a | 3226 | |
ab78acc6 IC |
3227 | Buffer.isBuffer = function isBuffer (b) { |
3228 | return !!(b != null && b._isBuffer) | |
3229 | } | |
3af2954a | 3230 | |
ab78acc6 IC |
3231 | Buffer.compare = function compare (a, b) { |
3232 | if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { | |
3233 | throw new TypeError('Arguments must be Buffers') | |
3af2954a IC |
3234 | } |
3235 | ||
ab78acc6 | 3236 | if (a === b) return 0 |
3af2954a | 3237 | |
ab78acc6 IC |
3238 | var x = a.length |
3239 | var y = b.length | |
3af2954a | 3240 | |
ab78acc6 IC |
3241 | var i = 0 |
3242 | var len = Math.min(x, y) | |
3243 | while (i < len) { | |
3244 | if (a[i] !== b[i]) break | |
3af2954a | 3245 | |
ab78acc6 IC |
3246 | ++i |
3247 | } | |
3af2954a | 3248 | |
ab78acc6 IC |
3249 | if (i !== len) { |
3250 | x = a[i] | |
3251 | y = b[i] | |
3252 | } | |
3af2954a | 3253 | |
ab78acc6 IC |
3254 | if (x < y) return -1 |
3255 | if (y < x) return 1 | |
3256 | return 0 | |
3257 | } | |
3af2954a | 3258 | |
ab78acc6 IC |
3259 | Buffer.isEncoding = function isEncoding (encoding) { |
3260 | switch (String(encoding).toLowerCase()) { | |
3261 | case 'hex': | |
3262 | case 'utf8': | |
3263 | case 'utf-8': | |
3264 | case 'ascii': | |
3265 | case 'binary': | |
3266 | case 'base64': | |
3267 | case 'raw': | |
3268 | case 'ucs2': | |
3269 | case 'ucs-2': | |
3270 | case 'utf16le': | |
3271 | case 'utf-16le': | |
3272 | return true | |
3273 | default: | |
3274 | return false | |
3af2954a | 3275 | } |
ab78acc6 | 3276 | } |
3af2954a | 3277 | |
ab78acc6 IC |
3278 | Buffer.concat = function concat (list, length) { |
3279 | if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.') | |
3af2954a | 3280 | |
ab78acc6 IC |
3281 | if (list.length === 0) { |
3282 | return new Buffer(0) | |
3af2954a IC |
3283 | } |
3284 | ||
ab78acc6 IC |
3285 | var i |
3286 | if (length === undefined) { | |
3287 | length = 0 | |
3288 | for (i = 0; i < list.length; i++) { | |
3289 | length += list[i].length | |
3290 | } | |
3af2954a IC |
3291 | } |
3292 | ||
ab78acc6 IC |
3293 | var buf = new Buffer(length) |
3294 | var pos = 0 | |
3295 | for (i = 0; i < list.length; i++) { | |
3296 | var item = list[i] | |
3297 | item.copy(buf, pos) | |
3298 | pos += item.length | |
3299 | } | |
3300 | return buf | |
3301 | } | |
3af2954a | 3302 | |
ab78acc6 IC |
3303 | function byteLength (string, encoding) { |
3304 | if (typeof string !== 'string') string = '' + string | |
3305 | ||
3306 | var len = string.length | |
3307 | if (len === 0) return 0 | |
3308 | ||
3309 | // Use a for loop to avoid recursion | |
3310 | var loweredCase = false | |
3311 | for (;;) { | |
3312 | switch (encoding) { | |
3313 | case 'ascii': | |
3314 | case 'binary': | |
3315 | // Deprecated | |
3316 | case 'raw': | |
3317 | case 'raws': | |
3318 | return len | |
3319 | case 'utf8': | |
3320 | case 'utf-8': | |
3321 | return utf8ToBytes(string).length | |
3322 | case 'ucs2': | |
3323 | case 'ucs-2': | |
3324 | case 'utf16le': | |
3325 | case 'utf-16le': | |
3326 | return len * 2 | |
3327 | case 'hex': | |
3328 | return len >>> 1 | |
3329 | case 'base64': | |
3330 | return base64ToBytes(string).length | |
3331 | default: | |
3332 | if (loweredCase) return utf8ToBytes(string).length // assume utf8 | |
3333 | encoding = ('' + encoding).toLowerCase() | |
3334 | loweredCase = true | |
3af2954a | 3335 | } |
3af2954a | 3336 | } |
ab78acc6 IC |
3337 | } |
3338 | Buffer.byteLength = byteLength | |
3af2954a | 3339 | |
ab78acc6 IC |
3340 | // pre-set for values that may exist in the future |
3341 | Buffer.prototype.length = undefined | |
3342 | Buffer.prototype.parent = undefined | |
3af2954a | 3343 | |
ab78acc6 IC |
3344 | function slowToString (encoding, start, end) { |
3345 | var loweredCase = false | |
3af2954a | 3346 | |
ab78acc6 IC |
3347 | start = start | 0 |
3348 | end = end === undefined || end === Infinity ? this.length : end | 0 | |
3af2954a | 3349 | |
ab78acc6 IC |
3350 | if (!encoding) encoding = 'utf8' |
3351 | if (start < 0) start = 0 | |
3352 | if (end > this.length) end = this.length | |
3353 | if (end <= start) return '' | |
3af2954a | 3354 | |
ab78acc6 IC |
3355 | while (true) { |
3356 | switch (encoding) { | |
3357 | case 'hex': | |
3358 | return hexSlice(this, start, end) | |
3af2954a | 3359 | |
ab78acc6 IC |
3360 | case 'utf8': |
3361 | case 'utf-8': | |
3362 | return utf8Slice(this, start, end) | |
3af2954a | 3363 | |
ab78acc6 IC |
3364 | case 'ascii': |
3365 | return asciiSlice(this, start, end) | |
3af2954a | 3366 | |
ab78acc6 IC |
3367 | case 'binary': |
3368 | return binarySlice(this, start, end) | |
3af2954a | 3369 | |
ab78acc6 IC |
3370 | case 'base64': |
3371 | return base64Slice(this, start, end) | |
3af2954a | 3372 | |
ab78acc6 IC |
3373 | case 'ucs2': |
3374 | case 'ucs-2': | |
3375 | case 'utf16le': | |
3376 | case 'utf-16le': | |
3377 | return utf16leSlice(this, start, end) | |
3af2954a | 3378 | |
ab78acc6 IC |
3379 | default: |
3380 | if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) | |
3381 | encoding = (encoding + '').toLowerCase() | |
3382 | loweredCase = true | |
3383 | } | |
3af2954a | 3384 | } |
ab78acc6 | 3385 | } |
3af2954a | 3386 | |
ab78acc6 IC |
3387 | Buffer.prototype.toString = function toString () { |
3388 | var length = this.length | 0 | |
3389 | if (length === 0) return '' | |
3390 | if (arguments.length === 0) return utf8Slice(this, 0, length) | |
3391 | return slowToString.apply(this, arguments) | |
3392 | } | |
3af2954a | 3393 | |
ab78acc6 IC |
3394 | Buffer.prototype.equals = function equals (b) { |
3395 | if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') | |
3396 | if (this === b) return true | |
3397 | return Buffer.compare(this, b) === 0 | |
3398 | } | |
3af2954a | 3399 | |
ab78acc6 IC |
3400 | Buffer.prototype.inspect = function inspect () { |
3401 | var str = '' | |
3402 | var max = exports.INSPECT_MAX_BYTES | |
3403 | if (this.length > 0) { | |
3404 | str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') | |
3405 | if (this.length > max) str += ' ... ' | |
3af2954a | 3406 | } |
ab78acc6 IC |
3407 | return '<Buffer ' + str + '>' |
3408 | } | |
3af2954a | 3409 | |
ab78acc6 IC |
3410 | Buffer.prototype.compare = function compare (b) { |
3411 | if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') | |
3412 | if (this === b) return 0 | |
3413 | return Buffer.compare(this, b) | |
3414 | } | |
3af2954a | 3415 | |
ab78acc6 IC |
3416 | Buffer.prototype.indexOf = function indexOf (val, byteOffset) { |
3417 | if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff | |
3418 | else if (byteOffset < -0x80000000) byteOffset = -0x80000000 | |
3419 | byteOffset >>= 0 | |
3af2954a | 3420 | |
ab78acc6 IC |
3421 | if (this.length === 0) return -1 |
3422 | if (byteOffset >= this.length) return -1 | |
3af2954a | 3423 | |
ab78acc6 IC |
3424 | // Negative offsets start from the end of the buffer |
3425 | if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0) | |
3af2954a | 3426 | |
ab78acc6 IC |
3427 | if (typeof val === 'string') { |
3428 | if (val.length === 0) return -1 // special case: looking for empty string always fails | |
3429 | return String.prototype.indexOf.call(this, val, byteOffset) | |
3af2954a | 3430 | } |
ab78acc6 IC |
3431 | if (Buffer.isBuffer(val)) { |
3432 | return arrayIndexOf(this, val, byteOffset) | |
3af2954a | 3433 | } |
ab78acc6 IC |
3434 | if (typeof val === 'number') { |
3435 | if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') { | |
3436 | return Uint8Array.prototype.indexOf.call(this, val, byteOffset) | |
3af2954a | 3437 | } |
ab78acc6 | 3438 | return arrayIndexOf(this, [ val ], byteOffset) |
3af2954a IC |
3439 | } |
3440 | ||
ab78acc6 IC |
3441 | function arrayIndexOf (arr, val, byteOffset) { |
3442 | var foundIndex = -1 | |
3443 | for (var i = 0; byteOffset + i < arr.length; i++) { | |
3444 | if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) { | |
3445 | if (foundIndex === -1) foundIndex = i | |
3446 | if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex | |
3af2954a | 3447 | } else { |
ab78acc6 | 3448 | foundIndex = -1 |
3af2954a | 3449 | } |
3af2954a | 3450 | } |
ab78acc6 IC |
3451 | return -1 |
3452 | } | |
3af2954a | 3453 | |
ab78acc6 IC |
3454 | throw new TypeError('val must be string, number or Buffer') |
3455 | } | |
3af2954a | 3456 | |
ab78acc6 IC |
3457 | // `get` is deprecated |
3458 | Buffer.prototype.get = function get (offset) { | |
3459 | console.log('.get() is deprecated. Access using array indexes instead.') | |
3460 | return this.readUInt8(offset) | |
3461 | } | |
3af2954a | 3462 | |
ab78acc6 IC |
3463 | // `set` is deprecated |
3464 | Buffer.prototype.set = function set (v, offset) { | |
3465 | console.log('.set() is deprecated. Access using array indexes instead.') | |
3466 | return this.writeUInt8(v, offset) | |
3467 | } | |
3af2954a | 3468 | |
ab78acc6 IC |
3469 | function hexWrite (buf, string, offset, length) { |
3470 | offset = Number(offset) || 0 | |
3471 | var remaining = buf.length - offset | |
3472 | if (!length) { | |
3473 | length = remaining | |
3474 | } else { | |
3475 | length = Number(length) | |
3476 | if (length > remaining) { | |
3477 | length = remaining | |
3478 | } | |
3479 | } | |
3af2954a | 3480 | |
ab78acc6 IC |
3481 | // must be an even number of digits |
3482 | var strLen = string.length | |
3483 | if (strLen % 2 !== 0) throw new Error('Invalid hex string') | |
3af2954a | 3484 | |
ab78acc6 IC |
3485 | if (length > strLen / 2) { |
3486 | length = strLen / 2 | |
3487 | } | |
3488 | for (var i = 0; i < length; i++) { | |
3489 | var parsed = parseInt(string.substr(i * 2, 2), 16) | |
3490 | if (isNaN(parsed)) throw new Error('Invalid hex string') | |
3491 | buf[offset + i] = parsed | |
3af2954a | 3492 | } |
ab78acc6 IC |
3493 | return i |
3494 | } | |
3495 | ||
3496 | function utf8Write (buf, string, offset, length) { | |
3497 | return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) | |
3498 | } | |
3af2954a | 3499 | |
ab78acc6 IC |
3500 | function asciiWrite (buf, string, offset, length) { |
3501 | return blitBuffer(asciiToBytes(string), buf, offset, length) | |
3502 | } | |
3af2954a | 3503 | |
ab78acc6 IC |
3504 | function binaryWrite (buf, string, offset, length) { |
3505 | return asciiWrite(buf, string, offset, length) | |
3506 | } | |
3af2954a | 3507 | |
ab78acc6 IC |
3508 | function base64Write (buf, string, offset, length) { |
3509 | return blitBuffer(base64ToBytes(string), buf, offset, length) | |
3510 | } | |
3af2954a | 3511 | |
ab78acc6 IC |
3512 | function ucs2Write (buf, string, offset, length) { |
3513 | return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) | |
3514 | } | |
3af2954a | 3515 | |
ab78acc6 IC |
3516 | Buffer.prototype.write = function write (string, offset, length, encoding) { |
3517 | // Buffer#write(string) | |
3518 | if (offset === undefined) { | |
3519 | encoding = 'utf8' | |
3520 | length = this.length | |
3521 | offset = 0 | |
3522 | // Buffer#write(string, encoding) | |
3523 | } else if (length === undefined && typeof offset === 'string') { | |
3524 | encoding = offset | |
3525 | length = this.length | |
3526 | offset = 0 | |
3527 | // Buffer#write(string, offset[, length][, encoding]) | |
3528 | } else if (isFinite(offset)) { | |
3529 | offset = offset | 0 | |
3530 | if (isFinite(length)) { | |
3531 | length = length | 0 | |
3532 | if (encoding === undefined) encoding = 'utf8' | |
3533 | } else { | |
3534 | encoding = length | |
3535 | length = undefined | |
3536 | } | |
3537 | // legacy write(string, encoding, offset, length) - remove in v0.13 | |
3538 | } else { | |
3539 | var swap = encoding | |
3540 | encoding = offset | |
3541 | offset = length | 0 | |
3542 | length = swap | |
3af2954a IC |
3543 | } |
3544 | ||
ab78acc6 IC |
3545 | var remaining = this.length - offset |
3546 | if (length === undefined || length > remaining) length = remaining | |
3af2954a | 3547 | |
ab78acc6 IC |
3548 | if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { |
3549 | throw new RangeError('attempt to write outside buffer bounds') | |
3550 | } | |
3af2954a | 3551 | |
ab78acc6 | 3552 | if (!encoding) encoding = 'utf8' |
3af2954a | 3553 | |
ab78acc6 IC |
3554 | var loweredCase = false |
3555 | for (;;) { | |
3556 | switch (encoding) { | |
3557 | case 'hex': | |
3558 | return hexWrite(this, string, offset, length) | |
ebd8d4e8 | 3559 | |
ab78acc6 IC |
3560 | case 'utf8': |
3561 | case 'utf-8': | |
3562 | return utf8Write(this, string, offset, length) | |
ebd8d4e8 | 3563 | |
ab78acc6 IC |
3564 | case 'ascii': |
3565 | return asciiWrite(this, string, offset, length) | |
ebd8d4e8 | 3566 | |
ab78acc6 IC |
3567 | case 'binary': |
3568 | return binaryWrite(this, string, offset, length) | |
ebd8d4e8 | 3569 | |
ab78acc6 IC |
3570 | case 'base64': |
3571 | // Warning: maxLength not taken into account in base64Write | |
3572 | return base64Write(this, string, offset, length) | |
ebd8d4e8 | 3573 | |
ab78acc6 IC |
3574 | case 'ucs2': |
3575 | case 'ucs-2': | |
3576 | case 'utf16le': | |
3577 | case 'utf-16le': | |
3578 | return ucs2Write(this, string, offset, length) | |
ebd8d4e8 | 3579 | |
ab78acc6 IC |
3580 | default: |
3581 | if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) | |
3582 | encoding = ('' + encoding).toLowerCase() | |
3583 | loweredCase = true | |
3584 | } | |
3585 | } | |
3586 | } | |
212b1b46 | 3587 | |
ab78acc6 IC |
3588 | Buffer.prototype.toJSON = function toJSON () { |
3589 | return { | |
3590 | type: 'Buffer', | |
3591 | data: Array.prototype.slice.call(this._arr || this, 0) | |
3592 | } | |
3593 | } | |
212b1b46 | 3594 | |
ab78acc6 IC |
3595 | function base64Slice (buf, start, end) { |
3596 | if (start === 0 && end === buf.length) { | |
3597 | return base64.fromByteArray(buf) | |
3598 | } else { | |
3599 | return base64.fromByteArray(buf.slice(start, end)) | |
3af2954a | 3600 | } |
ab78acc6 IC |
3601 | } |
3602 | ||
3603 | function utf8Slice (buf, start, end) { | |
3604 | end = Math.min(buf.length, end) | |
3605 | var firstByte | |
3606 | var secondByte | |
3607 | var thirdByte | |
3608 | var fourthByte | |
3609 | var bytesPerSequence | |
3610 | var tempCodePoint | |
3611 | var codePoint | |
3612 | var res = [] | |
3613 | var i = start | |
3614 | ||
3615 | for (; i < end; i += bytesPerSequence) { | |
3616 | firstByte = buf[i] | |
3617 | codePoint = 0xFFFD | |
3618 | ||
3619 | if (firstByte > 0xEF) { | |
3620 | bytesPerSequence = 4 | |
3621 | } else if (firstByte > 0xDF) { | |
3622 | bytesPerSequence = 3 | |
3623 | } else if (firstByte > 0xBF) { | |
3624 | bytesPerSequence = 2 | |
3625 | } else { | |
3626 | bytesPerSequence = 1 | |
3627 | } | |
212b1b46 | 3628 | |
ab78acc6 IC |
3629 | if (i + bytesPerSequence <= end) { |
3630 | switch (bytesPerSequence) { | |
3631 | case 1: | |
3632 | if (firstByte < 0x80) { | |
3633 | codePoint = firstByte | |
3634 | } | |
3635 | break | |
3636 | case 2: | |
3637 | secondByte = buf[i + 1] | |
3638 | if ((secondByte & 0xC0) === 0x80) { | |
3639 | tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) | |
3640 | if (tempCodePoint > 0x7F) { | |
3641 | codePoint = tempCodePoint | |
3642 | } | |
3643 | } | |
3644 | break | |
3645 | case 3: | |
3646 | secondByte = buf[i + 1] | |
3647 | thirdByte = buf[i + 2] | |
3648 | if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { | |
3649 | tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) | |
3650 | if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { | |
3651 | codePoint = tempCodePoint | |
3652 | } | |
3653 | } | |
3654 | break | |
3655 | case 4: | |
3656 | secondByte = buf[i + 1] | |
3657 | thirdByte = buf[i + 2] | |
3658 | fourthByte = buf[i + 3] | |
3659 | if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { | |
3660 | tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) | |
3661 | if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { | |
3662 | codePoint = tempCodePoint | |
3663 | } | |
3664 | } | |
3665 | } | |
3666 | } | |
212b1b46 | 3667 | |
ab78acc6 IC |
3668 | if (codePoint === 0xFFFD) { |
3669 | // we generated an invalid codePoint so make sure to only advance by 1 byte | |
3670 | bytesPerSequence = 1 | |
3671 | } else if (codePoint > 0xFFFF) { | |
3672 | // encode to utf16 (surrogate pair dance) | |
3673 | codePoint -= 0x10000 | |
3674 | res.push(codePoint >>> 10 & 0x3FF | 0xD800) | |
3675 | codePoint = 0xDC00 | codePoint & 0x3FF | |
3676 | } | |
212b1b46 | 3677 | |
ab78acc6 | 3678 | res.push(codePoint) |
3af2954a | 3679 | } |
212b1b46 | 3680 | |
ab78acc6 IC |
3681 | return String.fromCharCode.apply(String, res) |
3682 | } | |
212b1b46 | 3683 | |
ab78acc6 IC |
3684 | function asciiSlice (buf, start, end) { |
3685 | var ret = '' | |
3686 | end = Math.min(buf.length, end) | |
3687 | ||
3688 | for (var i = start; i < end; i++) { | |
3689 | ret += String.fromCharCode(buf[i] & 0x7F) | |
3af2954a | 3690 | } |
ab78acc6 IC |
3691 | return ret |
3692 | } | |
212b1b46 | 3693 | |
ab78acc6 IC |
3694 | function binarySlice (buf, start, end) { |
3695 | var ret = '' | |
3696 | end = Math.min(buf.length, end) | |
212b1b46 | 3697 | |
ab78acc6 IC |
3698 | for (var i = start; i < end; i++) { |
3699 | ret += String.fromCharCode(buf[i]) | |
3700 | } | |
3701 | return ret | |
3702 | } | |
212b1b46 | 3703 | |
ab78acc6 IC |
3704 | function hexSlice (buf, start, end) { |
3705 | var len = buf.length | |
212b1b46 | 3706 | |
ab78acc6 IC |
3707 | if (!start || start < 0) start = 0 |
3708 | if (!end || end < 0 || end > len) end = len | |
212b1b46 | 3709 | |
ab78acc6 IC |
3710 | var out = '' |
3711 | for (var i = start; i < end; i++) { | |
3712 | out += toHex(buf[i]) | |
3713 | } | |
3714 | return out | |
3715 | } | |
212b1b46 | 3716 | |
ab78acc6 IC |
3717 | function utf16leSlice (buf, start, end) { |
3718 | var bytes = buf.slice(start, end) | |
3719 | var res = '' | |
3720 | for (var i = 0; i < bytes.length; i += 2) { | |
3721 | res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) | |
3722 | } | |
3723 | return res | |
3724 | } | |
212b1b46 | 3725 | |
ab78acc6 IC |
3726 | Buffer.prototype.slice = function slice (start, end) { |
3727 | var len = this.length | |
3728 | start = ~~start | |
3729 | end = end === undefined ? len : ~~end | |
212b1b46 | 3730 | |
ab78acc6 IC |
3731 | if (start < 0) { |
3732 | start += len | |
3733 | if (start < 0) start = 0 | |
3734 | } else if (start > len) { | |
3735 | start = len | |
3736 | } | |
212b1b46 | 3737 | |
ab78acc6 IC |
3738 | if (end < 0) { |
3739 | end += len | |
3740 | if (end < 0) end = 0 | |
3741 | } else if (end > len) { | |
3742 | end = len | |
3743 | } | |
212b1b46 | 3744 | |
ab78acc6 | 3745 | if (end < start) end = start |
212b1b46 | 3746 | |
ab78acc6 IC |
3747 | var newBuf |
3748 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
3749 | newBuf = Buffer._augment(this.subarray(start, end)) | |
3750 | } else { | |
3751 | var sliceLen = end - start | |
3752 | newBuf = new Buffer(sliceLen, undefined) | |
3753 | for (var i = 0; i < sliceLen; i++) { | |
3754 | newBuf[i] = this[i + start] | |
3af2954a IC |
3755 | } |
3756 | } | |
212b1b46 | 3757 | |
ab78acc6 | 3758 | if (newBuf.length) newBuf.parent = this.parent || this |
ebd8d4e8 | 3759 | |
ab78acc6 IC |
3760 | return newBuf |
3761 | } | |
ebd8d4e8 | 3762 | |
ab78acc6 IC |
3763 | /* |
3764 | * Need to make sure that buffer isn't trying to write out of bounds. | |
3765 | */ | |
3766 | function checkOffset (offset, ext, length) { | |
3767 | if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') | |
3768 | if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') | |
3769 | } | |
ebd8d4e8 | 3770 | |
ab78acc6 IC |
3771 | Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { |
3772 | offset = offset | 0 | |
3773 | byteLength = byteLength | 0 | |
3774 | if (!noAssert) checkOffset(offset, byteLength, this.length) | |
3af2954a | 3775 | |
ab78acc6 IC |
3776 | var val = this[offset] |
3777 | var mul = 1 | |
3778 | var i = 0 | |
3779 | while (++i < byteLength && (mul *= 0x100)) { | |
3780 | val += this[offset + i] * mul | |
3781 | } | |
3af2954a | 3782 | |
ab78acc6 IC |
3783 | return val |
3784 | } | |
3af2954a | 3785 | |
ab78acc6 IC |
3786 | Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { |
3787 | offset = offset | 0 | |
3788 | byteLength = byteLength | 0 | |
3789 | if (!noAssert) { | |
3790 | checkOffset(offset, byteLength, this.length) | |
3791 | } | |
3af2954a | 3792 | |
ab78acc6 IC |
3793 | var val = this[offset + --byteLength] |
3794 | var mul = 1 | |
3795 | while (byteLength > 0 && (mul *= 0x100)) { | |
3796 | val += this[offset + --byteLength] * mul | |
3af2954a IC |
3797 | } |
3798 | ||
ab78acc6 IC |
3799 | return val |
3800 | } | |
3af2954a | 3801 | |
ab78acc6 IC |
3802 | Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { |
3803 | if (!noAssert) checkOffset(offset, 1, this.length) | |
3804 | return this[offset] | |
3805 | } | |
3af2954a | 3806 | |
ab78acc6 IC |
3807 | Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { |
3808 | if (!noAssert) checkOffset(offset, 2, this.length) | |
3809 | return this[offset] | (this[offset + 1] << 8) | |
3810 | } | |
3af2954a | 3811 | |
ab78acc6 IC |
3812 | Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { |
3813 | if (!noAssert) checkOffset(offset, 2, this.length) | |
3814 | return (this[offset] << 8) | this[offset + 1] | |
3815 | } | |
ebd8d4e8 | 3816 | |
ab78acc6 IC |
3817 | Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { |
3818 | if (!noAssert) checkOffset(offset, 4, this.length) | |
3af2954a | 3819 | |
ab78acc6 IC |
3820 | return ((this[offset]) | |
3821 | (this[offset + 1] << 8) | | |
3822 | (this[offset + 2] << 16)) + | |
3823 | (this[offset + 3] * 0x1000000) | |
3824 | } | |
3af2954a | 3825 | |
ab78acc6 IC |
3826 | Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { |
3827 | if (!noAssert) checkOffset(offset, 4, this.length) | |
ebd8d4e8 | 3828 | |
ab78acc6 IC |
3829 | return (this[offset] * 0x1000000) + |
3830 | ((this[offset + 1] << 16) | | |
3831 | (this[offset + 2] << 8) | | |
3832 | this[offset + 3]) | |
3833 | } | |
ebd8d4e8 | 3834 | |
ab78acc6 IC |
3835 | Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { |
3836 | offset = offset | 0 | |
3837 | byteLength = byteLength | 0 | |
3838 | if (!noAssert) checkOffset(offset, byteLength, this.length) | |
ebd8d4e8 | 3839 | |
ab78acc6 IC |
3840 | var val = this[offset] |
3841 | var mul = 1 | |
3842 | var i = 0 | |
3843 | while (++i < byteLength && (mul *= 0x100)) { | |
3844 | val += this[offset + i] * mul | |
ebd8d4e8 | 3845 | } |
ab78acc6 | 3846 | mul *= 0x80 |
ebd8d4e8 | 3847 | |
ab78acc6 IC |
3848 | if (val >= mul) val -= Math.pow(2, 8 * byteLength) |
3849 | ||
3850 | return val | |
ebd8d4e8 IC |
3851 | } |
3852 | ||
ab78acc6 IC |
3853 | Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { |
3854 | offset = offset | 0 | |
3855 | byteLength = byteLength | 0 | |
3856 | if (!noAssert) checkOffset(offset, byteLength, this.length) | |
ebd8d4e8 | 3857 | |
ab78acc6 IC |
3858 | var i = byteLength |
3859 | var mul = 1 | |
3860 | var val = this[offset + --i] | |
3861 | while (i > 0 && (mul *= 0x100)) { | |
3862 | val += this[offset + --i] * mul | |
3863 | } | |
3864 | mul *= 0x80 | |
ebd8d4e8 | 3865 | |
ab78acc6 | 3866 | if (val >= mul) val -= Math.pow(2, 8 * byteLength) |
ebd8d4e8 | 3867 | |
ab78acc6 IC |
3868 | return val |
3869 | } | |
ebd8d4e8 | 3870 | |
ab78acc6 IC |
3871 | Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { |
3872 | if (!noAssert) checkOffset(offset, 1, this.length) | |
3873 | if (!(this[offset] & 0x80)) return (this[offset]) | |
3874 | return ((0xff - this[offset] + 1) * -1) | |
ebd8d4e8 | 3875 | } |
ab78acc6 IC |
3876 | |
3877 | Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { | |
3878 | if (!noAssert) checkOffset(offset, 2, this.length) | |
3879 | var val = this[offset] | (this[offset + 1] << 8) | |
3880 | return (val & 0x8000) ? val | 0xFFFF0000 : val | |
ebd8d4e8 | 3881 | } |
ab78acc6 IC |
3882 | |
3883 | Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { | |
3884 | if (!noAssert) checkOffset(offset, 2, this.length) | |
3885 | var val = this[offset + 1] | (this[offset] << 8) | |
3886 | return (val & 0x8000) ? val | 0xFFFF0000 : val | |
ebd8d4e8 IC |
3887 | } |
3888 | ||
ab78acc6 IC |
3889 | Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { |
3890 | if (!noAssert) checkOffset(offset, 4, this.length) | |
ebd8d4e8 | 3891 | |
ab78acc6 IC |
3892 | return (this[offset]) | |
3893 | (this[offset + 1] << 8) | | |
3894 | (this[offset + 2] << 16) | | |
3895 | (this[offset + 3] << 24) | |
ebd8d4e8 | 3896 | } |
ebd8d4e8 | 3897 | |
ab78acc6 IC |
3898 | Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { |
3899 | if (!noAssert) checkOffset(offset, 4, this.length) | |
ebd8d4e8 | 3900 | |
ab78acc6 IC |
3901 | return (this[offset] << 24) | |
3902 | (this[offset + 1] << 16) | | |
3903 | (this[offset + 2] << 8) | | |
3904 | (this[offset + 3]) | |
ebd8d4e8 IC |
3905 | } |
3906 | ||
ab78acc6 IC |
3907 | Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { |
3908 | if (!noAssert) checkOffset(offset, 4, this.length) | |
3909 | return ieee754.read(this, offset, true, 23, 4) | |
ebd8d4e8 IC |
3910 | } |
3911 | ||
ab78acc6 IC |
3912 | Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { |
3913 | if (!noAssert) checkOffset(offset, 4, this.length) | |
3914 | return ieee754.read(this, offset, false, 23, 4) | |
ebd8d4e8 IC |
3915 | } |
3916 | ||
ab78acc6 IC |
3917 | Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { |
3918 | if (!noAssert) checkOffset(offset, 8, this.length) | |
3919 | return ieee754.read(this, offset, true, 52, 8) | |
ebd8d4e8 IC |
3920 | } |
3921 | ||
ab78acc6 IC |
3922 | Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { |
3923 | if (!noAssert) checkOffset(offset, 8, this.length) | |
3924 | return ieee754.read(this, offset, false, 52, 8) | |
ebd8d4e8 IC |
3925 | } |
3926 | ||
ab78acc6 IC |
3927 | function checkInt (buf, value, offset, ext, max, min) { |
3928 | if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance') | |
3929 | if (value > max || value < min) throw new RangeError('value is out of bounds') | |
3930 | if (offset + ext > buf.length) throw new RangeError('index out of range') | |
ebd8d4e8 IC |
3931 | } |
3932 | ||
ab78acc6 IC |
3933 | Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { |
3934 | value = +value | |
3935 | offset = offset | 0 | |
3936 | byteLength = byteLength | 0 | |
3937 | if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) | |
ebd8d4e8 | 3938 | |
ab78acc6 IC |
3939 | var mul = 1 |
3940 | var i = 0 | |
3941 | this[offset] = value & 0xFF | |
3942 | while (++i < byteLength && (mul *= 0x100)) { | |
3943 | this[offset + i] = (value / mul) & 0xFF | |
3944 | } | |
ebd8d4e8 | 3945 | |
ab78acc6 | 3946 | return offset + byteLength |
ebd8d4e8 IC |
3947 | } |
3948 | ||
ab78acc6 IC |
3949 | Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { |
3950 | value = +value | |
3951 | offset = offset | 0 | |
3952 | byteLength = byteLength | 0 | |
3953 | if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) | |
ebd8d4e8 | 3954 | |
ab78acc6 IC |
3955 | var i = byteLength - 1 |
3956 | var mul = 1 | |
3957 | this[offset + i] = value & 0xFF | |
3958 | while (--i >= 0 && (mul *= 0x100)) { | |
3959 | this[offset + i] = (value / mul) & 0xFF | |
3960 | } | |
ebd8d4e8 | 3961 | |
ab78acc6 | 3962 | return offset + byteLength |
ebd8d4e8 IC |
3963 | } |
3964 | ||
ab78acc6 IC |
3965 | Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { |
3966 | value = +value | |
3967 | offset = offset | 0 | |
3968 | if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) | |
3969 | if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) | |
3970 | this[offset] = value | |
3971 | return offset + 1 | |
ebd8d4e8 IC |
3972 | } |
3973 | ||
ab78acc6 IC |
3974 | function objectWriteUInt16 (buf, value, offset, littleEndian) { |
3975 | if (value < 0) value = 0xffff + value + 1 | |
3976 | for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) { | |
3977 | buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> | |
3978 | (littleEndian ? i : 1 - i) * 8 | |
ebd8d4e8 | 3979 | } |
ebd8d4e8 IC |
3980 | } |
3981 | ||
ab78acc6 IC |
3982 | Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { |
3983 | value = +value | |
3984 | offset = offset | 0 | |
3985 | if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) | |
3986 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
3987 | this[offset] = value | |
3988 | this[offset + 1] = (value >>> 8) | |
3989 | } else { | |
3990 | objectWriteUInt16(this, value, offset, true) | |
3991 | } | |
3992 | return offset + 2 | |
ebd8d4e8 IC |
3993 | } |
3994 | ||
ab78acc6 IC |
3995 | Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { |
3996 | value = +value | |
3997 | offset = offset | 0 | |
3998 | if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) | |
3999 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
4000 | this[offset] = (value >>> 8) | |
4001 | this[offset + 1] = value | |
4002 | } else { | |
4003 | objectWriteUInt16(this, value, offset, false) | |
ebd8d4e8 | 4004 | } |
ab78acc6 | 4005 | return offset + 2 |
ebd8d4e8 IC |
4006 | } |
4007 | ||
ab78acc6 IC |
4008 | function objectWriteUInt32 (buf, value, offset, littleEndian) { |
4009 | if (value < 0) value = 0xffffffff + value + 1 | |
4010 | for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) { | |
4011 | buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff | |
4012 | } | |
ebd8d4e8 IC |
4013 | } |
4014 | ||
ab78acc6 IC |
4015 | Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { |
4016 | value = +value | |
4017 | offset = offset | 0 | |
4018 | if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) | |
4019 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
4020 | this[offset + 3] = (value >>> 24) | |
4021 | this[offset + 2] = (value >>> 16) | |
4022 | this[offset + 1] = (value >>> 8) | |
4023 | this[offset] = value | |
4024 | } else { | |
4025 | objectWriteUInt32(this, value, offset, true) | |
ebd8d4e8 | 4026 | } |
ab78acc6 | 4027 | return offset + 4 |
ebd8d4e8 IC |
4028 | } |
4029 | ||
ab78acc6 IC |
4030 | Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { |
4031 | value = +value | |
4032 | offset = offset | 0 | |
4033 | if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) | |
4034 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
4035 | this[offset] = (value >>> 24) | |
4036 | this[offset + 1] = (value >>> 16) | |
4037 | this[offset + 2] = (value >>> 8) | |
4038 | this[offset + 3] = value | |
4039 | } else { | |
4040 | objectWriteUInt32(this, value, offset, false) | |
ebd8d4e8 | 4041 | } |
ab78acc6 IC |
4042 | return offset + 4 |
4043 | } | |
4044 | ||
4045 | Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { | |
4046 | value = +value | |
4047 | offset = offset | 0 | |
4048 | if (!noAssert) { | |
4049 | var limit = Math.pow(2, 8 * byteLength - 1) | |
4050 | ||
4051 | checkInt(this, value, offset, byteLength, limit - 1, -limit) | |
ebd8d4e8 | 4052 | } |
ab78acc6 IC |
4053 | |
4054 | var i = 0 | |
4055 | var mul = 1 | |
4056 | var sub = value < 0 ? 1 : 0 | |
4057 | this[offset] = value & 0xFF | |
4058 | while (++i < byteLength && (mul *= 0x100)) { | |
4059 | this[offset + i] = ((value / mul) >> 0) - sub & 0xFF | |
ebd8d4e8 | 4060 | } |
ebd8d4e8 | 4061 | |
ab78acc6 | 4062 | return offset + byteLength |
ebd8d4e8 IC |
4063 | } |
4064 | ||
ab78acc6 IC |
4065 | Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { |
4066 | value = +value | |
4067 | offset = offset | 0 | |
4068 | if (!noAssert) { | |
4069 | var limit = Math.pow(2, 8 * byteLength - 1) | |
ebd8d4e8 | 4070 | |
ab78acc6 IC |
4071 | checkInt(this, value, offset, byteLength, limit - 1, -limit) |
4072 | } | |
ebd8d4e8 | 4073 | |
ab78acc6 IC |
4074 | var i = byteLength - 1 |
4075 | var mul = 1 | |
4076 | var sub = value < 0 ? 1 : 0 | |
4077 | this[offset + i] = value & 0xFF | |
4078 | while (--i >= 0 && (mul *= 0x100)) { | |
4079 | this[offset + i] = ((value / mul) >> 0) - sub & 0xFF | |
4080 | } | |
4081 | ||
4082 | return offset + byteLength | |
ebd8d4e8 IC |
4083 | } |
4084 | ||
ab78acc6 IC |
4085 | Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { |
4086 | value = +value | |
4087 | offset = offset | 0 | |
4088 | if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) | |
4089 | if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) | |
4090 | if (value < 0) value = 0xff + value + 1 | |
4091 | this[offset] = value | |
4092 | return offset + 1 | |
ebd8d4e8 IC |
4093 | } |
4094 | ||
ab78acc6 IC |
4095 | Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { |
4096 | value = +value | |
4097 | offset = offset | 0 | |
4098 | if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) | |
4099 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
4100 | this[offset] = value | |
4101 | this[offset + 1] = (value >>> 8) | |
4102 | } else { | |
4103 | objectWriteUInt16(this, value, offset, true) | |
4104 | } | |
4105 | return offset + 2 | |
ebd8d4e8 IC |
4106 | } |
4107 | ||
ab78acc6 IC |
4108 | Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { |
4109 | value = +value | |
4110 | offset = offset | 0 | |
4111 | if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) | |
4112 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
4113 | this[offset] = (value >>> 8) | |
4114 | this[offset + 1] = value | |
4115 | } else { | |
4116 | objectWriteUInt16(this, value, offset, false) | |
4117 | } | |
4118 | return offset + 2 | |
ebd8d4e8 IC |
4119 | } |
4120 | ||
ab78acc6 IC |
4121 | Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { |
4122 | value = +value | |
4123 | offset = offset | 0 | |
4124 | if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) | |
4125 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
4126 | this[offset] = value | |
4127 | this[offset + 1] = (value >>> 8) | |
4128 | this[offset + 2] = (value >>> 16) | |
4129 | this[offset + 3] = (value >>> 24) | |
4130 | } else { | |
4131 | objectWriteUInt32(this, value, offset, true) | |
4132 | } | |
4133 | return offset + 4 | |
4134 | } | |
4135 | ||
4136 | Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { | |
4137 | value = +value | |
4138 | offset = offset | 0 | |
4139 | if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) | |
4140 | if (value < 0) value = 0xffffffff + value + 1 | |
4141 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
4142 | this[offset] = (value >>> 24) | |
4143 | this[offset + 1] = (value >>> 16) | |
4144 | this[offset + 2] = (value >>> 8) | |
4145 | this[offset + 3] = value | |
4146 | } else { | |
4147 | objectWriteUInt32(this, value, offset, false) | |
ebd8d4e8 | 4148 | } |
ab78acc6 | 4149 | return offset + 4 |
ebd8d4e8 IC |
4150 | } |
4151 | ||
ab78acc6 IC |
4152 | function checkIEEE754 (buf, value, offset, ext, max, min) { |
4153 | if (value > max || value < min) throw new RangeError('value is out of bounds') | |
4154 | if (offset + ext > buf.length) throw new RangeError('index out of range') | |
4155 | if (offset < 0) throw new RangeError('index out of range') | |
4156 | } | |
ebd8d4e8 | 4157 | |
ab78acc6 IC |
4158 | function writeFloat (buf, value, offset, littleEndian, noAssert) { |
4159 | if (!noAssert) { | |
4160 | checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) | |
4161 | } | |
4162 | ieee754.write(buf, value, offset, littleEndian, 23, 4) | |
4163 | return offset + 4 | |
4164 | } | |
ebd8d4e8 | 4165 | |
ab78acc6 IC |
4166 | Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { |
4167 | return writeFloat(this, value, offset, true, noAssert) | |
4168 | } | |
ebd8d4e8 | 4169 | |
ab78acc6 IC |
4170 | Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { |
4171 | return writeFloat(this, value, offset, false, noAssert) | |
4172 | } | |
ebd8d4e8 | 4173 | |
ab78acc6 IC |
4174 | function writeDouble (buf, value, offset, littleEndian, noAssert) { |
4175 | if (!noAssert) { | |
4176 | checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) | |
ebd8d4e8 | 4177 | } |
ab78acc6 IC |
4178 | ieee754.write(buf, value, offset, littleEndian, 52, 8) |
4179 | return offset + 8 | |
ebd8d4e8 IC |
4180 | } |
4181 | ||
ab78acc6 IC |
4182 | Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { |
4183 | return writeDouble(this, value, offset, true, noAssert) | |
ebd8d4e8 IC |
4184 | } |
4185 | ||
ab78acc6 IC |
4186 | Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { |
4187 | return writeDouble(this, value, offset, false, noAssert) | |
4188 | } | |
ebd8d4e8 | 4189 | |
ab78acc6 IC |
4190 | // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) |
4191 | Buffer.prototype.copy = function copy (target, targetStart, start, end) { | |
4192 | if (!start) start = 0 | |
4193 | if (!end && end !== 0) end = this.length | |
4194 | if (targetStart >= target.length) targetStart = target.length | |
4195 | if (!targetStart) targetStart = 0 | |
4196 | if (end > 0 && end < start) end = start | |
4197 | ||
4198 | // Copy 0 bytes; we're done | |
4199 | if (end === start) return 0 | |
4200 | if (target.length === 0 || this.length === 0) return 0 | |
ebd8d4e8 | 4201 | |
ab78acc6 IC |
4202 | // Fatal error conditions |
4203 | if (targetStart < 0) { | |
4204 | throw new RangeError('targetStart out of bounds') | |
4205 | } | |
4206 | if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') | |
4207 | if (end < 0) throw new RangeError('sourceEnd out of bounds') | |
ebd8d4e8 | 4208 | |
ab78acc6 IC |
4209 | // Are we oob? |
4210 | if (end > this.length) end = this.length | |
4211 | if (target.length - targetStart < end - start) { | |
4212 | end = target.length - targetStart + start | |
4213 | } | |
ebd8d4e8 | 4214 | |
ab78acc6 IC |
4215 | var len = end - start |
4216 | var i | |
ebd8d4e8 | 4217 | |
ab78acc6 IC |
4218 | if (this === target && start < targetStart && targetStart < end) { |
4219 | // descending copy from end | |
4220 | for (i = len - 1; i >= 0; i--) { | |
4221 | target[i + targetStart] = this[i + start] | |
4222 | } | |
4223 | } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { | |
4224 | // ascending copy from start | |
4225 | for (i = 0; i < len; i++) { | |
4226 | target[i + targetStart] = this[i + start] | |
4227 | } | |
4228 | } else { | |
4229 | target._set(this.subarray(start, start + len), targetStart) | |
ebd8d4e8 | 4230 | } |
ebd8d4e8 | 4231 | |
ab78acc6 IC |
4232 | return len |
4233 | } | |
ebd8d4e8 | 4234 | |
ab78acc6 IC |
4235 | // fill(value, start=0, end=buffer.length) |
4236 | Buffer.prototype.fill = function fill (value, start, end) { | |
4237 | if (!value) value = 0 | |
4238 | if (!start) start = 0 | |
4239 | if (!end) end = this.length | |
ebd8d4e8 | 4240 | |
ab78acc6 | 4241 | if (end < start) throw new RangeError('end < start') |
ebd8d4e8 | 4242 | |
ab78acc6 IC |
4243 | // Fill 0 bytes; we're done |
4244 | if (end === start) return | |
4245 | if (this.length === 0) return | |
ebd8d4e8 | 4246 | |
ab78acc6 IC |
4247 | if (start < 0 || start >= this.length) throw new RangeError('start out of bounds') |
4248 | if (end < 0 || end > this.length) throw new RangeError('end out of bounds') | |
ebd8d4e8 | 4249 | |
ab78acc6 IC |
4250 | var i |
4251 | if (typeof value === 'number') { | |
4252 | for (i = start; i < end; i++) { | |
4253 | this[i] = value | |
ebd8d4e8 | 4254 | } |
ab78acc6 IC |
4255 | } else { |
4256 | var bytes = utf8ToBytes(value.toString()) | |
4257 | var len = bytes.length | |
4258 | for (i = start; i < end; i++) { | |
4259 | this[i] = bytes[i % len] | |
ebd8d4e8 IC |
4260 | } |
4261 | } | |
ebd8d4e8 | 4262 | |
ab78acc6 | 4263 | return this |
ebd8d4e8 IC |
4264 | } |
4265 | ||
ab78acc6 IC |
4266 | /** |
4267 | * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. | |
4268 | * Added in Node 0.12. Only available in browsers that support ArrayBuffer. | |
4269 | */ | |
4270 | Buffer.prototype.toArrayBuffer = function toArrayBuffer () { | |
4271 | if (typeof Uint8Array !== 'undefined') { | |
4272 | if (Buffer.TYPED_ARRAY_SUPPORT) { | |
4273 | return (new Buffer(this)).buffer | |
4274 | } else { | |
4275 | var buf = new Uint8Array(this.length) | |
4276 | for (var i = 0, len = buf.length; i < len; i += 1) { | |
4277 | buf[i] = this[i] | |
ebd8d4e8 | 4278 | } |
ab78acc6 | 4279 | return buf.buffer |
ebd8d4e8 | 4280 | } |
ab78acc6 IC |
4281 | } else { |
4282 | throw new TypeError('Buffer.toArrayBuffer not supported in this browser') | |
ebd8d4e8 | 4283 | } |
ebd8d4e8 IC |
4284 | } |
4285 | ||
ab78acc6 IC |
4286 | // HELPER FUNCTIONS |
4287 | // ================ | |
ebd8d4e8 | 4288 | |
ab78acc6 | 4289 | var BP = Buffer.prototype |
ebd8d4e8 | 4290 | |
ab78acc6 IC |
4291 | /** |
4292 | * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods | |
4293 | */ | |
4294 | Buffer._augment = function _augment (arr) { | |
4295 | arr.constructor = Buffer | |
4296 | arr._isBuffer = true | |
ebd8d4e8 | 4297 | |
ab78acc6 IC |
4298 | // save reference to original Uint8Array set method before overwriting |
4299 | arr._set = arr.set | |
ebd8d4e8 | 4300 | |
ab78acc6 IC |
4301 | // deprecated |
4302 | arr.get = BP.get | |
4303 | arr.set = BP.set | |
ebd8d4e8 | 4304 | |
ab78acc6 IC |
4305 | arr.write = BP.write |
4306 | arr.toString = BP.toString | |
4307 | arr.toLocaleString = BP.toString | |
4308 | arr.toJSON = BP.toJSON | |
4309 | arr.equals = BP.equals | |
4310 | arr.compare = BP.compare | |
4311 | arr.indexOf = BP.indexOf | |
4312 | arr.copy = BP.copy | |
4313 | arr.slice = BP.slice | |
4314 | arr.readUIntLE = BP.readUIntLE | |
4315 | arr.readUIntBE = BP.readUIntBE | |
4316 | arr.readUInt8 = BP.readUInt8 | |
4317 | arr.readUInt16LE = BP.readUInt16LE | |
4318 | arr.readUInt16BE = BP.readUInt16BE | |
4319 | arr.readUInt32LE = BP.readUInt32LE | |
4320 | arr.readUInt32BE = BP.readUInt32BE | |
4321 | arr.readIntLE = BP.readIntLE | |
4322 | arr.readIntBE = BP.readIntBE | |
4323 | arr.readInt8 = BP.readInt8 | |
4324 | arr.readInt16LE = BP.readInt16LE | |
4325 | arr.readInt16BE = BP.readInt16BE | |
4326 | arr.readInt32LE = BP.readInt32LE | |
4327 | arr.readInt32BE = BP.readInt32BE | |
4328 | arr.readFloatLE = BP.readFloatLE | |
4329 | arr.readFloatBE = BP.readFloatBE | |
4330 | arr.readDoubleLE = BP.readDoubleLE | |
4331 | arr.readDoubleBE = BP.readDoubleBE | |
4332 | arr.writeUInt8 = BP.writeUInt8 | |
4333 | arr.writeUIntLE = BP.writeUIntLE | |
4334 | arr.writeUIntBE = BP.writeUIntBE | |
4335 | arr.writeUInt16LE = BP.writeUInt16LE | |
4336 | arr.writeUInt16BE = BP.writeUInt16BE | |
4337 | arr.writeUInt32LE = BP.writeUInt32LE | |
4338 | arr.writeUInt32BE = BP.writeUInt32BE | |
4339 | arr.writeIntLE = BP.writeIntLE | |
4340 | arr.writeIntBE = BP.writeIntBE | |
4341 | arr.writeInt8 = BP.writeInt8 | |
4342 | arr.writeInt16LE = BP.writeInt16LE | |
4343 | arr.writeInt16BE = BP.writeInt16BE | |
4344 | arr.writeInt32LE = BP.writeInt32LE | |
4345 | arr.writeInt32BE = BP.writeInt32BE | |
4346 | arr.writeFloatLE = BP.writeFloatLE | |
4347 | arr.writeFloatBE = BP.writeFloatBE | |
4348 | arr.writeDoubleLE = BP.writeDoubleLE | |
4349 | arr.writeDoubleBE = BP.writeDoubleBE | |
4350 | arr.fill = BP.fill | |
4351 | arr.inspect = BP.inspect | |
4352 | arr.toArrayBuffer = BP.toArrayBuffer | |
ebd8d4e8 | 4353 | |
ab78acc6 | 4354 | return arr |
ebd8d4e8 IC |
4355 | } |
4356 | ||
ab78acc6 | 4357 | var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g |
ebd8d4e8 | 4358 | |
ab78acc6 IC |
4359 | function base64clean (str) { |
4360 | // Node strips out invalid characters like \n and \t from the string, base64-js does not | |
4361 | str = stringtrim(str).replace(INVALID_BASE64_RE, '') | |
4362 | // Node converts strings with length < 2 to '' | |
4363 | if (str.length < 2) return '' | |
4364 | // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not | |
4365 | while (str.length % 4 !== 0) { | |
4366 | str = str + '=' | |
4367 | } | |
4368 | return str | |
ebd8d4e8 IC |
4369 | } |
4370 | ||
ab78acc6 IC |
4371 | function stringtrim (str) { |
4372 | if (str.trim) return str.trim() | |
4373 | return str.replace(/^\s+|\s+$/g, '') | |
ebd8d4e8 IC |
4374 | } |
4375 | ||
ab78acc6 IC |
4376 | function toHex (n) { |
4377 | if (n < 16) return '0' + n.toString(16) | |
4378 | return n.toString(16) | |
ebd8d4e8 IC |
4379 | } |
4380 | ||
ab78acc6 IC |
4381 | function utf8ToBytes (string, units) { |
4382 | units = units || Infinity | |
4383 | var codePoint | |
4384 | var length = string.length | |
4385 | var leadSurrogate = null | |
4386 | var bytes = [] | |
ebd8d4e8 | 4387 | |
ab78acc6 IC |
4388 | for (var i = 0; i < length; i++) { |
4389 | codePoint = string.charCodeAt(i) | |
ebd8d4e8 | 4390 | |
ab78acc6 IC |
4391 | // is surrogate component |
4392 | if (codePoint > 0xD7FF && codePoint < 0xE000) { | |
4393 | // last char was a lead | |
4394 | if (!leadSurrogate) { | |
4395 | // no lead yet | |
4396 | if (codePoint > 0xDBFF) { | |
4397 | // unexpected trail | |
4398 | if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) | |
4399 | continue | |
ebd8d4e8 | 4400 | |
ab78acc6 IC |
4401 | } else if (i + 1 === length) { |
4402 | // unpaired lead | |
4403 | if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) | |
4404 | continue | |
4405 | } | |
ebd8d4e8 | 4406 | |
ab78acc6 IC |
4407 | // valid lead |
4408 | leadSurrogate = codePoint | |
ebd8d4e8 | 4409 | |
ab78acc6 IC |
4410 | continue |
4411 | } | |
ebd8d4e8 | 4412 | |
ab78acc6 IC |
4413 | // 2 leads in a row |
4414 | if (codePoint < 0xDC00) { | |
4415 | if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) | |
4416 | leadSurrogate = codePoint | |
4417 | continue | |
4418 | } | |
ebd8d4e8 | 4419 | |
ab78acc6 IC |
4420 | // valid surrogate pair |
4421 | codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000 | |
4422 | ||
4423 | } else if (leadSurrogate) { | |
4424 | // valid bmp char, but last char was a lead | |
4425 | if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) | |
4426 | } | |
4427 | ||
4428 | leadSurrogate = null | |
4429 | ||
4430 | // encode utf8 | |
4431 | if (codePoint < 0x80) { | |
4432 | if ((units -= 1) < 0) break | |
4433 | bytes.push(codePoint) | |
4434 | } else if (codePoint < 0x800) { | |
4435 | if ((units -= 2) < 0) break | |
4436 | bytes.push( | |
4437 | codePoint >> 0x6 | 0xC0, | |
4438 | codePoint & 0x3F | 0x80 | |
4439 | ) | |
4440 | } else if (codePoint < 0x10000) { | |
4441 | if ((units -= 3) < 0) break | |
4442 | bytes.push( | |
4443 | codePoint >> 0xC | 0xE0, | |
4444 | codePoint >> 0x6 & 0x3F | 0x80, | |
4445 | codePoint & 0x3F | 0x80 | |
4446 | ) | |
4447 | } else if (codePoint < 0x110000) { | |
4448 | if ((units -= 4) < 0) break | |
4449 | bytes.push( | |
4450 | codePoint >> 0x12 | 0xF0, | |
4451 | codePoint >> 0xC & 0x3F | 0x80, | |
4452 | codePoint >> 0x6 & 0x3F | 0x80, | |
4453 | codePoint & 0x3F | 0x80 | |
4454 | ) | |
4455 | } else { | |
4456 | throw new Error('Invalid code point') | |
ebd8d4e8 | 4457 | } |
ebd8d4e8 | 4458 | } |
ab78acc6 IC |
4459 | |
4460 | return bytes | |
4461 | } | |
4462 | ||
4463 | function asciiToBytes (str) { | |
4464 | var byteArray = [] | |
4465 | for (var i = 0; i < str.length; i++) { | |
4466 | // Node's code seems to be doing this and not & 0x7F.. | |
4467 | byteArray.push(str.charCodeAt(i) & 0xFF) | |
ebd8d4e8 | 4468 | } |
ab78acc6 | 4469 | return byteArray |
ebd8d4e8 IC |
4470 | } |
4471 | ||
ab78acc6 IC |
4472 | function utf16leToBytes (str, units) { |
4473 | var c, hi, lo | |
4474 | var byteArray = [] | |
4475 | for (var i = 0; i < str.length; i++) { | |
4476 | if ((units -= 2) < 0) break | |
ebd8d4e8 | 4477 | |
ab78acc6 IC |
4478 | c = str.charCodeAt(i) |
4479 | hi = c >> 8 | |
4480 | lo = c % 256 | |
4481 | byteArray.push(lo) | |
4482 | byteArray.push(hi) | |
4483 | } | |
ebd8d4e8 | 4484 | |
ab78acc6 IC |
4485 | return byteArray |
4486 | } | |
ebd8d4e8 | 4487 | |
ab78acc6 IC |
4488 | function base64ToBytes (str) { |
4489 | return base64.toByteArray(base64clean(str)) | |
4490 | } | |
ebd8d4e8 | 4491 | |
ab78acc6 IC |
4492 | function blitBuffer (src, dst, offset, length) { |
4493 | for (var i = 0; i < length; i++) { | |
4494 | if ((i + offset >= dst.length) || (i >= src.length)) break | |
4495 | dst[i + offset] = src[i] | |
4496 | } | |
4497 | return i | |
4498 | } | |
4499 | ||
4500 | },{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){ | |
4501 | var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; | |
4502 | ||
4503 | ;(function (exports) { | |
4504 | 'use strict'; | |
4505 | ||
4506 | var Arr = (typeof Uint8Array !== 'undefined') | |
4507 | ? Uint8Array | |
4508 | : Array | |
ebd8d4e8 | 4509 | |
ab78acc6 IC |
4510 | var PLUS = '+'.charCodeAt(0) |
4511 | var SLASH = '/'.charCodeAt(0) | |
4512 | var NUMBER = '0'.charCodeAt(0) | |
4513 | var LOWER = 'a'.charCodeAt(0) | |
4514 | var UPPER = 'A'.charCodeAt(0) | |
4515 | var PLUS_URL_SAFE = '-'.charCodeAt(0) | |
4516 | var SLASH_URL_SAFE = '_'.charCodeAt(0) | |
ebd8d4e8 | 4517 | |
ab78acc6 IC |
4518 | function decode (elt) { |
4519 | var code = elt.charCodeAt(0) | |
4520 | if (code === PLUS || | |
4521 | code === PLUS_URL_SAFE) | |
4522 | return 62 // '+' | |
4523 | if (code === SLASH || | |
4524 | code === SLASH_URL_SAFE) | |
4525 | return 63 // '/' | |
4526 | if (code < NUMBER) | |
4527 | return -1 //no match | |
4528 | if (code < NUMBER + 10) | |
4529 | return code - NUMBER + 26 + 26 | |
4530 | if (code < UPPER + 26) | |
4531 | return code - UPPER | |
4532 | if (code < LOWER + 26) | |
4533 | return code - LOWER + 26 | |
4534 | } | |
ebd8d4e8 | 4535 | |
ab78acc6 IC |
4536 | function b64ToByteArray (b64) { |
4537 | var i, j, l, tmp, placeHolders, arr | |
ebd8d4e8 | 4538 | |
ab78acc6 IC |
4539 | if (b64.length % 4 > 0) { |
4540 | throw new Error('Invalid string. Length must be a multiple of 4') | |
4541 | } | |
ebd8d4e8 | 4542 | |
ab78acc6 IC |
4543 | // the number of equal signs (place holders) |
4544 | // if there are two placeholders, than the two characters before it | |
4545 | // represent one byte | |
4546 | // if there is only one, then the three characters before it represent 2 bytes | |
4547 | // this is just a cheap hack to not do indexOf twice | |
4548 | var len = b64.length | |
4549 | placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 | |
ebd8d4e8 | 4550 | |
ab78acc6 IC |
4551 | // base64 is 4/3 + up to two characters of the original data |
4552 | arr = new Arr(b64.length * 3 / 4 - placeHolders) | |
ebd8d4e8 | 4553 | |
ab78acc6 IC |
4554 | // if there are placeholders, only get up to the last complete 4 chars |
4555 | l = placeHolders > 0 ? b64.length - 4 : b64.length | |
ebd8d4e8 | 4556 | |
ab78acc6 | 4557 | var L = 0 |
ebd8d4e8 | 4558 | |
ab78acc6 IC |
4559 | function push (v) { |
4560 | arr[L++] = v | |
4561 | } | |
ebd8d4e8 | 4562 | |
ab78acc6 IC |
4563 | for (i = 0, j = 0; i < l; i += 4, j += 3) { |
4564 | tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) | |
4565 | push((tmp & 0xFF0000) >> 16) | |
4566 | push((tmp & 0xFF00) >> 8) | |
4567 | push(tmp & 0xFF) | |
4568 | } | |
ebd8d4e8 | 4569 | |
ab78acc6 IC |
4570 | if (placeHolders === 2) { |
4571 | tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) | |
4572 | push(tmp & 0xFF) | |
4573 | } else if (placeHolders === 1) { | |
4574 | tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) | |
4575 | push((tmp >> 8) & 0xFF) | |
4576 | push(tmp & 0xFF) | |
4577 | } | |
ebd8d4e8 | 4578 | |
ab78acc6 IC |
4579 | return arr |
4580 | } | |
ebd8d4e8 | 4581 | |
ab78acc6 IC |
4582 | function uint8ToBase64 (uint8) { |
4583 | var i, | |
4584 | extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes | |
4585 | output = "", | |
4586 | temp, length | |
ebd8d4e8 | 4587 | |
ab78acc6 IC |
4588 | function encode (num) { |
4589 | return lookup.charAt(num) | |
4590 | } | |
ebd8d4e8 | 4591 | |
ab78acc6 IC |
4592 | function tripletToBase64 (num) { |
4593 | return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) | |
4594 | } | |
ebd8d4e8 | 4595 | |
ab78acc6 IC |
4596 | // go through the array every three bytes, we'll deal with trailing stuff later |
4597 | for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { | |
4598 | temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) | |
4599 | output += tripletToBase64(temp) | |
4600 | } | |
ebd8d4e8 | 4601 | |
ab78acc6 IC |
4602 | // pad the end with zeros, but make sure to not forget the extra bytes |
4603 | switch (extraBytes) { | |
4604 | case 1: | |
4605 | temp = uint8[uint8.length - 1] | |
4606 | output += encode(temp >> 2) | |
4607 | output += encode((temp << 4) & 0x3F) | |
4608 | output += '==' | |
4609 | break | |
4610 | case 2: | |
4611 | temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) | |
4612 | output += encode(temp >> 10) | |
4613 | output += encode((temp >> 4) & 0x3F) | |
4614 | output += encode((temp << 2) & 0x3F) | |
4615 | output += '=' | |
4616 | break | |
4617 | } | |
ebd8d4e8 | 4618 | |
ab78acc6 IC |
4619 | return output |
4620 | } | |
ebd8d4e8 | 4621 | |
ab78acc6 IC |
4622 | exports.toByteArray = b64ToByteArray |
4623 | exports.fromByteArray = uint8ToBase64 | |
4624 | }(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) | |
ebd8d4e8 | 4625 | |
ab78acc6 IC |
4626 | },{}],9:[function(require,module,exports){ |
4627 | exports.read = function (buffer, offset, isLE, mLen, nBytes) { | |
4628 | var e, m | |
4629 | var eLen = nBytes * 8 - mLen - 1 | |
4630 | var eMax = (1 << eLen) - 1 | |
4631 | var eBias = eMax >> 1 | |
4632 | var nBits = -7 | |
4633 | var i = isLE ? (nBytes - 1) : 0 | |
4634 | var d = isLE ? -1 : 1 | |
4635 | var s = buffer[offset + i] | |
4636 | ||
4637 | i += d | |
4638 | ||
4639 | e = s & ((1 << (-nBits)) - 1) | |
4640 | s >>= (-nBits) | |
4641 | nBits += eLen | |
4642 | for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} | |
4643 | ||
4644 | m = e & ((1 << (-nBits)) - 1) | |
4645 | e >>= (-nBits) | |
4646 | nBits += mLen | |
4647 | for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} | |
ebd8d4e8 | 4648 | |
ab78acc6 IC |
4649 | if (e === 0) { |
4650 | e = 1 - eBias | |
4651 | } else if (e === eMax) { | |
4652 | return m ? NaN : ((s ? -1 : 1) * Infinity) | |
4653 | } else { | |
4654 | m = m + Math.pow(2, mLen) | |
4655 | e = e - eBias | |
ebd8d4e8 | 4656 | } |
ab78acc6 | 4657 | return (s ? -1 : 1) * m * Math.pow(2, e - mLen) |
ebd8d4e8 IC |
4658 | } |
4659 | ||
ab78acc6 IC |
4660 | exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { |
4661 | var e, m, c | |
4662 | var eLen = nBytes * 8 - mLen - 1 | |
4663 | var eMax = (1 << eLen) - 1 | |
4664 | var eBias = eMax >> 1 | |
4665 | var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) | |
4666 | var i = isLE ? 0 : (nBytes - 1) | |
4667 | var d = isLE ? 1 : -1 | |
4668 | var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 | |
ebd8d4e8 | 4669 | |
ab78acc6 | 4670 | value = Math.abs(value) |
ebd8d4e8 | 4671 | |
ab78acc6 IC |
4672 | if (isNaN(value) || value === Infinity) { |
4673 | m = isNaN(value) ? 1 : 0 | |
4674 | e = eMax | |
4675 | } else { | |
4676 | e = Math.floor(Math.log(value) / Math.LN2) | |
4677 | if (value * (c = Math.pow(2, -e)) < 1) { | |
4678 | e-- | |
4679 | c *= 2 | |
ebd8d4e8 | 4680 | } |
ab78acc6 IC |
4681 | if (e + eBias >= 1) { |
4682 | value += rt / c | |
4683 | } else { | |
4684 | value += rt * Math.pow(2, 1 - eBias) | |
ebd8d4e8 | 4685 | } |
ab78acc6 IC |
4686 | if (value * c >= 2) { |
4687 | e++ | |
4688 | c /= 2 | |
ebd8d4e8 | 4689 | } |
ab78acc6 IC |
4690 | |
4691 | if (e + eBias >= eMax) { | |
4692 | m = 0 | |
4693 | e = eMax | |
4694 | } else if (e + eBias >= 1) { | |
4695 | m = (value * c - 1) * Math.pow(2, mLen) | |
4696 | e = e + eBias | |
4697 | } else { | |
4698 | m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) | |
4699 | e = 0 | |
ebd8d4e8 IC |
4700 | } |
4701 | } | |
ebd8d4e8 | 4702 | |
ab78acc6 | 4703 | for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} |
ebd8d4e8 | 4704 | |
ab78acc6 IC |
4705 | e = (e << mLen) | m |
4706 | eLen += mLen | |
4707 | for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} | |
ebd8d4e8 | 4708 | |
ab78acc6 IC |
4709 | buffer[offset + i - d] |= s * 128 |
4710 | } | |
ebd8d4e8 | 4711 | |
ab78acc6 | 4712 | },{}],10:[function(require,module,exports){ |
ebd8d4e8 | 4713 | |
ab78acc6 IC |
4714 | /** |
4715 | * isArray | |
4716 | */ | |
ebd8d4e8 | 4717 | |
ab78acc6 | 4718 | var isArray = Array.isArray; |
ebd8d4e8 IC |
4719 | |
4720 | /** | |
ab78acc6 | 4721 | * toString |
ebd8d4e8 | 4722 | */ |
ebd8d4e8 | 4723 | |
ab78acc6 | 4724 | var str = Object.prototype.toString; |
ebd8d4e8 IC |
4725 | |
4726 | /** | |
ab78acc6 IC |
4727 | * Whether or not the given `val` |
4728 | * is an array. | |
ebd8d4e8 | 4729 | * |
ab78acc6 IC |
4730 | * example: |
4731 | * | |
4732 | * isArray([]); | |
4733 | * // > true | |
4734 | * isArray(arguments); | |
4735 | * // > false | |
4736 | * isArray(''); | |
4737 | * // > false | |
4738 | * | |
4739 | * @param {mixed} val | |
4740 | * @return {bool} | |
ebd8d4e8 | 4741 | */ |
ebd8d4e8 | 4742 | |
ab78acc6 IC |
4743 | module.exports = isArray || function (val) { |
4744 | return !! val && '[object Array]' == str.call(val); | |
4745 | }; | |
4746 | ||
4747 | },{}],11:[function(require,module,exports){ | |
4748 | // Copyright Joyent, Inc. and other Node contributors. | |
4749 | // | |
4750 | // Permission is hereby granted, free of charge, to any person obtaining a | |
4751 | // copy of this software and associated documentation files (the | |
4752 | // "Software"), to deal in the Software without restriction, including | |
4753 | // without limitation the rights to use, copy, modify, merge, publish, | |
4754 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
4755 | // persons to whom the Software is furnished to do so, subject to the | |
4756 | // following conditions: | |
4757 | // | |
4758 | // The above copyright notice and this permission notice shall be included | |
4759 | // in all copies or substantial portions of the Software. | |
4760 | // | |
4761 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
4762 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
4763 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
4764 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
4765 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
4766 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
4767 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
4768 | ||
4769 | function EventEmitter() { | |
4770 | this._events = this._events || {}; | |
4771 | this._maxListeners = this._maxListeners || undefined; | |
ebd8d4e8 | 4772 | } |
ab78acc6 | 4773 | module.exports = EventEmitter; |
ebd8d4e8 | 4774 | |
ab78acc6 IC |
4775 | // Backwards-compat with node 0.10.x |
4776 | EventEmitter.EventEmitter = EventEmitter; | |
ebd8d4e8 | 4777 | |
ab78acc6 IC |
4778 | EventEmitter.prototype._events = undefined; |
4779 | EventEmitter.prototype._maxListeners = undefined; | |
4780 | ||
4781 | // By default EventEmitters will print a warning if more than 10 listeners are | |
4782 | // added to it. This is a useful default which helps finding memory leaks. | |
4783 | EventEmitter.defaultMaxListeners = 10; | |
4784 | ||
4785 | // Obviously not all Emitters should be limited to 10. This function allows | |
4786 | // that to be increased. Set to zero for unlimited. | |
4787 | EventEmitter.prototype.setMaxListeners = function(n) { | |
4788 | if (!isNumber(n) || n < 0 || isNaN(n)) | |
4789 | throw TypeError('n must be a positive number'); | |
4790 | this._maxListeners = n; | |
4791 | return this; | |
4792 | }; | |
4793 | ||
4794 | EventEmitter.prototype.emit = function(type) { | |
4795 | var er, handler, len, args, i, listeners; | |
4796 | ||
4797 | if (!this._events) | |
4798 | this._events = {}; | |
4799 | ||
4800 | // If there is no 'error' event listener then throw. | |
4801 | if (type === 'error') { | |
4802 | if (!this._events.error || | |
4803 | (isObject(this._events.error) && !this._events.error.length)) { | |
4804 | er = arguments[1]; | |
4805 | if (er instanceof Error) { | |
4806 | throw er; // Unhandled 'error' event | |
4807 | } | |
4808 | throw TypeError('Uncaught, unspecified "error" event.'); | |
4809 | } | |
4810 | } | |
4811 | ||
4812 | handler = this._events[type]; | |
4813 | ||
4814 | if (isUndefined(handler)) | |
4815 | return false; | |
4816 | ||
4817 | if (isFunction(handler)) { | |
4818 | switch (arguments.length) { | |
4819 | // fast cases | |
4820 | case 1: | |
4821 | handler.call(this); | |
4822 | break; | |
4823 | case 2: | |
4824 | handler.call(this, arguments[1]); | |
4825 | break; | |
4826 | case 3: | |
4827 | handler.call(this, arguments[1], arguments[2]); | |
4828 | break; | |
4829 | // slower | |
4830 | default: | |
4831 | len = arguments.length; | |
4832 | args = new Array(len - 1); | |
4833 | for (i = 1; i < len; i++) | |
4834 | args[i - 1] = arguments[i]; | |
4835 | handler.apply(this, args); | |
4836 | } | |
4837 | } else if (isObject(handler)) { | |
4838 | len = arguments.length; | |
4839 | args = new Array(len - 1); | |
4840 | for (i = 1; i < len; i++) | |
4841 | args[i - 1] = arguments[i]; | |
ebd8d4e8 | 4842 | |
ab78acc6 IC |
4843 | listeners = handler.slice(); |
4844 | len = listeners.length; | |
4845 | for (i = 0; i < len; i++) | |
4846 | listeners[i].apply(this, args); | |
ebd8d4e8 IC |
4847 | } |
4848 | ||
ab78acc6 IC |
4849 | return true; |
4850 | }; | |
ebd8d4e8 | 4851 | |
ab78acc6 IC |
4852 | EventEmitter.prototype.addListener = function(type, listener) { |
4853 | var m; | |
ebd8d4e8 | 4854 | |
ab78acc6 IC |
4855 | if (!isFunction(listener)) |
4856 | throw TypeError('listener must be a function'); | |
ebd8d4e8 | 4857 | |
ab78acc6 IC |
4858 | if (!this._events) |
4859 | this._events = {}; | |
ebd8d4e8 | 4860 | |
ab78acc6 IC |
4861 | // To avoid recursion in the case that type === "newListener"! Before |
4862 | // adding it to the listeners, first emit "newListener". | |
4863 | if (this._events.newListener) | |
4864 | this.emit('newListener', type, | |
4865 | isFunction(listener.listener) ? | |
4866 | listener.listener : listener); | |
ebd8d4e8 | 4867 | |
ab78acc6 IC |
4868 | if (!this._events[type]) |
4869 | // Optimize the case of one listener. Don't need the extra array object. | |
4870 | this._events[type] = listener; | |
4871 | else if (isObject(this._events[type])) | |
4872 | // If we've already got an array, just append. | |
4873 | this._events[type].push(listener); | |
4874 | else | |
4875 | // Adding the second element, need to change to array. | |
4876 | this._events[type] = [this._events[type], listener]; | |
4877 | ||
4878 | // Check for listener leak | |
4879 | if (isObject(this._events[type]) && !this._events[type].warned) { | |
4880 | var m; | |
4881 | if (!isUndefined(this._maxListeners)) { | |
4882 | m = this._maxListeners; | |
4883 | } else { | |
4884 | m = EventEmitter.defaultMaxListeners; | |
4885 | } | |
4886 | ||
4887 | if (m && m > 0 && this._events[type].length > m) { | |
4888 | this._events[type].warned = true; | |
4889 | console.error('(node) warning: possible EventEmitter memory ' + | |
4890 | 'leak detected. %d listeners added. ' + | |
4891 | 'Use emitter.setMaxListeners() to increase limit.', | |
4892 | this._events[type].length); | |
4893 | if (typeof console.trace === 'function') { | |
4894 | // not supported in IE 10 | |
4895 | console.trace(); | |
4896 | } | |
4897 | } | |
4898 | } | |
ebd8d4e8 | 4899 | |
ab78acc6 IC |
4900 | return this; |
4901 | }; | |
ebd8d4e8 | 4902 | |
ab78acc6 | 4903 | EventEmitter.prototype.on = EventEmitter.prototype.addListener; |
ebd8d4e8 | 4904 | |
ab78acc6 IC |
4905 | EventEmitter.prototype.once = function(type, listener) { |
4906 | if (!isFunction(listener)) | |
4907 | throw TypeError('listener must be a function'); | |
ebd8d4e8 | 4908 | |
ab78acc6 | 4909 | var fired = false; |
ebd8d4e8 | 4910 | |
ab78acc6 IC |
4911 | function g() { |
4912 | this.removeListener(type, g); | |
ebd8d4e8 | 4913 | |
ab78acc6 IC |
4914 | if (!fired) { |
4915 | fired = true; | |
4916 | listener.apply(this, arguments); | |
4917 | } | |
4918 | } | |
ebd8d4e8 | 4919 | |
ab78acc6 IC |
4920 | g.listener = listener; |
4921 | this.on(type, g); | |
ebd8d4e8 | 4922 | |
ab78acc6 IC |
4923 | return this; |
4924 | }; | |
ebd8d4e8 | 4925 | |
ab78acc6 IC |
4926 | // emits a 'removeListener' event iff the listener was removed |
4927 | EventEmitter.prototype.removeListener = function(type, listener) { | |
4928 | var list, position, length, i; | |
ebd8d4e8 | 4929 | |
ab78acc6 IC |
4930 | if (!isFunction(listener)) |
4931 | throw TypeError('listener must be a function'); | |
ebd8d4e8 | 4932 | |
ab78acc6 IC |
4933 | if (!this._events || !this._events[type]) |
4934 | return this; | |
ebd8d4e8 | 4935 | |
ab78acc6 IC |
4936 | list = this._events[type]; |
4937 | length = list.length; | |
4938 | position = -1; | |
4939 | ||
4940 | if (list === listener || | |
4941 | (isFunction(list.listener) && list.listener === listener)) { | |
4942 | delete this._events[type]; | |
4943 | if (this._events.removeListener) | |
4944 | this.emit('removeListener', type, listener); | |
4945 | ||
4946 | } else if (isObject(list)) { | |
4947 | for (i = length; i-- > 0;) { | |
4948 | if (list[i] === listener || | |
4949 | (list[i].listener && list[i].listener === listener)) { | |
4950 | position = i; | |
4951 | break; | |
ebd8d4e8 | 4952 | } |
ab78acc6 | 4953 | } |
ebd8d4e8 | 4954 | |
ab78acc6 IC |
4955 | if (position < 0) |
4956 | return this; | |
4957 | ||
4958 | if (list.length === 1) { | |
4959 | list.length = 0; | |
4960 | delete this._events[type]; | |
4961 | } else { | |
4962 | list.splice(position, 1); | |
ebd8d4e8 | 4963 | } |
ab78acc6 IC |
4964 | |
4965 | if (this._events.removeListener) | |
4966 | this.emit('removeListener', type, listener); | |
ebd8d4e8 | 4967 | } |
ab78acc6 IC |
4968 | |
4969 | return this; | |
ebd8d4e8 IC |
4970 | }; |
4971 | ||
ab78acc6 IC |
4972 | EventEmitter.prototype.removeAllListeners = function(type) { |
4973 | var key, listeners; | |
ebd8d4e8 | 4974 | |
ab78acc6 IC |
4975 | if (!this._events) |
4976 | return this; | |
4977 | ||
4978 | // not listening for removeListener, no need to emit | |
4979 | if (!this._events.removeListener) { | |
4980 | if (arguments.length === 0) | |
4981 | this._events = {}; | |
4982 | else if (this._events[type]) | |
4983 | delete this._events[type]; | |
4984 | return this; | |
ebd8d4e8 | 4985 | } |
ab78acc6 IC |
4986 | |
4987 | // emit removeListener for all listeners on all events | |
4988 | if (arguments.length === 0) { | |
4989 | for (key in this._events) { | |
4990 | if (key === 'removeListener') continue; | |
4991 | this.removeAllListeners(key); | |
4992 | } | |
4993 | this.removeAllListeners('removeListener'); | |
4994 | this._events = {}; | |
4995 | return this; | |
ebd8d4e8 | 4996 | } |
ebd8d4e8 | 4997 | |
ab78acc6 IC |
4998 | listeners = this._events[type]; |
4999 | ||
5000 | if (isFunction(listeners)) { | |
5001 | this.removeListener(type, listeners); | |
ebd8d4e8 | 5002 | } else { |
ab78acc6 IC |
5003 | // LIFO order |
5004 | while (listeners.length) | |
5005 | this.removeListener(type, listeners[listeners.length - 1]); | |
ebd8d4e8 | 5006 | } |
ab78acc6 | 5007 | delete this._events[type]; |
ebd8d4e8 | 5008 | |
ab78acc6 IC |
5009 | return this; |
5010 | }; | |
ebd8d4e8 | 5011 | |
ab78acc6 IC |
5012 | EventEmitter.prototype.listeners = function(type) { |
5013 | var ret; | |
5014 | if (!this._events || !this._events[type]) | |
5015 | ret = []; | |
5016 | else if (isFunction(this._events[type])) | |
5017 | ret = [this._events[type]]; | |
5018 | else | |
5019 | ret = this._events[type].slice(); | |
5020 | return ret; | |
5021 | }; | |
ebd8d4e8 | 5022 | |
ab78acc6 IC |
5023 | EventEmitter.listenerCount = function(emitter, type) { |
5024 | var ret; | |
5025 | if (!emitter._events || !emitter._events[type]) | |
5026 | ret = 0; | |
5027 | else if (isFunction(emitter._events[type])) | |
5028 | ret = 1; | |
5029 | else | |
5030 | ret = emitter._events[type].length; | |
5031 | return ret; | |
5032 | }; | |
ebd8d4e8 | 5033 | |
ab78acc6 IC |
5034 | function isFunction(arg) { |
5035 | return typeof arg === 'function'; | |
ebd8d4e8 IC |
5036 | } |
5037 | ||
ab78acc6 IC |
5038 | function isNumber(arg) { |
5039 | return typeof arg === 'number'; | |
5040 | } | |
ebd8d4e8 | 5041 | |
ab78acc6 IC |
5042 | function isObject(arg) { |
5043 | return typeof arg === 'object' && arg !== null; | |
5044 | } | |
ebd8d4e8 | 5045 | |
ab78acc6 IC |
5046 | function isUndefined(arg) { |
5047 | return arg === void 0; | |
ebd8d4e8 | 5048 | } |
ebd8d4e8 | 5049 | |
ab78acc6 IC |
5050 | },{}],12:[function(require,module,exports){ |
5051 | if (typeof Object.create === 'function') { | |
5052 | // implementation from standard node.js 'util' module | |
5053 | module.exports = function inherits(ctor, superCtor) { | |
5054 | ctor.super_ = superCtor | |
5055 | ctor.prototype = Object.create(superCtor.prototype, { | |
5056 | constructor: { | |
5057 | value: ctor, | |
5058 | enumerable: false, | |
5059 | writable: true, | |
5060 | configurable: true | |
5061 | } | |
5062 | }); | |
5063 | }; | |
5064 | } else { | |
5065 | // old school shim for old browsers | |
5066 | module.exports = function inherits(ctor, superCtor) { | |
5067 | ctor.super_ = superCtor | |
5068 | var TempCtor = function () {} | |
5069 | TempCtor.prototype = superCtor.prototype | |
5070 | ctor.prototype = new TempCtor() | |
5071 | ctor.prototype.constructor = ctor | |
5072 | } | |
5073 | } | |
ebd8d4e8 | 5074 | |
ab78acc6 IC |
5075 | },{}],13:[function(require,module,exports){ |
5076 | module.exports = Array.isArray || function (arr) { | |
5077 | return Object.prototype.toString.call(arr) == '[object Array]'; | |
ebd8d4e8 IC |
5078 | }; |
5079 | ||
ab78acc6 IC |
5080 | },{}],14:[function(require,module,exports){ |
5081 | // shim for using process in browser | |
ebd8d4e8 | 5082 | |
ab78acc6 IC |
5083 | var process = module.exports = {}; |
5084 | var queue = []; | |
5085 | var draining = false; | |
5086 | var currentQueue; | |
5087 | var queueIndex = -1; | |
5088 | ||
5089 | function cleanUpNextTick() { | |
5090 | draining = false; | |
5091 | if (currentQueue.length) { | |
5092 | queue = currentQueue.concat(queue); | |
5093 | } else { | |
5094 | queueIndex = -1; | |
5095 | } | |
5096 | if (queue.length) { | |
5097 | drainQueue(); | |
5098 | } | |
5099 | } | |
ebd8d4e8 | 5100 | |
ab78acc6 IC |
5101 | function drainQueue() { |
5102 | if (draining) { | |
5103 | return; | |
5104 | } | |
5105 | var timeout = setTimeout(cleanUpNextTick); | |
5106 | draining = true; | |
ebd8d4e8 | 5107 | |
ab78acc6 IC |
5108 | var len = queue.length; |
5109 | while(len) { | |
5110 | currentQueue = queue; | |
5111 | queue = []; | |
5112 | while (++queueIndex < len) { | |
5113 | currentQueue[queueIndex].run(); | |
5114 | } | |
5115 | queueIndex = -1; | |
5116 | len = queue.length; | |
5117 | } | |
5118 | currentQueue = null; | |
5119 | draining = false; | |
5120 | clearTimeout(timeout); | |
5121 | } | |
5122 | ||
5123 | process.nextTick = function (fun) { | |
5124 | var args = new Array(arguments.length - 1); | |
5125 | if (arguments.length > 1) { | |
5126 | for (var i = 1; i < arguments.length; i++) { | |
5127 | args[i - 1] = arguments[i]; | |
5128 | } | |
5129 | } | |
5130 | queue.push(new Item(fun, args)); | |
5131 | if (queue.length === 1 && !draining) { | |
5132 | setTimeout(drainQueue, 0); | |
5133 | } | |
ebd8d4e8 IC |
5134 | }; |
5135 | ||
ab78acc6 IC |
5136 | // v8 likes predictible objects |
5137 | function Item(fun, array) { | |
5138 | this.fun = fun; | |
5139 | this.array = array; | |
5140 | } | |
5141 | Item.prototype.run = function () { | |
5142 | this.fun.apply(null, this.array); | |
5143 | }; | |
5144 | process.title = 'browser'; | |
5145 | process.browser = true; | |
5146 | process.env = {}; | |
5147 | process.argv = []; | |
5148 | process.version = ''; // empty string to avoid regexp issues | |
5149 | process.versions = {}; | |
ebd8d4e8 | 5150 | |
ab78acc6 IC |
5151 | function noop() {} |
5152 | ||
5153 | process.on = noop; | |
5154 | process.addListener = noop; | |
5155 | process.once = noop; | |
5156 | process.off = noop; | |
5157 | process.removeListener = noop; | |
5158 | process.removeAllListeners = noop; | |
5159 | process.emit = noop; | |
5160 | ||
5161 | process.binding = function (name) { | |
5162 | throw new Error('process.binding is not supported'); | |
5163 | }; | |
ebd8d4e8 | 5164 | |
ab78acc6 IC |
5165 | // TODO(shtylman) |
5166 | process.cwd = function () { return '/' }; | |
5167 | process.chdir = function (dir) { | |
5168 | throw new Error('process.chdir is not supported'); | |
5169 | }; | |
5170 | process.umask = function() { return 0; }; | |
ebd8d4e8 | 5171 | |
ab78acc6 IC |
5172 | },{}],15:[function(require,module,exports){ |
5173 | module.exports = require("./lib/_stream_duplex.js") | |
ebd8d4e8 | 5174 | |
ab78acc6 IC |
5175 | },{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){ |
5176 | (function (process){ | |
5177 | // Copyright Joyent, Inc. and other Node contributors. | |
5178 | // | |
5179 | // Permission is hereby granted, free of charge, to any person obtaining a | |
5180 | // copy of this software and associated documentation files (the | |
5181 | // "Software"), to deal in the Software without restriction, including | |
5182 | // without limitation the rights to use, copy, modify, merge, publish, | |
5183 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
5184 | // persons to whom the Software is furnished to do so, subject to the | |
5185 | // following conditions: | |
5186 | // | |
5187 | // The above copyright notice and this permission notice shall be included | |
5188 | // in all copies or substantial portions of the Software. | |
5189 | // | |
5190 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
5191 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
5192 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
5193 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
5194 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
5195 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
5196 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
ebd8d4e8 | 5197 | |
ab78acc6 IC |
5198 | // a duplex stream is just a stream that is both readable and writable. |
5199 | // Since JS doesn't have multiple prototypal inheritance, this class | |
5200 | // prototypally inherits from Readable, and then parasitically from | |
5201 | // Writable. | |
ebd8d4e8 | 5202 | |
ab78acc6 | 5203 | module.exports = Duplex; |
ebd8d4e8 | 5204 | |
ab78acc6 IC |
5205 | /*<replacement>*/ |
5206 | var objectKeys = Object.keys || function (obj) { | |
5207 | var keys = []; | |
5208 | for (var key in obj) keys.push(key); | |
5209 | return keys; | |
ebd8d4e8 | 5210 | } |
ab78acc6 | 5211 | /*</replacement>*/ |
ebd8d4e8 | 5212 | |
ebd8d4e8 | 5213 | |
ab78acc6 IC |
5214 | /*<replacement>*/ |
5215 | var util = require('core-util-is'); | |
5216 | util.inherits = require('inherits'); | |
5217 | /*</replacement>*/ | |
ebd8d4e8 | 5218 | |
ab78acc6 IC |
5219 | var Readable = require('./_stream_readable'); |
5220 | var Writable = require('./_stream_writable'); | |
ebd8d4e8 | 5221 | |
ab78acc6 | 5222 | util.inherits(Duplex, Readable); |
ebd8d4e8 | 5223 | |
ab78acc6 IC |
5224 | forEach(objectKeys(Writable.prototype), function(method) { |
5225 | if (!Duplex.prototype[method]) | |
5226 | Duplex.prototype[method] = Writable.prototype[method]; | |
5227 | }); | |
ebd8d4e8 | 5228 | |
ab78acc6 IC |
5229 | function Duplex(options) { |
5230 | if (!(this instanceof Duplex)) | |
5231 | return new Duplex(options); | |
ebd8d4e8 | 5232 | |
ab78acc6 IC |
5233 | Readable.call(this, options); |
5234 | Writable.call(this, options); | |
ebd8d4e8 | 5235 | |
ab78acc6 IC |
5236 | if (options && options.readable === false) |
5237 | this.readable = false; | |
ebd8d4e8 | 5238 | |
ab78acc6 IC |
5239 | if (options && options.writable === false) |
5240 | this.writable = false; | |
ebd8d4e8 | 5241 | |
ab78acc6 IC |
5242 | this.allowHalfOpen = true; |
5243 | if (options && options.allowHalfOpen === false) | |
5244 | this.allowHalfOpen = false; | |
ebd8d4e8 | 5245 | |
ab78acc6 | 5246 | this.once('end', onend); |
ebd8d4e8 IC |
5247 | } |
5248 | ||
ab78acc6 IC |
5249 | // the no-half-open enforcer |
5250 | function onend() { | |
5251 | // if we allow half-open state, or if the writable side ended, | |
5252 | // then we're ok. | |
5253 | if (this.allowHalfOpen || this._writableState.ended) | |
5254 | return; | |
ebd8d4e8 | 5255 | |
ab78acc6 IC |
5256 | // no more data can be written. |
5257 | // But allow more writes to happen in this tick. | |
5258 | process.nextTick(this.end.bind(this)); | |
5259 | } | |
ebd8d4e8 | 5260 | |
ab78acc6 IC |
5261 | function forEach (xs, f) { |
5262 | for (var i = 0, l = xs.length; i < l; i++) { | |
5263 | f(xs[i], i); | |
ebd8d4e8 | 5264 | } |
ab78acc6 | 5265 | } |
ebd8d4e8 | 5266 | |
ab78acc6 IC |
5267 | }).call(this,require('_process')) |
5268 | },{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){ | |
5269 | // Copyright Joyent, Inc. and other Node contributors. | |
5270 | // | |
5271 | // Permission is hereby granted, free of charge, to any person obtaining a | |
5272 | // copy of this software and associated documentation files (the | |
5273 | // "Software"), to deal in the Software without restriction, including | |
5274 | // without limitation the rights to use, copy, modify, merge, publish, | |
5275 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
5276 | // persons to whom the Software is furnished to do so, subject to the | |
5277 | // following conditions: | |
5278 | // | |
5279 | // The above copyright notice and this permission notice shall be included | |
5280 | // in all copies or substantial portions of the Software. | |
5281 | // | |
5282 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
5283 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
5284 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
5285 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
5286 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
5287 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
5288 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
ebd8d4e8 | 5289 | |
ab78acc6 IC |
5290 | // a passthrough stream. |
5291 | // basically just the most minimal sort of Transform stream. | |
5292 | // Every written chunk gets output as-is. | |
ebd8d4e8 | 5293 | |
ab78acc6 | 5294 | module.exports = PassThrough; |
ebd8d4e8 | 5295 | |
ab78acc6 | 5296 | var Transform = require('./_stream_transform'); |
ebd8d4e8 | 5297 | |
ab78acc6 IC |
5298 | /*<replacement>*/ |
5299 | var util = require('core-util-is'); | |
5300 | util.inherits = require('inherits'); | |
5301 | /*</replacement>*/ | |
ebd8d4e8 | 5302 | |
ab78acc6 | 5303 | util.inherits(PassThrough, Transform); |
ebd8d4e8 | 5304 | |
ab78acc6 IC |
5305 | function PassThrough(options) { |
5306 | if (!(this instanceof PassThrough)) | |
5307 | return new PassThrough(options); | |
ebd8d4e8 | 5308 | |
ab78acc6 IC |
5309 | Transform.call(this, options); |
5310 | } | |
ebd8d4e8 | 5311 | |
ab78acc6 IC |
5312 | PassThrough.prototype._transform = function(chunk, encoding, cb) { |
5313 | cb(null, chunk); | |
ebd8d4e8 IC |
5314 | }; |
5315 | ||
ab78acc6 IC |
5316 | },{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){ |
5317 | (function (process){ | |
ebd8d4e8 IC |
5318 | // Copyright Joyent, Inc. and other Node contributors. |
5319 | // | |
5320 | // Permission is hereby granted, free of charge, to any person obtaining a | |
5321 | // copy of this software and associated documentation files (the | |
5322 | // "Software"), to deal in the Software without restriction, including | |
5323 | // without limitation the rights to use, copy, modify, merge, publish, | |
5324 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
5325 | // persons to whom the Software is furnished to do so, subject to the | |
5326 | // following conditions: | |
5327 | // | |
5328 | // The above copyright notice and this permission notice shall be included | |
5329 | // in all copies or substantial portions of the Software. | |
5330 | // | |
5331 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
5332 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
5333 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
5334 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
5335 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
5336 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
5337 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
5338 | ||
ab78acc6 | 5339 | module.exports = Readable; |
ebd8d4e8 | 5340 | |
ab78acc6 IC |
5341 | /*<replacement>*/ |
5342 | var isArray = require('isarray'); | |
5343 | /*</replacement>*/ | |
5344 | ||
5345 | ||
5346 | /*<replacement>*/ | |
5347 | var Buffer = require('buffer').Buffer; | |
5348 | /*</replacement>*/ | |
5349 | ||
5350 | Readable.ReadableState = ReadableState; | |
5351 | ||
5352 | var EE = require('events').EventEmitter; | |
5353 | ||
5354 | /*<replacement>*/ | |
5355 | if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { | |
5356 | return emitter.listeners(type).length; | |
ebd8d4e8 | 5357 | }; |
ab78acc6 IC |
5358 | /*</replacement>*/ |
5359 | ||
5360 | var Stream = require('stream'); | |
5361 | ||
5362 | /*<replacement>*/ | |
5363 | var util = require('core-util-is'); | |
5364 | util.inherits = require('inherits'); | |
5365 | /*</replacement>*/ | |
5366 | ||
5367 | var StringDecoder; | |
5368 | ||
5369 | ||
5370 | /*<replacement>*/ | |
5371 | var debug = require('util'); | |
5372 | if (debug && debug.debuglog) { | |
5373 | debug = debug.debuglog('stream'); | |
5374 | } else { | |
5375 | debug = function () {}; | |
5376 | } | |
5377 | /*</replacement>*/ | |
5378 | ||
5379 | ||
5380 | util.inherits(Readable, Stream); | |
5381 | ||
5382 | function ReadableState(options, stream) { | |
5383 | var Duplex = require('./_stream_duplex'); | |
5384 | ||
5385 | options = options || {}; | |
5386 | ||
5387 | // the point at which it stops calling _read() to fill the buffer | |
5388 | // Note: 0 is a valid value, means "don't call _read preemptively ever" | |
5389 | var hwm = options.highWaterMark; | |
5390 | var defaultHwm = options.objectMode ? 16 : 16 * 1024; | |
5391 | this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; | |
5392 | ||
5393 | // cast to ints. | |
5394 | this.highWaterMark = ~~this.highWaterMark; | |
5395 | ||
5396 | this.buffer = []; | |
5397 | this.length = 0; | |
5398 | this.pipes = null; | |
5399 | this.pipesCount = 0; | |
5400 | this.flowing = null; | |
5401 | this.ended = false; | |
5402 | this.endEmitted = false; | |
5403 | this.reading = false; | |
ebd8d4e8 | 5404 | |
ab78acc6 IC |
5405 | // a flag to be able to tell if the onwrite cb is called immediately, |
5406 | // or on a later tick. We set this to true at first, because any | |
5407 | // actions that shouldn't happen until "later" should generally also | |
5408 | // not happen before the first write call. | |
5409 | this.sync = true; | |
ebd8d4e8 | 5410 | |
ab78acc6 IC |
5411 | // whenever we return null, then we set a flag to say |
5412 | // that we're awaiting a 'readable' event emission. | |
5413 | this.needReadable = false; | |
5414 | this.emittedReadable = false; | |
5415 | this.readableListening = false; | |
ebd8d4e8 | 5416 | |
ab78acc6 IC |
5417 | |
5418 | // object stream flag. Used to make read(n) ignore n and to | |
5419 | // make all the buffer merging and length checks go away | |
5420 | this.objectMode = !!options.objectMode; | |
5421 | ||
5422 | if (stream instanceof Duplex) | |
5423 | this.objectMode = this.objectMode || !!options.readableObjectMode; | |
5424 | ||
5425 | // Crypto is kind of old and crusty. Historically, its default string | |
5426 | // encoding is 'binary' so we have to make this configurable. | |
5427 | // Everything else in the universe uses 'utf8', though. | |
5428 | this.defaultEncoding = options.defaultEncoding || 'utf8'; | |
5429 | ||
5430 | // when piping, we only care about 'readable' events that happen | |
5431 | // after read()ing all the bytes and not getting any pushback. | |
5432 | this.ranOut = false; | |
5433 | ||
5434 | // the number of writers that are awaiting a drain event in .pipe()s | |
5435 | this.awaitDrain = 0; | |
5436 | ||
5437 | // if true, a maybeReadMore has been scheduled | |
5438 | this.readingMore = false; | |
5439 | ||
5440 | this.decoder = null; | |
5441 | this.encoding = null; | |
5442 | if (options.encoding) { | |
5443 | if (!StringDecoder) | |
5444 | StringDecoder = require('string_decoder/').StringDecoder; | |
5445 | this.decoder = new StringDecoder(options.encoding); | |
5446 | this.encoding = options.encoding; | |
ebd8d4e8 | 5447 | } |
ab78acc6 | 5448 | } |
ebd8d4e8 | 5449 | |
ab78acc6 IC |
5450 | function Readable(options) { |
5451 | var Duplex = require('./_stream_duplex'); | |
5452 | ||
5453 | if (!(this instanceof Readable)) | |
5454 | return new Readable(options); | |
5455 | ||
5456 | this._readableState = new ReadableState(options, this); | |
5457 | ||
5458 | // legacy | |
5459 | this.readable = true; | |
5460 | ||
5461 | Stream.call(this); | |
5462 | } | |
5463 | ||
5464 | // Manually shove something into the read() buffer. | |
5465 | // This returns true if the highWaterMark has not been hit yet, | |
5466 | // similar to how Writable.write() returns true if you should | |
5467 | // write() some more. | |
5468 | Readable.prototype.push = function(chunk, encoding) { | |
5469 | var state = this._readableState; | |
5470 | ||
5471 | if (util.isString(chunk) && !state.objectMode) { | |
5472 | encoding = encoding || state.defaultEncoding; | |
5473 | if (encoding !== state.encoding) { | |
5474 | chunk = new Buffer(chunk, encoding); | |
5475 | encoding = ''; | |
ebd8d4e8 | 5476 | } |
ebd8d4e8 IC |
5477 | } |
5478 | ||
ab78acc6 | 5479 | return readableAddChunk(this, state, chunk, encoding, false); |
ebd8d4e8 IC |
5480 | }; |
5481 | ||
ab78acc6 IC |
5482 | // Unshift should *always* be something directly out of read() |
5483 | Readable.prototype.unshift = function(chunk) { | |
5484 | var state = this._readableState; | |
5485 | return readableAddChunk(this, state, chunk, '', true); | |
5486 | }; | |
ebd8d4e8 | 5487 | |
ab78acc6 IC |
5488 | function readableAddChunk(stream, state, chunk, encoding, addToFront) { |
5489 | var er = chunkInvalid(state, chunk); | |
5490 | if (er) { | |
5491 | stream.emit('error', er); | |
5492 | } else if (util.isNullOrUndefined(chunk)) { | |
5493 | state.reading = false; | |
5494 | if (!state.ended) | |
5495 | onEofChunk(stream, state); | |
5496 | } else if (state.objectMode || chunk && chunk.length > 0) { | |
5497 | if (state.ended && !addToFront) { | |
5498 | var e = new Error('stream.push() after EOF'); | |
5499 | stream.emit('error', e); | |
5500 | } else if (state.endEmitted && addToFront) { | |
5501 | var e = new Error('stream.unshift() after end event'); | |
5502 | stream.emit('error', e); | |
ebd8d4e8 | 5503 | } else { |
ab78acc6 IC |
5504 | if (state.decoder && !addToFront && !encoding) |
5505 | chunk = state.decoder.write(chunk); | |
5506 | ||
5507 | if (!addToFront) | |
5508 | state.reading = false; | |
5509 | ||
5510 | // if we want the data now, just emit it. | |
5511 | if (state.flowing && state.length === 0 && !state.sync) { | |
5512 | stream.emit('data', chunk); | |
5513 | stream.read(0); | |
5514 | } else { | |
5515 | // update the buffer info. | |
5516 | state.length += state.objectMode ? 1 : chunk.length; | |
5517 | if (addToFront) | |
5518 | state.buffer.unshift(chunk); | |
5519 | else | |
5520 | state.buffer.push(chunk); | |
5521 | ||
5522 | if (state.needReadable) | |
5523 | emitReadable(stream); | |
5524 | } | |
5525 | ||
5526 | maybeReadMore(stream, state); | |
ebd8d4e8 | 5527 | } |
ab78acc6 IC |
5528 | } else if (!addToFront) { |
5529 | state.reading = false; | |
ebd8d4e8 | 5530 | } |
ebd8d4e8 | 5531 | |
ab78acc6 IC |
5532 | return needMoreData(state); |
5533 | } | |
ebd8d4e8 | 5534 | |
ab78acc6 IC |
5535 | |
5536 | ||
5537 | // if it's past the high water mark, we can push in some more. | |
5538 | // Also, if we have no data yet, we can stand some | |
5539 | // more bytes. This is to work around cases where hwm=0, | |
5540 | // such as the repl. Also, if the push() triggered a | |
5541 | // readable event, and the user called read(largeNumber) such that | |
5542 | // needReadable was set, then we ought to push more, so that another | |
5543 | // 'readable' event will be triggered. | |
5544 | function needMoreData(state) { | |
5545 | return !state.ended && | |
5546 | (state.needReadable || | |
5547 | state.length < state.highWaterMark || | |
5548 | state.length === 0); | |
5549 | } | |
5550 | ||
5551 | // backwards compatibility. | |
5552 | Readable.prototype.setEncoding = function(enc) { | |
5553 | if (!StringDecoder) | |
5554 | StringDecoder = require('string_decoder/').StringDecoder; | |
5555 | this._readableState.decoder = new StringDecoder(enc); | |
5556 | this._readableState.encoding = enc; | |
5557 | return this; | |
5558 | }; | |
5559 | ||
5560 | // Don't raise the hwm > 128MB | |
5561 | var MAX_HWM = 0x800000; | |
5562 | function roundUpToNextPowerOf2(n) { | |
5563 | if (n >= MAX_HWM) { | |
5564 | n = MAX_HWM; | |
5565 | } else { | |
5566 | // Get the next highest power of 2 | |
5567 | n--; | |
5568 | for (var p = 1; p < 32; p <<= 1) n |= n >> p; | |
5569 | n++; | |
ebd8d4e8 | 5570 | } |
ab78acc6 | 5571 | return n; |
ebd8d4e8 | 5572 | } |
ebd8d4e8 | 5573 | |
ab78acc6 IC |
5574 | function howMuchToRead(n, state) { |
5575 | if (state.length === 0 && state.ended) | |
5576 | return 0; | |
ebd8d4e8 | 5577 | |
ab78acc6 IC |
5578 | if (state.objectMode) |
5579 | return n === 0 ? 0 : 1; | |
ebd8d4e8 | 5580 | |
ab78acc6 IC |
5581 | if (isNaN(n) || util.isNull(n)) { |
5582 | // only flow one buffer at a time | |
5583 | if (state.flowing && state.buffer.length) | |
5584 | return state.buffer[0].length; | |
5585 | else | |
5586 | return state.length; | |
5587 | } | |
ebd8d4e8 | 5588 | |
ab78acc6 IC |
5589 | if (n <= 0) |
5590 | return 0; | |
ebd8d4e8 | 5591 | |
ab78acc6 IC |
5592 | // If we're asking for more than the target buffer level, |
5593 | // then raise the water mark. Bump up to the next highest | |
5594 | // power of 2, to prevent increasing it excessively in tiny | |
5595 | // amounts. | |
5596 | if (n > state.highWaterMark) | |
5597 | state.highWaterMark = roundUpToNextPowerOf2(n); | |
ebd8d4e8 | 5598 | |
ab78acc6 IC |
5599 | // don't have that much. return null, unless we've ended. |
5600 | if (n > state.length) { | |
5601 | if (!state.ended) { | |
5602 | state.needReadable = true; | |
5603 | return 0; | |
5604 | } else | |
5605 | return state.length; | |
ebd8d4e8 | 5606 | } |
ab78acc6 IC |
5607 | |
5608 | return n; | |
ebd8d4e8 IC |
5609 | } |
5610 | ||
ab78acc6 IC |
5611 | // you can override either this method, or the async _read(n) below. |
5612 | Readable.prototype.read = function(n) { | |
5613 | debug('read', n); | |
5614 | var state = this._readableState; | |
5615 | var nOrig = n; | |
ebd8d4e8 | 5616 | |
ab78acc6 IC |
5617 | if (!util.isNumber(n) || n > 0) |
5618 | state.emittedReadable = false; | |
5619 | ||
5620 | // if we're doing read(0) to trigger a readable event, but we | |
5621 | // already have a bunch of data in the buffer, then just trigger | |
5622 | // the 'readable' event and move on. | |
5623 | if (n === 0 && | |
5624 | state.needReadable && | |
5625 | (state.length >= state.highWaterMark || state.ended)) { | |
5626 | debug('read: emitReadable', state.length, state.ended); | |
5627 | if (state.length === 0 && state.ended) | |
5628 | endReadable(this); | |
5629 | else | |
5630 | emitReadable(this); | |
5631 | return null; | |
5632 | } | |
5633 | ||
5634 | n = howMuchToRead(n, state); | |
5635 | ||
5636 | // if we've ended, and we're now clear, then finish it up. | |
5637 | if (n === 0 && state.ended) { | |
5638 | if (state.length === 0) | |
5639 | endReadable(this); | |
5640 | return null; | |
5641 | } | |
5642 | ||
5643 | // All the actual chunk generation logic needs to be | |
5644 | // *below* the call to _read. The reason is that in certain | |
5645 | // synthetic stream cases, such as passthrough streams, _read | |
5646 | // may be a completely synchronous operation which may change | |
5647 | // the state of the read buffer, providing enough data when | |
5648 | // before there was *not* enough. | |
5649 | // | |
5650 | // So, the steps are: | |
5651 | // 1. Figure out what the state of things will be after we do | |
5652 | // a read from the buffer. | |
5653 | // | |
5654 | // 2. If that resulting state will trigger a _read, then call _read. | |
5655 | // Note that this may be asynchronous, or synchronous. Yes, it is | |
5656 | // deeply ugly to write APIs this way, but that still doesn't mean | |
5657 | // that the Readable class should behave improperly, as streams are | |
5658 | // designed to be sync/async agnostic. | |
5659 | // Take note if the _read call is sync or async (ie, if the read call | |
5660 | // has returned yet), so that we know whether or not it's safe to emit | |
5661 | // 'readable' etc. | |
5662 | // | |
5663 | // 3. Actually pull the requested chunks out of the buffer and return. | |
5664 | ||
5665 | // if we need a readable event, then we need to do some reading. | |
5666 | var doRead = state.needReadable; | |
5667 | debug('need readable', doRead); | |
5668 | ||
5669 | // if we currently have less than the highWaterMark, then also read some | |
5670 | if (state.length === 0 || state.length - n < state.highWaterMark) { | |
5671 | doRead = true; | |
5672 | debug('length less than watermark', doRead); | |
5673 | } | |
5674 | ||
5675 | // however, if we've ended, then there's no point, and if we're already | |
5676 | // reading, then it's unnecessary. | |
5677 | if (state.ended || state.reading) { | |
5678 | doRead = false; | |
5679 | debug('reading or ended', doRead); | |
5680 | } | |
5681 | ||
5682 | if (doRead) { | |
5683 | debug('do read'); | |
5684 | state.reading = true; | |
5685 | state.sync = true; | |
5686 | // if the length is currently zero, then we *need* a readable event. | |
5687 | if (state.length === 0) | |
5688 | state.needReadable = true; | |
5689 | // call internal read method | |
5690 | this._read(state.highWaterMark); | |
5691 | state.sync = false; | |
5692 | } | |
5693 | ||
5694 | // If _read pushed data synchronously, then `reading` will be false, | |
5695 | // and we need to re-evaluate how much data we can return to the user. | |
5696 | if (doRead && !state.reading) | |
5697 | n = howMuchToRead(nOrig, state); | |
5698 | ||
5699 | var ret; | |
5700 | if (n > 0) | |
5701 | ret = fromList(n, state); | |
5702 | else | |
5703 | ret = null; | |
ebd8d4e8 | 5704 | |
ab78acc6 IC |
5705 | if (util.isNull(ret)) { |
5706 | state.needReadable = true; | |
5707 | n = 0; | |
5708 | } | |
ebd8d4e8 | 5709 | |
ab78acc6 | 5710 | state.length -= n; |
ebd8d4e8 | 5711 | |
ab78acc6 IC |
5712 | // If we have nothing in the buffer, then we want to know |
5713 | // as soon as we *do* get something into the buffer. | |
5714 | if (state.length === 0 && !state.ended) | |
5715 | state.needReadable = true; | |
ebd8d4e8 | 5716 | |
ab78acc6 IC |
5717 | // If we tried to read() past the EOF, then emit end on the next tick. |
5718 | if (nOrig !== n && state.ended && state.length === 0) | |
5719 | endReadable(this); | |
5720 | ||
5721 | if (!util.isNull(ret)) | |
5722 | this.emit('data', ret); | |
5723 | ||
5724 | return ret; | |
5725 | }; | |
5726 | ||
5727 | function chunkInvalid(state, chunk) { | |
5728 | var er = null; | |
5729 | if (!util.isBuffer(chunk) && | |
5730 | !util.isString(chunk) && | |
5731 | !util.isNullOrUndefined(chunk) && | |
5732 | !state.objectMode) { | |
5733 | er = new TypeError('Invalid non-string/buffer chunk'); | |
5734 | } | |
5735 | return er; | |
ebd8d4e8 IC |
5736 | } |
5737 | ||
5738 | ||
ab78acc6 IC |
5739 | function onEofChunk(stream, state) { |
5740 | if (state.decoder && !state.ended) { | |
5741 | var chunk = state.decoder.end(); | |
5742 | if (chunk && chunk.length) { | |
5743 | state.buffer.push(chunk); | |
5744 | state.length += state.objectMode ? 1 : chunk.length; | |
ebd8d4e8 | 5745 | } |
ebd8d4e8 | 5746 | } |
ab78acc6 | 5747 | state.ended = true; |
ebd8d4e8 | 5748 | |
ab78acc6 IC |
5749 | // emit 'readable' now to make sure it gets picked up. |
5750 | emitReadable(stream); | |
5751 | } | |
5752 | ||
5753 | // Don't emit readable right away in sync mode, because this can trigger | |
5754 | // another read() call => stack overflow. This way, it might trigger | |
5755 | // a nextTick recursion warning, but that's not so bad. | |
5756 | function emitReadable(stream) { | |
5757 | var state = stream._readableState; | |
5758 | state.needReadable = false; | |
5759 | if (!state.emittedReadable) { | |
5760 | debug('emitReadable', state.flowing); | |
5761 | state.emittedReadable = true; | |
5762 | if (state.sync) | |
5763 | process.nextTick(function() { | |
5764 | emitReadable_(stream); | |
5765 | }); | |
5766 | else | |
5767 | emitReadable_(stream); | |
ebd8d4e8 | 5768 | } |
ab78acc6 | 5769 | } |
ebd8d4e8 | 5770 | |
ab78acc6 IC |
5771 | function emitReadable_(stream) { |
5772 | debug('emit readable'); | |
5773 | stream.emit('readable'); | |
5774 | flow(stream); | |
5775 | } | |
ebd8d4e8 | 5776 | |
ab78acc6 IC |
5777 | |
5778 | // at this point, the user has presumably seen the 'readable' event, | |
5779 | // and called read() to consume some data. that may have triggered | |
5780 | // in turn another _read(n) call, in which case reading = true if | |
5781 | // it's in progress. | |
5782 | // However, if we're not ended, or reading, and the length < hwm, | |
5783 | // then go ahead and try to read some more preemptively. | |
5784 | function maybeReadMore(stream, state) { | |
5785 | if (!state.readingMore) { | |
5786 | state.readingMore = true; | |
5787 | process.nextTick(function() { | |
5788 | maybeReadMore_(stream, state); | |
5789 | }); | |
ebd8d4e8 | 5790 | } |
ab78acc6 | 5791 | } |
ebd8d4e8 | 5792 | |
ab78acc6 IC |
5793 | function maybeReadMore_(stream, state) { |
5794 | var len = state.length; | |
5795 | while (!state.reading && !state.flowing && !state.ended && | |
5796 | state.length < state.highWaterMark) { | |
5797 | debug('maybeReadMore read 0'); | |
5798 | stream.read(0); | |
5799 | if (len === state.length) | |
5800 | // didn't get any data, stop spinning. | |
5801 | break; | |
5802 | else | |
5803 | len = state.length; | |
ebd8d4e8 | 5804 | } |
ab78acc6 IC |
5805 | state.readingMore = false; |
5806 | } | |
ebd8d4e8 | 5807 | |
ab78acc6 IC |
5808 | // abstract method. to be overridden in specific implementation classes. |
5809 | // call cb(er, data) where data is <= n in length. | |
5810 | // for virtual (non-string, non-buffer) streams, "length" is somewhat | |
5811 | // arbitrary, and perhaps not very meaningful. | |
5812 | Readable.prototype._read = function(n) { | |
5813 | this.emit('error', new Error('not implemented')); | |
5814 | }; | |
5815 | ||
5816 | Readable.prototype.pipe = function(dest, pipeOpts) { | |
5817 | var src = this; | |
5818 | var state = this._readableState; | |
5819 | ||
5820 | switch (state.pipesCount) { | |
5821 | case 0: | |
5822 | state.pipes = dest; | |
5823 | break; | |
5824 | case 1: | |
5825 | state.pipes = [state.pipes, dest]; | |
5826 | break; | |
5827 | default: | |
5828 | state.pipes.push(dest); | |
5829 | break; | |
ebd8d4e8 | 5830 | } |
ab78acc6 IC |
5831 | state.pipesCount += 1; |
5832 | debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); | |
ebd8d4e8 | 5833 | |
ab78acc6 IC |
5834 | var doEnd = (!pipeOpts || pipeOpts.end !== false) && |
5835 | dest !== process.stdout && | |
5836 | dest !== process.stderr; | |
ebd8d4e8 | 5837 | |
ab78acc6 IC |
5838 | var endFn = doEnd ? onend : cleanup; |
5839 | if (state.endEmitted) | |
5840 | process.nextTick(endFn); | |
5841 | else | |
5842 | src.once('end', endFn); | |
5843 | ||
5844 | dest.on('unpipe', onunpipe); | |
5845 | function onunpipe(readable) { | |
5846 | debug('onunpipe'); | |
5847 | if (readable === src) { | |
5848 | cleanup(); | |
5849 | } | |
5850 | } | |
5851 | ||
5852 | function onend() { | |
5853 | debug('onend'); | |
5854 | dest.end(); | |
5855 | } | |
5856 | ||
5857 | // when the dest drains, it reduces the awaitDrain counter | |
5858 | // on the source. This would be more elegant with a .once() | |
5859 | // handler in flow(), but adding and removing repeatedly is | |
5860 | // too slow. | |
5861 | var ondrain = pipeOnDrain(src); | |
5862 | dest.on('drain', ondrain); | |
5863 | ||
5864 | function cleanup() { | |
5865 | debug('cleanup'); | |
5866 | // cleanup event handlers once the pipe is broken | |
5867 | dest.removeListener('close', onclose); | |
5868 | dest.removeListener('finish', onfinish); | |
5869 | dest.removeListener('drain', ondrain); | |
5870 | dest.removeListener('error', onerror); | |
5871 | dest.removeListener('unpipe', onunpipe); | |
5872 | src.removeListener('end', onend); | |
5873 | src.removeListener('end', cleanup); | |
5874 | src.removeListener('data', ondata); | |
5875 | ||
5876 | // if the reader is waiting for a drain event from this | |
5877 | // specific writer, then it would cause it to never start | |
5878 | // flowing again. | |
5879 | // So, if this is awaiting a drain, then we just call it now. | |
5880 | // If we don't know, then assume that we are waiting for one. | |
5881 | if (state.awaitDrain && | |
5882 | (!dest._writableState || dest._writableState.needDrain)) | |
5883 | ondrain(); | |
5884 | } | |
5885 | ||
5886 | src.on('data', ondata); | |
5887 | function ondata(chunk) { | |
5888 | debug('ondata'); | |
5889 | var ret = dest.write(chunk); | |
5890 | if (false === ret) { | |
5891 | debug('false write response, pause', | |
5892 | src._readableState.awaitDrain); | |
5893 | src._readableState.awaitDrain++; | |
5894 | src.pause(); | |
5895 | } | |
5896 | } | |
5897 | ||
5898 | // if the dest has an error, then stop piping into it. | |
5899 | // however, don't suppress the throwing behavior for this. | |
5900 | function onerror(er) { | |
5901 | debug('onerror', er); | |
5902 | unpipe(); | |
5903 | dest.removeListener('error', onerror); | |
5904 | if (EE.listenerCount(dest, 'error') === 0) | |
5905 | dest.emit('error', er); | |
5906 | } | |
5907 | // This is a brutally ugly hack to make sure that our error handler | |
5908 | // is attached before any userland ones. NEVER DO THIS. | |
5909 | if (!dest._events || !dest._events.error) | |
5910 | dest.on('error', onerror); | |
5911 | else if (isArray(dest._events.error)) | |
5912 | dest._events.error.unshift(onerror); | |
5913 | else | |
5914 | dest._events.error = [onerror, dest._events.error]; | |
5915 | ||
5916 | ||
5917 | ||
5918 | // Both close and finish should trigger unpipe, but only once. | |
5919 | function onclose() { | |
5920 | dest.removeListener('finish', onfinish); | |
5921 | unpipe(); | |
ebd8d4e8 | 5922 | } |
ab78acc6 IC |
5923 | dest.once('close', onclose); |
5924 | function onfinish() { | |
5925 | debug('onfinish'); | |
5926 | dest.removeListener('close', onclose); | |
5927 | unpipe(); | |
5928 | } | |
5929 | dest.once('finish', onfinish); | |
ebd8d4e8 | 5930 | |
ab78acc6 IC |
5931 | function unpipe() { |
5932 | debug('unpipe'); | |
5933 | src.unpipe(dest); | |
ebd8d4e8 IC |
5934 | } |
5935 | ||
ab78acc6 IC |
5936 | // tell the dest that it's being piped to |
5937 | dest.emit('pipe', src); | |
5938 | ||
5939 | // start the flow if it hasn't been started already. | |
5940 | if (!state.flowing) { | |
5941 | debug('pipe resume'); | |
5942 | src.resume(); | |
ebd8d4e8 IC |
5943 | } |
5944 | ||
ab78acc6 IC |
5945 | return dest; |
5946 | }; | |
5947 | ||
5948 | function pipeOnDrain(src) { | |
5949 | return function() { | |
5950 | var state = src._readableState; | |
5951 | debug('pipeOnDrain', state.awaitDrain); | |
5952 | if (state.awaitDrain) | |
5953 | state.awaitDrain--; | |
5954 | if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) { | |
5955 | state.flowing = true; | |
5956 | flow(src); | |
5957 | } | |
5958 | }; | |
5959 | } | |
5960 | ||
5961 | ||
5962 | Readable.prototype.unpipe = function(dest) { | |
5963 | var state = this._readableState; | |
5964 | ||
5965 | // if we're not piping anywhere, then do nothing. | |
5966 | if (state.pipesCount === 0) | |
5967 | return this; | |
5968 | ||
5969 | // just one destination. most common case. | |
5970 | if (state.pipesCount === 1) { | |
5971 | // passed in one, but it's not the right one. | |
5972 | if (dest && dest !== state.pipes) | |
5973 | return this; | |
5974 | ||
5975 | if (!dest) | |
5976 | dest = state.pipes; | |
5977 | ||
5978 | // got a match. | |
5979 | state.pipes = null; | |
5980 | state.pipesCount = 0; | |
5981 | state.flowing = false; | |
5982 | if (dest) | |
5983 | dest.emit('unpipe', this); | |
5984 | return this; | |
ebd8d4e8 IC |
5985 | } |
5986 | ||
ab78acc6 IC |
5987 | // slow case. multiple pipe destinations. |
5988 | ||
5989 | if (!dest) { | |
5990 | // remove all. | |
5991 | var dests = state.pipes; | |
5992 | var len = state.pipesCount; | |
5993 | state.pipes = null; | |
5994 | state.pipesCount = 0; | |
5995 | state.flowing = false; | |
5996 | ||
5997 | for (var i = 0; i < len; i++) | |
5998 | dests[i].emit('unpipe', this); | |
5999 | return this; | |
ebd8d4e8 IC |
6000 | } |
6001 | ||
ab78acc6 IC |
6002 | // try to find the right one. |
6003 | var i = indexOf(state.pipes, dest); | |
6004 | if (i === -1) | |
6005 | return this; | |
6006 | ||
6007 | state.pipes.splice(i, 1); | |
6008 | state.pipesCount -= 1; | |
6009 | if (state.pipesCount === 1) | |
6010 | state.pipes = state.pipes[0]; | |
6011 | ||
6012 | dest.emit('unpipe', this); | |
ebd8d4e8 | 6013 | |
ab78acc6 IC |
6014 | return this; |
6015 | }; | |
6016 | ||
6017 | // set up data events if they are asked for | |
6018 | // Ensure readable listeners eventually get something | |
6019 | Readable.prototype.on = function(ev, fn) { | |
6020 | var res = Stream.prototype.on.call(this, ev, fn); | |
6021 | ||
6022 | // If listening to data, and it has not explicitly been paused, | |
6023 | // then call resume to start the flow of data on the next tick. | |
6024 | if (ev === 'data' && false !== this._readableState.flowing) { | |
6025 | this.resume(); | |
6026 | } | |
6027 | ||
6028 | if (ev === 'readable' && this.readable) { | |
6029 | var state = this._readableState; | |
6030 | if (!state.readableListening) { | |
6031 | state.readableListening = true; | |
6032 | state.emittedReadable = false; | |
6033 | state.needReadable = true; | |
6034 | if (!state.reading) { | |
6035 | var self = this; | |
6036 | process.nextTick(function() { | |
6037 | debug('readable nexttick read 0'); | |
6038 | self.read(0); | |
6039 | }); | |
6040 | } else if (state.length) { | |
6041 | emitReadable(this, state); | |
6042 | } | |
ebd8d4e8 IC |
6043 | } |
6044 | } | |
6045 | ||
ab78acc6 IC |
6046 | return res; |
6047 | }; | |
6048 | Readable.prototype.addListener = Readable.prototype.on; | |
6049 | ||
6050 | // pause() and resume() are remnants of the legacy readable stream API | |
6051 | // If the user uses them, then switch into old mode. | |
6052 | Readable.prototype.resume = function() { | |
6053 | var state = this._readableState; | |
6054 | if (!state.flowing) { | |
6055 | debug('resume'); | |
6056 | state.flowing = true; | |
6057 | if (!state.reading) { | |
6058 | debug('resume read 0'); | |
6059 | this.read(0); | |
6060 | } | |
6061 | resume(this, state); | |
6062 | } | |
6063 | return this; | |
6064 | }; | |
ebd8d4e8 | 6065 | |
ab78acc6 IC |
6066 | function resume(stream, state) { |
6067 | if (!state.resumeScheduled) { | |
6068 | state.resumeScheduled = true; | |
6069 | process.nextTick(function() { | |
6070 | resume_(stream, state); | |
ebd8d4e8 IC |
6071 | }); |
6072 | } | |
ebd8d4e8 IC |
6073 | } |
6074 | ||
ab78acc6 IC |
6075 | function resume_(stream, state) { |
6076 | state.resumeScheduled = false; | |
6077 | stream.emit('resume'); | |
6078 | flow(stream); | |
6079 | if (state.flowing && !state.reading) | |
6080 | stream.read(0); | |
ebd8d4e8 IC |
6081 | } |
6082 | ||
ab78acc6 IC |
6083 | Readable.prototype.pause = function() { |
6084 | debug('call pause flowing=%j', this._readableState.flowing); | |
6085 | if (false !== this._readableState.flowing) { | |
6086 | debug('pause'); | |
6087 | this._readableState.flowing = false; | |
6088 | this.emit('pause'); | |
6089 | } | |
6090 | return this; | |
6091 | }; | |
ebd8d4e8 | 6092 | |
ab78acc6 IC |
6093 | function flow(stream) { |
6094 | var state = stream._readableState; | |
6095 | debug('flow', state.flowing); | |
6096 | if (state.flowing) { | |
6097 | do { | |
6098 | var chunk = stream.read(); | |
6099 | } while (null !== chunk && state.flowing); | |
6100 | } | |
ebd8d4e8 IC |
6101 | } |
6102 | ||
ab78acc6 IC |
6103 | // wrap an old-style stream as the async data source. |
6104 | // This is *not* part of the readable stream interface. | |
6105 | // It is an ugly unfortunate mess of history. | |
6106 | Readable.prototype.wrap = function(stream) { | |
6107 | var state = this._readableState; | |
6108 | var paused = false; | |
ebd8d4e8 | 6109 | |
ab78acc6 IC |
6110 | var self = this; |
6111 | stream.on('end', function() { | |
6112 | debug('wrapped end'); | |
6113 | if (state.decoder && !state.ended) { | |
6114 | var chunk = state.decoder.end(); | |
6115 | if (chunk && chunk.length) | |
6116 | self.push(chunk); | |
ebd8d4e8 | 6117 | } |
ab78acc6 IC |
6118 | |
6119 | self.push(null); | |
ebd8d4e8 | 6120 | }); |
ebd8d4e8 | 6121 | |
ab78acc6 IC |
6122 | stream.on('data', function(chunk) { |
6123 | debug('wrapped data'); | |
6124 | if (state.decoder) | |
6125 | chunk = state.decoder.write(chunk); | |
6126 | if (!chunk || !state.objectMode && !chunk.length) | |
6127 | return; | |
ebd8d4e8 | 6128 | |
ab78acc6 IC |
6129 | var ret = self.push(chunk); |
6130 | if (!ret) { | |
6131 | paused = true; | |
6132 | stream.pause(); | |
ebd8d4e8 | 6133 | } |
ab78acc6 IC |
6134 | }); |
6135 | ||
6136 | // proxy all the other methods. | |
6137 | // important when wrapping filters and duplexes. | |
6138 | for (var i in stream) { | |
6139 | if (util.isFunction(stream[i]) && util.isUndefined(this[i])) { | |
6140 | this[i] = function(method) { return function() { | |
6141 | return stream[method].apply(stream, arguments); | |
6142 | }}(i); | |
ebd8d4e8 IC |
6143 | } |
6144 | } | |
ab78acc6 IC |
6145 | |
6146 | // proxy certain important events. | |
6147 | var events = ['error', 'close', 'destroy', 'pause', 'resume']; | |
6148 | forEach(events, function(ev) { | |
6149 | stream.on(ev, self.emit.bind(self, ev)); | |
6150 | }); | |
6151 | ||
6152 | // when we try to consume some more bytes, simply unpause the | |
6153 | // underlying stream. | |
6154 | self._read = function(n) { | |
6155 | debug('wrapped _read', n); | |
6156 | if (paused) { | |
6157 | paused = false; | |
6158 | stream.resume(); | |
ebd8d4e8 | 6159 | } |
ab78acc6 IC |
6160 | }; |
6161 | ||
6162 | return self; | |
6163 | }; | |
6164 | ||
6165 | ||
6166 | ||
6167 | // exposed for testing purposes only. | |
6168 | Readable._fromList = fromList; | |
6169 | ||
6170 | // Pluck off n bytes from an array of buffers. | |
6171 | // Length is the combined lengths of all the buffers in the list. | |
6172 | function fromList(n, state) { | |
6173 | var list = state.buffer; | |
6174 | var length = state.length; | |
6175 | var stringMode = !!state.decoder; | |
6176 | var objectMode = !!state.objectMode; | |
6177 | var ret; | |
6178 | ||
6179 | // nothing in the list, definitely empty. | |
6180 | if (list.length === 0) | |
6181 | return null; | |
6182 | ||
6183 | if (length === 0) | |
6184 | ret = null; | |
6185 | else if (objectMode) | |
6186 | ret = list.shift(); | |
6187 | else if (!n || n >= length) { | |
6188 | // read it all, truncate the array. | |
6189 | if (stringMode) | |
6190 | ret = list.join(''); | |
6191 | else | |
6192 | ret = Buffer.concat(list, length); | |
6193 | list.length = 0; | |
6194 | } else { | |
6195 | // read just some of it. | |
6196 | if (n < list[0].length) { | |
6197 | // just take a part of the first list item. | |
6198 | // slice is the same for buffers and strings. | |
6199 | var buf = list[0]; | |
6200 | ret = buf.slice(0, n); | |
6201 | list[0] = buf.slice(n); | |
6202 | } else if (n === list[0].length) { | |
6203 | // first list is a perfect match | |
6204 | ret = list.shift(); | |
ebd8d4e8 | 6205 | } else { |
ab78acc6 IC |
6206 | // complex case. |
6207 | // we have enough to cover it, but it spans past the first buffer. | |
6208 | if (stringMode) | |
6209 | ret = ''; | |
6210 | else | |
6211 | ret = new Buffer(n); | |
ebd8d4e8 | 6212 | |
ab78acc6 IC |
6213 | var c = 0; |
6214 | for (var i = 0, l = list.length; i < l && c < n; i++) { | |
6215 | var buf = list[0]; | |
6216 | var cpy = Math.min(n - c, buf.length); | |
ebd8d4e8 | 6217 | |
ab78acc6 IC |
6218 | if (stringMode) |
6219 | ret += buf.slice(0, cpy); | |
6220 | else | |
6221 | buf.copy(ret, c, 0, cpy); | |
ebd8d4e8 | 6222 | |
ab78acc6 IC |
6223 | if (cpy < buf.length) |
6224 | list[0] = buf.slice(cpy); | |
6225 | else | |
6226 | list.shift(); | |
ebd8d4e8 | 6227 | |
ab78acc6 IC |
6228 | c += cpy; |
6229 | } | |
6230 | } | |
ebd8d4e8 IC |
6231 | } |
6232 | ||
ab78acc6 | 6233 | return ret; |
ebd8d4e8 IC |
6234 | } |
6235 | ||
ab78acc6 IC |
6236 | function endReadable(stream) { |
6237 | var state = stream._readableState; | |
ebd8d4e8 | 6238 | |
ab78acc6 IC |
6239 | // If we get here before consuming all the bytes, then that is a |
6240 | // bug in node. Should never happen. | |
6241 | if (state.length > 0) | |
6242 | throw new Error('endReadable called on non-empty stream'); | |
ebd8d4e8 | 6243 | |
ab78acc6 IC |
6244 | if (!state.endEmitted) { |
6245 | state.ended = true; | |
6246 | process.nextTick(function() { | |
6247 | // Check that we didn't get one last unshift. | |
6248 | if (!state.endEmitted && state.length === 0) { | |
6249 | state.endEmitted = true; | |
6250 | stream.readable = false; | |
6251 | stream.emit('end'); | |
6252 | } | |
6253 | }); | |
6254 | } | |
ebd8d4e8 | 6255 | } |
ebd8d4e8 | 6256 | |
ab78acc6 IC |
6257 | function forEach (xs, f) { |
6258 | for (var i = 0, l = xs.length; i < l; i++) { | |
6259 | f(xs[i], i); | |
6260 | } | |
ebd8d4e8 | 6261 | } |
ebd8d4e8 | 6262 | |
ab78acc6 IC |
6263 | function indexOf (xs, x) { |
6264 | for (var i = 0, l = xs.length; i < l; i++) { | |
6265 | if (xs[i] === x) return i; | |
6266 | } | |
6267 | return -1; | |
ebd8d4e8 | 6268 | } |
ebd8d4e8 | 6269 | |
ab78acc6 IC |
6270 | }).call(this,require('_process')) |
6271 | },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"events":11,"inherits":12,"isarray":13,"stream":26,"string_decoder/":27,"util":6}],19:[function(require,module,exports){ | |
6272 | // Copyright Joyent, Inc. and other Node contributors. | |
6273 | // | |
6274 | // Permission is hereby granted, free of charge, to any person obtaining a | |
6275 | // copy of this software and associated documentation files (the | |
6276 | // "Software"), to deal in the Software without restriction, including | |
6277 | // without limitation the rights to use, copy, modify, merge, publish, | |
6278 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
6279 | // persons to whom the Software is furnished to do so, subject to the | |
6280 | // following conditions: | |
6281 | // | |
6282 | // The above copyright notice and this permission notice shall be included | |
6283 | // in all copies or substantial portions of the Software. | |
6284 | // | |
6285 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
6286 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
6287 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
6288 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
6289 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
6290 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
6291 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
ebd8d4e8 | 6292 | |
ebd8d4e8 | 6293 | |
ab78acc6 IC |
6294 | // a transform stream is a readable/writable stream where you do |
6295 | // something with the data. Sometimes it's called a "filter", | |
6296 | // but that's not a great name for it, since that implies a thing where | |
6297 | // some bits pass through, and others are simply ignored. (That would | |
6298 | // be a valid example of a transform, of course.) | |
6299 | // | |
6300 | // While the output is causally related to the input, it's not a | |
6301 | // necessarily symmetric or synchronous transformation. For example, | |
6302 | // a zlib stream might take multiple plain-text writes(), and then | |
6303 | // emit a single compressed chunk some time in the future. | |
6304 | // | |
6305 | // Here's how this works: | |
6306 | // | |
6307 | // The Transform stream has all the aspects of the readable and writable | |
6308 | // stream classes. When you write(chunk), that calls _write(chunk,cb) | |
6309 | // internally, and returns false if there's a lot of pending writes | |
6310 | // buffered up. When you call read(), that calls _read(n) until | |
6311 | // there's enough pending readable data buffered up. | |
6312 | // | |
6313 | // In a transform stream, the written data is placed in a buffer. When | |
6314 | // _read(n) is called, it transforms the queued up data, calling the | |
6315 | // buffered _write cb's as it consumes chunks. If consuming a single | |
6316 | // written chunk would result in multiple output chunks, then the first | |
6317 | // outputted bit calls the readcb, and subsequent chunks just go into | |
6318 | // the read buffer, and will cause it to emit 'readable' if necessary. | |
6319 | // | |
6320 | // This way, back-pressure is actually determined by the reading side, | |
6321 | // since _read has to be called to start processing a new chunk. However, | |
6322 | // a pathological inflate type of transform can cause excessive buffering | |
6323 | // here. For example, imagine a stream where every byte of input is | |
6324 | // interpreted as an integer from 0-255, and then results in that many | |
6325 | // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in | |
6326 | // 1kb of data being output. In this case, you could write a very small | |
6327 | // amount of input, and end up with a very large amount of output. In | |
6328 | // such a pathological inflating mechanism, there'd be no way to tell | |
6329 | // the system to stop doing the transform. A single 4MB write could | |
6330 | // cause the system to run out of memory. | |
6331 | // | |
6332 | // However, even in such a pathological case, only a single written chunk | |
6333 | // would be consumed, and then the rest would wait (un-transformed) until | |
6334 | // the results of the previous transformed chunk were consumed. | |
ebd8d4e8 | 6335 | |
ab78acc6 | 6336 | module.exports = Transform; |
ebd8d4e8 | 6337 | |
ab78acc6 | 6338 | var Duplex = require('./_stream_duplex'); |
ebd8d4e8 | 6339 | |
ab78acc6 IC |
6340 | /*<replacement>*/ |
6341 | var util = require('core-util-is'); | |
6342 | util.inherits = require('inherits'); | |
6343 | /*</replacement>*/ | |
6344 | ||
6345 | util.inherits(Transform, Duplex); | |
6346 | ||
6347 | ||
6348 | function TransformState(options, stream) { | |
6349 | this.afterTransform = function(er, data) { | |
6350 | return afterTransform(stream, er, data); | |
6351 | }; | |
6352 | ||
6353 | this.needTransform = false; | |
6354 | this.transforming = false; | |
6355 | this.writecb = null; | |
6356 | this.writechunk = null; | |
ebd8d4e8 | 6357 | } |
ebd8d4e8 | 6358 | |
ab78acc6 IC |
6359 | function afterTransform(stream, er, data) { |
6360 | var ts = stream._transformState; | |
6361 | ts.transforming = false; | |
6362 | ||
6363 | var cb = ts.writecb; | |
6364 | ||
6365 | if (!cb) | |
6366 | return stream.emit('error', new Error('no writecb in Transform class')); | |
6367 | ||
6368 | ts.writechunk = null; | |
6369 | ts.writecb = null; | |
6370 | ||
6371 | if (!util.isNullOrUndefined(data)) | |
6372 | stream.push(data); | |
6373 | ||
6374 | if (cb) | |
6375 | cb(er); | |
6376 | ||
6377 | var rs = stream._readableState; | |
6378 | rs.reading = false; | |
6379 | if (rs.needReadable || rs.length < rs.highWaterMark) { | |
6380 | stream._read(rs.highWaterMark); | |
6381 | } | |
ebd8d4e8 | 6382 | } |
ebd8d4e8 | 6383 | |
ab78acc6 IC |
6384 | |
6385 | function Transform(options) { | |
6386 | if (!(this instanceof Transform)) | |
6387 | return new Transform(options); | |
6388 | ||
6389 | Duplex.call(this, options); | |
6390 | ||
6391 | this._transformState = new TransformState(options, this); | |
6392 | ||
6393 | // when the writable side finishes, then flush out anything remaining. | |
6394 | var stream = this; | |
6395 | ||
6396 | // start out asking for a readable event once data is transformed. | |
6397 | this._readableState.needReadable = true; | |
6398 | ||
6399 | // we have implemented the _read method, and done the other things | |
6400 | // that Readable wants before the first _read call, so unset the | |
6401 | // sync guard flag. | |
6402 | this._readableState.sync = false; | |
6403 | ||
6404 | this.once('prefinish', function() { | |
6405 | if (util.isFunction(this._flush)) | |
6406 | this._flush(function(er) { | |
6407 | done(stream, er); | |
6408 | }); | |
6409 | else | |
6410 | done(stream); | |
6411 | }); | |
ebd8d4e8 | 6412 | } |
ebd8d4e8 | 6413 | |
ab78acc6 IC |
6414 | Transform.prototype.push = function(chunk, encoding) { |
6415 | this._transformState.needTransform = false; | |
6416 | return Duplex.prototype.push.call(this, chunk, encoding); | |
6417 | }; | |
6418 | ||
6419 | // This is the part where you do stuff! | |
6420 | // override this function in implementation classes. | |
6421 | // 'chunk' is an input chunk. | |
6422 | // | |
6423 | // Call `push(newChunk)` to pass along transformed output | |
6424 | // to the readable side. You may call 'push' zero or more times. | |
6425 | // | |
6426 | // Call `cb(err)` when you are done with this chunk. If you pass | |
6427 | // an error, then that'll put the hurt on the whole operation. If you | |
6428 | // never call cb(), then you'll never get another chunk. | |
6429 | Transform.prototype._transform = function(chunk, encoding, cb) { | |
6430 | throw new Error('not implemented'); | |
6431 | }; | |
6432 | ||
6433 | Transform.prototype._write = function(chunk, encoding, cb) { | |
6434 | var ts = this._transformState; | |
6435 | ts.writecb = cb; | |
6436 | ts.writechunk = chunk; | |
6437 | ts.writeencoding = encoding; | |
6438 | if (!ts.transforming) { | |
6439 | var rs = this._readableState; | |
6440 | if (ts.needTransform || | |
6441 | rs.needReadable || | |
6442 | rs.length < rs.highWaterMark) | |
6443 | this._read(rs.highWaterMark); | |
6444 | } | |
6445 | }; | |
6446 | ||
6447 | // Doesn't matter what the args are here. | |
6448 | // _transform does all the work. | |
6449 | // That we got here means that the readable side wants more data. | |
6450 | Transform.prototype._read = function(n) { | |
6451 | var ts = this._transformState; | |
ebd8d4e8 | 6452 | |
ab78acc6 IC |
6453 | if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) { |
6454 | ts.transforming = true; | |
6455 | this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); | |
6456 | } else { | |
6457 | // mark that we need a transform, so that any data that comes in | |
6458 | // will get processed, now that we've asked for it. | |
6459 | ts.needTransform = true; | |
6460 | } | |
6461 | }; | |
ebd8d4e8 | 6462 | |
ebd8d4e8 | 6463 | |
ab78acc6 IC |
6464 | function done(stream, er) { |
6465 | if (er) | |
6466 | return stream.emit('error', er); | |
ebd8d4e8 | 6467 | |
ab78acc6 IC |
6468 | // if there's nothing in the write buffer, then that means |
6469 | // that nothing more will ever be provided | |
6470 | var ws = stream._writableState; | |
6471 | var ts = stream._transformState; | |
ebd8d4e8 | 6472 | |
ab78acc6 IC |
6473 | if (ws.length) |
6474 | throw new Error('calling transform done when ws.length != 0'); | |
6475 | ||
6476 | if (ts.transforming) | |
6477 | throw new Error('calling transform done when still transforming'); | |
6478 | ||
6479 | return stream.push(null); | |
ebd8d4e8 IC |
6480 | } |
6481 | ||
ab78acc6 IC |
6482 | },{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){ |
6483 | (function (process){ | |
6484 | // Copyright Joyent, Inc. and other Node contributors. | |
6485 | // | |
6486 | // Permission is hereby granted, free of charge, to any person obtaining a | |
6487 | // copy of this software and associated documentation files (the | |
6488 | // "Software"), to deal in the Software without restriction, including | |
6489 | // without limitation the rights to use, copy, modify, merge, publish, | |
6490 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
6491 | // persons to whom the Software is furnished to do so, subject to the | |
6492 | // following conditions: | |
6493 | // | |
6494 | // The above copyright notice and this permission notice shall be included | |
6495 | // in all copies or substantial portions of the Software. | |
6496 | // | |
6497 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
6498 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
6499 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
6500 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
6501 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
6502 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
6503 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
ebd8d4e8 | 6504 | |
ab78acc6 IC |
6505 | // A bit simpler than readable streams. |
6506 | // Implement an async ._write(chunk, cb), and it'll handle all | |
6507 | // the drain event emission and buffering. | |
ebd8d4e8 | 6508 | |
ab78acc6 | 6509 | module.exports = Writable; |
ebd8d4e8 | 6510 | |
ab78acc6 IC |
6511 | /*<replacement>*/ |
6512 | var Buffer = require('buffer').Buffer; | |
6513 | /*</replacement>*/ | |
ebd8d4e8 | 6514 | |
ab78acc6 | 6515 | Writable.WritableState = WritableState; |
ebd8d4e8 IC |
6516 | |
6517 | ||
ab78acc6 IC |
6518 | /*<replacement>*/ |
6519 | var util = require('core-util-is'); | |
6520 | util.inherits = require('inherits'); | |
6521 | /*</replacement>*/ | |
ebd8d4e8 | 6522 | |
ab78acc6 | 6523 | var Stream = require('stream'); |
ebd8d4e8 | 6524 | |
ab78acc6 | 6525 | util.inherits(Writable, Stream); |
ebd8d4e8 | 6526 | |
ab78acc6 IC |
6527 | function WriteReq(chunk, encoding, cb) { |
6528 | this.chunk = chunk; | |
6529 | this.encoding = encoding; | |
6530 | this.callback = cb; | |
ebd8d4e8 IC |
6531 | } |
6532 | ||
ab78acc6 IC |
6533 | function WritableState(options, stream) { |
6534 | var Duplex = require('./_stream_duplex'); | |
ebd8d4e8 | 6535 | |
ab78acc6 | 6536 | options = options || {}; |
ebd8d4e8 | 6537 | |
ab78acc6 IC |
6538 | // the point at which write() starts returning false |
6539 | // Note: 0 is a valid value, means that we always return false if | |
6540 | // the entire buffer is not flushed immediately on write() | |
6541 | var hwm = options.highWaterMark; | |
6542 | var defaultHwm = options.objectMode ? 16 : 16 * 1024; | |
6543 | this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; | |
ebd8d4e8 | 6544 | |
ab78acc6 IC |
6545 | // object stream flag to indicate whether or not this stream |
6546 | // contains buffers or objects. | |
6547 | this.objectMode = !!options.objectMode; | |
ebd8d4e8 | 6548 | |
ab78acc6 IC |
6549 | if (stream instanceof Duplex) |
6550 | this.objectMode = this.objectMode || !!options.writableObjectMode; | |
ebd8d4e8 | 6551 | |
ab78acc6 IC |
6552 | // cast to ints. |
6553 | this.highWaterMark = ~~this.highWaterMark; | |
ebd8d4e8 | 6554 | |
ab78acc6 IC |
6555 | this.needDrain = false; |
6556 | // at the start of calling end() | |
6557 | this.ending = false; | |
6558 | // when end() has been called, and returned | |
6559 | this.ended = false; | |
6560 | // when 'finish' is emitted | |
6561 | this.finished = false; | |
ebd8d4e8 | 6562 | |
ab78acc6 IC |
6563 | // should we decode strings into buffers before passing to _write? |
6564 | // this is here so that some node-core streams can optimize string | |
6565 | // handling at a lower level. | |
6566 | var noDecode = options.decodeStrings === false; | |
6567 | this.decodeStrings = !noDecode; | |
ebd8d4e8 | 6568 | |
ab78acc6 IC |
6569 | // Crypto is kind of old and crusty. Historically, its default string |
6570 | // encoding is 'binary' so we have to make this configurable. | |
6571 | // Everything else in the universe uses 'utf8', though. | |
6572 | this.defaultEncoding = options.defaultEncoding || 'utf8'; | |
ebd8d4e8 | 6573 | |
ab78acc6 IC |
6574 | // not an actual buffer we keep track of, but a measurement |
6575 | // of how much we're waiting to get pushed to some underlying | |
6576 | // socket or file. | |
6577 | this.length = 0; | |
ebd8d4e8 | 6578 | |
ab78acc6 IC |
6579 | // a flag to see when we're in the middle of a write. |
6580 | this.writing = false; | |
ebd8d4e8 | 6581 | |
ab78acc6 IC |
6582 | // when true all writes will be buffered until .uncork() call |
6583 | this.corked = 0; | |
ebd8d4e8 | 6584 | |
ab78acc6 IC |
6585 | // a flag to be able to tell if the onwrite cb is called immediately, |
6586 | // or on a later tick. We set this to true at first, because any | |
6587 | // actions that shouldn't happen until "later" should generally also | |
6588 | // not happen before the first write call. | |
6589 | this.sync = true; | |
ebd8d4e8 | 6590 | |
ab78acc6 IC |
6591 | // a flag to know if we're processing previously buffered items, which |
6592 | // may call the _write() callback in the same tick, so that we don't | |
6593 | // end up in an overlapped onwrite situation. | |
6594 | this.bufferProcessing = false; | |
ebd8d4e8 | 6595 | |
ab78acc6 IC |
6596 | // the callback that's passed to _write(chunk,cb) |
6597 | this.onwrite = function(er) { | |
6598 | onwrite(stream, er); | |
6599 | }; | |
ebd8d4e8 | 6600 | |
ab78acc6 IC |
6601 | // the callback that the user supplies to write(chunk,encoding,cb) |
6602 | this.writecb = null; | |
ebd8d4e8 | 6603 | |
ab78acc6 IC |
6604 | // the amount that is being written when _write is called. |
6605 | this.writelen = 0; | |
ebd8d4e8 | 6606 | |
ab78acc6 | 6607 | this.buffer = []; |
ebd8d4e8 | 6608 | |
ab78acc6 IC |
6609 | // number of pending user-supplied write callbacks |
6610 | // this must be 0 before 'finish' can be emitted | |
6611 | this.pendingcb = 0; | |
ebd8d4e8 | 6612 | |
ab78acc6 IC |
6613 | // emit prefinish if the only thing we're waiting for is _write cbs |
6614 | // This is relevant for synchronous Transform streams | |
6615 | this.prefinished = false; | |
ebd8d4e8 | 6616 | |
ab78acc6 IC |
6617 | // True if the error was already emitted and should not be thrown again |
6618 | this.errorEmitted = false; | |
ebd8d4e8 IC |
6619 | } |
6620 | ||
ab78acc6 IC |
6621 | function Writable(options) { |
6622 | var Duplex = require('./_stream_duplex'); | |
ebd8d4e8 | 6623 | |
ab78acc6 IC |
6624 | // Writable ctor is applied to Duplexes, though they're not |
6625 | // instanceof Writable, they're instanceof Readable. | |
6626 | if (!(this instanceof Writable) && !(this instanceof Duplex)) | |
6627 | return new Writable(options); | |
ebd8d4e8 | 6628 | |
ab78acc6 | 6629 | this._writableState = new WritableState(options, this); |
ebd8d4e8 | 6630 | |
ab78acc6 IC |
6631 | // legacy. |
6632 | this.writable = true; | |
ebd8d4e8 | 6633 | |
ab78acc6 | 6634 | Stream.call(this); |
ebd8d4e8 IC |
6635 | } |
6636 | ||
ab78acc6 IC |
6637 | // Otherwise people can pipe Writable streams, which is just wrong. |
6638 | Writable.prototype.pipe = function() { | |
6639 | this.emit('error', new Error('Cannot pipe. Not readable.')); | |
6640 | }; | |
ebd8d4e8 | 6641 | |
ebd8d4e8 | 6642 | |
ab78acc6 IC |
6643 | function writeAfterEnd(stream, state, cb) { |
6644 | var er = new Error('write after end'); | |
6645 | // TODO: defer error events consistently everywhere, not just the cb | |
6646 | stream.emit('error', er); | |
6647 | process.nextTick(function() { | |
6648 | cb(er); | |
6649 | }); | |
ebd8d4e8 IC |
6650 | } |
6651 | ||
ab78acc6 IC |
6652 | // If we get something that is not a buffer, string, null, or undefined, |
6653 | // and we're not in objectMode, then that's an error. | |
6654 | // Otherwise stream chunks are all considered to be of length=1, and the | |
6655 | // watermarks determine how many objects to keep in the buffer, rather than | |
6656 | // how many bytes or characters. | |
6657 | function validChunk(stream, state, chunk, cb) { | |
6658 | var valid = true; | |
6659 | if (!util.isBuffer(chunk) && | |
6660 | !util.isString(chunk) && | |
6661 | !util.isNullOrUndefined(chunk) && | |
6662 | !state.objectMode) { | |
6663 | var er = new TypeError('Invalid non-string/buffer chunk'); | |
6664 | stream.emit('error', er); | |
6665 | process.nextTick(function() { | |
6666 | cb(er); | |
6667 | }); | |
6668 | valid = false; | |
6669 | } | |
6670 | return valid; | |
ebd8d4e8 IC |
6671 | } |
6672 | ||
ab78acc6 IC |
6673 | Writable.prototype.write = function(chunk, encoding, cb) { |
6674 | var state = this._writableState; | |
6675 | var ret = false; | |
ebd8d4e8 | 6676 | |
ab78acc6 IC |
6677 | if (util.isFunction(encoding)) { |
6678 | cb = encoding; | |
6679 | encoding = null; | |
ebd8d4e8 | 6680 | } |
ebd8d4e8 | 6681 | |
ab78acc6 IC |
6682 | if (util.isBuffer(chunk)) |
6683 | encoding = 'buffer'; | |
6684 | else if (!encoding) | |
6685 | encoding = state.defaultEncoding; | |
6686 | ||
6687 | if (!util.isFunction(cb)) | |
6688 | cb = function() {}; | |
6689 | ||
6690 | if (state.ended) | |
6691 | writeAfterEnd(this, state, cb); | |
6692 | else if (validChunk(this, state, chunk, cb)) { | |
6693 | state.pendingcb++; | |
6694 | ret = writeOrBuffer(this, state, chunk, encoding, cb); | |
ebd8d4e8 | 6695 | } |
ebd8d4e8 | 6696 | |
ab78acc6 IC |
6697 | return ret; |
6698 | }; | |
6699 | ||
6700 | Writable.prototype.cork = function() { | |
6701 | var state = this._writableState; | |
6702 | ||
6703 | state.corked++; | |
6704 | }; | |
ebd8d4e8 | 6705 | |
ab78acc6 IC |
6706 | Writable.prototype.uncork = function() { |
6707 | var state = this._writableState; | |
ebd8d4e8 | 6708 | |
ab78acc6 IC |
6709 | if (state.corked) { |
6710 | state.corked--; | |
ebd8d4e8 | 6711 | |
ab78acc6 IC |
6712 | if (!state.writing && |
6713 | !state.corked && | |
6714 | !state.finished && | |
6715 | !state.bufferProcessing && | |
6716 | state.buffer.length) | |
6717 | clearBuffer(this, state); | |
ebd8d4e8 | 6718 | } |
ab78acc6 | 6719 | }; |
ebd8d4e8 | 6720 | |
ab78acc6 IC |
6721 | function decodeChunk(state, chunk, encoding) { |
6722 | if (!state.objectMode && | |
6723 | state.decodeStrings !== false && | |
6724 | util.isString(chunk)) { | |
6725 | chunk = new Buffer(chunk, encoding); | |
ebd8d4e8 | 6726 | } |
ab78acc6 | 6727 | return chunk; |
ebd8d4e8 IC |
6728 | } |
6729 | ||
ab78acc6 IC |
6730 | // if we're already writing something, then just put this |
6731 | // in the queue, and wait our turn. Otherwise, call _write | |
6732 | // If we return false, then we need a drain event, so set that flag. | |
6733 | function writeOrBuffer(stream, state, chunk, encoding, cb) { | |
6734 | chunk = decodeChunk(state, chunk, encoding); | |
6735 | if (util.isBuffer(chunk)) | |
6736 | encoding = 'buffer'; | |
6737 | var len = state.objectMode ? 1 : chunk.length; | |
6738 | ||
6739 | state.length += len; | |
6740 | ||
6741 | var ret = state.length < state.highWaterMark; | |
6742 | // we must ensure that previous needDrain will not be reset to false. | |
6743 | if (!ret) | |
6744 | state.needDrain = true; | |
6745 | ||
6746 | if (state.writing || state.corked) | |
6747 | state.buffer.push(new WriteReq(chunk, encoding, cb)); | |
6748 | else | |
6749 | doWrite(stream, state, false, len, chunk, encoding, cb); | |
6750 | ||
6751 | return ret; | |
ebd8d4e8 IC |
6752 | } |
6753 | ||
ab78acc6 IC |
6754 | function doWrite(stream, state, writev, len, chunk, encoding, cb) { |
6755 | state.writelen = len; | |
6756 | state.writecb = cb; | |
6757 | state.writing = true; | |
6758 | state.sync = true; | |
6759 | if (writev) | |
6760 | stream._writev(chunk, state.onwrite); | |
6761 | else | |
6762 | stream._write(chunk, encoding, state.onwrite); | |
6763 | state.sync = false; | |
ebd8d4e8 IC |
6764 | } |
6765 | ||
ab78acc6 IC |
6766 | function onwriteError(stream, state, sync, er, cb) { |
6767 | if (sync) | |
6768 | process.nextTick(function() { | |
6769 | state.pendingcb--; | |
6770 | cb(er); | |
6771 | }); | |
6772 | else { | |
6773 | state.pendingcb--; | |
6774 | cb(er); | |
6775 | } | |
ebd8d4e8 | 6776 | |
ab78acc6 IC |
6777 | stream._writableState.errorEmitted = true; |
6778 | stream.emit('error', er); | |
6779 | } | |
ebd8d4e8 | 6780 | |
ab78acc6 IC |
6781 | function onwriteStateUpdate(state) { |
6782 | state.writing = false; | |
6783 | state.writecb = null; | |
6784 | state.length -= state.writelen; | |
6785 | state.writelen = 0; | |
6786 | } | |
ebd8d4e8 | 6787 | |
ab78acc6 IC |
6788 | function onwrite(stream, er) { |
6789 | var state = stream._writableState; | |
6790 | var sync = state.sync; | |
6791 | var cb = state.writecb; | |
ebd8d4e8 | 6792 | |
ab78acc6 | 6793 | onwriteStateUpdate(state); |
ebd8d4e8 | 6794 | |
ab78acc6 IC |
6795 | if (er) |
6796 | onwriteError(stream, state, sync, er, cb); | |
6797 | else { | |
6798 | // Check if we're actually ready to finish, but don't emit yet | |
6799 | var finished = needFinish(stream, state); | |
ebd8d4e8 | 6800 | |
ab78acc6 IC |
6801 | if (!finished && |
6802 | !state.corked && | |
6803 | !state.bufferProcessing && | |
6804 | state.buffer.length) { | |
6805 | clearBuffer(stream, state); | |
6806 | } | |
6807 | ||
6808 | if (sync) { | |
6809 | process.nextTick(function() { | |
6810 | afterWrite(stream, state, finished, cb); | |
6811 | }); | |
6812 | } else { | |
6813 | afterWrite(stream, state, finished, cb); | |
ebd8d4e8 | 6814 | } |
ebd8d4e8 IC |
6815 | } |
6816 | } | |
6817 | ||
ab78acc6 IC |
6818 | function afterWrite(stream, state, finished, cb) { |
6819 | if (!finished) | |
6820 | onwriteDrain(stream, state); | |
6821 | state.pendingcb--; | |
6822 | cb(); | |
6823 | finishMaybe(stream, state); | |
6824 | } | |
6825 | ||
6826 | // Must force callback to be called on nextTick, so that we don't | |
6827 | // emit 'drain' before the write() consumer gets the 'false' return | |
6828 | // value, and has a chance to attach a 'drain' listener. | |
6829 | function onwriteDrain(stream, state) { | |
6830 | if (state.length === 0 && state.needDrain) { | |
6831 | state.needDrain = false; | |
6832 | stream.emit('drain'); | |
ebd8d4e8 IC |
6833 | } |
6834 | } | |
6835 | ||
ebd8d4e8 | 6836 | |
ab78acc6 IC |
6837 | // if there's something in the buffer waiting, then process it |
6838 | function clearBuffer(stream, state) { | |
6839 | state.bufferProcessing = true; | |
6840 | ||
6841 | if (stream._writev && state.buffer.length > 1) { | |
6842 | // Fast case, write everything using _writev() | |
6843 | var cbs = []; | |
6844 | for (var c = 0; c < state.buffer.length; c++) | |
6845 | cbs.push(state.buffer[c].callback); | |
6846 | ||
6847 | // count the one we are adding, as well. | |
6848 | // TODO(isaacs) clean this up | |
6849 | state.pendingcb++; | |
6850 | doWrite(stream, state, true, state.length, state.buffer, '', function(err) { | |
6851 | for (var i = 0; i < cbs.length; i++) { | |
6852 | state.pendingcb--; | |
6853 | cbs[i](err); | |
6854 | } | |
6855 | }); | |
6856 | ||
6857 | // Clear buffer | |
6858 | state.buffer = []; | |
6859 | } else { | |
6860 | // Slow case, write chunks one-by-one | |
6861 | for (var c = 0; c < state.buffer.length; c++) { | |
6862 | var entry = state.buffer[c]; | |
6863 | var chunk = entry.chunk; | |
6864 | var encoding = entry.encoding; | |
6865 | var cb = entry.callback; | |
6866 | var len = state.objectMode ? 1 : chunk.length; | |
6867 | ||
6868 | doWrite(stream, state, false, len, chunk, encoding, cb); | |
6869 | ||
6870 | // if we didn't call the onwrite immediately, then | |
6871 | // it means that we need to wait until it does. | |
6872 | // also, that means that the chunk and cb are currently | |
6873 | // being processed, so move the buffer counter past them. | |
6874 | if (state.writing) { | |
6875 | c++; | |
6876 | break; | |
6877 | } | |
ebd8d4e8 | 6878 | } |
ab78acc6 IC |
6879 | |
6880 | if (c < state.buffer.length) | |
6881 | state.buffer = state.buffer.slice(c); | |
6882 | else | |
6883 | state.buffer.length = 0; | |
ebd8d4e8 IC |
6884 | } |
6885 | ||
ab78acc6 | 6886 | state.bufferProcessing = false; |
ebd8d4e8 IC |
6887 | } |
6888 | ||
ab78acc6 IC |
6889 | Writable.prototype._write = function(chunk, encoding, cb) { |
6890 | cb(new Error('not implemented')); | |
ebd8d4e8 | 6891 | |
ab78acc6 | 6892 | }; |
ebd8d4e8 | 6893 | |
ab78acc6 | 6894 | Writable.prototype._writev = null; |
ebd8d4e8 | 6895 | |
ab78acc6 IC |
6896 | Writable.prototype.end = function(chunk, encoding, cb) { |
6897 | var state = this._writableState; | |
ebd8d4e8 | 6898 | |
ab78acc6 IC |
6899 | if (util.isFunction(chunk)) { |
6900 | cb = chunk; | |
6901 | chunk = null; | |
6902 | encoding = null; | |
6903 | } else if (util.isFunction(encoding)) { | |
6904 | cb = encoding; | |
6905 | encoding = null; | |
6906 | } | |
ebd8d4e8 | 6907 | |
ab78acc6 IC |
6908 | if (!util.isNullOrUndefined(chunk)) |
6909 | this.write(chunk, encoding); | |
6910 | ||
6911 | // .end() fully uncorks | |
6912 | if (state.corked) { | |
6913 | state.corked = 1; | |
6914 | this.uncork(); | |
ebd8d4e8 | 6915 | } |
ab78acc6 IC |
6916 | |
6917 | // ignore unnecessary end() calls. | |
6918 | if (!state.ending && !state.finished) | |
6919 | endWritable(this, state, cb); | |
6920 | }; | |
6921 | ||
6922 | ||
6923 | function needFinish(stream, state) { | |
6924 | return (state.ending && | |
6925 | state.length === 0 && | |
6926 | !state.finished && | |
6927 | !state.writing); | |
ebd8d4e8 IC |
6928 | } |
6929 | ||
ab78acc6 IC |
6930 | function prefinish(stream, state) { |
6931 | if (!state.prefinished) { | |
6932 | state.prefinished = true; | |
6933 | stream.emit('prefinish'); | |
ebd8d4e8 | 6934 | } |
ebd8d4e8 IC |
6935 | } |
6936 | ||
ab78acc6 IC |
6937 | function finishMaybe(stream, state) { |
6938 | var need = needFinish(stream, state); | |
6939 | if (need) { | |
6940 | if (state.pendingcb === 0) { | |
6941 | prefinish(stream, state); | |
6942 | state.finished = true; | |
6943 | stream.emit('finish'); | |
6944 | } else | |
6945 | prefinish(stream, state); | |
6946 | } | |
6947 | return need; | |
6948 | } | |
ebd8d4e8 | 6949 | |
ab78acc6 IC |
6950 | function endWritable(stream, state, cb) { |
6951 | state.ending = true; | |
6952 | finishMaybe(stream, state); | |
6953 | if (cb) { | |
6954 | if (state.finished) | |
6955 | process.nextTick(cb); | |
6956 | else | |
6957 | stream.once('finish', cb); | |
ebd8d4e8 | 6958 | } |
ab78acc6 | 6959 | state.ended = true; |
ebd8d4e8 IC |
6960 | } |
6961 | ||
ab78acc6 IC |
6962 | }).call(this,require('_process')) |
6963 | },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){ | |
6964 | (function (Buffer){ | |
6965 | // Copyright Joyent, Inc. and other Node contributors. | |
6966 | // | |
6967 | // Permission is hereby granted, free of charge, to any person obtaining a | |
6968 | // copy of this software and associated documentation files (the | |
6969 | // "Software"), to deal in the Software without restriction, including | |
6970 | // without limitation the rights to use, copy, modify, merge, publish, | |
6971 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
6972 | // persons to whom the Software is furnished to do so, subject to the | |
6973 | // following conditions: | |
6974 | // | |
6975 | // The above copyright notice and this permission notice shall be included | |
6976 | // in all copies or substantial portions of the Software. | |
6977 | // | |
6978 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
6979 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
6980 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
6981 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
6982 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
6983 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
6984 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
6985 | ||
6986 | // NOTE: These type checking functions intentionally don't use `instanceof` | |
6987 | // because it is fragile and can be easily faked with `Object.create()`. | |
6988 | function isArray(ar) { | |
6989 | return Array.isArray(ar); | |
ebd8d4e8 | 6990 | } |
ab78acc6 | 6991 | exports.isArray = isArray; |
ebd8d4e8 | 6992 | |
ab78acc6 IC |
6993 | function isBoolean(arg) { |
6994 | return typeof arg === 'boolean'; | |
ebd8d4e8 | 6995 | } |
ab78acc6 | 6996 | exports.isBoolean = isBoolean; |
ebd8d4e8 | 6997 | |
ab78acc6 IC |
6998 | function isNull(arg) { |
6999 | return arg === null; | |
7000 | } | |
7001 | exports.isNull = isNull; | |
ebd8d4e8 | 7002 | |
ab78acc6 IC |
7003 | function isNullOrUndefined(arg) { |
7004 | return arg == null; | |
7005 | } | |
7006 | exports.isNullOrUndefined = isNullOrUndefined; | |
ebd8d4e8 | 7007 | |
ab78acc6 IC |
7008 | function isNumber(arg) { |
7009 | return typeof arg === 'number'; | |
ebd8d4e8 | 7010 | } |
ab78acc6 | 7011 | exports.isNumber = isNumber; |
ebd8d4e8 | 7012 | |
ab78acc6 IC |
7013 | function isString(arg) { |
7014 | return typeof arg === 'string'; | |
7015 | } | |
7016 | exports.isString = isString; | |
ebd8d4e8 | 7017 | |
ab78acc6 IC |
7018 | function isSymbol(arg) { |
7019 | return typeof arg === 'symbol'; | |
7020 | } | |
7021 | exports.isSymbol = isSymbol; | |
ebd8d4e8 | 7022 | |
ab78acc6 IC |
7023 | function isUndefined(arg) { |
7024 | return arg === void 0; | |
ebd8d4e8 | 7025 | } |
ab78acc6 | 7026 | exports.isUndefined = isUndefined; |
ebd8d4e8 | 7027 | |
ab78acc6 IC |
7028 | function isRegExp(re) { |
7029 | return isObject(re) && objectToString(re) === '[object RegExp]'; | |
ebd8d4e8 | 7030 | } |
ab78acc6 | 7031 | exports.isRegExp = isRegExp; |
ebd8d4e8 | 7032 | |
ab78acc6 IC |
7033 | function isObject(arg) { |
7034 | return typeof arg === 'object' && arg !== null; | |
ebd8d4e8 | 7035 | } |
ab78acc6 | 7036 | exports.isObject = isObject; |
ebd8d4e8 | 7037 | |
ab78acc6 IC |
7038 | function isDate(d) { |
7039 | return isObject(d) && objectToString(d) === '[object Date]'; | |
7040 | } | |
7041 | exports.isDate = isDate; | |
ebd8d4e8 | 7042 | |
ab78acc6 IC |
7043 | function isError(e) { |
7044 | return isObject(e) && | |
7045 | (objectToString(e) === '[object Error]' || e instanceof Error); | |
7046 | } | |
7047 | exports.isError = isError; | |
ebd8d4e8 | 7048 | |
ab78acc6 IC |
7049 | function isFunction(arg) { |
7050 | return typeof arg === 'function'; | |
7051 | } | |
7052 | exports.isFunction = isFunction; | |
7053 | ||
7054 | function isPrimitive(arg) { | |
7055 | return arg === null || | |
7056 | typeof arg === 'boolean' || | |
7057 | typeof arg === 'number' || | |
7058 | typeof arg === 'string' || | |
7059 | typeof arg === 'symbol' || // ES6 symbol | |
7060 | typeof arg === 'undefined'; | |
ebd8d4e8 | 7061 | } |
ab78acc6 | 7062 | exports.isPrimitive = isPrimitive; |
ebd8d4e8 | 7063 | |
ab78acc6 IC |
7064 | function isBuffer(arg) { |
7065 | return Buffer.isBuffer(arg); | |
ebd8d4e8 | 7066 | } |
ab78acc6 | 7067 | exports.isBuffer = isBuffer; |
ebd8d4e8 | 7068 | |
ab78acc6 IC |
7069 | function objectToString(o) { |
7070 | return Object.prototype.toString.call(o); | |
ebd8d4e8 | 7071 | } |
ab78acc6 IC |
7072 | }).call(this,require("buffer").Buffer) |
7073 | },{"buffer":7}],22:[function(require,module,exports){ | |
7074 | module.exports = require("./lib/_stream_passthrough.js") | |
ebd8d4e8 | 7075 | |
ab78acc6 IC |
7076 | },{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){ |
7077 | exports = module.exports = require('./lib/_stream_readable.js'); | |
7078 | exports.Stream = require('stream'); | |
7079 | exports.Readable = exports; | |
7080 | exports.Writable = require('./lib/_stream_writable.js'); | |
7081 | exports.Duplex = require('./lib/_stream_duplex.js'); | |
7082 | exports.Transform = require('./lib/_stream_transform.js'); | |
7083 | exports.PassThrough = require('./lib/_stream_passthrough.js'); | |
ebd8d4e8 | 7084 | |
ab78acc6 IC |
7085 | },{"./lib/_stream_duplex.js":16,"./lib/_stream_passthrough.js":17,"./lib/_stream_readable.js":18,"./lib/_stream_transform.js":19,"./lib/_stream_writable.js":20,"stream":26}],24:[function(require,module,exports){ |
7086 | module.exports = require("./lib/_stream_transform.js") | |
ebd8d4e8 | 7087 | |
ab78acc6 IC |
7088 | },{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){ |
7089 | module.exports = require("./lib/_stream_writable.js") | |
7090 | ||
7091 | },{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){ | |
7092 | // Copyright Joyent, Inc. and other Node contributors. | |
7093 | // | |
7094 | // Permission is hereby granted, free of charge, to any person obtaining a | |
7095 | // copy of this software and associated documentation files (the | |
7096 | // "Software"), to deal in the Software without restriction, including | |
7097 | // without limitation the rights to use, copy, modify, merge, publish, | |
7098 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
7099 | // persons to whom the Software is furnished to do so, subject to the | |
7100 | // following conditions: | |
7101 | // | |
7102 | // The above copyright notice and this permission notice shall be included | |
7103 | // in all copies or substantial portions of the Software. | |
7104 | // | |
7105 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
7106 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
7107 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
7108 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
7109 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
7110 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
7111 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
7112 | ||
7113 | module.exports = Stream; | |
7114 | ||
7115 | var EE = require('events').EventEmitter; | |
7116 | var inherits = require('inherits'); | |
7117 | ||
7118 | inherits(Stream, EE); | |
7119 | Stream.Readable = require('readable-stream/readable.js'); | |
7120 | Stream.Writable = require('readable-stream/writable.js'); | |
7121 | Stream.Duplex = require('readable-stream/duplex.js'); | |
7122 | Stream.Transform = require('readable-stream/transform.js'); | |
7123 | Stream.PassThrough = require('readable-stream/passthrough.js'); | |
7124 | ||
7125 | // Backwards-compat with node 0.4.x | |
7126 | Stream.Stream = Stream; | |
7127 | ||
7128 | ||
7129 | ||
7130 | // old-style streams. Note that the pipe method (the only relevant | |
7131 | // part of this class) is overridden in the Readable class. | |
7132 | ||
7133 | function Stream() { | |
7134 | EE.call(this); | |
ebd8d4e8 IC |
7135 | } |
7136 | ||
ab78acc6 IC |
7137 | Stream.prototype.pipe = function(dest, options) { |
7138 | var source = this; | |
ebd8d4e8 | 7139 | |
ab78acc6 IC |
7140 | function ondata(chunk) { |
7141 | if (dest.writable) { | |
7142 | if (false === dest.write(chunk) && source.pause) { | |
7143 | source.pause(); | |
7144 | } | |
7145 | } | |
7146 | } | |
ebd8d4e8 | 7147 | |
ab78acc6 | 7148 | source.on('data', ondata); |
ebd8d4e8 | 7149 | |
ab78acc6 IC |
7150 | function ondrain() { |
7151 | if (source.readable && source.resume) { | |
7152 | source.resume(); | |
7153 | } | |
7154 | } | |
ebd8d4e8 | 7155 | |
ab78acc6 | 7156 | dest.on('drain', ondrain); |
ebd8d4e8 | 7157 | |
ab78acc6 IC |
7158 | // If the 'end' option is not supplied, dest.end() will be called when |
7159 | // source gets the 'end' or 'close' events. Only dest.end() once. | |
7160 | if (!dest._isStdio && (!options || options.end !== false)) { | |
7161 | source.on('end', onend); | |
7162 | source.on('close', onclose); | |
ebd8d4e8 IC |
7163 | } |
7164 | ||
ab78acc6 IC |
7165 | var didOnEnd = false; |
7166 | function onend() { | |
7167 | if (didOnEnd) return; | |
7168 | didOnEnd = true; | |
ebd8d4e8 | 7169 | |
ab78acc6 IC |
7170 | dest.end(); |
7171 | } | |
ebd8d4e8 | 7172 | |
ebd8d4e8 | 7173 | |
ab78acc6 IC |
7174 | function onclose() { |
7175 | if (didOnEnd) return; | |
7176 | didOnEnd = true; | |
ebd8d4e8 | 7177 | |
ab78acc6 | 7178 | if (typeof dest.destroy === 'function') dest.destroy(); |
ebd8d4e8 IC |
7179 | } |
7180 | ||
ab78acc6 IC |
7181 | // don't leave dangling pipes when there are errors. |
7182 | function onerror(er) { | |
7183 | cleanup(); | |
7184 | if (EE.listenerCount(this, 'error') === 0) { | |
7185 | throw er; // Unhandled stream error in pipe. | |
7186 | } | |
7187 | } | |
ebd8d4e8 | 7188 | |
ab78acc6 IC |
7189 | source.on('error', onerror); |
7190 | dest.on('error', onerror); | |
ebd8d4e8 | 7191 | |
ab78acc6 IC |
7192 | // remove all the event listeners that were added. |
7193 | function cleanup() { | |
7194 | source.removeListener('data', ondata); | |
7195 | dest.removeListener('drain', ondrain); | |
ebd8d4e8 | 7196 | |
ab78acc6 IC |
7197 | source.removeListener('end', onend); |
7198 | source.removeListener('close', onclose); | |
7199 | ||
7200 | source.removeListener('error', onerror); | |
7201 | dest.removeListener('error', onerror); | |
7202 | ||
7203 | source.removeListener('end', cleanup); | |
7204 | source.removeListener('close', cleanup); | |
7205 | ||
7206 | dest.removeListener('close', cleanup); | |
ebd8d4e8 IC |
7207 | } |
7208 | ||
ab78acc6 IC |
7209 | source.on('end', cleanup); |
7210 | source.on('close', cleanup); | |
ebd8d4e8 | 7211 | |
ab78acc6 | 7212 | dest.on('close', cleanup); |
ebd8d4e8 | 7213 | |
ab78acc6 | 7214 | dest.emit('pipe', source); |
ebd8d4e8 | 7215 | |
ab78acc6 IC |
7216 | // Allow for unix-like usage: A.pipe(B).pipe(C) |
7217 | return dest; | |
7218 | }; | |
ebd8d4e8 | 7219 | |
ab78acc6 IC |
7220 | },{"events":11,"inherits":12,"readable-stream/duplex.js":15,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],27:[function(require,module,exports){ |
7221 | // Copyright Joyent, Inc. and other Node contributors. | |
7222 | // | |
7223 | // Permission is hereby granted, free of charge, to any person obtaining a | |
7224 | // copy of this software and associated documentation files (the | |
7225 | // "Software"), to deal in the Software without restriction, including | |
7226 | // without limitation the rights to use, copy, modify, merge, publish, | |
7227 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
7228 | // persons to whom the Software is furnished to do so, subject to the | |
7229 | // following conditions: | |
7230 | // | |
7231 | // The above copyright notice and this permission notice shall be included | |
7232 | // in all copies or substantial portions of the Software. | |
7233 | // | |
7234 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
7235 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
7236 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
7237 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
7238 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
7239 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
7240 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
ebd8d4e8 | 7241 | |
ab78acc6 | 7242 | var Buffer = require('buffer').Buffer; |
ebd8d4e8 | 7243 | |
ab78acc6 IC |
7244 | var isBufferEncoding = Buffer.isEncoding |
7245 | || function(encoding) { | |
7246 | switch (encoding && encoding.toLowerCase()) { | |
7247 | 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; | |
7248 | default: return false; | |
7249 | } | |
7250 | } | |
ebd8d4e8 | 7251 | |
ebd8d4e8 | 7252 | |
ab78acc6 IC |
7253 | function assertEncoding(encoding) { |
7254 | if (encoding && !isBufferEncoding(encoding)) { | |
7255 | throw new Error('Unknown encoding: ' + encoding); | |
ebd8d4e8 | 7256 | } |
ebd8d4e8 IC |
7257 | } |
7258 | ||
ab78acc6 IC |
7259 | // StringDecoder provides an interface for efficiently splitting a series of |
7260 | // buffers into a series of JS strings without breaking apart multi-byte | |
7261 | // characters. CESU-8 is handled as part of the UTF-8 encoding. | |
7262 | // | |
7263 | // @TODO Handling all encodings inside a single object makes it very difficult | |
7264 | // to reason about this code, so it should be split up in the future. | |
7265 | // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code | |
7266 | // points as used by CESU-8. | |
7267 | var StringDecoder = exports.StringDecoder = function(encoding) { | |
7268 | this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); | |
7269 | assertEncoding(encoding); | |
7270 | switch (this.encoding) { | |
7271 | case 'utf8': | |
7272 | // CESU-8 represents each of Surrogate Pair by 3-bytes | |
7273 | this.surrogateSize = 3; | |
7274 | break; | |
7275 | case 'ucs2': | |
7276 | case 'utf16le': | |
7277 | // UTF-16 represents each of Surrogate Pair by 2-bytes | |
7278 | this.surrogateSize = 2; | |
7279 | this.detectIncompleteChar = utf16DetectIncompleteChar; | |
7280 | break; | |
7281 | case 'base64': | |
7282 | // Base-64 stores 3 bytes in 4 chars, and pads the remainder. | |
7283 | this.surrogateSize = 3; | |
7284 | this.detectIncompleteChar = base64DetectIncompleteChar; | |
7285 | break; | |
7286 | default: | |
7287 | this.write = passThroughWrite; | |
7288 | return; | |
7289 | } | |
ebd8d4e8 | 7290 | |
ab78acc6 IC |
7291 | // Enough space to store all bytes of a single character. UTF-8 needs 4 |
7292 | // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). | |
7293 | this.charBuffer = new Buffer(6); | |
7294 | // Number of bytes received for the current incomplete multi-byte character. | |
7295 | this.charReceived = 0; | |
7296 | // Number of bytes expected for the current incomplete multi-byte character. | |
7297 | this.charLength = 0; | |
7298 | }; | |
ebd8d4e8 | 7299 | |
ebd8d4e8 | 7300 | |
ab78acc6 IC |
7301 | // write decodes the given buffer and returns it as JS string that is |
7302 | // guaranteed to not contain any partial multi-byte characters. Any partial | |
7303 | // character found at the end of the buffer is buffered up, and will be | |
7304 | // returned when calling write again with the remaining bytes. | |
7305 | // | |
7306 | // Note: Converting a Buffer containing an orphan surrogate to a String | |
7307 | // currently works, but converting a String to a Buffer (via `new Buffer`, or | |
7308 | // Buffer#write) will replace incomplete surrogates with the unicode | |
7309 | // replacement character. See https://codereview.chromium.org/121173009/ . | |
7310 | StringDecoder.prototype.write = function(buffer) { | |
7311 | var charStr = ''; | |
7312 | // if our last write ended with an incomplete multibyte character | |
7313 | while (this.charLength) { | |
7314 | // determine how many remaining bytes this buffer has to offer for this char | |
7315 | var available = (buffer.length >= this.charLength - this.charReceived) ? | |
7316 | this.charLength - this.charReceived : | |
7317 | buffer.length; | |
7318 | ||
7319 | // add the new bytes to the char buffer | |
7320 | buffer.copy(this.charBuffer, this.charReceived, 0, available); | |
7321 | this.charReceived += available; | |
7322 | ||
7323 | if (this.charReceived < this.charLength) { | |
7324 | // still not enough chars in this buffer? wait for more ... | |
7325 | return ''; | |
7326 | } | |
7327 | ||
7328 | // remove bytes belonging to the current character from the buffer | |
7329 | buffer = buffer.slice(available, buffer.length); | |
7330 | ||
7331 | // get the character that was split | |
7332 | charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); | |
7333 | ||
7334 | // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character | |
7335 | var charCode = charStr.charCodeAt(charStr.length - 1); | |
7336 | if (charCode >= 0xD800 && charCode <= 0xDBFF) { | |
7337 | this.charLength += this.surrogateSize; | |
7338 | charStr = ''; | |
7339 | continue; | |
7340 | } | |
7341 | this.charReceived = this.charLength = 0; | |
ebd8d4e8 | 7342 | |
ab78acc6 IC |
7343 | // if there are no more bytes in this buffer, just emit our char |
7344 | if (buffer.length === 0) { | |
7345 | return charStr; | |
7346 | } | |
7347 | break; | |
ebd8d4e8 | 7348 | } |
ebd8d4e8 | 7349 | |
ab78acc6 IC |
7350 | // determine and set charLength / charReceived |
7351 | this.detectIncompleteChar(buffer); | |
ebd8d4e8 | 7352 | |
ab78acc6 IC |
7353 | var end = buffer.length; |
7354 | if (this.charLength) { | |
7355 | // buffer the incomplete character bytes we got | |
7356 | buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); | |
7357 | end -= this.charReceived; | |
ebd8d4e8 IC |
7358 | } |
7359 | ||
ab78acc6 | 7360 | charStr += buffer.toString(this.encoding, 0, end); |
ebd8d4e8 | 7361 | |
ab78acc6 IC |
7362 | var end = charStr.length - 1; |
7363 | var charCode = charStr.charCodeAt(end); | |
7364 | // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character | |
7365 | if (charCode >= 0xD800 && charCode <= 0xDBFF) { | |
7366 | var size = this.surrogateSize; | |
7367 | this.charLength += size; | |
7368 | this.charReceived += size; | |
7369 | this.charBuffer.copy(this.charBuffer, size, 0, size); | |
7370 | buffer.copy(this.charBuffer, 0, 0, size); | |
7371 | return charStr.substring(0, end); | |
ebd8d4e8 IC |
7372 | } |
7373 | ||
ab78acc6 IC |
7374 | // or just emit the charStr |
7375 | return charStr; | |
7376 | }; | |
ebd8d4e8 | 7377 | |
ab78acc6 IC |
7378 | // detectIncompleteChar determines if there is an incomplete UTF-8 character at |
7379 | // the end of the given buffer. If so, it sets this.charLength to the byte | |
7380 | // length that character, and sets this.charReceived to the number of bytes | |
7381 | // that are available for this character. | |
7382 | StringDecoder.prototype.detectIncompleteChar = function(buffer) { | |
7383 | // determine how many bytes we have to check at the end of this buffer | |
7384 | var i = (buffer.length >= 3) ? 3 : buffer.length; | |
ebd8d4e8 | 7385 | |
ab78acc6 IC |
7386 | // Figure out if one of the last i bytes of our buffer announces an |
7387 | // incomplete char. | |
7388 | for (; i > 0; i--) { | |
7389 | var c = buffer[buffer.length - i]; | |
ebd8d4e8 | 7390 | |
ab78acc6 | 7391 | // See http://en.wikipedia.org/wiki/UTF-8#Description |
ebd8d4e8 | 7392 | |
ab78acc6 IC |
7393 | // 110XXXXX |
7394 | if (i == 1 && c >> 5 == 0x06) { | |
7395 | this.charLength = 2; | |
7396 | break; | |
7397 | } | |
ebd8d4e8 | 7398 | |
ab78acc6 IC |
7399 | // 1110XXXX |
7400 | if (i <= 2 && c >> 4 == 0x0E) { | |
7401 | this.charLength = 3; | |
7402 | break; | |
7403 | } | |
ebd8d4e8 | 7404 | |
ab78acc6 IC |
7405 | // 11110XXX |
7406 | if (i <= 3 && c >> 3 == 0x1E) { | |
7407 | this.charLength = 4; | |
7408 | break; | |
7409 | } | |
7410 | } | |
7411 | this.charReceived = i; | |
7412 | }; | |
ebd8d4e8 | 7413 | |
ab78acc6 IC |
7414 | StringDecoder.prototype.end = function(buffer) { |
7415 | var res = ''; | |
7416 | if (buffer && buffer.length) | |
7417 | res = this.write(buffer); | |
ebd8d4e8 | 7418 | |
ab78acc6 IC |
7419 | if (this.charReceived) { |
7420 | var cr = this.charReceived; | |
7421 | var buf = this.charBuffer; | |
7422 | var enc = this.encoding; | |
7423 | res += buf.slice(0, cr).toString(enc); | |
ebd8d4e8 IC |
7424 | } |
7425 | ||
ab78acc6 IC |
7426 | return res; |
7427 | }; | |
ebd8d4e8 | 7428 | |
ab78acc6 IC |
7429 | function passThroughWrite(buffer) { |
7430 | return buffer.toString(this.encoding); | |
ebd8d4e8 IC |
7431 | } |
7432 | ||
ab78acc6 IC |
7433 | function utf16DetectIncompleteChar(buffer) { |
7434 | this.charReceived = buffer.length % 2; | |
7435 | this.charLength = this.charReceived ? 2 : 0; | |
ebd8d4e8 IC |
7436 | } |
7437 | ||
ab78acc6 IC |
7438 | function base64DetectIncompleteChar(buffer) { |
7439 | this.charReceived = buffer.length % 3; | |
7440 | this.charLength = this.charReceived ? 3 : 0; | |
ebd8d4e8 IC |
7441 | } |
7442 | ||
ab78acc6 IC |
7443 | },{"buffer":7}],28:[function(require,module,exports){ |
7444 | module.exports = function isBuffer(arg) { | |
7445 | return arg && typeof arg === 'object' | |
7446 | && typeof arg.copy === 'function' | |
7447 | && typeof arg.fill === 'function' | |
7448 | && typeof arg.readUInt8 === 'function'; | |
7449 | } | |
7450 | },{}],29:[function(require,module,exports){ | |
7451 | (function (process,global){ | |
7452 | // Copyright Joyent, Inc. and other Node contributors. | |
7453 | // | |
7454 | // Permission is hereby granted, free of charge, to any person obtaining a | |
7455 | // copy of this software and associated documentation files (the | |
7456 | // "Software"), to deal in the Software without restriction, including | |
7457 | // without limitation the rights to use, copy, modify, merge, publish, | |
7458 | // distribute, sublicense, and/or sell copies of the Software, and to permit | |
7459 | // persons to whom the Software is furnished to do so, subject to the | |
7460 | // following conditions: | |
7461 | // | |
7462 | // The above copyright notice and this permission notice shall be included | |
7463 | // in all copies or substantial portions of the Software. | |
7464 | // | |
7465 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
7466 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
7467 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
7468 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
7469 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
7470 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
7471 | // USE OR OTHER DEALINGS IN THE SOFTWARE. | |
ebd8d4e8 | 7472 | |
ab78acc6 IC |
7473 | var formatRegExp = /%[sdj%]/g; |
7474 | exports.format = function(f) { | |
7475 | if (!isString(f)) { | |
7476 | var objects = []; | |
7477 | for (var i = 0; i < arguments.length; i++) { | |
7478 | objects.push(inspect(arguments[i])); | |
7479 | } | |
7480 | return objects.join(' '); | |
7481 | } | |
ebd8d4e8 | 7482 | |
ab78acc6 IC |
7483 | var i = 1; |
7484 | var args = arguments; | |
7485 | var len = args.length; | |
7486 | var str = String(f).replace(formatRegExp, function(x) { | |
7487 | if (x === '%%') return '%'; | |
7488 | if (i >= len) return x; | |
7489 | switch (x) { | |
7490 | case '%s': return String(args[i++]); | |
7491 | case '%d': return Number(args[i++]); | |
7492 | case '%j': | |
7493 | try { | |
7494 | return JSON.stringify(args[i++]); | |
7495 | } catch (_) { | |
7496 | return '[Circular]'; | |
7497 | } | |
7498 | default: | |
7499 | return x; | |
7500 | } | |
7501 | }); | |
7502 | for (var x = args[i]; i < len; x = args[++i]) { | |
7503 | if (isNull(x) || !isObject(x)) { | |
7504 | str += ' ' + x; | |
7505 | } else { | |
7506 | str += ' ' + inspect(x); | |
7507 | } | |
7508 | } | |
7509 | return str; | |
7510 | }; | |
ebd8d4e8 | 7511 | |
ebd8d4e8 | 7512 | |
ab78acc6 IC |
7513 | // Mark that a method should not be used. |
7514 | // Returns a modified function which warns once by default. | |
7515 | // If --no-deprecation is set, then it is a no-op. | |
7516 | exports.deprecate = function(fn, msg) { | |
7517 | // Allow for deprecating things in the process of starting up. | |
7518 | if (isUndefined(global.process)) { | |
7519 | return function() { | |
7520 | return exports.deprecate(fn, msg).apply(this, arguments); | |
7521 | }; | |
7522 | } | |
ebd8d4e8 | 7523 | |
ab78acc6 IC |
7524 | if (process.noDeprecation === true) { |
7525 | return fn; | |
7526 | } | |
ebd8d4e8 | 7527 | |
ab78acc6 IC |
7528 | var warned = false; |
7529 | function deprecated() { | |
7530 | if (!warned) { | |
7531 | if (process.throwDeprecation) { | |
7532 | throw new Error(msg); | |
7533 | } else if (process.traceDeprecation) { | |
7534 | console.trace(msg); | |
7535 | } else { | |
7536 | console.error(msg); | |
7537 | } | |
7538 | warned = true; | |
7539 | } | |
7540 | return fn.apply(this, arguments); | |
7541 | } | |
ebd8d4e8 | 7542 | |
ab78acc6 IC |
7543 | return deprecated; |
7544 | }; | |
ebd8d4e8 | 7545 | |
ebd8d4e8 | 7546 | |
ab78acc6 IC |
7547 | var debugs = {}; |
7548 | var debugEnviron; | |
7549 | exports.debuglog = function(set) { | |
7550 | if (isUndefined(debugEnviron)) | |
7551 | debugEnviron = process.env.NODE_DEBUG || ''; | |
7552 | set = set.toUpperCase(); | |
7553 | if (!debugs[set]) { | |
7554 | if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { | |
7555 | var pid = process.pid; | |
7556 | debugs[set] = function() { | |
7557 | var msg = exports.format.apply(exports, arguments); | |
7558 | console.error('%s %d: %s', set, pid, msg); | |
7559 | }; | |
7560 | } else { | |
7561 | debugs[set] = function() {}; | |
ebd8d4e8 IC |
7562 | } |
7563 | } | |
ab78acc6 IC |
7564 | return debugs[set]; |
7565 | }; | |
ebd8d4e8 | 7566 | |
ebd8d4e8 IC |
7567 | |
7568 | /** | |
ab78acc6 IC |
7569 | * Echos the value of a value. Trys to print the value out |
7570 | * in the best way possible given the different types. | |
7571 | * | |
7572 | * @param {Object} obj The object to print out. | |
7573 | * @param {Object} opts Optional options object that alters the output. | |
ebd8d4e8 | 7574 | */ |
ab78acc6 IC |
7575 | /* legacy: obj, showHidden, depth, colors*/ |
7576 | function inspect(obj, opts) { | |
7577 | // default options | |
7578 | var ctx = { | |
7579 | seen: [], | |
7580 | stylize: stylizeNoColor | |
7581 | }; | |
7582 | // legacy... | |
7583 | if (arguments.length >= 3) ctx.depth = arguments[2]; | |
7584 | if (arguments.length >= 4) ctx.colors = arguments[3]; | |
7585 | if (isBoolean(opts)) { | |
7586 | // legacy... | |
7587 | ctx.showHidden = opts; | |
7588 | } else if (opts) { | |
7589 | // got an "options" object | |
7590 | exports._extend(ctx, opts); | |
ebd8d4e8 | 7591 | } |
ab78acc6 IC |
7592 | // set default options |
7593 | if (isUndefined(ctx.showHidden)) ctx.showHidden = false; | |
7594 | if (isUndefined(ctx.depth)) ctx.depth = 2; | |
7595 | if (isUndefined(ctx.colors)) ctx.colors = false; | |
7596 | if (isUndefined(ctx.customInspect)) ctx.customInspect = true; | |
7597 | if (ctx.colors) ctx.stylize = stylizeWithColor; | |
7598 | return formatValue(ctx, obj, ctx.depth); | |
ebd8d4e8 | 7599 | } |
ab78acc6 | 7600 | exports.inspect = inspect; |
ebd8d4e8 | 7601 | |
ebd8d4e8 | 7602 | |
ab78acc6 IC |
7603 | // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics |
7604 | inspect.colors = { | |
7605 | 'bold' : [1, 22], | |
7606 | 'italic' : [3, 23], | |
7607 | 'underline' : [4, 24], | |
7608 | 'inverse' : [7, 27], | |
7609 | 'white' : [37, 39], | |
7610 | 'grey' : [90, 39], | |
7611 | 'black' : [30, 39], | |
7612 | 'blue' : [34, 39], | |
7613 | 'cyan' : [36, 39], | |
7614 | 'green' : [32, 39], | |
7615 | 'magenta' : [35, 39], | |
7616 | 'red' : [31, 39], | |
7617 | 'yellow' : [33, 39] | |
7618 | }; | |
ebd8d4e8 | 7619 | |
ab78acc6 IC |
7620 | // Don't use 'blue' not visible on cmd.exe |
7621 | inspect.styles = { | |
7622 | 'special': 'cyan', | |
7623 | 'number': 'yellow', | |
7624 | 'boolean': 'yellow', | |
7625 | 'undefined': 'grey', | |
7626 | 'null': 'bold', | |
7627 | 'string': 'green', | |
7628 | 'date': 'magenta', | |
7629 | // "name": intentionally not styling | |
7630 | 'regexp': 'red' | |
7631 | }; | |
ebd8d4e8 | 7632 | |
ebd8d4e8 | 7633 | |
ab78acc6 IC |
7634 | function stylizeWithColor(str, styleType) { |
7635 | var style = inspect.styles[styleType]; | |
ebd8d4e8 | 7636 | |
ab78acc6 IC |
7637 | if (style) { |
7638 | return '\u001b[' + inspect.colors[style][0] + 'm' + str + | |
7639 | '\u001b[' + inspect.colors[style][1] + 'm'; | |
7640 | } else { | |
7641 | return str; | |
ebd8d4e8 | 7642 | } |
ebd8d4e8 IC |
7643 | } |
7644 | ||
ebd8d4e8 | 7645 | |
ab78acc6 IC |
7646 | function stylizeNoColor(str, styleType) { |
7647 | return str; | |
ebd8d4e8 IC |
7648 | } |
7649 | ||
ebd8d4e8 | 7650 | |
ab78acc6 IC |
7651 | function arrayToHash(array) { |
7652 | var hash = {}; | |
ebd8d4e8 | 7653 | |
ab78acc6 IC |
7654 | array.forEach(function(val, idx) { |
7655 | hash[val] = true; | |
7656 | }); | |
ebd8d4e8 | 7657 | |
ab78acc6 | 7658 | return hash; |
ebd8d4e8 IC |
7659 | } |
7660 | ||
ebd8d4e8 | 7661 | |
ab78acc6 IC |
7662 | function formatValue(ctx, value, recurseTimes) { |
7663 | // Provide a hook for user-specified inspect functions. | |
7664 | // Check that value is an object with an inspect function on it | |
7665 | if (ctx.customInspect && | |
7666 | value && | |
7667 | isFunction(value.inspect) && | |
7668 | // Filter out the util module, it's inspect function is special | |
7669 | value.inspect !== exports.inspect && | |
7670 | // Also filter out any prototype objects using the circular check. | |
7671 | !(value.constructor && value.constructor.prototype === value)) { | |
7672 | var ret = value.inspect(recurseTimes, ctx); | |
7673 | if (!isString(ret)) { | |
7674 | ret = formatValue(ctx, ret, recurseTimes); | |
7675 | } | |
7676 | return ret; | |
ebd8d4e8 | 7677 | } |
ebd8d4e8 | 7678 | |
ab78acc6 IC |
7679 | // Primitive types cannot have properties |
7680 | var primitive = formatPrimitive(ctx, value); | |
7681 | if (primitive) { | |
7682 | return primitive; | |
ebd8d4e8 IC |
7683 | } |
7684 | ||
ab78acc6 IC |
7685 | // Look up the keys of the object. |
7686 | var keys = Object.keys(value); | |
7687 | var visibleKeys = arrayToHash(keys); | |
ebd8d4e8 | 7688 | |
ab78acc6 IC |
7689 | if (ctx.showHidden) { |
7690 | keys = Object.getOwnPropertyNames(value); | |
7691 | } | |
ebd8d4e8 | 7692 | |
ab78acc6 IC |
7693 | // IE doesn't make error fields non-enumerable |
7694 | // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx | |
7695 | if (isError(value) | |
7696 | && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { | |
7697 | return formatError(value); | |
ebd8d4e8 | 7698 | } |
ebd8d4e8 | 7699 | |
ab78acc6 IC |
7700 | // Some type of object without properties can be shortcutted. |
7701 | if (keys.length === 0) { | |
7702 | if (isFunction(value)) { | |
7703 | var name = value.name ? ': ' + value.name : ''; | |
7704 | return ctx.stylize('[Function' + name + ']', 'special'); | |
7705 | } | |
7706 | if (isRegExp(value)) { | |
7707 | return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); | |
7708 | } | |
7709 | if (isDate(value)) { | |
7710 | return ctx.stylize(Date.prototype.toString.call(value), 'date'); | |
7711 | } | |
7712 | if (isError(value)) { | |
7713 | return formatError(value); | |
7714 | } | |
ebd8d4e8 | 7715 | } |
ebd8d4e8 | 7716 | |
ab78acc6 | 7717 | var base = '', array = false, braces = ['{', '}']; |
ebd8d4e8 | 7718 | |
ab78acc6 IC |
7719 | // Make Array say that they are Array |
7720 | if (isArray(value)) { | |
7721 | array = true; | |
7722 | braces = ['[', ']']; | |
7723 | } | |
ebd8d4e8 | 7724 | |
ab78acc6 IC |
7725 | // Make functions say that they are functions |
7726 | if (isFunction(value)) { | |
7727 | var n = value.name ? ': ' + value.name : ''; | |
7728 | base = ' [Function' + n + ']'; | |
7729 | } | |
ebd8d4e8 | 7730 | |
ab78acc6 IC |
7731 | // Make RegExps say that they are RegExps |
7732 | if (isRegExp(value)) { | |
7733 | base = ' ' + RegExp.prototype.toString.call(value); | |
7734 | } | |
ebd8d4e8 | 7735 | |
ab78acc6 IC |
7736 | // Make dates with properties first say the date |
7737 | if (isDate(value)) { | |
7738 | base = ' ' + Date.prototype.toUTCString.call(value); | |
7739 | } | |
ebd8d4e8 | 7740 | |
ab78acc6 IC |
7741 | // Make error with message first say the error |
7742 | if (isError(value)) { | |
7743 | base = ' ' + formatError(value); | |
7744 | } | |
ebd8d4e8 | 7745 | |
ab78acc6 IC |
7746 | if (keys.length === 0 && (!array || value.length == 0)) { |
7747 | return braces[0] + base + braces[1]; | |
7748 | } | |
ebd8d4e8 | 7749 | |
ab78acc6 IC |
7750 | if (recurseTimes < 0) { |
7751 | if (isRegExp(value)) { | |
7752 | return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); | |
7753 | } else { | |
7754 | return ctx.stylize('[Object]', 'special'); | |
7755 | } | |
7756 | } | |
ebd8d4e8 | 7757 | |
ab78acc6 | 7758 | ctx.seen.push(value); |
ebd8d4e8 | 7759 | |
ab78acc6 IC |
7760 | var output; |
7761 | if (array) { | |
7762 | output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); | |
7763 | } else { | |
7764 | output = keys.map(function(key) { | |
7765 | return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); | |
7766 | }); | |
7767 | } | |
ebd8d4e8 | 7768 | |
ab78acc6 | 7769 | ctx.seen.pop(); |
ebd8d4e8 | 7770 | |
ab78acc6 IC |
7771 | return reduceToSingleString(output, base, braces); |
7772 | } | |
ebd8d4e8 | 7773 | |
ebd8d4e8 | 7774 | |
ab78acc6 IC |
7775 | function formatPrimitive(ctx, value) { |
7776 | if (isUndefined(value)) | |
7777 | return ctx.stylize('undefined', 'undefined'); | |
7778 | if (isString(value)) { | |
7779 | var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') | |
7780 | .replace(/'/g, "\\'") | |
7781 | .replace(/\\"/g, '"') + '\''; | |
7782 | return ctx.stylize(simple, 'string'); | |
7783 | } | |
7784 | if (isNumber(value)) | |
7785 | return ctx.stylize('' + value, 'number'); | |
7786 | if (isBoolean(value)) | |
7787 | return ctx.stylize('' + value, 'boolean'); | |
7788 | // For some reason typeof null is "object", so special case here. | |
7789 | if (isNull(value)) | |
7790 | return ctx.stylize('null', 'null'); | |
7791 | } | |
ebd8d4e8 | 7792 | |
ebd8d4e8 | 7793 | |
ab78acc6 IC |
7794 | function formatError(value) { |
7795 | return '[' + Error.prototype.toString.call(value) + ']'; | |
7796 | } | |
ebd8d4e8 | 7797 | |
ebd8d4e8 | 7798 | |
ab78acc6 IC |
7799 | function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { |
7800 | var output = []; | |
7801 | for (var i = 0, l = value.length; i < l; ++i) { | |
7802 | if (hasOwnProperty(value, String(i))) { | |
7803 | output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, | |
7804 | String(i), true)); | |
7805 | } else { | |
7806 | output.push(''); | |
7807 | } | |
7808 | } | |
7809 | keys.forEach(function(key) { | |
7810 | if (!key.match(/^\d+$/)) { | |
7811 | output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, | |
7812 | key, true)); | |
7813 | } | |
7814 | }); | |
7815 | return output; | |
7816 | } | |
ebd8d4e8 | 7817 | |
ebd8d4e8 | 7818 | |
ab78acc6 IC |
7819 | function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { |
7820 | var name, str, desc; | |
7821 | desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; | |
7822 | if (desc.get) { | |
7823 | if (desc.set) { | |
7824 | str = ctx.stylize('[Getter/Setter]', 'special'); | |
7825 | } else { | |
7826 | str = ctx.stylize('[Getter]', 'special'); | |
7827 | } | |
7828 | } else { | |
7829 | if (desc.set) { | |
7830 | str = ctx.stylize('[Setter]', 'special'); | |
7831 | } | |
7832 | } | |
7833 | if (!hasOwnProperty(visibleKeys, key)) { | |
7834 | name = '[' + key + ']'; | |
7835 | } | |
7836 | if (!str) { | |
7837 | if (ctx.seen.indexOf(desc.value) < 0) { | |
7838 | if (isNull(recurseTimes)) { | |
7839 | str = formatValue(ctx, desc.value, null); | |
7840 | } else { | |
7841 | str = formatValue(ctx, desc.value, recurseTimes - 1); | |
7842 | } | |
7843 | if (str.indexOf('\n') > -1) { | |
7844 | if (array) { | |
7845 | str = str.split('\n').map(function(line) { | |
7846 | return ' ' + line; | |
7847 | }).join('\n').substr(2); | |
7848 | } else { | |
7849 | str = '\n' + str.split('\n').map(function(line) { | |
7850 | return ' ' + line; | |
7851 | }).join('\n'); | |
7852 | } | |
7853 | } | |
7854 | } else { | |
7855 | str = ctx.stylize('[Circular]', 'special'); | |
7856 | } | |
7857 | } | |
7858 | if (isUndefined(name)) { | |
7859 | if (array && key.match(/^\d+$/)) { | |
7860 | return str; | |
7861 | } | |
7862 | name = JSON.stringify('' + key); | |
7863 | if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { | |
7864 | name = name.substr(1, name.length - 2); | |
7865 | name = ctx.stylize(name, 'name'); | |
7866 | } else { | |
7867 | name = name.replace(/'/g, "\\'") | |
7868 | .replace(/\\"/g, '"') | |
7869 | .replace(/(^"|"$)/g, "'"); | |
7870 | name = ctx.stylize(name, 'string'); | |
7871 | } | |
7872 | } | |
ebd8d4e8 | 7873 | |
ab78acc6 IC |
7874 | return name + ': ' + str; |
7875 | } | |
ebd8d4e8 | 7876 | |
ebd8d4e8 | 7877 | |
ab78acc6 IC |
7878 | function reduceToSingleString(output, base, braces) { |
7879 | var numLinesEst = 0; | |
7880 | var length = output.reduce(function(prev, cur) { | |
7881 | numLinesEst++; | |
7882 | if (cur.indexOf('\n') >= 0) numLinesEst++; | |
7883 | return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; | |
7884 | }, 0); | |
ebd8d4e8 | 7885 | |
ab78acc6 IC |
7886 | if (length > 60) { |
7887 | return braces[0] + | |
7888 | (base === '' ? '' : base + '\n ') + | |
7889 | ' ' + | |
7890 | output.join(',\n ') + | |
7891 | ' ' + | |
7892 | braces[1]; | |
7893 | } | |
ebd8d4e8 | 7894 | |
ab78acc6 IC |
7895 | return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; |
7896 | } | |
ebd8d4e8 | 7897 | |
ebd8d4e8 | 7898 | |
ab78acc6 IC |
7899 | // NOTE: These type checking functions intentionally don't use `instanceof` |
7900 | // because it is fragile and can be easily faked with `Object.create()`. | |
7901 | function isArray(ar) { | |
7902 | return Array.isArray(ar); | |
7903 | } | |
7904 | exports.isArray = isArray; | |
ebd8d4e8 | 7905 | |
ab78acc6 IC |
7906 | function isBoolean(arg) { |
7907 | return typeof arg === 'boolean'; | |
7908 | } | |
7909 | exports.isBoolean = isBoolean; | |
ebd8d4e8 | 7910 | |
ab78acc6 IC |
7911 | function isNull(arg) { |
7912 | return arg === null; | |
7913 | } | |
7914 | exports.isNull = isNull; | |
ebd8d4e8 | 7915 | |
ab78acc6 IC |
7916 | function isNullOrUndefined(arg) { |
7917 | return arg == null; | |
7918 | } | |
7919 | exports.isNullOrUndefined = isNullOrUndefined; | |
ebd8d4e8 | 7920 | |
ab78acc6 IC |
7921 | function isNumber(arg) { |
7922 | return typeof arg === 'number'; | |
7923 | } | |
7924 | exports.isNumber = isNumber; | |
ebd8d4e8 | 7925 | |
ab78acc6 IC |
7926 | function isString(arg) { |
7927 | return typeof arg === 'string'; | |
7928 | } | |
7929 | exports.isString = isString; | |
ebd8d4e8 | 7930 | |
ab78acc6 IC |
7931 | function isSymbol(arg) { |
7932 | return typeof arg === 'symbol'; | |
7933 | } | |
7934 | exports.isSymbol = isSymbol; | |
ebd8d4e8 | 7935 | |
ab78acc6 IC |
7936 | function isUndefined(arg) { |
7937 | return arg === void 0; | |
7938 | } | |
7939 | exports.isUndefined = isUndefined; | |
ebd8d4e8 | 7940 | |
ab78acc6 IC |
7941 | function isRegExp(re) { |
7942 | return isObject(re) && objectToString(re) === '[object RegExp]'; | |
7943 | } | |
7944 | exports.isRegExp = isRegExp; | |
ebd8d4e8 | 7945 | |
ab78acc6 IC |
7946 | function isObject(arg) { |
7947 | return typeof arg === 'object' && arg !== null; | |
ebd8d4e8 | 7948 | } |
ab78acc6 | 7949 | exports.isObject = isObject; |
ebd8d4e8 | 7950 | |
ab78acc6 IC |
7951 | function isDate(d) { |
7952 | return isObject(d) && objectToString(d) === '[object Date]'; | |
7953 | } | |
7954 | exports.isDate = isDate; | |
ebd8d4e8 | 7955 | |
ab78acc6 IC |
7956 | function isError(e) { |
7957 | return isObject(e) && | |
7958 | (objectToString(e) === '[object Error]' || e instanceof Error); | |
7959 | } | |
7960 | exports.isError = isError; | |
ebd8d4e8 | 7961 | |
ab78acc6 IC |
7962 | function isFunction(arg) { |
7963 | return typeof arg === 'function'; | |
7964 | } | |
7965 | exports.isFunction = isFunction; | |
ebd8d4e8 | 7966 | |
ab78acc6 IC |
7967 | function isPrimitive(arg) { |
7968 | return arg === null || | |
7969 | typeof arg === 'boolean' || | |
7970 | typeof arg === 'number' || | |
7971 | typeof arg === 'string' || | |
7972 | typeof arg === 'symbol' || // ES6 symbol | |
7973 | typeof arg === 'undefined'; | |
7974 | } | |
7975 | exports.isPrimitive = isPrimitive; | |
ebd8d4e8 | 7976 | |
ab78acc6 | 7977 | exports.isBuffer = require('./support/isBuffer'); |
ebd8d4e8 | 7978 | |
ab78acc6 IC |
7979 | function objectToString(o) { |
7980 | return Object.prototype.toString.call(o); | |
7981 | } | |
ebd8d4e8 | 7982 | |
ebd8d4e8 | 7983 | |
ab78acc6 IC |
7984 | function pad(n) { |
7985 | return n < 10 ? '0' + n.toString(10) : n.toString(10); | |
7986 | } | |
ebd8d4e8 | 7987 | |
ebd8d4e8 | 7988 | |
ab78acc6 IC |
7989 | var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', |
7990 | 'Oct', 'Nov', 'Dec']; | |
ebd8d4e8 | 7991 | |
ab78acc6 IC |
7992 | // 26 Feb 16:19:34 |
7993 | function timestamp() { | |
7994 | var d = new Date(); | |
7995 | var time = [pad(d.getHours()), | |
7996 | pad(d.getMinutes()), | |
7997 | pad(d.getSeconds())].join(':'); | |
7998 | return [d.getDate(), months[d.getMonth()], time].join(' '); | |
ebd8d4e8 IC |
7999 | } |
8000 | ||
ab78acc6 IC |
8001 | |
8002 | // log is just a thin wrapper to console.log that prepends a timestamp | |
8003 | exports.log = function() { | |
8004 | console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); | |
ebd8d4e8 IC |
8005 | }; |
8006 | ||
ab78acc6 IC |
8007 | |
8008 | /** | |
8009 | * Inherit the prototype methods from one constructor into another. | |
8010 | * | |
8011 | * The Function.prototype.inherits from lang.js rewritten as a standalone | |
8012 | * function (not on Function.prototype). NOTE: If this file is to be loaded | |
8013 | * during bootstrapping this function needs to be rewritten using some native | |
8014 | * functions as prototype setup using normal JavaScript does not work as | |
8015 | * expected during bootstrapping (see mirror.js in r114903). | |
8016 | * | |
8017 | * @param {function} ctor Constructor function which needs to inherit the | |
8018 | * prototype. | |
8019 | * @param {function} superCtor Constructor function to inherit prototype from. | |
8020 | */ | |
8021 | exports.inherits = require('inherits'); | |
8022 | ||
8023 | exports._extend = function(origin, add) { | |
8024 | // Don't do anything if add isn't an object | |
8025 | if (!add || !isObject(add)) return origin; | |
8026 | ||
8027 | var keys = Object.keys(add); | |
8028 | var i = keys.length; | |
8029 | while (i--) { | |
8030 | origin[keys[i]] = add[keys[i]]; | |
8031 | } | |
8032 | return origin; | |
8033 | }; | |
8034 | ||
8035 | function hasOwnProperty(obj, prop) { | |
8036 | return Object.prototype.hasOwnProperty.call(obj, prop); | |
8037 | } | |
8038 | ||
8039 | }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
8040 | },{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){ | |
ebd8d4e8 IC |
8041 | // Base58 encoding/decoding |
8042 | // Originally written by Mike Hearn for BitcoinJ | |
8043 | // Copyright (c) 2011 Google Inc | |
8044 | // Ported to JavaScript by Stefan Thomas | |
8045 | // Merged Buffer refactorings from base58-native by Stephen Pair | |
8046 | // Copyright (c) 2013 BitPay Inc | |
8047 | ||
ebd8d4e8 | 8048 | var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' |
ebd8d4e8 IC |
8049 | var ALPHABET_MAP = {} |
8050 | for(var i = 0; i < ALPHABET.length; i++) { | |
ab78acc6 | 8051 | ALPHABET_MAP[ALPHABET.charAt(i)] = i |
ebd8d4e8 | 8052 | } |
ab78acc6 | 8053 | var BASE = 58 |
ebd8d4e8 IC |
8054 | |
8055 | function encode(buffer) { | |
ab78acc6 IC |
8056 | if (buffer.length === 0) return '' |
8057 | ||
8058 | var i, j, digits = [0] | |
8059 | for (i = 0; i < buffer.length; i++) { | |
8060 | for (j = 0; j < digits.length; j++) digits[j] <<= 8 | |
8061 | ||
8062 | digits[0] += buffer[i] | |
ebd8d4e8 | 8063 | |
ab78acc6 IC |
8064 | var carry = 0 |
8065 | for (j = 0; j < digits.length; ++j) { | |
8066 | digits[j] += carry | |
ebd8d4e8 | 8067 | |
ab78acc6 IC |
8068 | carry = (digits[j] / BASE) | 0 |
8069 | digits[j] %= BASE | |
8070 | } | |
8071 | ||
8072 | while (carry) { | |
8073 | digits.push(carry % BASE) | |
8074 | ||
8075 | carry = (carry / BASE) | 0 | |
8076 | } | |
ebd8d4e8 IC |
8077 | } |
8078 | ||
8079 | // deal with leading zeros | |
ab78acc6 | 8080 | for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0) |
ebd8d4e8 | 8081 | |
ab78acc6 IC |
8082 | // convert digits to a string |
8083 | var stringOutput = "" | |
8084 | for (var i = digits.length - 1; i >= 0; i--) { | |
8085 | stringOutput = stringOutput + ALPHABET[digits[i]] | |
8086 | } | |
8087 | return stringOutput | |
ebd8d4e8 IC |
8088 | } |
8089 | ||
8090 | function decode(string) { | |
ab78acc6 | 8091 | if (string.length === 0) return [] |
ebd8d4e8 | 8092 | |
ab78acc6 IC |
8093 | var i, j, bytes = [0] |
8094 | for (i = 0; i < string.length; i++) { | |
8095 | var c = string[i] | |
8096 | if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character') | |
ebd8d4e8 | 8097 | |
ab78acc6 IC |
8098 | for (j = 0; j < bytes.length; j++) bytes[j] *= BASE |
8099 | bytes[0] += ALPHABET_MAP[c] | |
ebd8d4e8 | 8100 | |
ab78acc6 IC |
8101 | var carry = 0 |
8102 | for (j = 0; j < bytes.length; ++j) { | |
8103 | bytes[j] += carry | |
ebd8d4e8 | 8104 | |
ab78acc6 IC |
8105 | carry = bytes[j] >> 8 |
8106 | bytes[j] &= 0xff | |
8107 | } | |
ebd8d4e8 | 8108 | |
ab78acc6 IC |
8109 | while (carry) { |
8110 | bytes.push(carry & 0xff) | |
8111 | ||
8112 | carry >>= 8 | |
8113 | } | |
ebd8d4e8 IC |
8114 | } |
8115 | ||
ab78acc6 IC |
8116 | // deal with leading zeros |
8117 | for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0) | |
ebd8d4e8 | 8118 | |
ab78acc6 | 8119 | return bytes.reverse() |
ebd8d4e8 IC |
8120 | } |
8121 | ||
8122 | module.exports = { | |
8123 | encode: encode, | |
8124 | decode: decode | |
8125 | } | |
8126 | ||
ab78acc6 | 8127 | },{}],31:[function(require,module,exports){ |
ebd8d4e8 | 8128 | (function (Buffer){ |
ab78acc6 IC |
8129 | 'use strict' |
8130 | ||
8131 | var base58 = require('bs58') | |
8132 | var createHash = require('create-hash') | |
8133 | ||
8134 | // SHA256(SHA256(buffer)) | |
8135 | function sha256x2 (buffer) { | |
8136 | buffer = createHash('sha256').update(buffer).digest() | |
8137 | return createHash('sha256').update(buffer).digest() | |
8138 | } | |
8139 | ||
8140 | // Encode a buffer as a base58-check encoded string | |
8141 | function encode (payload) { | |
8142 | var checksum = sha256x2(payload).slice(0, 4) | |
8143 | ||
8144 | return base58.encode(Buffer.concat([ | |
8145 | payload, | |
8146 | checksum | |
8147 | ])) | |
8148 | } | |
8149 | ||
8150 | // Decode a base58-check encoded string to a buffer | |
8151 | function decode (string) { | |
8152 | var buffer = new Buffer(base58.decode(string)) | |
8153 | ||
8154 | var payload = buffer.slice(0, -4) | |
8155 | var checksum = buffer.slice(-4) | |
8156 | var newChecksum = sha256x2(payload).slice(0, 4) | |
8157 | ||
8158 | for (var i = 0; i < newChecksum.length; ++i) { | |
8159 | if (newChecksum[i] === checksum[i]) continue | |
8160 | ||
8161 | throw new Error('Invalid checksum') | |
ebd8d4e8 | 8162 | } |
ab78acc6 IC |
8163 | |
8164 | return payload | |
ebd8d4e8 IC |
8165 | } |
8166 | ||
ab78acc6 IC |
8167 | module.exports = { |
8168 | encode: encode, | |
8169 | decode: decode | |
ebd8d4e8 IC |
8170 | } |
8171 | ||
ab78acc6 IC |
8172 | }).call(this,require("buffer").Buffer) |
8173 | },{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){ | |
ebd8d4e8 | 8174 | (function (Buffer){ |
ab78acc6 IC |
8175 | 'use strict'; |
8176 | var inherits = require('inherits') | |
8177 | var md5 = require('./md5') | |
8178 | var rmd160 = require('ripemd160') | |
8179 | var sha = require('sha.js') | |
ebd8d4e8 | 8180 | |
ab78acc6 | 8181 | var Transform = require('stream').Transform |
ebd8d4e8 | 8182 | |
ab78acc6 IC |
8183 | function HashNoConstructor(hash) { |
8184 | Transform.call(this) | |
ebd8d4e8 | 8185 | |
ab78acc6 IC |
8186 | this._hash = hash |
8187 | this.buffers = [] | |
8188 | } | |
ebd8d4e8 | 8189 | |
ab78acc6 | 8190 | inherits(HashNoConstructor, Transform) |
ebd8d4e8 | 8191 | |
ab78acc6 IC |
8192 | HashNoConstructor.prototype._transform = function (data, _, next) { |
8193 | this.buffers.push(data) | |
ebd8d4e8 | 8194 | |
ab78acc6 IC |
8195 | next() |
8196 | } | |
ebd8d4e8 | 8197 | |
ab78acc6 IC |
8198 | HashNoConstructor.prototype._flush = function (next) { |
8199 | this.push(this.digest()) | |
8200 | next() | |
8201 | } | |
8202 | ||
8203 | HashNoConstructor.prototype.update = function (data, enc) { | |
8204 | if (typeof data === 'string') { | |
8205 | data = new Buffer(data, enc) | |
ebd8d4e8 IC |
8206 | } |
8207 | ||
ab78acc6 IC |
8208 | this.buffers.push(data) |
8209 | return this | |
8210 | } | |
8211 | ||
8212 | HashNoConstructor.prototype.digest = function (enc) { | |
8213 | var buf = Buffer.concat(this.buffers) | |
8214 | var r = this._hash(buf) | |
8215 | this.buffers = null | |
8216 | ||
8217 | return enc ? r.toString(enc) : r | |
8218 | } | |
8219 | ||
8220 | function Hash(hash) { | |
8221 | Transform.call(this) | |
8222 | ||
8223 | this._hash = hash | |
8224 | } | |
8225 | ||
8226 | inherits(Hash, Transform) | |
8227 | ||
8228 | Hash.prototype._transform = function (data, enc, next) { | |
8229 | if (enc) data = new Buffer(data, enc) | |
8230 | ||
8231 | this._hash.update(data) | |
8232 | ||
8233 | next() | |
ebd8d4e8 IC |
8234 | } |
8235 | ||
ab78acc6 IC |
8236 | Hash.prototype._flush = function (next) { |
8237 | this.push(this._hash.digest()) | |
8238 | this._hash = null | |
8239 | ||
8240 | next() | |
8241 | } | |
8242 | ||
8243 | Hash.prototype.update = function (data, enc) { | |
8244 | if (typeof data === 'string') { | |
8245 | data = new Buffer(data, enc) | |
8246 | } | |
8247 | ||
8248 | this._hash.update(data) | |
ebd8d4e8 IC |
8249 | return this |
8250 | } | |
8251 | ||
ab78acc6 IC |
8252 | Hash.prototype.digest = function (enc) { |
8253 | var outData = this._hash.digest() | |
8254 | ||
8255 | return enc ? outData.toString(enc) : outData | |
ebd8d4e8 IC |
8256 | } |
8257 | ||
ab78acc6 IC |
8258 | module.exports = function createHash (alg) { |
8259 | if ('md5' === alg) return new HashNoConstructor(md5) | |
8260 | if ('rmd160' === alg) return new HashNoConstructor(rmd160) | |
8261 | ||
8262 | return new Hash(sha(alg)) | |
8263 | } | |
ebd8d4e8 | 8264 | |
ab78acc6 IC |
8265 | }).call(this,require("buffer").Buffer) |
8266 | },{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){ | |
ebd8d4e8 | 8267 | (function (Buffer){ |
ab78acc6 | 8268 | 'use strict'; |
ebd8d4e8 IC |
8269 | var intSize = 4; |
8270 | var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0); | |
8271 | var chrsz = 8; | |
8272 | ||
8273 | function toArray(buf, bigEndian) { | |
8274 | if ((buf.length % intSize) !== 0) { | |
8275 | var len = buf.length + (intSize - (buf.length % intSize)); | |
8276 | buf = Buffer.concat([buf, zeroBuffer], len); | |
8277 | } | |
8278 | ||
8279 | var arr = []; | |
8280 | var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; | |
8281 | for (var i = 0; i < buf.length; i += intSize) { | |
8282 | arr.push(fn.call(buf, i)); | |
8283 | } | |
8284 | return arr; | |
8285 | } | |
8286 | ||
8287 | function toBuffer(arr, size, bigEndian) { | |
8288 | var buf = new Buffer(size); | |
8289 | var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; | |
8290 | for (var i = 0; i < arr.length; i++) { | |
8291 | fn.call(buf, arr[i], i * 4, true); | |
8292 | } | |
8293 | return buf; | |
8294 | } | |
8295 | ||
8296 | function hash(buf, fn, hashSize, bigEndian) { | |
8297 | if (!Buffer.isBuffer(buf)) buf = new Buffer(buf); | |
8298 | var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); | |
8299 | return toBuffer(arr, hashSize, bigEndian); | |
8300 | } | |
ab78acc6 IC |
8301 | exports.hash = hash; |
8302 | }).call(this,require("buffer").Buffer) | |
8303 | },{"buffer":7}],34:[function(require,module,exports){ | |
8304 | 'use strict'; | |
ebd8d4e8 IC |
8305 | /* |
8306 | * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message | |
8307 | * Digest Algorithm, as defined in RFC 1321. | |
8308 | * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. | |
8309 | * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet | |
8310 | * Distributed under the BSD License | |
8311 | * See http://pajhome.org.uk/crypt/md5 for more info. | |
8312 | */ | |
8313 | ||
ab78acc6 | 8314 | var helpers = require('./helpers'); |
ebd8d4e8 IC |
8315 | |
8316 | /* | |
8317 | * Calculate the MD5 of an array of little-endian words, and a bit length | |
8318 | */ | |
8319 | function core_md5(x, len) | |
8320 | { | |
8321 | /* append padding */ | |
8322 | x[len >> 5] |= 0x80 << ((len) % 32); | |
8323 | x[(((len + 64) >>> 9) << 4) + 14] = len; | |
8324 | ||
8325 | var a = 1732584193; | |
8326 | var b = -271733879; | |
8327 | var c = -1732584194; | |
8328 | var d = 271733878; | |
8329 | ||
8330 | for(var i = 0; i < x.length; i += 16) | |
8331 | { | |
8332 | var olda = a; | |
8333 | var oldb = b; | |
8334 | var oldc = c; | |
8335 | var oldd = d; | |
8336 | ||
8337 | a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); | |
8338 | d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); | |
8339 | c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); | |
8340 | b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); | |
8341 | a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); | |
8342 | d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); | |
8343 | c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); | |
8344 | b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); | |
8345 | a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); | |
8346 | d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); | |
8347 | c = md5_ff(c, d, a, b, x[i+10], 17, -42063); | |
8348 | b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); | |
8349 | a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); | |
8350 | d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); | |
8351 | c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); | |
8352 | b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); | |
8353 | ||
8354 | a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); | |
8355 | d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); | |
8356 | c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); | |
8357 | b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); | |
8358 | a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); | |
8359 | d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); | |
8360 | c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); | |
8361 | b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); | |
8362 | a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); | |
8363 | d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); | |
8364 | c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); | |
8365 | b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); | |
8366 | a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); | |
8367 | d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); | |
8368 | c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); | |
8369 | b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); | |
8370 | ||
8371 | a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); | |
8372 | d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); | |
8373 | c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); | |
8374 | b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); | |
8375 | a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); | |
8376 | d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); | |
8377 | c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); | |
8378 | b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); | |
8379 | a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); | |
8380 | d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); | |
8381 | c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); | |
8382 | b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); | |
8383 | a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); | |
8384 | d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); | |
8385 | c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); | |
8386 | b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); | |
8387 | ||
8388 | a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); | |
8389 | d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); | |
8390 | c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); | |
8391 | b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); | |
8392 | a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); | |
8393 | d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); | |
8394 | c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); | |
8395 | b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); | |
8396 | a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); | |
8397 | d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); | |
8398 | c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); | |
8399 | b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); | |
8400 | a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); | |
8401 | d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); | |
8402 | c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); | |
8403 | b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); | |
8404 | ||
8405 | a = safe_add(a, olda); | |
8406 | b = safe_add(b, oldb); | |
8407 | c = safe_add(c, oldc); | |
8408 | d = safe_add(d, oldd); | |
8409 | } | |
8410 | return Array(a, b, c, d); | |
8411 | ||
8412 | } | |
8413 | ||
8414 | /* | |
8415 | * These functions implement the four basic operations the algorithm uses. | |
8416 | */ | |
8417 | function md5_cmn(q, a, b, x, s, t) | |
8418 | { | |
8419 | return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); | |
8420 | } | |
8421 | function md5_ff(a, b, c, d, x, s, t) | |
8422 | { | |
8423 | return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); | |
8424 | } | |
8425 | function md5_gg(a, b, c, d, x, s, t) | |
8426 | { | |
8427 | return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); | |
8428 | } | |
8429 | function md5_hh(a, b, c, d, x, s, t) | |
8430 | { | |
8431 | return md5_cmn(b ^ c ^ d, a, b, x, s, t); | |
8432 | } | |
8433 | function md5_ii(a, b, c, d, x, s, t) | |
8434 | { | |
8435 | return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); | |
8436 | } | |
8437 | ||
8438 | /* | |
8439 | * Add integers, wrapping at 2^32. This uses 16-bit operations internally | |
8440 | * to work around bugs in some JS interpreters. | |
8441 | */ | |
8442 | function safe_add(x, y) | |
8443 | { | |
8444 | var lsw = (x & 0xFFFF) + (y & 0xFFFF); | |
8445 | var msw = (x >> 16) + (y >> 16) + (lsw >> 16); | |
8446 | return (msw << 16) | (lsw & 0xFFFF); | |
8447 | } | |
8448 | ||
8449 | /* | |
8450 | * Bitwise rotate a 32-bit number to the left. | |
8451 | */ | |
8452 | function bit_rol(num, cnt) | |
8453 | { | |
8454 | return (num << cnt) | (num >>> (32 - cnt)); | |
8455 | } | |
8456 | ||
8457 | module.exports = function md5(buf) { | |
8458 | return helpers.hash(buf, core_md5, 16); | |
8459 | }; | |
ab78acc6 IC |
8460 | },{"./helpers":33}],35:[function(require,module,exports){ |
8461 | arguments[4][12][0].apply(exports,arguments) | |
8462 | },{"dup":12}],36:[function(require,module,exports){ | |
ebd8d4e8 | 8463 | (function (Buffer){ |
ebd8d4e8 IC |
8464 | /* |
8465 | CryptoJS v3.1.2 | |
8466 | code.google.com/p/crypto-js | |
8467 | (c) 2009-2013 by Jeff Mott. All rights reserved. | |
8468 | code.google.com/p/crypto-js/wiki/License | |
8469 | */ | |
8470 | /** @preserve | |
8471 | (c) 2012 by Cédric Mesnil. All rights reserved. | |
8472 | ||
8473 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: | |
8474 | ||
8475 | - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. | |
8476 | - 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. | |
8477 | ||
8478 | 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. | |
8479 | */ | |
8480 | ||
ab78acc6 | 8481 | // constants table |
ebd8d4e8 | 8482 | var zl = [ |
ab78acc6 IC |
8483 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, |
8484 | 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, | |
8485 | 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, | |
8486 | 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, | |
8487 | 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 | |
8488 | ] | |
8489 | ||
ebd8d4e8 | 8490 | var zr = [ |
ab78acc6 IC |
8491 | 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, |
8492 | 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, | |
8493 | 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, | |
8494 | 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, | |
8495 | 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 | |
8496 | ] | |
8497 | ||
ebd8d4e8 | 8498 | var sl = [ |
ab78acc6 IC |
8499 | 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, |
8500 | 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, | |
8501 | 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, | |
8502 | 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, | |
8503 | 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 | |
8504 | ] | |
8505 | ||
ebd8d4e8 | 8506 | var sr = [ |
ab78acc6 IC |
8507 | 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, |
8508 | 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, | |
8509 | 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, | |
8510 | 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, | |
8511 | 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 | |
8512 | ] | |
ebd8d4e8 | 8513 | |
ab78acc6 IC |
8514 | var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] |
8515 | var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] | |
ebd8d4e8 | 8516 | |
ab78acc6 IC |
8517 | function bytesToWords (bytes) { |
8518 | var words = [] | |
ebd8d4e8 | 8519 | for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { |
ab78acc6 | 8520 | words[b >>> 5] |= bytes[i] << (24 - b % 32) |
ebd8d4e8 | 8521 | } |
ab78acc6 IC |
8522 | return words |
8523 | } | |
ebd8d4e8 | 8524 | |
ab78acc6 IC |
8525 | function wordsToBytes (words) { |
8526 | var bytes = [] | |
ebd8d4e8 | 8527 | for (var b = 0; b < words.length * 32; b += 8) { |
ab78acc6 | 8528 | bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) |
ebd8d4e8 | 8529 | } |
ab78acc6 IC |
8530 | return bytes |
8531 | } | |
ebd8d4e8 | 8532 | |
ab78acc6 IC |
8533 | function processBlock (H, M, offset) { |
8534 | // swap endian | |
ebd8d4e8 | 8535 | for (var i = 0; i < 16; i++) { |
ab78acc6 IC |
8536 | var offset_i = offset + i |
8537 | var M_offset_i = M[offset_i] | |
ebd8d4e8 IC |
8538 | |
8539 | // Swap | |
8540 | M[offset_i] = ( | |
ab78acc6 IC |
8541 | (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | |
8542 | (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) | |
8543 | ) | |
ebd8d4e8 IC |
8544 | } |
8545 | ||
8546 | // Working variables | |
ab78acc6 IC |
8547 | var al, bl, cl, dl, el |
8548 | var ar, br, cr, dr, er | |
8549 | ||
8550 | ar = al = H[0] | |
8551 | br = bl = H[1] | |
8552 | cr = cl = H[2] | |
8553 | dr = dl = H[3] | |
8554 | er = el = H[4] | |
8555 | ||
8556 | // computation | |
8557 | var t | |
8558 | for (i = 0; i < 80; i += 1) { | |
8559 | t = (al + M[offset + zl[i]]) | 0 | |
8560 | if (i < 16) { | |
8561 | t += f1(bl, cl, dl) + hl[0] | |
8562 | } else if (i < 32) { | |
8563 | t += f2(bl, cl, dl) + hl[1] | |
8564 | } else if (i < 48) { | |
8565 | t += f3(bl, cl, dl) + hl[2] | |
8566 | } else if (i < 64) { | |
8567 | t += f4(bl, cl, dl) + hl[3] | |
ebd8d4e8 | 8568 | } else {// if (i<80) { |
ab78acc6 IC |
8569 | t += f5(bl, cl, dl) + hl[4] |
8570 | } | |
8571 | t = t | 0 | |
8572 | t = rotl(t, sl[i]) | |
8573 | t = (t + el) | 0 | |
8574 | al = el | |
8575 | el = dl | |
8576 | dl = rotl(cl, 10) | |
8577 | cl = bl | |
8578 | bl = t | |
8579 | ||
8580 | t = (ar + M[offset + zr[i]]) | 0 | |
8581 | if (i < 16) { | |
8582 | t += f5(br, cr, dr) + hr[0] | |
8583 | } else if (i < 32) { | |
8584 | t += f4(br, cr, dr) + hr[1] | |
8585 | } else if (i < 48) { | |
8586 | t += f3(br, cr, dr) + hr[2] | |
8587 | } else if (i < 64) { | |
8588 | t += f2(br, cr, dr) + hr[3] | |
ebd8d4e8 | 8589 | } else {// if (i<80) { |
ab78acc6 | 8590 | t += f1(br, cr, dr) + hr[4] |
ebd8d4e8 | 8591 | } |
ebd8d4e8 | 8592 | |
ab78acc6 IC |
8593 | t = t | 0 |
8594 | t = rotl(t, sr[i]) | |
8595 | t = (t + er) | 0 | |
8596 | ar = er | |
8597 | er = dr | |
8598 | dr = rotl(cr, 10) | |
8599 | cr = br | |
8600 | br = t | |
8601 | } | |
8602 | ||
8603 | // intermediate hash value | |
8604 | t = (H[1] + cl + dr) | 0 | |
8605 | H[1] = (H[2] + dl + er) | 0 | |
8606 | H[2] = (H[3] + el + ar) | 0 | |
8607 | H[3] = (H[4] + al + br) | 0 | |
8608 | H[4] = (H[0] + bl + cr) | 0 | |
8609 | H[0] = t | |
ebd8d4e8 IC |
8610 | } |
8611 | ||
ab78acc6 IC |
8612 | function f1 (x, y, z) { |
8613 | return ((x) ^ (y) ^ (z)) | |
ebd8d4e8 IC |
8614 | } |
8615 | ||
ab78acc6 IC |
8616 | function f2 (x, y, z) { |
8617 | return (((x) & (y)) | ((~x) & (z))) | |
ebd8d4e8 IC |
8618 | } |
8619 | ||
ab78acc6 IC |
8620 | function f3 (x, y, z) { |
8621 | return (((x) | (~(y))) ^ (z)) | |
ebd8d4e8 IC |
8622 | } |
8623 | ||
ab78acc6 IC |
8624 | function f4 (x, y, z) { |
8625 | return (((x) & (z)) | ((y) & (~(z)))) | |
ebd8d4e8 IC |
8626 | } |
8627 | ||
ab78acc6 IC |
8628 | function f5 (x, y, z) { |
8629 | return ((x) ^ ((y) | (~(z)))) | |
ebd8d4e8 IC |
8630 | } |
8631 | ||
ab78acc6 IC |
8632 | function rotl (x, n) { |
8633 | return (x << n) | (x >>> (32 - n)) | |
8634 | } | |
8635 | ||
8636 | function ripemd160 (message) { | |
8637 | var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] | |
ebd8d4e8 | 8638 | |
ab78acc6 IC |
8639 | if (typeof message === 'string') { |
8640 | message = new Buffer(message, 'utf8') | |
8641 | } | |
ebd8d4e8 | 8642 | |
ab78acc6 | 8643 | var m = bytesToWords(message) |
ebd8d4e8 | 8644 | |
ab78acc6 IC |
8645 | var nBitsLeft = message.length * 8 |
8646 | var nBitsTotal = message.length * 8 | |
ebd8d4e8 IC |
8647 | |
8648 | // Add padding | |
ab78acc6 | 8649 | m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) |
ebd8d4e8 | 8650 | m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( |
ab78acc6 IC |
8651 | (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | |
8652 | (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) | |
8653 | ) | |
ebd8d4e8 | 8654 | |
ab78acc6 IC |
8655 | for (var i = 0; i < m.length; i += 16) { |
8656 | processBlock(H, m, i) | |
ebd8d4e8 IC |
8657 | } |
8658 | ||
ab78acc6 IC |
8659 | // swap endian |
8660 | for (i = 0; i < 5; i++) { | |
8661 | // shortcut | |
8662 | var H_i = H[i] | |
ebd8d4e8 IC |
8663 | |
8664 | // Swap | |
ab78acc6 IC |
8665 | H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | |
8666 | (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) | |
ebd8d4e8 IC |
8667 | } |
8668 | ||
ab78acc6 IC |
8669 | var digestbytes = wordsToBytes(H) |
8670 | return new Buffer(digestbytes) | |
ebd8d4e8 IC |
8671 | } |
8672 | ||
ab78acc6 IC |
8673 | module.exports = ripemd160 |
8674 | ||
8675 | }).call(this,require("buffer").Buffer) | |
8676 | },{"buffer":7}],37:[function(require,module,exports){ | |
8677 | (function (Buffer){ | |
8678 | // prototype class for hash functions | |
8679 | function Hash (blockSize, finalSize) { | |
8680 | this._block = new Buffer(blockSize) | |
8681 | this._finalSize = finalSize | |
8682 | this._blockSize = blockSize | |
8683 | this._len = 0 | |
8684 | this._s = 0 | |
8685 | } | |
ebd8d4e8 | 8686 | |
ab78acc6 IC |
8687 | Hash.prototype.update = function (data, enc) { |
8688 | if (typeof data === 'string') { | |
8689 | enc = enc || 'utf8' | |
8690 | data = new Buffer(data, enc) | |
8691 | } | |
ebd8d4e8 | 8692 | |
ab78acc6 IC |
8693 | var l = this._len += data.length |
8694 | var s = this._s || 0 | |
8695 | var f = 0 | |
8696 | var buffer = this._block | |
ebd8d4e8 | 8697 | |
ab78acc6 IC |
8698 | while (s < l) { |
8699 | var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) | |
8700 | var ch = (t - f) | |
ebd8d4e8 | 8701 | |
ab78acc6 IC |
8702 | for (var i = 0; i < ch; i++) { |
8703 | buffer[(s % this._blockSize) + i] = data[i + f] | |
8704 | } | |
8705 | ||
8706 | s += ch | |
8707 | f += ch | |
ebd8d4e8 | 8708 | |
ab78acc6 IC |
8709 | if ((s % this._blockSize) === 0) { |
8710 | this._update(buffer) | |
8711 | } | |
ebd8d4e8 | 8712 | } |
ab78acc6 IC |
8713 | this._s = s |
8714 | ||
8715 | return this | |
8716 | } | |
ebd8d4e8 | 8717 | |
ab78acc6 IC |
8718 | Hash.prototype.digest = function (enc) { |
8719 | // Suppose the length of the message M, in bits, is l | |
8720 | var l = this._len * 8 | |
8721 | ||
8722 | // Append the bit 1 to the end of the message | |
8723 | this._block[this._len % this._blockSize] = 0x80 | |
8724 | ||
8725 | // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize | |
8726 | this._block.fill(0, this._len % this._blockSize + 1) | |
8727 | ||
8728 | if (l % (this._blockSize * 8) >= this._finalSize * 8) { | |
8729 | this._update(this._block) | |
8730 | this._block.fill(0) | |
ebd8d4e8 IC |
8731 | } |
8732 | ||
ab78acc6 IC |
8733 | // to this append the block which is equal to the number l written in binary |
8734 | // TODO: handle case where l is > Math.pow(2, 29) | |
8735 | this._block.writeInt32BE(l, this._blockSize - 4) | |
8736 | ||
8737 | var hash = this._update(this._block) || this._hash() | |
ebd8d4e8 | 8738 | |
ab78acc6 IC |
8739 | return enc ? hash.toString(enc) : hash |
8740 | } | |
ebd8d4e8 | 8741 | |
ab78acc6 IC |
8742 | Hash.prototype._update = function () { |
8743 | throw new Error('_update must be implemented by subclass') | |
8744 | } | |
ebd8d4e8 | 8745 | |
ab78acc6 | 8746 | module.exports = Hash |
ebd8d4e8 | 8747 | |
ab78acc6 IC |
8748 | }).call(this,require("buffer").Buffer) |
8749 | },{"buffer":7}],38:[function(require,module,exports){ | |
8750 | var exports = module.exports = function SHA (algorithm) { | |
8751 | algorithm = algorithm.toLowerCase() | |
ebd8d4e8 | 8752 | |
ab78acc6 IC |
8753 | var Algorithm = exports[algorithm] |
8754 | if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') | |
ebd8d4e8 | 8755 | |
ab78acc6 IC |
8756 | return new Algorithm() |
8757 | } | |
8758 | ||
8759 | exports.sha = require('./sha') | |
8760 | exports.sha1 = require('./sha1') | |
8761 | exports.sha224 = require('./sha224') | |
8762 | exports.sha256 = require('./sha256') | |
8763 | exports.sha384 = require('./sha384') | |
8764 | exports.sha512 = require('./sha512') | |
8765 | ||
8766 | },{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){ | |
8767 | (function (Buffer){ | |
8768 | /* | |
8769 | * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined | |
8770 | * in FIPS PUB 180-1 | |
8771 | * This source code is derived from sha1.js of the same repository. | |
8772 | * The difference between SHA-0 and SHA-1 is just a bitwise rotate left | |
8773 | * operation was added. | |
8774 | */ | |
ebd8d4e8 | 8775 | |
ab78acc6 IC |
8776 | var inherits = require('inherits') |
8777 | var Hash = require('./hash') | |
ebd8d4e8 | 8778 | |
ab78acc6 | 8779 | var W = new Array(80) |
ebd8d4e8 | 8780 | |
ab78acc6 IC |
8781 | function Sha () { |
8782 | this.init() | |
8783 | this._w = W | |
ebd8d4e8 | 8784 | |
ab78acc6 IC |
8785 | Hash.call(this, 64, 56) |
8786 | } | |
ebd8d4e8 | 8787 | |
ab78acc6 | 8788 | inherits(Sha, Hash) |
ebd8d4e8 | 8789 | |
ab78acc6 IC |
8790 | Sha.prototype.init = function () { |
8791 | this._a = 0x67452301 | 0 | |
8792 | this._b = 0xefcdab89 | 0 | |
8793 | this._c = 0x98badcfe | 0 | |
8794 | this._d = 0x10325476 | 0 | |
8795 | this._e = 0xc3d2e1f0 | 0 | |
ebd8d4e8 | 8796 | |
ab78acc6 IC |
8797 | return this |
8798 | } | |
8799 | ||
8800 | /* | |
8801 | * Bitwise rotate a 32-bit number to the left. | |
8802 | */ | |
8803 | function rol (num, cnt) { | |
8804 | return (num << cnt) | (num >>> (32 - cnt)) | |
8805 | } | |
8806 | ||
8807 | Sha.prototype._update = function (M) { | |
8808 | var W = this._w | |
8809 | ||
8810 | var a = this._a | |
8811 | var b = this._b | |
8812 | var c = this._c | |
8813 | var d = this._d | |
8814 | var e = this._e | |
ebd8d4e8 | 8815 | |
ab78acc6 IC |
8816 | var j = 0, k |
8817 | ||
8818 | /* | |
8819 | * SHA-1 has a bitwise rotate left operation. But, SHA is not | |
8820 | * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) } | |
8821 | */ | |
8822 | function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] } | |
8823 | function loop (w, f) { | |
8824 | W[j] = w | |
8825 | ||
8826 | var t = rol(a, 5) + f + e + w + k | |
8827 | ||
8828 | e = d | |
8829 | d = c | |
8830 | c = rol(b, 30) | |
8831 | b = a | |
8832 | a = t | |
8833 | j++ | |
ebd8d4e8 IC |
8834 | } |
8835 | ||
ab78acc6 IC |
8836 | k = 1518500249 |
8837 | while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d)) | |
8838 | while (j < 20) loop(calcW(), (b & c) | ((~b) & d)) | |
8839 | k = 1859775393 | |
8840 | while (j < 40) loop(calcW(), b ^ c ^ d) | |
8841 | k = -1894007588 | |
8842 | while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d)) | |
8843 | k = -899497514 | |
8844 | while (j < 80) loop(calcW(), b ^ c ^ d) | |
8845 | ||
8846 | this._a = (a + this._a) | 0 | |
8847 | this._b = (b + this._b) | 0 | |
8848 | this._c = (c + this._c) | 0 | |
8849 | this._d = (d + this._d) | 0 | |
8850 | this._e = (e + this._e) | 0 | |
ebd8d4e8 IC |
8851 | } |
8852 | ||
ab78acc6 IC |
8853 | Sha.prototype._hash = function () { |
8854 | var H = new Buffer(20) | |
8855 | ||
8856 | H.writeInt32BE(this._a | 0, 0) | |
8857 | H.writeInt32BE(this._b | 0, 4) | |
8858 | H.writeInt32BE(this._c | 0, 8) | |
8859 | H.writeInt32BE(this._d | 0, 12) | |
8860 | H.writeInt32BE(this._e | 0, 16) | |
8861 | ||
8862 | return H | |
ebd8d4e8 IC |
8863 | } |
8864 | ||
ab78acc6 | 8865 | module.exports = Sha |
ebd8d4e8 | 8866 | |
ebd8d4e8 | 8867 | |
ab78acc6 IC |
8868 | }).call(this,require("buffer").Buffer) |
8869 | },{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){ | |
8870 | (function (Buffer){ | |
ebd8d4e8 IC |
8871 | /* |
8872 | * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined | |
8873 | * in FIPS PUB 180-1 | |
8874 | * Version 2.1a Copyright Paul Johnston 2000 - 2002. | |
8875 | * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet | |
8876 | * Distributed under the BSD License | |
8877 | * See http://pajhome.org.uk/crypt/md5 for details. | |
8878 | */ | |
ebd8d4e8 | 8879 | |
ab78acc6 IC |
8880 | var inherits = require('inherits') |
8881 | var Hash = require('./hash') | |
ebd8d4e8 | 8882 | |
ab78acc6 | 8883 | var W = new Array(80) |
ebd8d4e8 | 8884 | |
ab78acc6 IC |
8885 | function Sha1 () { |
8886 | this.init() | |
8887 | this._w = W | |
ebd8d4e8 | 8888 | |
ab78acc6 IC |
8889 | Hash.call(this, 64, 56) |
8890 | } | |
ebd8d4e8 | 8891 | |
ab78acc6 | 8892 | inherits(Sha1, Hash) |
ebd8d4e8 | 8893 | |
ab78acc6 IC |
8894 | Sha1.prototype.init = function () { |
8895 | this._a = 0x67452301 | 0 | |
8896 | this._b = 0xefcdab89 | 0 | |
8897 | this._c = 0x98badcfe | 0 | |
8898 | this._d = 0x10325476 | 0 | |
8899 | this._e = 0xc3d2e1f0 | 0 | |
ebd8d4e8 | 8900 | |
ab78acc6 IC |
8901 | return this |
8902 | } | |
ebd8d4e8 | 8903 | |
ab78acc6 IC |
8904 | /* |
8905 | * Bitwise rotate a 32-bit number to the left. | |
8906 | */ | |
8907 | function rol (num, cnt) { | |
8908 | return (num << cnt) | (num >>> (32 - cnt)) | |
8909 | } | |
ebd8d4e8 | 8910 | |
ab78acc6 IC |
8911 | Sha1.prototype._update = function (M) { |
8912 | var W = this._w | |
ebd8d4e8 | 8913 | |
ab78acc6 IC |
8914 | var a = this._a |
8915 | var b = this._b | |
8916 | var c = this._c | |
8917 | var d = this._d | |
8918 | var e = this._e | |
ebd8d4e8 | 8919 | |
ab78acc6 | 8920 | var j = 0, k |
ebd8d4e8 | 8921 | |
ab78acc6 IC |
8922 | function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) } |
8923 | function loop (w, f) { | |
8924 | W[j] = w | |
ebd8d4e8 | 8925 | |
ab78acc6 | 8926 | var t = rol(a, 5) + f + e + w + k |
ebd8d4e8 | 8927 | |
ab78acc6 IC |
8928 | e = d |
8929 | d = c | |
8930 | c = rol(b, 30) | |
8931 | b = a | |
8932 | a = t | |
8933 | j++ | |
ebd8d4e8 IC |
8934 | } |
8935 | ||
ab78acc6 IC |
8936 | k = 1518500249 |
8937 | while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d)) | |
8938 | while (j < 20) loop(calcW(), (b & c) | ((~b) & d)) | |
8939 | k = 1859775393 | |
8940 | while (j < 40) loop(calcW(), b ^ c ^ d) | |
8941 | k = -1894007588 | |
8942 | while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d)) | |
8943 | k = -899497514 | |
8944 | while (j < 80) loop(calcW(), b ^ c ^ d) | |
ebd8d4e8 | 8945 | |
ab78acc6 IC |
8946 | this._a = (a + this._a) | 0 |
8947 | this._b = (b + this._b) | 0 | |
8948 | this._c = (c + this._c) | 0 | |
8949 | this._d = (d + this._d) | 0 | |
8950 | this._e = (e + this._e) | 0 | |
8951 | } | |
ebd8d4e8 | 8952 | |
ab78acc6 IC |
8953 | Sha1.prototype._hash = function () { |
8954 | var H = new Buffer(20) | |
ebd8d4e8 | 8955 | |
ab78acc6 IC |
8956 | H.writeInt32BE(this._a | 0, 0) |
8957 | H.writeInt32BE(this._b | 0, 4) | |
8958 | H.writeInt32BE(this._c | 0, 8) | |
8959 | H.writeInt32BE(this._d | 0, 12) | |
8960 | H.writeInt32BE(this._e | 0, 16) | |
ebd8d4e8 | 8961 | |
ab78acc6 IC |
8962 | return H |
8963 | } | |
ebd8d4e8 | 8964 | |
ab78acc6 | 8965 | module.exports = Sha1 |
ebd8d4e8 | 8966 | |
ab78acc6 IC |
8967 | }).call(this,require("buffer").Buffer) |
8968 | },{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){ | |
8969 | (function (Buffer){ | |
8970 | /** | |
8971 | * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined | |
8972 | * in FIPS 180-2 | |
8973 | * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. | |
8974 | * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet | |
8975 | * | |
8976 | */ | |
ebd8d4e8 | 8977 | |
ab78acc6 IC |
8978 | var inherits = require('inherits') |
8979 | var Sha256 = require('./sha256') | |
8980 | var Hash = require('./hash') | |
ebd8d4e8 | 8981 | |
ab78acc6 | 8982 | var W = new Array(64) |
ebd8d4e8 | 8983 | |
ab78acc6 IC |
8984 | function Sha224 () { |
8985 | this.init() | |
ebd8d4e8 | 8986 | |
ab78acc6 | 8987 | this._w = W // new Array(64) |
ebd8d4e8 | 8988 | |
ab78acc6 IC |
8989 | Hash.call(this, 64, 56) |
8990 | } | |
ebd8d4e8 | 8991 | |
ab78acc6 | 8992 | inherits(Sha224, Sha256) |
ebd8d4e8 | 8993 | |
ab78acc6 IC |
8994 | Sha224.prototype.init = function () { |
8995 | this._a = 0xc1059ed8 | 0 | |
8996 | this._b = 0x367cd507 | 0 | |
8997 | this._c = 0x3070dd17 | 0 | |
8998 | this._d = 0xf70e5939 | 0 | |
8999 | this._e = 0xffc00b31 | 0 | |
9000 | this._f = 0x68581511 | 0 | |
9001 | this._g = 0x64f98fa7 | 0 | |
9002 | this._h = 0xbefa4fa4 | 0 | |
9003 | ||
9004 | return this | |
9005 | } | |
9006 | ||
9007 | Sha224.prototype._hash = function () { | |
9008 | var H = new Buffer(28) | |
9009 | ||
9010 | H.writeInt32BE(this._a, 0) | |
9011 | H.writeInt32BE(this._b, 4) | |
9012 | H.writeInt32BE(this._c, 8) | |
9013 | H.writeInt32BE(this._d, 12) | |
9014 | H.writeInt32BE(this._e, 16) | |
9015 | H.writeInt32BE(this._f, 20) | |
9016 | H.writeInt32BE(this._g, 24) | |
9017 | ||
9018 | return H | |
ebd8d4e8 IC |
9019 | } |
9020 | ||
ab78acc6 | 9021 | module.exports = Sha224 |
ebd8d4e8 | 9022 | |
ab78acc6 IC |
9023 | }).call(this,require("buffer").Buffer) |
9024 | },{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){ | |
9025 | (function (Buffer){ | |
ebd8d4e8 IC |
9026 | /** |
9027 | * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined | |
9028 | * in FIPS 180-2 | |
9029 | * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. | |
9030 | * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet | |
9031 | * | |
9032 | */ | |
9033 | ||
ab78acc6 IC |
9034 | var inherits = require('inherits') |
9035 | var Hash = require('./hash') | |
9036 | ||
9037 | var K = [ | |
9038 | 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, | |
9039 | 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, | |
9040 | 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, | |
9041 | 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, | |
9042 | 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, | |
9043 | 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, | |
9044 | 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, | |
9045 | 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, | |
9046 | 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, | |
9047 | 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, | |
9048 | 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, | |
9049 | 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, | |
9050 | 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, | |
9051 | 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, | |
9052 | 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, | |
9053 | 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 | |
9054 | ] | |
9055 | ||
9056 | var W = new Array(64) | |
9057 | ||
9058 | function Sha256 () { | |
9059 | this.init() | |
9060 | ||
9061 | this._w = W // new Array(64) | |
9062 | ||
9063 | Hash.call(this, 64, 56) | |
9064 | } | |
9065 | ||
9066 | inherits(Sha256, Hash) | |
9067 | ||
9068 | Sha256.prototype.init = function () { | |
9069 | this._a = 0x6a09e667 | 0 | |
9070 | this._b = 0xbb67ae85 | 0 | |
9071 | this._c = 0x3c6ef372 | 0 | |
9072 | this._d = 0xa54ff53a | 0 | |
9073 | this._e = 0x510e527f | 0 | |
9074 | this._f = 0x9b05688c | 0 | |
9075 | this._g = 0x1f83d9ab | 0 | |
9076 | this._h = 0x5be0cd19 | 0 | |
ebd8d4e8 | 9077 | |
ab78acc6 IC |
9078 | return this |
9079 | } | |
ebd8d4e8 | 9080 | |
ab78acc6 IC |
9081 | function S (X, n) { |
9082 | return (X >>> n) | (X << (32 - n)) | |
9083 | } | |
ebd8d4e8 | 9084 | |
ab78acc6 IC |
9085 | function R (X, n) { |
9086 | return (X >>> n) | |
9087 | } | |
ebd8d4e8 | 9088 | |
ab78acc6 IC |
9089 | function Ch (x, y, z) { |
9090 | return ((x & y) ^ ((~x) & z)) | |
9091 | } | |
ebd8d4e8 | 9092 | |
ab78acc6 IC |
9093 | function Maj (x, y, z) { |
9094 | return ((x & y) ^ (x & z) ^ (y & z)) | |
9095 | } | |
ebd8d4e8 | 9096 | |
ab78acc6 IC |
9097 | function Sigma0256 (x) { |
9098 | return (S(x, 2) ^ S(x, 13) ^ S(x, 22)) | |
9099 | } | |
ebd8d4e8 | 9100 | |
ab78acc6 IC |
9101 | function Sigma1256 (x) { |
9102 | return (S(x, 6) ^ S(x, 11) ^ S(x, 25)) | |
9103 | } | |
ebd8d4e8 | 9104 | |
ab78acc6 IC |
9105 | function Gamma0256 (x) { |
9106 | return (S(x, 7) ^ S(x, 18) ^ R(x, 3)) | |
9107 | } | |
ebd8d4e8 | 9108 | |
ab78acc6 IC |
9109 | function Gamma1256 (x) { |
9110 | return (S(x, 17) ^ S(x, 19) ^ R(x, 10)) | |
9111 | } | |
ebd8d4e8 | 9112 | |
ab78acc6 IC |
9113 | Sha256.prototype._update = function (M) { |
9114 | var W = this._w | |
ebd8d4e8 | 9115 | |
ab78acc6 IC |
9116 | var a = this._a | 0 |
9117 | var b = this._b | 0 | |
9118 | var c = this._c | 0 | |
9119 | var d = this._d | 0 | |
9120 | var e = this._e | 0 | |
9121 | var f = this._f | 0 | |
9122 | var g = this._g | 0 | |
9123 | var h = this._h | 0 | |
ebd8d4e8 | 9124 | |
ab78acc6 | 9125 | var j = 0 |
ebd8d4e8 | 9126 | |
ab78acc6 IC |
9127 | function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] } |
9128 | function loop (w) { | |
9129 | W[j] = w | |
ebd8d4e8 | 9130 | |
ab78acc6 IC |
9131 | var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w |
9132 | var T2 = Sigma0256(a) + Maj(a, b, c) | |
ebd8d4e8 | 9133 | |
ab78acc6 IC |
9134 | h = g |
9135 | g = f | |
9136 | f = e | |
9137 | e = d + T1 | |
9138 | d = c | |
9139 | c = b | |
9140 | b = a | |
9141 | a = T1 + T2 | |
ebd8d4e8 | 9142 | |
ab78acc6 | 9143 | j++ |
ebd8d4e8 IC |
9144 | } |
9145 | ||
ab78acc6 IC |
9146 | while (j < 16) loop(M.readInt32BE(j * 4)) |
9147 | while (j < 64) loop(calcW()) | |
ebd8d4e8 | 9148 | |
ab78acc6 IC |
9149 | this._a = (a + this._a) | 0 |
9150 | this._b = (b + this._b) | 0 | |
9151 | this._c = (c + this._c) | 0 | |
9152 | this._d = (d + this._d) | 0 | |
9153 | this._e = (e + this._e) | 0 | |
9154 | this._f = (f + this._f) | 0 | |
9155 | this._g = (g + this._g) | 0 | |
9156 | this._h = (h + this._h) | 0 | |
9157 | } | |
ebd8d4e8 | 9158 | |
ab78acc6 IC |
9159 | Sha256.prototype._hash = function () { |
9160 | var H = new Buffer(32) | |
ebd8d4e8 | 9161 | |
ab78acc6 IC |
9162 | H.writeInt32BE(this._a, 0) |
9163 | H.writeInt32BE(this._b, 4) | |
9164 | H.writeInt32BE(this._c, 8) | |
9165 | H.writeInt32BE(this._d, 12) | |
9166 | H.writeInt32BE(this._e, 16) | |
9167 | H.writeInt32BE(this._f, 20) | |
9168 | H.writeInt32BE(this._g, 24) | |
9169 | H.writeInt32BE(this._h, 28) | |
ebd8d4e8 | 9170 | |
ab78acc6 IC |
9171 | return H |
9172 | } | |
ebd8d4e8 | 9173 | |
ab78acc6 | 9174 | module.exports = Sha256 |
ebd8d4e8 | 9175 | |
ab78acc6 IC |
9176 | }).call(this,require("buffer").Buffer) |
9177 | },{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){ | |
9178 | (function (Buffer){ | |
9179 | var inherits = require('inherits') | |
9180 | var SHA512 = require('./sha512') | |
9181 | var Hash = require('./hash') | |
ebd8d4e8 | 9182 | |
ab78acc6 | 9183 | var W = new Array(160) |
ebd8d4e8 | 9184 | |
ab78acc6 IC |
9185 | function Sha384 () { |
9186 | this.init() | |
9187 | this._w = W | |
ebd8d4e8 | 9188 | |
ab78acc6 IC |
9189 | Hash.call(this, 128, 112) |
9190 | } | |
ebd8d4e8 | 9191 | |
ab78acc6 | 9192 | inherits(Sha384, SHA512) |
ebd8d4e8 | 9193 | |
ab78acc6 IC |
9194 | Sha384.prototype.init = function () { |
9195 | this._a = 0xcbbb9d5d | 0 | |
9196 | this._b = 0x629a292a | 0 | |
9197 | this._c = 0x9159015a | 0 | |
9198 | this._d = 0x152fecd8 | 0 | |
9199 | this._e = 0x67332667 | 0 | |
9200 | this._f = 0x8eb44a87 | 0 | |
9201 | this._g = 0xdb0c2e0d | 0 | |
9202 | this._h = 0x47b5481d | 0 | |
ebd8d4e8 | 9203 | |
ab78acc6 IC |
9204 | this._al = 0xc1059ed8 | 0 |
9205 | this._bl = 0x367cd507 | 0 | |
9206 | this._cl = 0x3070dd17 | 0 | |
9207 | this._dl = 0xf70e5939 | 0 | |
9208 | this._el = 0xffc00b31 | 0 | |
9209 | this._fl = 0x68581511 | 0 | |
9210 | this._gl = 0x64f98fa7 | 0 | |
9211 | this._hl = 0xbefa4fa4 | 0 | |
ebd8d4e8 | 9212 | |
ab78acc6 | 9213 | return this |
ebd8d4e8 IC |
9214 | } |
9215 | ||
ab78acc6 IC |
9216 | Sha384.prototype._hash = function () { |
9217 | var H = new Buffer(48) | |
ebd8d4e8 | 9218 | |
ab78acc6 IC |
9219 | function writeInt64BE (h, l, offset) { |
9220 | H.writeInt32BE(h, offset) | |
9221 | H.writeInt32BE(l, offset + 4) | |
ebd8d4e8 | 9222 | } |
ebd8d4e8 | 9223 | |
ab78acc6 IC |
9224 | writeInt64BE(this._a, this._al, 0) |
9225 | writeInt64BE(this._b, this._bl, 8) | |
9226 | writeInt64BE(this._c, this._cl, 16) | |
9227 | writeInt64BE(this._d, this._dl, 24) | |
9228 | writeInt64BE(this._e, this._el, 32) | |
9229 | writeInt64BE(this._f, this._fl, 40) | |
9230 | ||
9231 | return H | |
ebd8d4e8 IC |
9232 | } |
9233 | ||
ab78acc6 | 9234 | module.exports = Sha384 |
ebd8d4e8 | 9235 | |
ab78acc6 IC |
9236 | }).call(this,require("buffer").Buffer) |
9237 | },{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){ | |
ebd8d4e8 | 9238 | (function (Buffer){ |
ab78acc6 IC |
9239 | var inherits = require('inherits') |
9240 | var Hash = require('./hash') | |
9241 | ||
9242 | var K = [ | |
9243 | 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, | |
9244 | 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, | |
9245 | 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, | |
9246 | 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, | |
9247 | 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, | |
9248 | 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, | |
9249 | 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, | |
9250 | 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, | |
9251 | 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, | |
9252 | 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, | |
9253 | 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, | |
9254 | 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, | |
9255 | 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, | |
9256 | 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, | |
9257 | 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, | |
9258 | 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, | |
9259 | 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, | |
9260 | 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, | |
9261 | 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, | |
9262 | 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, | |
9263 | 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, | |
9264 | 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, | |
9265 | 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, | |
9266 | 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, | |
9267 | 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, | |
9268 | 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, | |
9269 | 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, | |
9270 | 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, | |
9271 | 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, | |
9272 | 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, | |
9273 | 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, | |
9274 | 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, | |
9275 | 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, | |
9276 | 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, | |
9277 | 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, | |
9278 | 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, | |
9279 | 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, | |
9280 | 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, | |
9281 | 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, | |
9282 | 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 | |
9283 | ] | |
9284 | ||
9285 | var W = new Array(160) | |
9286 | ||
9287 | function Sha512 () { | |
9288 | this.init() | |
9289 | this._w = W | |
9290 | ||
9291 | Hash.call(this, 128, 112) | |
9292 | } | |
9293 | ||
9294 | inherits(Sha512, Hash) | |
9295 | ||
9296 | Sha512.prototype.init = function () { | |
9297 | this._a = 0x6a09e667 | 0 | |
9298 | this._b = 0xbb67ae85 | 0 | |
9299 | this._c = 0x3c6ef372 | 0 | |
9300 | this._d = 0xa54ff53a | 0 | |
9301 | this._e = 0x510e527f | 0 | |
9302 | this._f = 0x9b05688c | 0 | |
9303 | this._g = 0x1f83d9ab | 0 | |
9304 | this._h = 0x5be0cd19 | 0 | |
9305 | ||
9306 | this._al = 0xf3bcc908 | 0 | |
9307 | this._bl = 0x84caa73b | 0 | |
9308 | this._cl = 0xfe94f82b | 0 | |
9309 | this._dl = 0x5f1d36f1 | 0 | |
9310 | this._el = 0xade682d1 | 0 | |
9311 | this._fl = 0x2b3e6c1f | 0 | |
9312 | this._gl = 0xfb41bd6b | 0 | |
9313 | this._hl = 0x137e2179 | 0 | |
ebd8d4e8 | 9314 | |
ab78acc6 | 9315 | return this |
ebd8d4e8 IC |
9316 | } |
9317 | ||
ab78acc6 IC |
9318 | function S (X, Xl, n) { |
9319 | return (X >>> n) | (Xl << (32 - n)) | |
9320 | } | |
9321 | ||
9322 | function Ch (x, y, z) { | |
9323 | return ((x & y) ^ ((~x) & z)) | |
9324 | } | |
9325 | ||
9326 | function Maj (x, y, z) { | |
9327 | return ((x & y) ^ (x & z) ^ (y & z)) | |
9328 | } | |
9329 | ||
9330 | Sha512.prototype._update = function (M) { | |
9331 | var W = this._w | |
9332 | ||
9333 | var a = this._a | 0 | |
9334 | var b = this._b | 0 | |
9335 | var c = this._c | 0 | |
9336 | var d = this._d | 0 | |
9337 | var e = this._e | 0 | |
9338 | var f = this._f | 0 | |
9339 | var g = this._g | 0 | |
9340 | var h = this._h | 0 | |
9341 | ||
9342 | var al = this._al | 0 | |
9343 | var bl = this._bl | 0 | |
9344 | var cl = this._cl | 0 | |
9345 | var dl = this._dl | 0 | |
9346 | var el = this._el | 0 | |
9347 | var fl = this._fl | 0 | |
9348 | var gl = this._gl | 0 | |
9349 | var hl = this._hl | 0 | |
9350 | ||
9351 | var i = 0, j = 0 | |
9352 | var Wi, Wil | |
9353 | function calcW () { | |
9354 | var x = W[j - 15 * 2] | |
9355 | var xl = W[j - 15 * 2 + 1] | |
9356 | var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7) | |
9357 | var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7) | |
9358 | ||
9359 | x = W[j - 2 * 2] | |
9360 | xl = W[j - 2 * 2 + 1] | |
9361 | var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6) | |
9362 | var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6) | |
9363 | ||
9364 | // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] | |
9365 | var Wi7 = W[j - 7 * 2] | |
9366 | var Wi7l = W[j - 7 * 2 + 1] | |
9367 | ||
9368 | var Wi16 = W[j - 16 * 2] | |
9369 | var Wi16l = W[j - 16 * 2 + 1] | |
ebd8d4e8 | 9370 | |
ab78acc6 IC |
9371 | Wil = gamma0l + Wi7l |
9372 | Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0) | |
9373 | Wil = Wil + gamma1l | |
9374 | Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0) | |
9375 | Wil = Wil + Wi16l | |
9376 | Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0) | |
9377 | } | |
9378 | ||
9379 | function loop () { | |
9380 | W[j] = Wi | |
9381 | W[j + 1] = Wil | |
ebd8d4e8 | 9382 | |
ab78acc6 IC |
9383 | var maj = Maj(a, b, c) |
9384 | var majl = Maj(al, bl, cl) | |
ebd8d4e8 | 9385 | |
ab78acc6 IC |
9386 | var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7) |
9387 | var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7) | |
9388 | var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9) | |
9389 | var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9) | |
ebd8d4e8 | 9390 | |
ab78acc6 IC |
9391 | // t1 = h + sigma1 + ch + K[i] + W[i] |
9392 | var Ki = K[j] | |
9393 | var Kil = K[j + 1] | |
ebd8d4e8 | 9394 | |
ab78acc6 IC |
9395 | var ch = Ch(e, f, g) |
9396 | var chl = Ch(el, fl, gl) | |
ebd8d4e8 | 9397 | |
ab78acc6 IC |
9398 | var t1l = hl + sigma1l |
9399 | var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0) | |
9400 | t1l = t1l + chl | |
9401 | t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0) | |
9402 | t1l = t1l + Kil | |
9403 | t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0) | |
9404 | t1l = t1l + Wil | |
9405 | t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0) | |
ebd8d4e8 | 9406 | |
ab78acc6 IC |
9407 | // t2 = sigma0 + maj |
9408 | var t2l = sigma0l + majl | |
9409 | var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0) | |
ebd8d4e8 | 9410 | |
ab78acc6 IC |
9411 | h = g |
9412 | hl = gl | |
9413 | g = f | |
9414 | gl = fl | |
9415 | f = e | |
9416 | fl = el | |
9417 | el = (dl + t1l) | 0 | |
9418 | e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0 | |
9419 | d = c | |
9420 | dl = cl | |
9421 | c = b | |
9422 | cl = bl | |
9423 | b = a | |
9424 | bl = al | |
9425 | al = (t1l + t2l) | 0 | |
9426 | a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0 | |
9427 | ||
9428 | i++ | |
9429 | j += 2 | |
9430 | } | |
9431 | ||
9432 | while (i < 16) { | |
9433 | Wi = M.readInt32BE(j * 4) | |
9434 | Wil = M.readInt32BE(j * 4 + 4) | |
9435 | ||
9436 | loop() | |
9437 | } | |
9438 | ||
9439 | while (i < 80) { | |
9440 | calcW() | |
9441 | loop() | |
9442 | } | |
9443 | ||
9444 | this._al = (this._al + al) | 0 | |
9445 | this._bl = (this._bl + bl) | 0 | |
9446 | this._cl = (this._cl + cl) | 0 | |
9447 | this._dl = (this._dl + dl) | 0 | |
9448 | this._el = (this._el + el) | 0 | |
9449 | this._fl = (this._fl + fl) | 0 | |
9450 | this._gl = (this._gl + gl) | 0 | |
9451 | this._hl = (this._hl + hl) | 0 | |
9452 | ||
9453 | this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0 | |
9454 | this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0 | |
9455 | this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0 | |
9456 | this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0 | |
9457 | this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0 | |
9458 | this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0 | |
9459 | this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0 | |
9460 | this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0 | |
9461 | } | |
9462 | ||
9463 | Sha512.prototype._hash = function () { | |
9464 | var H = new Buffer(64) | |
9465 | ||
9466 | function writeInt64BE (h, l, offset) { | |
9467 | H.writeInt32BE(h, offset) | |
9468 | H.writeInt32BE(l, offset + 4) | |
9469 | } | |
9470 | ||
9471 | writeInt64BE(this._a, this._al, 0) | |
9472 | writeInt64BE(this._b, this._bl, 8) | |
9473 | writeInt64BE(this._c, this._cl, 16) | |
9474 | writeInt64BE(this._d, this._dl, 24) | |
9475 | writeInt64BE(this._e, this._el, 32) | |
9476 | writeInt64BE(this._f, this._fl, 40) | |
9477 | writeInt64BE(this._g, this._gl, 48) | |
9478 | writeInt64BE(this._h, this._hl, 56) | |
9479 | ||
9480 | return H | |
9481 | } | |
9482 | ||
9483 | module.exports = Sha512 | |
9484 | ||
9485 | }).call(this,require("buffer").Buffer) | |
9486 | },{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){ | |
9487 | (function (Buffer){ | |
9488 | 'use strict'; | |
9489 | var createHash = require('create-hash/browser'); | |
9490 | var inherits = require('inherits') | |
ebd8d4e8 | 9491 | |
ab78acc6 | 9492 | var Transform = require('stream').Transform |
ebd8d4e8 | 9493 | |
ab78acc6 IC |
9494 | var ZEROS = new Buffer(128) |
9495 | ZEROS.fill(0) | |
ebd8d4e8 | 9496 | |
ab78acc6 IC |
9497 | function Hmac(alg, key) { |
9498 | Transform.call(this) | |
ebd8d4e8 | 9499 | |
ab78acc6 IC |
9500 | if (typeof key === 'string') { |
9501 | key = new Buffer(key) | |
9502 | } | |
ebd8d4e8 | 9503 | |
ab78acc6 | 9504 | var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 |
ebd8d4e8 | 9505 | |
ab78acc6 IC |
9506 | this._alg = alg |
9507 | this._key = key | |
ebd8d4e8 | 9508 | |
ab78acc6 IC |
9509 | if (key.length > blocksize) { |
9510 | key = createHash(alg).update(key).digest() | |
ebd8d4e8 | 9511 | |
ab78acc6 IC |
9512 | } else if (key.length < blocksize) { |
9513 | key = Buffer.concat([key, ZEROS], blocksize) | |
9514 | } | |
ebd8d4e8 | 9515 | |
ab78acc6 IC |
9516 | var ipad = this._ipad = new Buffer(blocksize) |
9517 | var opad = this._opad = new Buffer(blocksize) | |
ebd8d4e8 | 9518 | |
ab78acc6 IC |
9519 | for (var i = 0; i < blocksize; i++) { |
9520 | ipad[i] = key[i] ^ 0x36 | |
9521 | opad[i] = key[i] ^ 0x5C | |
9522 | } | |
ebd8d4e8 | 9523 | |
ab78acc6 IC |
9524 | this._hash = createHash(alg).update(ipad) |
9525 | } | |
ebd8d4e8 | 9526 | |
ab78acc6 | 9527 | inherits(Hmac, Transform) |
ebd8d4e8 | 9528 | |
ab78acc6 IC |
9529 | Hmac.prototype.update = function (data, enc) { |
9530 | this._hash.update(data, enc) | |
ebd8d4e8 | 9531 | |
ab78acc6 IC |
9532 | return this |
9533 | } | |
ebd8d4e8 | 9534 | |
ab78acc6 IC |
9535 | Hmac.prototype._transform = function (data, _, next) { |
9536 | this._hash.update(data) | |
ebd8d4e8 | 9537 | |
ab78acc6 IC |
9538 | next() |
9539 | } | |
ebd8d4e8 | 9540 | |
ab78acc6 IC |
9541 | Hmac.prototype._flush = function (next) { |
9542 | this.push(this.digest()) | |
ebd8d4e8 | 9543 | |
ab78acc6 IC |
9544 | next() |
9545 | } | |
ebd8d4e8 | 9546 | |
ab78acc6 IC |
9547 | Hmac.prototype.digest = function (enc) { |
9548 | var h = this._hash.digest() | |
ebd8d4e8 | 9549 | |
ab78acc6 IC |
9550 | return createHash(this._alg).update(this._opad).update(h).digest(enc) |
9551 | } | |
ebd8d4e8 | 9552 | |
ab78acc6 IC |
9553 | module.exports = function createHmac(alg, key) { |
9554 | return new Hmac(alg, key) | |
9555 | } | |
ebd8d4e8 | 9556 | |
ab78acc6 IC |
9557 | }).call(this,require("buffer").Buffer) |
9558 | },{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){ | |
9559 | arguments[4][12][0].apply(exports,arguments) | |
9560 | },{"dup":12}],47:[function(require,module,exports){ | |
9561 | var assert = require('assert') | |
9562 | var BigInteger = require('bigi') | |
ebd8d4e8 | 9563 | |
ab78acc6 | 9564 | var Point = require('./point') |
ebd8d4e8 IC |
9565 | |
9566 | function Curve(p, a, b, Gx, Gy, n, h) { | |
9567 | this.p = p | |
9568 | this.a = a | |
9569 | this.b = b | |
9570 | this.G = Point.fromAffine(this, Gx, Gy) | |
9571 | this.n = n | |
9572 | this.h = h | |
9573 | ||
9574 | this.infinity = new Point(this, null, null, BigInteger.ZERO) | |
9575 | ||
9576 | // result caching | |
9577 | this.pOverFour = p.add(BigInteger.ONE).shiftRight(2) | |
9578 | } | |
9579 | ||
9580 | Curve.prototype.pointFromX = function(isOdd, x) { | |
9581 | var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p) | |
ab78acc6 | 9582 | var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves |
ebd8d4e8 IC |
9583 | |
9584 | var y = beta | |
9585 | if (beta.isEven() ^ !isOdd) { | |
9586 | y = this.p.subtract(y) // -y % p | |
9587 | } | |
9588 | ||
9589 | return Point.fromAffine(this, x, y) | |
9590 | } | |
9591 | ||
9592 | Curve.prototype.isInfinity = function(Q) { | |
9593 | if (Q === this.infinity) return true | |
9594 | ||
9595 | return Q.z.signum() === 0 && Q.y.signum() !== 0 | |
9596 | } | |
9597 | ||
9598 | Curve.prototype.isOnCurve = function(Q) { | |
9599 | if (this.isInfinity(Q)) return true | |
9600 | ||
9601 | var x = Q.affineX | |
9602 | var y = Q.affineY | |
9603 | var a = this.a | |
9604 | var b = this.b | |
9605 | var p = this.p | |
9606 | ||
9607 | // Check that xQ and yQ are integers in the interval [0, p - 1] | |
9608 | if (x.signum() < 0 || x.compareTo(p) >= 0) return false | |
9609 | if (y.signum() < 0 || y.compareTo(p) >= 0) return false | |
9610 | ||
9611 | // and check that y^2 = x^3 + ax + b (mod p) | |
9612 | var lhs = y.square().mod(p) | |
9613 | var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p) | |
9614 | return lhs.equals(rhs) | |
9615 | } | |
9616 | ||
9617 | /** | |
9618 | * Validate an elliptic curve point. | |
9619 | * | |
9620 | * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive | |
9621 | */ | |
9622 | Curve.prototype.validate = function(Q) { | |
9623 | // Check Q != O | |
9624 | assert(!this.isInfinity(Q), 'Point is at infinity') | |
9625 | assert(this.isOnCurve(Q), 'Point is not on the curve') | |
9626 | ||
9627 | // Check nQ = O (where Q is a scalar multiple of G) | |
9628 | var nQ = Q.multiply(this.n) | |
9629 | assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G') | |
9630 | ||
9631 | return true | |
9632 | } | |
9633 | ||
9634 | module.exports = Curve | |
9635 | ||
ab78acc6 | 9636 | },{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){ |
ebd8d4e8 IC |
9637 | module.exports={ |
9638 | "secp128r1": { | |
9639 | "p": "fffffffdffffffffffffffffffffffff", | |
9640 | "a": "fffffffdfffffffffffffffffffffffc", | |
9641 | "b": "e87579c11079f43dd824993c2cee5ed3", | |
9642 | "n": "fffffffe0000000075a30d1b9038a115", | |
9643 | "h": "01", | |
9644 | "Gx": "161ff7528b899b2d0c28607ca52c5b86", | |
9645 | "Gy": "cf5ac8395bafeb13c02da292dded7a83" | |
9646 | }, | |
9647 | "secp160k1": { | |
9648 | "p": "fffffffffffffffffffffffffffffffeffffac73", | |
9649 | "a": "00", | |
9650 | "b": "07", | |
9651 | "n": "0100000000000000000001b8fa16dfab9aca16b6b3", | |
9652 | "h": "01", | |
9653 | "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb", | |
9654 | "Gy": "938cf935318fdced6bc28286531733c3f03c4fee" | |
9655 | }, | |
9656 | "secp160r1": { | |
9657 | "p": "ffffffffffffffffffffffffffffffff7fffffff", | |
9658 | "a": "ffffffffffffffffffffffffffffffff7ffffffc", | |
9659 | "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45", | |
9660 | "n": "0100000000000000000001f4c8f927aed3ca752257", | |
9661 | "h": "01", | |
9662 | "Gx": "4a96b5688ef573284664698968c38bb913cbfc82", | |
9663 | "Gy": "23a628553168947d59dcc912042351377ac5fb32" | |
9664 | }, | |
9665 | "secp192k1": { | |
9666 | "p": "fffffffffffffffffffffffffffffffffffffffeffffee37", | |
9667 | "a": "00", | |
9668 | "b": "03", | |
9669 | "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d", | |
9670 | "h": "01", | |
9671 | "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d", | |
9672 | "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d" | |
9673 | }, | |
9674 | "secp192r1": { | |
9675 | "p": "fffffffffffffffffffffffffffffffeffffffffffffffff", | |
9676 | "a": "fffffffffffffffffffffffffffffffefffffffffffffffc", | |
9677 | "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1", | |
9678 | "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831", | |
9679 | "h": "01", | |
9680 | "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012", | |
9681 | "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811" | |
9682 | }, | |
ebd8d4e8 IC |
9683 | "secp256k1": { |
9684 | "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f", | |
9685 | "a": "00", | |
9686 | "b": "07", | |
9687 | "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141", | |
9688 | "h": "01", | |
9689 | "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", | |
9690 | "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8" | |
9691 | }, | |
9692 | "secp256r1": { | |
9693 | "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff", | |
9694 | "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc", | |
9695 | "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b", | |
9696 | "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551", | |
9697 | "h": "01", | |
9698 | "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", | |
9699 | "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5" | |
9700 | } | |
9701 | } | |
9702 | ||
ab78acc6 IC |
9703 | },{}],49:[function(require,module,exports){ |
9704 | var Point = require('./point') | |
9705 | var Curve = require('./curve') | |
ebd8d4e8 | 9706 | |
ab78acc6 | 9707 | var getCurveByName = require('./names') |
ebd8d4e8 IC |
9708 | |
9709 | module.exports = { | |
9710 | Curve: Curve, | |
9711 | Point: Point, | |
9712 | getCurveByName: getCurveByName | |
9713 | } | |
9714 | ||
ab78acc6 IC |
9715 | },{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){ |
9716 | var BigInteger = require('bigi') | |
ebd8d4e8 | 9717 | |
ab78acc6 IC |
9718 | var curves = require('./curves') |
9719 | var Curve = require('./curve') | |
ebd8d4e8 IC |
9720 | |
9721 | function getCurveByName(name) { | |
9722 | var curve = curves[name] | |
9723 | if (!curve) return null | |
9724 | ||
9725 | var p = new BigInteger(curve.p, 16) | |
9726 | var a = new BigInteger(curve.a, 16) | |
9727 | var b = new BigInteger(curve.b, 16) | |
9728 | var n = new BigInteger(curve.n, 16) | |
9729 | var h = new BigInteger(curve.h, 16) | |
9730 | var Gx = new BigInteger(curve.Gx, 16) | |
9731 | var Gy = new BigInteger(curve.Gy, 16) | |
9732 | ||
9733 | return new Curve(p, a, b, Gx, Gy, n, h) | |
9734 | } | |
9735 | ||
9736 | module.exports = getCurveByName | |
9737 | ||
ab78acc6 | 9738 | },{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){ |
ebd8d4e8 | 9739 | (function (Buffer){ |
ab78acc6 IC |
9740 | var assert = require('assert') |
9741 | var BigInteger = require('bigi') | |
ebd8d4e8 IC |
9742 | |
9743 | var THREE = BigInteger.valueOf(3) | |
9744 | ||
9745 | function Point(curve, x, y, z) { | |
9746 | assert.notStrictEqual(z, undefined, 'Missing Z coordinate') | |
9747 | ||
9748 | this.curve = curve | |
9749 | this.x = x | |
9750 | this.y = y | |
9751 | this.z = z | |
9752 | this._zInv = null | |
9753 | ||
9754 | this.compressed = true | |
9755 | } | |
9756 | ||
9757 | Object.defineProperty(Point.prototype, 'zInv', { | |
9758 | get: function() { | |
9759 | if (this._zInv === null) { | |
9760 | this._zInv = this.z.modInverse(this.curve.p) | |
9761 | } | |
9762 | ||
9763 | return this._zInv | |
9764 | } | |
9765 | }) | |
9766 | ||
9767 | Object.defineProperty(Point.prototype, 'affineX', { | |
9768 | get: function() { | |
9769 | return this.x.multiply(this.zInv).mod(this.curve.p) | |
9770 | } | |
9771 | }) | |
9772 | ||
9773 | Object.defineProperty(Point.prototype, 'affineY', { | |
9774 | get: function() { | |
9775 | return this.y.multiply(this.zInv).mod(this.curve.p) | |
9776 | } | |
9777 | }) | |
9778 | ||
9779 | Point.fromAffine = function(curve, x, y) { | |
9780 | return new Point(curve, x, y, BigInteger.ONE) | |
9781 | } | |
9782 | ||
9783 | Point.prototype.equals = function(other) { | |
9784 | if (other === this) return true | |
9785 | if (this.curve.isInfinity(this)) return this.curve.isInfinity(other) | |
9786 | if (this.curve.isInfinity(other)) return this.curve.isInfinity(this) | |
9787 | ||
9788 | // u = Y2 * Z1 - Y1 * Z2 | |
9789 | var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p) | |
9790 | ||
9791 | if (u.signum() !== 0) return false | |
9792 | ||
9793 | // v = X2 * Z1 - X1 * Z2 | |
9794 | var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p) | |
9795 | ||
9796 | return v.signum() === 0 | |
9797 | } | |
9798 | ||
9799 | Point.prototype.negate = function() { | |
9800 | var y = this.curve.p.subtract(this.y) | |
9801 | ||
9802 | return new Point(this.curve, this.x, y, this.z) | |
9803 | } | |
9804 | ||
9805 | Point.prototype.add = function(b) { | |
9806 | if (this.curve.isInfinity(this)) return b | |
9807 | if (this.curve.isInfinity(b)) return this | |
9808 | ||
9809 | var x1 = this.x | |
9810 | var y1 = this.y | |
9811 | var x2 = b.x | |
9812 | var y2 = b.y | |
9813 | ||
9814 | // u = Y2 * Z1 - Y1 * Z2 | |
9815 | var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p) | |
9816 | // v = X2 * Z1 - X1 * Z2 | |
9817 | var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p) | |
9818 | ||
9819 | if (v.signum() === 0) { | |
9820 | if (u.signum() === 0) { | |
9821 | return this.twice() // this == b, so double | |
9822 | } | |
9823 | ||
9824 | return this.curve.infinity // this = -b, so infinity | |
9825 | } | |
9826 | ||
9827 | var v2 = v.square() | |
9828 | var v3 = v2.multiply(v) | |
9829 | var x1v2 = x1.multiply(v2) | |
9830 | var zu2 = u.square().multiply(this.z) | |
9831 | ||
9832 | // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) | |
9833 | var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p) | |
9834 | // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 | |
9835 | 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) | |
9836 | // z3 = v^3 * z1 * z2 | |
9837 | var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p) | |
9838 | ||
9839 | return new Point(this.curve, x3, y3, z3) | |
9840 | } | |
9841 | ||
9842 | Point.prototype.twice = function() { | |
9843 | if (this.curve.isInfinity(this)) return this | |
9844 | if (this.y.signum() === 0) return this.curve.infinity | |
9845 | ||
9846 | var x1 = this.x | |
9847 | var y1 = this.y | |
9848 | ||
9849 | var y1z1 = y1.multiply(this.z) | |
9850 | var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p) | |
9851 | var a = this.curve.a | |
9852 | ||
9853 | // w = 3 * x1^2 + a * z1^2 | |
9854 | var w = x1.square().multiply(THREE) | |
9855 | ||
9856 | if (a.signum() !== 0) { | |
9857 | w = w.add(this.z.square().multiply(a)) | |
9858 | } | |
9859 | ||
9860 | w = w.mod(this.curve.p) | |
9861 | // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) | |
9862 | var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p) | |
9863 | // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 | |
9864 | var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p) | |
9865 | // z3 = 8 * (y1 * z1)^3 | |
9866 | var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p) | |
9867 | ||
9868 | return new Point(this.curve, x3, y3, z3) | |
9869 | } | |
9870 | ||
9871 | // Simple NAF (Non-Adjacent Form) multiplication algorithm | |
9872 | // TODO: modularize the multiplication algorithm | |
9873 | Point.prototype.multiply = function(k) { | |
9874 | if (this.curve.isInfinity(this)) return this | |
9875 | if (k.signum() === 0) return this.curve.infinity | |
9876 | ||
9877 | var e = k | |
9878 | var h = e.multiply(THREE) | |
9879 | ||
9880 | var neg = this.negate() | |
9881 | var R = this | |
9882 | ||
9883 | for (var i = h.bitLength() - 2; i > 0; --i) { | |
9884 | R = R.twice() | |
9885 | ||
9886 | var hBit = h.testBit(i) | |
9887 | var eBit = e.testBit(i) | |
9888 | ||
9889 | if (hBit != eBit) { | |
9890 | R = R.add(hBit ? this : neg) | |
9891 | } | |
9892 | } | |
9893 | ||
9894 | return R | |
9895 | } | |
9896 | ||
9897 | // Compute this*j + x*k (simultaneous multiplication) | |
9898 | Point.prototype.multiplyTwo = function(j, x, k) { | |
9899 | var i | |
9900 | ||
9901 | if (j.bitLength() > k.bitLength()) | |
9902 | i = j.bitLength() - 1 | |
9903 | else | |
9904 | i = k.bitLength() - 1 | |
9905 | ||
9906 | var R = this.curve.infinity | |
9907 | var both = this.add(x) | |
9908 | ||
9909 | while (i >= 0) { | |
9910 | R = R.twice() | |
9911 | ||
9912 | var jBit = j.testBit(i) | |
9913 | var kBit = k.testBit(i) | |
9914 | ||
9915 | if (jBit) { | |
9916 | if (kBit) { | |
9917 | R = R.add(both) | |
9918 | ||
9919 | } else { | |
9920 | R = R.add(this) | |
9921 | } | |
9922 | ||
9923 | } else { | |
9924 | if (kBit) { | |
9925 | R = R.add(x) | |
9926 | } | |
9927 | } | |
9928 | --i | |
9929 | } | |
9930 | ||
9931 | return R | |
9932 | } | |
9933 | ||
9934 | Point.prototype.getEncoded = function(compressed) { | |
9935 | if (compressed == undefined) compressed = this.compressed | |
9936 | if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00' | |
9937 | ||
9938 | var x = this.affineX | |
9939 | var y = this.affineY | |
9940 | ||
9941 | var buffer | |
9942 | ||
9943 | // Determine size of q in bytes | |
9944 | var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8) | |
9945 | ||
9946 | // 0x02/0x03 | X | |
9947 | if (compressed) { | |
9948 | buffer = new Buffer(1 + byteLength) | |
9949 | buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0) | |
9950 | ||
9951 | // 0x04 | X | Y | |
9952 | } else { | |
9953 | buffer = new Buffer(1 + byteLength + byteLength) | |
9954 | buffer.writeUInt8(0x04, 0) | |
9955 | ||
9956 | y.toBuffer(byteLength).copy(buffer, 1 + byteLength) | |
9957 | } | |
9958 | ||
9959 | x.toBuffer(byteLength).copy(buffer, 1) | |
9960 | ||
9961 | return buffer | |
9962 | } | |
9963 | ||
9964 | Point.decodeFrom = function(curve, buffer) { | |
9965 | var type = buffer.readUInt8(0) | |
9966 | var compressed = (type !== 4) | |
9967 | ||
ebd8d4e8 | 9968 | var byteLength = Math.floor((curve.p.bitLength() + 7) / 8) |
ab78acc6 | 9969 | var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength)) |
ebd8d4e8 IC |
9970 | |
9971 | var Q | |
9972 | if (compressed) { | |
9973 | assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length') | |
9974 | assert(type === 0x02 || type === 0x03, 'Invalid sequence tag') | |
9975 | ||
9976 | var isOdd = (type === 0x03) | |
9977 | Q = curve.pointFromX(isOdd, x) | |
9978 | ||
9979 | } else { | |
9980 | assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length') | |
9981 | ||
9982 | var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength)) | |
9983 | Q = Point.fromAffine(curve, x, y) | |
9984 | } | |
9985 | ||
9986 | Q.compressed = compressed | |
9987 | return Q | |
9988 | } | |
9989 | ||
9990 | Point.prototype.toString = function () { | |
9991 | if (this.curve.isInfinity(this)) return '(INFINITY)' | |
9992 | ||
9993 | return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')' | |
9994 | } | |
9995 | ||
9996 | module.exports = Point | |
9997 | ||
ab78acc6 IC |
9998 | }).call(this,require("buffer").Buffer) |
9999 | },{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){ | |
10000 | (function (process,global,Buffer){ | |
10001 | 'use strict'; | |
ebd8d4e8 | 10002 | |
ab78acc6 IC |
10003 | var crypto = global.crypto || global.msCrypto |
10004 | if(crypto && crypto.getRandomValues) { | |
10005 | module.exports = randomBytes; | |
10006 | } else { | |
10007 | module.exports = oldBrowser; | |
10008 | } | |
10009 | function randomBytes(size, cb) { | |
10010 | var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array | |
10011 | /* This will not work in older browsers. | |
10012 | * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues | |
10013 | */ | |
10014 | ||
10015 | crypto.getRandomValues(bytes); | |
10016 | if (typeof cb === 'function') { | |
10017 | return process.nextTick(function () { | |
10018 | cb(null, bytes); | |
10019 | }); | |
ebd8d4e8 | 10020 | } |
ab78acc6 IC |
10021 | return bytes; |
10022 | } | |
10023 | function oldBrowser() { | |
10024 | throw new Error( | |
10025 | 'secure random number generation not supported by this browser\n'+ | |
10026 | 'use chrome, FireFox or Internet Explorer 11' | |
10027 | ) | |
ebd8d4e8 IC |
10028 | } |
10029 | ||
ab78acc6 IC |
10030 | }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) |
10031 | },{"_process":14,"buffer":7}],53:[function(require,module,exports){ | |
10032 | (function (Buffer){ | |
10033 | 'use strict'; | |
ebd8d4e8 | 10034 | |
ab78acc6 IC |
10035 | function getFunctionName(fn) { |
10036 | return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]; | |
10037 | } | |
10038 | ||
10039 | function getTypeTypeName(type) { | |
10040 | if (nativeTypes.Function(type)) { | |
10041 | type = type.toJSON ? type.toJSON() : getFunctionName(type); | |
ebd8d4e8 | 10042 | } |
ab78acc6 IC |
10043 | if (nativeTypes.Object(type)) return JSON.stringify(type); |
10044 | ||
10045 | return type; | |
ebd8d4e8 IC |
10046 | } |
10047 | ||
ab78acc6 IC |
10048 | function getValueTypeName(value) { |
10049 | if (nativeTypes.Null(value)) return ''; | |
ebd8d4e8 | 10050 | |
ab78acc6 IC |
10051 | return getFunctionName(value.constructor); |
10052 | } | |
10053 | ||
10054 | function tfErrorString(type, value) { | |
10055 | var typeTypeName = getTypeTypeName(type); | |
10056 | var valueTypeName = getValueTypeName(value); | |
10057 | ||
10058 | return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value); | |
10059 | } | |
10060 | ||
10061 | function tfPropertyErrorString(type, name, value) { | |
10062 | return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value); | |
10063 | } | |
10064 | ||
10065 | var nativeTypes = { | |
10066 | Array: (function (_Array) { | |
10067 | function Array(_x) { | |
10068 | return _Array.apply(this, arguments); | |
10069 | } | |
10070 | ||
10071 | Array.toString = function () { | |
10072 | return _Array.toString(); | |
10073 | }; | |
10074 | ||
10075 | return Array; | |
10076 | })(function (value) { | |
10077 | return value !== null && value !== undefined && value.constructor === Array; | |
10078 | }), | |
10079 | Boolean: function Boolean(value) { | |
10080 | return typeof value === 'boolean'; | |
10081 | }, | |
10082 | Buffer: (function (_Buffer) { | |
10083 | function Buffer(_x2) { | |
10084 | return _Buffer.apply(this, arguments); | |
10085 | } | |
10086 | ||
10087 | Buffer.toString = function () { | |
10088 | return _Buffer.toString(); | |
10089 | }; | |
10090 | ||
10091 | return Buffer; | |
10092 | })(function (value) { | |
10093 | return Buffer.isBuffer(value); | |
10094 | }), | |
10095 | Function: function Function(value) { | |
10096 | return typeof value === 'function'; | |
10097 | }, | |
10098 | Null: function Null(value) { | |
10099 | return value === undefined || value === null; | |
10100 | }, | |
10101 | Number: function Number(value) { | |
10102 | return typeof value === 'number'; | |
10103 | }, | |
10104 | Object: function Object(value) { | |
10105 | return typeof value === 'object'; | |
10106 | }, | |
10107 | String: function String(value) { | |
10108 | return typeof value === 'string'; | |
10109 | }, | |
10110 | '': function _() { | |
10111 | return true; | |
ebd8d4e8 | 10112 | } |
ab78acc6 IC |
10113 | }; |
10114 | ||
10115 | function tJSON(type) { | |
10116 | return type && type.toJSON ? type.toJSON() : type; | |
ebd8d4e8 IC |
10117 | } |
10118 | ||
ab78acc6 IC |
10119 | function sJSON(type) { |
10120 | var json = tJSON(type); | |
10121 | return nativeTypes.Object(json) ? JSON.stringify(json) : json; | |
ebd8d4e8 IC |
10122 | } |
10123 | ||
ab78acc6 IC |
10124 | var otherTypes = { |
10125 | arrayOf: function arrayOf(type) { | |
10126 | function arrayOf(value, strict) { | |
10127 | try { | |
10128 | return nativeTypes.Array(value) && value.every(function (x) { | |
10129 | return typeforce(type, x, strict); | |
10130 | }); | |
10131 | } catch (e) { | |
10132 | return false; | |
10133 | } | |
10134 | } | |
10135 | arrayOf.toJSON = function () { | |
10136 | return [tJSON(type)]; | |
10137 | }; | |
10138 | ||
10139 | return arrayOf; | |
10140 | }, | |
10141 | ||
10142 | maybe: function maybe(type) { | |
10143 | function maybe(value, strict) { | |
10144 | return nativeTypes.Null(value) || typeforce(type, value, strict); | |
10145 | } | |
10146 | maybe.toJSON = function () { | |
10147 | return '?' + sJSON(type); | |
10148 | }; | |
10149 | ||
10150 | return maybe; | |
10151 | }, | |
10152 | ||
10153 | object: function object(type) { | |
10154 | function object(value, strict) { | |
10155 | typeforce(nativeTypes.Object, value, strict); | |
10156 | ||
10157 | var propertyName, propertyType, propertyValue; | |
10158 | ||
10159 | try { | |
10160 | for (propertyName in type) { | |
10161 | propertyType = type[propertyName]; | |
10162 | propertyValue = value[propertyName]; | |
10163 | ||
10164 | typeforce(propertyType, propertyValue, strict); | |
10165 | } | |
10166 | } catch (e) { | |
10167 | throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue)); | |
10168 | } | |
10169 | ||
10170 | if (strict) { | |
10171 | for (propertyName in value) { | |
10172 | if (type[propertyName]) continue; | |
10173 | ||
10174 | throw new TypeError('Unexpected property "' + propertyName + '"'); | |
10175 | } | |
10176 | } | |
10177 | ||
10178 | return true; | |
10179 | } | |
10180 | object.toJSON = function () { | |
10181 | return type; | |
10182 | }; | |
10183 | ||
10184 | return object; | |
10185 | }, | |
10186 | ||
10187 | oneOf: function oneOf() { | |
10188 | for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) { | |
10189 | types[_key] = arguments[_key]; | |
10190 | } | |
10191 | ||
10192 | function oneOf(value, strict) { | |
10193 | return types.some(function (type) { | |
10194 | try { | |
10195 | return typeforce(type, value, strict); | |
10196 | } catch (e) { | |
10197 | return false; | |
10198 | } | |
10199 | }); | |
10200 | } | |
10201 | oneOf.toJSON = function () { | |
10202 | return types.map(sJSON).join('|'); | |
10203 | }; | |
10204 | ||
10205 | return oneOf; | |
10206 | }, | |
10207 | ||
10208 | quacksLike: function quacksLike(type) { | |
10209 | function quacksLike(value, strict) { | |
10210 | return type === getValueTypeName(value); | |
10211 | } | |
10212 | quacksLike.toJSON = function () { | |
10213 | return type; | |
10214 | }; | |
10215 | ||
10216 | return quacksLike; | |
10217 | }, | |
10218 | ||
10219 | tuple: function tuple() { | |
10220 | for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | |
10221 | types[_key2] = arguments[_key2]; | |
10222 | } | |
10223 | ||
10224 | function tuple(value, strict) { | |
10225 | return types.every(function (type, i) { | |
10226 | return typeforce(type, value[i], strict); | |
10227 | }); | |
10228 | } | |
10229 | tuple.toJSON = function () { | |
10230 | return '(' + types.map(sJSON).join(', ') + ')'; | |
10231 | }; | |
10232 | ||
10233 | return tuple; | |
10234 | }, | |
10235 | ||
10236 | value: function value(expected) { | |
10237 | function value(actual) { | |
10238 | return actual === expected; | |
10239 | } | |
10240 | value.toJSON = function () { | |
10241 | return expected; | |
10242 | }; | |
10243 | ||
10244 | return value; | |
10245 | } | |
10246 | }; | |
10247 | ||
10248 | function compile(type) { | |
10249 | if (nativeTypes.String(type)) { | |
10250 | if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1))); | |
10251 | ||
10252 | return nativeTypes[type] || otherTypes.quacksLike(type); | |
10253 | } else if (type && nativeTypes.Object(type)) { | |
10254 | if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0])); | |
10255 | ||
10256 | var compiled = {}; | |
10257 | ||
10258 | for (var propertyName in type) { | |
10259 | compiled[propertyName] = compile(type[propertyName]); | |
10260 | } | |
10261 | ||
10262 | return otherTypes.object(compiled); | |
10263 | } else if (nativeTypes.Function(type)) { | |
10264 | return type; | |
10265 | } | |
10266 | ||
10267 | return otherTypes.value(type); | |
ebd8d4e8 IC |
10268 | } |
10269 | ||
ab78acc6 IC |
10270 | function typeforce(_x3, _x4, _x5) { |
10271 | var _again = true; | |
10272 | ||
10273 | _function: while (_again) { | |
10274 | var type = _x3, | |
10275 | value = _x4, | |
10276 | strict = _x5; | |
10277 | _again = false; | |
10278 | ||
10279 | if (nativeTypes.Function(type)) { | |
10280 | if (type(value, strict)) return true; | |
10281 | ||
10282 | throw new TypeError(tfErrorString(type, value)); | |
10283 | } | |
10284 | ||
10285 | // JIT | |
10286 | _x3 = compile(type); | |
10287 | _x4 = value; | |
10288 | _x5 = strict; | |
10289 | _again = true; | |
10290 | continue _function; | |
10291 | } | |
ebd8d4e8 IC |
10292 | } |
10293 | ||
ab78acc6 IC |
10294 | // assign all types to typeforce function |
10295 | var typeName; | |
10296 | Object.keys(nativeTypes).forEach(function (typeName) { | |
10297 | var nativeType = nativeTypes[typeName]; | |
10298 | nativeType.toJSON = function () { | |
10299 | return typeName; | |
10300 | }; | |
10301 | ||
10302 | typeforce[typeName] = nativeType; | |
10303 | }); | |
ebd8d4e8 | 10304 | |
ab78acc6 IC |
10305 | for (typeName in otherTypes) { |
10306 | typeforce[typeName] = otherTypes[typeName]; | |
10307 | } | |
ebd8d4e8 | 10308 | |
ab78acc6 IC |
10309 | module.exports = typeforce; |
10310 | module.exports.compile = compile; | |
10311 | }).call(this,require("buffer").Buffer) | |
10312 | },{"buffer":7}],54:[function(require,module,exports){ | |
ebd8d4e8 | 10313 | (function (Buffer){ |
ab78acc6 IC |
10314 | var assert = require('assert') |
10315 | var base58check = require('bs58check') | |
10316 | var typeForce = require('typeforce') | |
10317 | var networks = require('./networks') | |
10318 | var scripts = require('./scripts') | |
ebd8d4e8 | 10319 | |
ab78acc6 | 10320 | function findScriptTypeByVersion (version) { |
ebd8d4e8 IC |
10321 | for (var networkName in networks) { |
10322 | var network = networks[networkName] | |
10323 | ||
10324 | if (version === network.pubKeyHash) return 'pubkeyhash' | |
10325 | if (version === network.scriptHash) return 'scripthash' | |
10326 | } | |
10327 | } | |
10328 | ||
ab78acc6 IC |
10329 | function Address (hash, version) { |
10330 | typeForce('Buffer', hash) | |
10331 | ||
ebd8d4e8 IC |
10332 | assert.strictEqual(hash.length, 20, 'Invalid hash length') |
10333 | assert.strictEqual(version & 0xff, version, 'Invalid version byte') | |
10334 | ||
10335 | this.hash = hash | |
10336 | this.version = version | |
10337 | } | |
10338 | ||
ab78acc6 | 10339 | Address.fromBase58Check = function (string) { |
ebd8d4e8 IC |
10340 | var payload = base58check.decode(string) |
10341 | var version = payload.readUInt8(0) | |
10342 | var hash = payload.slice(1) | |
10343 | ||
10344 | return new Address(hash, version) | |
10345 | } | |
10346 | ||
ab78acc6 | 10347 | Address.fromOutputScript = function (script, network) { |
ebd8d4e8 IC |
10348 | network = network || networks.bitcoin |
10349 | ||
ab78acc6 IC |
10350 | if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash) |
10351 | if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash) | |
ebd8d4e8 | 10352 | |
ab78acc6 | 10353 | assert(false, script.toASM() + ' has no matching Address') |
ebd8d4e8 IC |
10354 | } |
10355 | ||
ebd8d4e8 IC |
10356 | Address.prototype.toBase58Check = function () { |
10357 | var payload = new Buffer(21) | |
10358 | payload.writeUInt8(this.version, 0) | |
10359 | this.hash.copy(payload, 1) | |
10360 | ||
10361 | return base58check.encode(payload) | |
10362 | } | |
10363 | ||
ab78acc6 | 10364 | Address.prototype.toOutputScript = function () { |
ebd8d4e8 IC |
10365 | var scriptType = findScriptTypeByVersion(this.version) |
10366 | ||
10367 | if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash) | |
10368 | if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash) | |
10369 | ||
ab78acc6 IC |
10370 | assert(false, this.toString() + ' has no matching Script') |
10371 | } | |
10372 | ||
10373 | Address.prototype.toString = Address.prototype.toBase58Check | |
10374 | ||
10375 | module.exports = Address | |
10376 | ||
10377 | }).call(this,require("buffer").Buffer) | |
10378 | },{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){ | |
10379 | var bs58check = require('bs58check') | |
10380 | ||
10381 | function decode () { | |
10382 | console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.') | |
10383 | ||
10384 | return bs58check.decode.apply(undefined, arguments) | |
10385 | } | |
10386 | ||
10387 | function encode () { | |
10388 | console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.') | |
10389 | ||
10390 | return bs58check.encode.apply(undefined, arguments) | |
10391 | } | |
10392 | ||
10393 | module.exports = { | |
10394 | decode: decode, | |
10395 | encode: encode | |
10396 | } | |
10397 | ||
10398 | },{"bs58check":31}],56:[function(require,module,exports){ | |
10399 | (function (Buffer){ | |
10400 | var assert = require('assert') | |
10401 | var bufferutils = require('./bufferutils') | |
10402 | var crypto = require('./crypto') | |
10403 | ||
10404 | var Transaction = require('./transaction') | |
10405 | ||
10406 | function Block () { | |
10407 | this.version = 1 | |
10408 | this.prevHash = null | |
10409 | this.merkleRoot = null | |
10410 | this.timestamp = 0 | |
10411 | this.bits = 0 | |
10412 | this.nonce = 0 | |
10413 | } | |
10414 | ||
10415 | Block.fromBuffer = function (buffer) { | |
10416 | assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)') | |
10417 | ||
10418 | var offset = 0 | |
10419 | function readSlice (n) { | |
10420 | offset += n | |
10421 | return buffer.slice(offset - n, offset) | |
10422 | } | |
10423 | ||
10424 | function readUInt32 () { | |
10425 | var i = buffer.readUInt32LE(offset) | |
10426 | offset += 4 | |
10427 | return i | |
10428 | } | |
10429 | ||
10430 | var block = new Block() | |
10431 | block.version = readUInt32() | |
10432 | block.prevHash = readSlice(32) | |
10433 | block.merkleRoot = readSlice(32) | |
10434 | block.timestamp = readUInt32() | |
10435 | block.bits = readUInt32() | |
10436 | block.nonce = readUInt32() | |
10437 | ||
10438 | if (buffer.length === 80) return block | |
10439 | ||
10440 | function readVarInt () { | |
10441 | var vi = bufferutils.readVarInt(buffer, offset) | |
10442 | offset += vi.size | |
10443 | return vi.number | |
10444 | } | |
10445 | ||
10446 | // FIXME: poor performance | |
10447 | function readTransaction () { | |
10448 | var tx = Transaction.fromBuffer(buffer.slice(offset), true) | |
10449 | ||
10450 | offset += tx.toBuffer().length | |
10451 | return tx | |
10452 | } | |
10453 | ||
10454 | var nTransactions = readVarInt() | |
10455 | block.transactions = [] | |
10456 | ||
10457 | for (var i = 0; i < nTransactions; ++i) { | |
10458 | var tx = readTransaction() | |
10459 | block.transactions.push(tx) | |
10460 | } | |
10461 | ||
10462 | return block | |
10463 | } | |
10464 | ||
10465 | Block.fromHex = function (hex) { | |
10466 | return Block.fromBuffer(new Buffer(hex, 'hex')) | |
10467 | } | |
10468 | ||
10469 | Block.prototype.getHash = function () { | |
10470 | return crypto.hash256(this.toBuffer(true)) | |
10471 | } | |
10472 | ||
10473 | Block.prototype.getId = function () { | |
10474 | return bufferutils.reverse(this.getHash()).toString('hex') | |
ebd8d4e8 IC |
10475 | } |
10476 | ||
ab78acc6 IC |
10477 | Block.prototype.getUTCDate = function () { |
10478 | var date = new Date(0) // epoch | |
10479 | date.setUTCSeconds(this.timestamp) | |
ebd8d4e8 | 10480 | |
ab78acc6 IC |
10481 | return date |
10482 | } | |
ebd8d4e8 | 10483 | |
ab78acc6 IC |
10484 | Block.prototype.toBuffer = function (headersOnly) { |
10485 | var buffer = new Buffer(80) | |
ebd8d4e8 | 10486 | |
ab78acc6 IC |
10487 | var offset = 0 |
10488 | function writeSlice (slice) { | |
10489 | slice.copy(buffer, offset) | |
10490 | offset += slice.length | |
10491 | } | |
ebd8d4e8 | 10492 | |
ab78acc6 IC |
10493 | function writeUInt32 (i) { |
10494 | buffer.writeUInt32LE(i, offset) | |
10495 | offset += 4 | |
10496 | } | |
ebd8d4e8 | 10497 | |
ab78acc6 IC |
10498 | writeUInt32(this.version) |
10499 | writeSlice(this.prevHash) | |
10500 | writeSlice(this.merkleRoot) | |
10501 | writeUInt32(this.timestamp) | |
10502 | writeUInt32(this.bits) | |
10503 | writeUInt32(this.nonce) | |
ebd8d4e8 | 10504 | |
ab78acc6 | 10505 | if (headersOnly || !this.transactions) return buffer |
ebd8d4e8 | 10506 | |
ab78acc6 IC |
10507 | var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length) |
10508 | var txBuffers = this.transactions.map(function (tx) { | |
10509 | return tx.toBuffer() | |
10510 | }) | |
ebd8d4e8 | 10511 | |
ab78acc6 | 10512 | return Buffer.concat([buffer, txLenBuffer].concat(txBuffers)) |
ebd8d4e8 IC |
10513 | } |
10514 | ||
ab78acc6 IC |
10515 | Block.prototype.toHex = function (headersOnly) { |
10516 | return this.toBuffer(headersOnly).toString('hex') | |
ebd8d4e8 IC |
10517 | } |
10518 | ||
ab78acc6 IC |
10519 | module.exports = Block |
10520 | ||
10521 | }).call(this,require("buffer").Buffer) | |
10522 | },{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){ | |
10523 | (function (Buffer){ | |
10524 | var assert = require('assert') | |
10525 | var opcodes = require('./opcodes') | |
ebd8d4e8 IC |
10526 | |
10527 | // https://github.com/feross/buffer/blob/master/index.js#L1127 | |
ab78acc6 | 10528 | function verifuint (value, max) { |
ebd8d4e8 IC |
10529 | assert(typeof value === 'number', 'cannot write a non-number as a number') |
10530 | assert(value >= 0, 'specified a negative value for writing an unsigned value') | |
10531 | assert(value <= max, 'value is larger than maximum value for type') | |
10532 | assert(Math.floor(value) === value, 'value has a fractional component') | |
10533 | } | |
10534 | ||
ab78acc6 | 10535 | function pushDataSize (i) { |
ebd8d4e8 | 10536 | return i < opcodes.OP_PUSHDATA1 ? 1 |
ab78acc6 IC |
10537 | : i < 0xff ? 2 |
10538 | : i < 0xffff ? 3 | |
10539 | : 5 | |
ebd8d4e8 IC |
10540 | } |
10541 | ||
ab78acc6 | 10542 | function readPushDataInt (buffer, offset) { |
ebd8d4e8 IC |
10543 | var opcode = buffer.readUInt8(offset) |
10544 | var number, size | |
10545 | ||
10546 | // ~6 bit | |
10547 | if (opcode < opcodes.OP_PUSHDATA1) { | |
10548 | number = opcode | |
10549 | size = 1 | |
10550 | ||
10551 | // 8 bit | |
10552 | } else if (opcode === opcodes.OP_PUSHDATA1) { | |
ab78acc6 | 10553 | if (offset + 2 > buffer.length) return null |
ebd8d4e8 IC |
10554 | number = buffer.readUInt8(offset + 1) |
10555 | size = 2 | |
10556 | ||
10557 | // 16 bit | |
10558 | } else if (opcode === opcodes.OP_PUSHDATA2) { | |
ab78acc6 | 10559 | if (offset + 3 > buffer.length) return null |
ebd8d4e8 IC |
10560 | number = buffer.readUInt16LE(offset + 1) |
10561 | size = 3 | |
10562 | ||
10563 | // 32 bit | |
10564 | } else { | |
ab78acc6 | 10565 | if (offset + 5 > buffer.length) return null |
ebd8d4e8 IC |
10566 | assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode') |
10567 | ||
10568 | number = buffer.readUInt32LE(offset + 1) | |
10569 | size = 5 | |
ebd8d4e8 IC |
10570 | } |
10571 | ||
10572 | return { | |
10573 | opcode: opcode, | |
10574 | number: number, | |
10575 | size: size | |
10576 | } | |
10577 | } | |
10578 | ||
ab78acc6 | 10579 | function readUInt64LE (buffer, offset) { |
ebd8d4e8 IC |
10580 | var a = buffer.readUInt32LE(offset) |
10581 | var b = buffer.readUInt32LE(offset + 4) | |
10582 | b *= 0x100000000 | |
10583 | ||
10584 | verifuint(b + a, 0x001fffffffffffff) | |
10585 | ||
10586 | return b + a | |
10587 | } | |
10588 | ||
ab78acc6 | 10589 | function readVarInt (buffer, offset) { |
ebd8d4e8 IC |
10590 | var t = buffer.readUInt8(offset) |
10591 | var number, size | |
10592 | ||
10593 | // 8 bit | |
10594 | if (t < 253) { | |
10595 | number = t | |
10596 | size = 1 | |
10597 | ||
10598 | // 16 bit | |
10599 | } else if (t < 254) { | |
10600 | number = buffer.readUInt16LE(offset + 1) | |
10601 | size = 3 | |
10602 | ||
10603 | // 32 bit | |
10604 | } else if (t < 255) { | |
10605 | number = buffer.readUInt32LE(offset + 1) | |
10606 | size = 5 | |
10607 | ||
10608 | // 64 bit | |
10609 | } else { | |
10610 | number = readUInt64LE(buffer, offset + 1) | |
10611 | size = 9 | |
10612 | } | |
10613 | ||
10614 | return { | |
10615 | number: number, | |
10616 | size: size | |
10617 | } | |
10618 | } | |
10619 | ||
ab78acc6 | 10620 | function writePushDataInt (buffer, number, offset) { |
ebd8d4e8 IC |
10621 | var size = pushDataSize(number) |
10622 | ||
10623 | // ~6 bit | |
10624 | if (size === 1) { | |
10625 | buffer.writeUInt8(number, offset) | |
10626 | ||
10627 | // 8 bit | |
10628 | } else if (size === 2) { | |
10629 | buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset) | |
10630 | buffer.writeUInt8(number, offset + 1) | |
10631 | ||
10632 | // 16 bit | |
10633 | } else if (size === 3) { | |
10634 | buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset) | |
10635 | buffer.writeUInt16LE(number, offset + 1) | |
10636 | ||
10637 | // 32 bit | |
10638 | } else { | |
10639 | buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset) | |
10640 | buffer.writeUInt32LE(number, offset + 1) | |
ebd8d4e8 IC |
10641 | } |
10642 | ||
10643 | return size | |
10644 | } | |
10645 | ||
ab78acc6 | 10646 | function writeUInt64LE (buffer, value, offset) { |
ebd8d4e8 IC |
10647 | verifuint(value, 0x001fffffffffffff) |
10648 | ||
10649 | buffer.writeInt32LE(value & -1, offset) | |
10650 | buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4) | |
10651 | } | |
10652 | ||
ab78acc6 IC |
10653 | function varIntSize (i) { |
10654 | return i < 253 ? 1 | |
10655 | : i < 0x10000 ? 3 | |
10656 | : i < 0x100000000 ? 5 | |
10657 | : 9 | |
ebd8d4e8 IC |
10658 | } |
10659 | ||
ab78acc6 | 10660 | function writeVarInt (buffer, number, offset) { |
ebd8d4e8 IC |
10661 | var size = varIntSize(number) |
10662 | ||
10663 | // 8 bit | |
10664 | if (size === 1) { | |
10665 | buffer.writeUInt8(number, offset) | |
10666 | ||
10667 | // 16 bit | |
10668 | } else if (size === 3) { | |
10669 | buffer.writeUInt8(253, offset) | |
10670 | buffer.writeUInt16LE(number, offset + 1) | |
10671 | ||
10672 | // 32 bit | |
10673 | } else if (size === 5) { | |
10674 | buffer.writeUInt8(254, offset) | |
10675 | buffer.writeUInt32LE(number, offset + 1) | |
10676 | ||
10677 | // 64 bit | |
10678 | } else { | |
10679 | buffer.writeUInt8(255, offset) | |
10680 | writeUInt64LE(buffer, number, offset + 1) | |
10681 | } | |
10682 | ||
10683 | return size | |
10684 | } | |
10685 | ||
ab78acc6 IC |
10686 | function varIntBuffer (i) { |
10687 | var size = varIntSize(i) | |
10688 | var buffer = new Buffer(size) | |
10689 | writeVarInt(buffer, i, 0) | |
10690 | ||
10691 | return buffer | |
10692 | } | |
10693 | ||
10694 | function reverse (buffer) { | |
10695 | var buffer2 = new Buffer(buffer) | |
10696 | Array.prototype.reverse.call(buffer2) | |
10697 | return buffer2 | |
10698 | } | |
10699 | ||
ebd8d4e8 IC |
10700 | module.exports = { |
10701 | pushDataSize: pushDataSize, | |
10702 | readPushDataInt: readPushDataInt, | |
10703 | readUInt64LE: readUInt64LE, | |
10704 | readVarInt: readVarInt, | |
ab78acc6 IC |
10705 | reverse: reverse, |
10706 | varIntBuffer: varIntBuffer, | |
ebd8d4e8 IC |
10707 | varIntSize: varIntSize, |
10708 | writePushDataInt: writePushDataInt, | |
10709 | writeUInt64LE: writeUInt64LE, | |
10710 | writeVarInt: writeVarInt | |
10711 | } | |
10712 | ||
ab78acc6 IC |
10713 | }).call(this,require("buffer").Buffer) |
10714 | },{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){ | |
10715 | var createHash = require('create-hash') | |
ebd8d4e8 | 10716 | |
ab78acc6 | 10717 | function hash160 (buffer) { |
ebd8d4e8 IC |
10718 | return ripemd160(sha256(buffer)) |
10719 | } | |
10720 | ||
ab78acc6 | 10721 | function hash256 (buffer) { |
ebd8d4e8 IC |
10722 | return sha256(sha256(buffer)) |
10723 | } | |
10724 | ||
ab78acc6 IC |
10725 | function ripemd160 (buffer) { |
10726 | return createHash('rmd160').update(buffer).digest() | |
ebd8d4e8 IC |
10727 | } |
10728 | ||
ab78acc6 IC |
10729 | function sha1 (buffer) { |
10730 | return createHash('sha1').update(buffer).digest() | |
ebd8d4e8 IC |
10731 | } |
10732 | ||
ab78acc6 IC |
10733 | function sha256 (buffer) { |
10734 | return createHash('sha256').update(buffer).digest() | |
ebd8d4e8 IC |
10735 | } |
10736 | ||
10737 | // FIXME: Name not consistent with others | |
ab78acc6 | 10738 | var createHmac = require('create-hmac') |
ebd8d4e8 | 10739 | |
ab78acc6 IC |
10740 | function HmacSHA256 (buffer, secret) { |
10741 | console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead') | |
10742 | return createHmac('sha256', secret).update(buffer).digest() | |
10743 | } | |
ebd8d4e8 | 10744 | |
ab78acc6 IC |
10745 | function HmacSHA512 (buffer, secret) { |
10746 | console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead') | |
10747 | return createHmac('sha512', secret).update(buffer).digest() | |
ebd8d4e8 IC |
10748 | } |
10749 | ||
10750 | module.exports = { | |
10751 | ripemd160: ripemd160, | |
10752 | sha1: sha1, | |
10753 | sha256: sha256, | |
10754 | hash160: hash160, | |
10755 | hash256: hash256, | |
10756 | HmacSHA256: HmacSHA256, | |
10757 | HmacSHA512: HmacSHA512 | |
10758 | } | |
10759 | ||
ab78acc6 | 10760 | },{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){ |
ebd8d4e8 | 10761 | (function (Buffer){ |
ab78acc6 IC |
10762 | var assert = require('assert') |
10763 | var createHmac = require('create-hmac') | |
10764 | var typeForce = require('typeforce') | |
ebd8d4e8 | 10765 | |
ab78acc6 IC |
10766 | var BigInteger = require('bigi') |
10767 | var ECSignature = require('./ecsignature') | |
10768 | ||
10769 | var ZERO = new Buffer([0]) | |
10770 | var ONE = new Buffer([1]) | |
ebd8d4e8 IC |
10771 | |
10772 | // https://tools.ietf.org/html/rfc6979#section-3.2 | |
ab78acc6 IC |
10773 | function deterministicGenerateK (curve, hash, d, checkSig) { |
10774 | typeForce('Buffer', hash) | |
10775 | typeForce('BigInteger', d) | |
10776 | ||
10777 | // FIXME: remove/uncomment for 2.0.0 | |
10778 | // typeForce('Function', checkSig) | |
10779 | ||
10780 | if (typeof checkSig !== 'function') { | |
10781 | console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information') | |
10782 | ||
10783 | checkSig = function (k) { | |
10784 | var G = curve.G | |
10785 | var n = curve.n | |
10786 | var e = BigInteger.fromBuffer(hash) | |
10787 | ||
10788 | var Q = G.multiply(k) | |
10789 | ||
10790 | if (curve.isInfinity(Q)) | |
10791 | return false | |
10792 | ||
10793 | var r = Q.affineX.mod(n) | |
10794 | if (r.signum() === 0) | |
10795 | return false | |
10796 | ||
10797 | var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n) | |
10798 | if (s.signum() === 0) | |
10799 | return false | |
10800 | ||
10801 | return true | |
10802 | } | |
10803 | } | |
10804 | ||
10805 | // sanity check | |
ebd8d4e8 | 10806 | assert.equal(hash.length, 32, 'Hash must be 256 bit') |
ebd8d4e8 IC |
10807 | |
10808 | var x = d.toBuffer(32) | |
10809 | var k = new Buffer(32) | |
10810 | var v = new Buffer(32) | |
10811 | ||
ab78acc6 | 10812 | // Step A, ignored as hash already provided |
ebd8d4e8 IC |
10813 | // Step B |
10814 | v.fill(1) | |
10815 | ||
10816 | // Step C | |
10817 | k.fill(0) | |
10818 | ||
10819 | // Step D | |
ab78acc6 IC |
10820 | k = createHmac('sha256', k) |
10821 | .update(v) | |
10822 | .update(ZERO) | |
10823 | .update(x) | |
10824 | .update(hash) | |
10825 | .digest() | |
ebd8d4e8 IC |
10826 | |
10827 | // Step E | |
ab78acc6 | 10828 | v = createHmac('sha256', k).update(v).digest() |
ebd8d4e8 IC |
10829 | |
10830 | // Step F | |
ab78acc6 IC |
10831 | k = createHmac('sha256', k) |
10832 | .update(v) | |
10833 | .update(ONE) | |
10834 | .update(x) | |
10835 | .update(hash) | |
10836 | .digest() | |
ebd8d4e8 IC |
10837 | |
10838 | // Step G | |
ab78acc6 | 10839 | v = createHmac('sha256', k).update(v).digest() |
ebd8d4e8 IC |
10840 | |
10841 | // Step H1/H2a, ignored as tlen === qlen (256 bit) | |
10842 | // Step H2b | |
ab78acc6 | 10843 | v = createHmac('sha256', k).update(v).digest() |
ebd8d4e8 IC |
10844 | |
10845 | var T = BigInteger.fromBuffer(v) | |
10846 | ||
ab78acc6 IC |
10847 | // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA |
10848 | while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) { | |
10849 | k = createHmac('sha256', k) | |
10850 | .update(v) | |
10851 | .update(ZERO) | |
10852 | .digest() | |
10853 | ||
10854 | v = createHmac('sha256', k).update(v).digest() | |
ebd8d4e8 | 10855 | |
ab78acc6 IC |
10856 | // Step H1/H2a, again, ignored as tlen === qlen (256 bit) |
10857 | // Step H2b again | |
10858 | v = createHmac('sha256', k).update(v).digest() | |
ebd8d4e8 IC |
10859 | T = BigInteger.fromBuffer(v) |
10860 | } | |
10861 | ||
10862 | return T | |
10863 | } | |
10864 | ||
ab78acc6 IC |
10865 | function sign (curve, hash, d) { |
10866 | var r, s | |
ebd8d4e8 | 10867 | |
ab78acc6 | 10868 | var e = BigInteger.fromBuffer(hash) |
ebd8d4e8 IC |
10869 | var n = curve.n |
10870 | var G = curve.G | |
ebd8d4e8 | 10871 | |
ab78acc6 IC |
10872 | deterministicGenerateK(curve, hash, d, function (k) { |
10873 | var Q = G.multiply(k) | |
10874 | ||
10875 | if (curve.isInfinity(Q)) | |
10876 | return false | |
10877 | ||
10878 | r = Q.affineX.mod(n) | |
10879 | if (r.signum() === 0) | |
10880 | return false | |
10881 | ||
10882 | s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n) | |
10883 | if (s.signum() === 0) | |
10884 | return false | |
ebd8d4e8 | 10885 | |
ab78acc6 IC |
10886 | return true |
10887 | }) | |
ebd8d4e8 IC |
10888 | |
10889 | var N_OVER_TWO = n.shiftRight(1) | |
10890 | ||
10891 | // enforce low S values, see bip62: 'low s values in signatures' | |
10892 | if (s.compareTo(N_OVER_TWO) > 0) { | |
10893 | s = n.subtract(s) | |
10894 | } | |
10895 | ||
10896 | return new ECSignature(r, s) | |
10897 | } | |
10898 | ||
ab78acc6 | 10899 | function verifyRaw (curve, e, signature, Q) { |
ebd8d4e8 IC |
10900 | var n = curve.n |
10901 | var G = curve.G | |
10902 | ||
10903 | var r = signature.r | |
10904 | var s = signature.s | |
10905 | ||
ab78acc6 IC |
10906 | // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1] |
10907 | if (r.signum() <= 0 || r.compareTo(n) >= 0) return false | |
10908 | if (s.signum() <= 0 || s.compareTo(n) >= 0) return false | |
ebd8d4e8 | 10909 | |
ab78acc6 | 10910 | // c = s^-1 mod n |
ebd8d4e8 IC |
10911 | var c = s.modInverse(n) |
10912 | ||
ab78acc6 IC |
10913 | // 1.4.4 Compute u1 = es^−1 mod n |
10914 | // u2 = rs^−1 mod n | |
ebd8d4e8 IC |
10915 | var u1 = e.multiply(c).mod(n) |
10916 | var u2 = r.multiply(c).mod(n) | |
10917 | ||
ab78acc6 IC |
10918 | // 1.4.5 Compute R = (xR, yR) = u1G + u2Q |
10919 | var R = G.multiplyTwo(u1, Q, u2) | |
10920 | var v = R.affineX.mod(n) | |
ebd8d4e8 | 10921 | |
ab78acc6 IC |
10922 | // 1.4.5 (cont.) Enforce R is not at infinity |
10923 | if (curve.isInfinity(R)) return false | |
10924 | ||
10925 | // 1.4.8 If v = r, output "valid", and if v != r, output "invalid" | |
ebd8d4e8 IC |
10926 | return v.equals(r) |
10927 | } | |
10928 | ||
ab78acc6 IC |
10929 | function verify (curve, hash, signature, Q) { |
10930 | // 1.4.2 H = Hash(M), already done by the user | |
10931 | // 1.4.3 e = H | |
10932 | var e = BigInteger.fromBuffer(hash) | |
10933 | ||
10934 | return verifyRaw(curve, e, signature, Q) | |
10935 | } | |
10936 | ||
ebd8d4e8 IC |
10937 | /** |
10938 | * Recover a public key from a signature. | |
10939 | * | |
10940 | * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public | |
10941 | * Key Recovery Operation". | |
10942 | * | |
10943 | * http://www.secg.org/download/aid-780/sec1-v2.pdf | |
10944 | */ | |
ab78acc6 | 10945 | function recoverPubKey (curve, e, signature, i) { |
ebd8d4e8 IC |
10946 | assert.strictEqual(i & 3, i, 'Recovery param is more than two bits') |
10947 | ||
ab78acc6 IC |
10948 | var n = curve.n |
10949 | var G = curve.G | |
10950 | ||
ebd8d4e8 IC |
10951 | var r = signature.r |
10952 | var s = signature.s | |
10953 | ||
ab78acc6 IC |
10954 | assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value') |
10955 | assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value') | |
10956 | ||
ebd8d4e8 IC |
10957 | // A set LSB signifies that the y-coordinate is odd |
10958 | var isYOdd = i & 1 | |
10959 | ||
10960 | // The more significant bit specifies whether we should use the | |
10961 | // first or second candidate key. | |
10962 | var isSecondKey = i >> 1 | |
10963 | ||
ebd8d4e8 IC |
10964 | // 1.1 Let x = r + jn |
10965 | var x = isSecondKey ? r.add(n) : r | |
10966 | var R = curve.pointFromX(isYOdd, x) | |
10967 | ||
10968 | // 1.4 Check that nR is at infinity | |
10969 | var nR = R.multiply(n) | |
10970 | assert(curve.isInfinity(nR), 'nR is not a valid curve point') | |
10971 | ||
10972 | // Compute -e from e | |
10973 | var eNeg = e.negate().mod(n) | |
10974 | ||
10975 | // 1.6.1 Compute Q = r^-1 (sR - eG) | |
10976 | // Q = r^-1 (sR + -eG) | |
10977 | var rInv = r.modInverse(n) | |
10978 | ||
10979 | var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv) | |
10980 | curve.validate(Q) | |
10981 | ||
10982 | return Q | |
10983 | } | |
10984 | ||
10985 | /** | |
10986 | * Calculate pubkey extraction parameter. | |
10987 | * | |
10988 | * When extracting a pubkey from a signature, we have to | |
10989 | * distinguish four different cases. Rather than putting this | |
10990 | * burden on the verifier, Bitcoin includes a 2-bit value with the | |
10991 | * signature. | |
10992 | * | |
10993 | * This function simply tries all four cases and returns the value | |
10994 | * that resulted in a successful pubkey recovery. | |
10995 | */ | |
ab78acc6 | 10996 | function calcPubKeyRecoveryParam (curve, e, signature, Q) { |
ebd8d4e8 IC |
10997 | for (var i = 0; i < 4; i++) { |
10998 | var Qprime = recoverPubKey(curve, e, signature, i) | |
10999 | ||
11000 | // 1.6.2 Verify Q | |
11001 | if (Qprime.equals(Q)) { | |
11002 | return i | |
11003 | } | |
11004 | } | |
11005 | ||
11006 | throw new Error('Unable to find valid recovery factor') | |
11007 | } | |
11008 | ||
11009 | module.exports = { | |
11010 | calcPubKeyRecoveryParam: calcPubKeyRecoveryParam, | |
11011 | deterministicGenerateK: deterministicGenerateK, | |
11012 | recoverPubKey: recoverPubKey, | |
11013 | sign: sign, | |
11014 | verify: verify, | |
11015 | verifyRaw: verifyRaw | |
11016 | } | |
11017 | ||
ab78acc6 IC |
11018 | }).call(this,require("buffer").Buffer) |
11019 | },{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){ | |
ebd8d4e8 | 11020 | (function (Buffer){ |
ab78acc6 IC |
11021 | var assert = require('assert') |
11022 | var base58check = require('bs58check') | |
11023 | var ecdsa = require('./ecdsa') | |
11024 | var networks = require('./networks') | |
11025 | var randomBytes = require('randombytes') | |
11026 | var typeForce = require('typeforce') | |
ebd8d4e8 | 11027 | |
ab78acc6 IC |
11028 | var BigInteger = require('bigi') |
11029 | var ECPubKey = require('./ecpubkey') | |
ebd8d4e8 | 11030 | |
ab78acc6 IC |
11031 | var ecurve = require('ecurve') |
11032 | var secp256k1 = ecurve.getCurveByName('secp256k1') | |
ebd8d4e8 | 11033 | |
ab78acc6 | 11034 | function ECKey (d, compressed) { |
ebd8d4e8 | 11035 | assert(d.signum() > 0, 'Private key must be greater than 0') |
ab78acc6 | 11036 | assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order') |
ebd8d4e8 | 11037 | |
ab78acc6 | 11038 | var Q = ECKey.curve.G.multiply(d) |
ebd8d4e8 IC |
11039 | |
11040 | this.d = d | |
11041 | this.pub = new ECPubKey(Q, compressed) | |
11042 | } | |
11043 | ||
ab78acc6 IC |
11044 | // Constants |
11045 | ECKey.curve = secp256k1 | |
11046 | ||
ebd8d4e8 | 11047 | // Static constructors |
ab78acc6 | 11048 | ECKey.fromWIF = function (string) { |
ebd8d4e8 IC |
11049 | var payload = base58check.decode(string) |
11050 | var compressed = false | |
11051 | ||
11052 | // Ignore the version byte | |
11053 | payload = payload.slice(1) | |
11054 | ||
11055 | if (payload.length === 33) { | |
11056 | assert.strictEqual(payload[32], 0x01, 'Invalid compression flag') | |
11057 | ||
11058 | // Truncate the compression flag | |
11059 | payload = payload.slice(0, -1) | |
11060 | compressed = true | |
11061 | } | |
11062 | ||
11063 | assert.equal(payload.length, 32, 'Invalid WIF payload length') | |
11064 | ||
11065 | var d = BigInteger.fromBuffer(payload) | |
11066 | return new ECKey(d, compressed) | |
11067 | } | |
11068 | ||
ab78acc6 IC |
11069 | ECKey.makeRandom = function (compressed, rng) { |
11070 | rng = rng || randomBytes | |
ebd8d4e8 IC |
11071 | |
11072 | var buffer = rng(32) | |
ab78acc6 IC |
11073 | typeForce('Buffer', buffer) |
11074 | assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG') | |
ebd8d4e8 IC |
11075 | |
11076 | var d = BigInteger.fromBuffer(buffer) | |
ab78acc6 | 11077 | d = d.mod(ECKey.curve.n) |
ebd8d4e8 IC |
11078 | |
11079 | return new ECKey(d, compressed) | |
11080 | } | |
11081 | ||
11082 | // Export functions | |
ab78acc6 | 11083 | ECKey.prototype.toWIF = function (network) { |
ebd8d4e8 IC |
11084 | network = network || networks.bitcoin |
11085 | ||
11086 | var bufferLen = this.pub.compressed ? 34 : 33 | |
11087 | var buffer = new Buffer(bufferLen) | |
11088 | ||
11089 | buffer.writeUInt8(network.wif, 0) | |
11090 | this.d.toBuffer(32).copy(buffer, 1) | |
11091 | ||
11092 | if (this.pub.compressed) { | |
11093 | buffer.writeUInt8(0x01, 33) | |
11094 | } | |
11095 | ||
11096 | return base58check.encode(buffer) | |
11097 | } | |
11098 | ||
11099 | // Operations | |
ab78acc6 IC |
11100 | ECKey.prototype.sign = function (hash) { |
11101 | return ecdsa.sign(ECKey.curve, hash, this.d) | |
ebd8d4e8 IC |
11102 | } |
11103 | ||
11104 | module.exports = ECKey | |
11105 | ||
ab78acc6 IC |
11106 | }).call(this,require("buffer").Buffer) |
11107 | },{"./ecdsa":59,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"ecurve":49,"randombytes":52,"typeforce":53}],61:[function(require,module,exports){ | |
ebd8d4e8 | 11108 | (function (Buffer){ |
ab78acc6 IC |
11109 | var crypto = require('./crypto') |
11110 | var ecdsa = require('./ecdsa') | |
11111 | var typeForce = require('typeforce') | |
11112 | var networks = require('./networks') | |
ebd8d4e8 | 11113 | |
ab78acc6 | 11114 | var Address = require('./address') |
ebd8d4e8 | 11115 | |
ab78acc6 IC |
11116 | var ecurve = require('ecurve') |
11117 | var secp256k1 = ecurve.getCurveByName('secp256k1') | |
ebd8d4e8 | 11118 | |
ab78acc6 IC |
11119 | function ECPubKey (Q, compressed) { |
11120 | if (compressed === undefined) { | |
11121 | compressed = true | |
11122 | } | |
ebd8d4e8 | 11123 | |
ab78acc6 IC |
11124 | typeForce('Point', Q) |
11125 | typeForce('Boolean', compressed) | |
ebd8d4e8 IC |
11126 | |
11127 | this.compressed = compressed | |
11128 | this.Q = Q | |
11129 | } | |
11130 | ||
ab78acc6 IC |
11131 | // Constants |
11132 | ECPubKey.curve = secp256k1 | |
11133 | ||
ebd8d4e8 | 11134 | // Static constructors |
ab78acc6 IC |
11135 | ECPubKey.fromBuffer = function (buffer) { |
11136 | var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer) | |
ebd8d4e8 IC |
11137 | return new ECPubKey(Q, Q.compressed) |
11138 | } | |
11139 | ||
ab78acc6 | 11140 | ECPubKey.fromHex = function (hex) { |
ebd8d4e8 IC |
11141 | return ECPubKey.fromBuffer(new Buffer(hex, 'hex')) |
11142 | } | |
11143 | ||
11144 | // Operations | |
ab78acc6 | 11145 | ECPubKey.prototype.getAddress = function (network) { |
ebd8d4e8 IC |
11146 | network = network || networks.bitcoin |
11147 | ||
11148 | return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash) | |
11149 | } | |
11150 | ||
ab78acc6 IC |
11151 | ECPubKey.prototype.verify = function (hash, signature) { |
11152 | return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q) | |
ebd8d4e8 IC |
11153 | } |
11154 | ||
11155 | // Export functions | |
ab78acc6 | 11156 | ECPubKey.prototype.toBuffer = function () { |
ebd8d4e8 IC |
11157 | return this.Q.getEncoded(this.compressed) |
11158 | } | |
11159 | ||
ab78acc6 | 11160 | ECPubKey.prototype.toHex = function () { |
ebd8d4e8 IC |
11161 | return this.toBuffer().toString('hex') |
11162 | } | |
11163 | ||
11164 | module.exports = ECPubKey | |
11165 | ||
ab78acc6 IC |
11166 | }).call(this,require("buffer").Buffer) |
11167 | },{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){ | |
ebd8d4e8 | 11168 | (function (Buffer){ |
ab78acc6 IC |
11169 | var assert = require('assert') |
11170 | var typeForce = require('typeforce') | |
11171 | ||
11172 | var BigInteger = require('bigi') | |
11173 | ||
11174 | function ECSignature (r, s) { | |
11175 | typeForce('BigInteger', r) | |
11176 | typeForce('BigInteger', s) | |
ebd8d4e8 | 11177 | |
ebd8d4e8 IC |
11178 | this.r = r |
11179 | this.s = s | |
11180 | } | |
11181 | ||
ab78acc6 | 11182 | ECSignature.parseCompact = function (buffer) { |
ebd8d4e8 IC |
11183 | assert.equal(buffer.length, 65, 'Invalid signature length') |
11184 | var i = buffer.readUInt8(0) - 27 | |
11185 | ||
11186 | // At most 3 bits | |
11187 | assert.equal(i, i & 7, 'Invalid signature parameter') | |
11188 | var compressed = !!(i & 4) | |
11189 | ||
11190 | // Recovery param only | |
11191 | i = i & 3 | |
11192 | ||
11193 | var r = BigInteger.fromBuffer(buffer.slice(1, 33)) | |
11194 | var s = BigInteger.fromBuffer(buffer.slice(33)) | |
11195 | ||
11196 | return { | |
11197 | compressed: compressed, | |
11198 | i: i, | |
11199 | signature: new ECSignature(r, s) | |
11200 | } | |
11201 | } | |
11202 | ||
ab78acc6 | 11203 | ECSignature.fromDER = function (buffer) { |
ebd8d4e8 IC |
11204 | assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence') |
11205 | assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length') | |
11206 | assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer') | |
11207 | ||
11208 | var rLen = buffer.readUInt8(3) | |
11209 | assert(rLen > 0, 'R length is zero') | |
11210 | ||
11211 | var offset = 4 + rLen | |
11212 | assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)') | |
11213 | ||
11214 | var sLen = buffer.readUInt8(offset + 1) | |
11215 | assert(sLen > 0, 'S length is zero') | |
11216 | ||
11217 | var rB = buffer.slice(4, offset) | |
11218 | var sB = buffer.slice(offset + 2) | |
11219 | offset += 2 + sLen | |
11220 | ||
11221 | if (rLen > 1 && rB.readUInt8(0) === 0x00) { | |
11222 | assert(rB.readUInt8(1) & 0x80, 'R value excessively padded') | |
11223 | } | |
11224 | ||
11225 | if (sLen > 1 && sB.readUInt8(0) === 0x00) { | |
11226 | assert(sB.readUInt8(1) & 0x80, 'S value excessively padded') | |
11227 | } | |
11228 | ||
11229 | assert.equal(offset, buffer.length, 'Invalid DER encoding') | |
11230 | var r = BigInteger.fromDERInteger(rB) | |
11231 | var s = BigInteger.fromDERInteger(sB) | |
11232 | ||
11233 | assert(r.signum() >= 0, 'R value is negative') | |
11234 | assert(s.signum() >= 0, 'S value is negative') | |
11235 | ||
11236 | return new ECSignature(r, s) | |
11237 | } | |
11238 | ||
ab78acc6 IC |
11239 | // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed) |
11240 | ECSignature.parseScriptSignature = function (buffer) { | |
ebd8d4e8 IC |
11241 | var hashType = buffer.readUInt8(buffer.length - 1) |
11242 | var hashTypeMod = hashType & ~0x80 | |
11243 | ||
ab78acc6 | 11244 | assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType) |
ebd8d4e8 IC |
11245 | |
11246 | return { | |
11247 | signature: ECSignature.fromDER(buffer.slice(0, -1)), | |
11248 | hashType: hashType | |
11249 | } | |
11250 | } | |
11251 | ||
ab78acc6 IC |
11252 | ECSignature.prototype.toCompact = function (i, compressed) { |
11253 | if (compressed) { | |
11254 | i += 4 | |
11255 | } | |
11256 | ||
ebd8d4e8 IC |
11257 | i += 27 |
11258 | ||
11259 | var buffer = new Buffer(65) | |
11260 | buffer.writeUInt8(i, 0) | |
11261 | ||
11262 | this.r.toBuffer(32).copy(buffer, 1) | |
11263 | this.s.toBuffer(32).copy(buffer, 33) | |
11264 | ||
11265 | return buffer | |
11266 | } | |
11267 | ||
ab78acc6 | 11268 | ECSignature.prototype.toDER = function () { |
ebd8d4e8 IC |
11269 | var rBa = this.r.toDERInteger() |
11270 | var sBa = this.s.toDERInteger() | |
11271 | ||
11272 | var sequence = [] | |
ab78acc6 IC |
11273 | |
11274 | // INTEGER | |
11275 | sequence.push(0x02, rBa.length) | |
ebd8d4e8 IC |
11276 | sequence = sequence.concat(rBa) |
11277 | ||
ab78acc6 IC |
11278 | // INTEGER |
11279 | sequence.push(0x02, sBa.length) | |
ebd8d4e8 IC |
11280 | sequence = sequence.concat(sBa) |
11281 | ||
ab78acc6 IC |
11282 | // SEQUENCE |
11283 | sequence.unshift(0x30, sequence.length) | |
ebd8d4e8 IC |
11284 | |
11285 | return new Buffer(sequence) | |
11286 | } | |
11287 | ||
ab78acc6 IC |
11288 | ECSignature.prototype.toScriptSignature = function (hashType) { |
11289 | var hashTypeMod = hashType & ~0x80 | |
11290 | assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType) | |
11291 | ||
ebd8d4e8 IC |
11292 | var hashTypeBuffer = new Buffer(1) |
11293 | hashTypeBuffer.writeUInt8(hashType, 0) | |
11294 | ||
11295 | return Buffer.concat([this.toDER(), hashTypeBuffer]) | |
11296 | } | |
11297 | ||
11298 | module.exports = ECSignature | |
11299 | ||
ab78acc6 IC |
11300 | }).call(this,require("buffer").Buffer) |
11301 | },{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){ | |
ebd8d4e8 | 11302 | (function (Buffer){ |
ab78acc6 IC |
11303 | var assert = require('assert') |
11304 | var base58check = require('bs58check') | |
11305 | var bcrypto = require('./crypto') | |
11306 | var createHmac = require('create-hmac') | |
11307 | var typeForce = require('typeforce') | |
11308 | var networks = require('./networks') | |
11309 | ||
11310 | var BigInteger = require('bigi') | |
11311 | var ECKey = require('./eckey') | |
11312 | var ECPubKey = require('./ecpubkey') | |
11313 | ||
11314 | var ecurve = require('ecurve') | |
ebd8d4e8 IC |
11315 | var curve = ecurve.getCurveByName('secp256k1') |
11316 | ||
ab78acc6 | 11317 | function findBIP32NetworkByVersion (version) { |
ebd8d4e8 IC |
11318 | for (var name in networks) { |
11319 | var network = networks[name] | |
11320 | ||
ab78acc6 IC |
11321 | if (version === network.bip32.private || version === network.bip32.public) { |
11322 | return network | |
ebd8d4e8 IC |
11323 | } |
11324 | } | |
11325 | ||
ab78acc6 | 11326 | assert(false, 'Could not find network for ' + version.toString(16)) |
ebd8d4e8 IC |
11327 | } |
11328 | ||
ab78acc6 | 11329 | function HDNode (K, chainCode, network) { |
ebd8d4e8 IC |
11330 | network = network || networks.bitcoin |
11331 | ||
ab78acc6 IC |
11332 | typeForce('Buffer', chainCode) |
11333 | ||
11334 | assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length) | |
ebd8d4e8 IC |
11335 | assert(network.bip32, 'Unknown BIP32 constants for network') |
11336 | ||
11337 | this.chainCode = chainCode | |
11338 | this.depth = 0 | |
11339 | this.index = 0 | |
ab78acc6 | 11340 | this.parentFingerprint = 0x00000000 |
ebd8d4e8 IC |
11341 | this.network = network |
11342 | ||
11343 | if (K instanceof BigInteger) { | |
11344 | this.privKey = new ECKey(K, true) | |
11345 | this.pubKey = this.privKey.pub | |
ab78acc6 IC |
11346 | } else if (K instanceof ECKey) { |
11347 | assert(K.pub.compressed, 'ECKey must be compressed') | |
11348 | this.privKey = K | |
11349 | this.pubKey = K.pub | |
11350 | } else if (K instanceof ECPubKey) { | |
11351 | assert(K.compressed, 'ECPubKey must be compressed') | |
11352 | this.pubKey = K | |
ebd8d4e8 IC |
11353 | } else { |
11354 | this.pubKey = new ECPubKey(K, true) | |
11355 | } | |
11356 | } | |
11357 | ||
11358 | HDNode.MASTER_SECRET = new Buffer('Bitcoin seed') | |
11359 | HDNode.HIGHEST_BIT = 0x80000000 | |
11360 | HDNode.LENGTH = 78 | |
11361 | ||
ab78acc6 IC |
11362 | HDNode.fromSeedBuffer = function (seed, network) { |
11363 | typeForce('Buffer', seed) | |
11364 | ||
11365 | assert(seed.length >= 16, 'Seed should be at least 128 bits') | |
11366 | assert(seed.length <= 64, 'Seed should be at most 512 bits') | |
11367 | ||
11368 | var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest() | |
ebd8d4e8 IC |
11369 | var IL = I.slice(0, 32) |
11370 | var IR = I.slice(32) | |
11371 | ||
11372 | // In case IL is 0 or >= n, the master key is invalid | |
11373 | // This is handled by `new ECKey` in the HDNode constructor | |
11374 | var pIL = BigInteger.fromBuffer(IL) | |
11375 | ||
11376 | return new HDNode(pIL, IR, network) | |
11377 | } | |
11378 | ||
ab78acc6 | 11379 | HDNode.fromSeedHex = function (hex, network) { |
ebd8d4e8 IC |
11380 | return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network) |
11381 | } | |
11382 | ||
ab78acc6 IC |
11383 | HDNode.fromBase58 = function (string, network) { |
11384 | return HDNode.fromBuffer(base58check.decode(string), network, true) | |
ebd8d4e8 IC |
11385 | } |
11386 | ||
ab78acc6 IC |
11387 | // FIXME: remove in 2.x.y |
11388 | HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) { | |
11389 | if (!__ignoreDeprecation) { | |
11390 | console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead') | |
11391 | } | |
11392 | ||
ebd8d4e8 IC |
11393 | assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length') |
11394 | ||
11395 | // 4 byte: version bytes | |
11396 | var version = buffer.readUInt32BE(0) | |
ab78acc6 IC |
11397 | |
11398 | if (network) { | |
11399 | assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match") | |
11400 | ||
11401 | // auto-detect | |
11402 | } else { | |
11403 | network = findBIP32NetworkByVersion(version) | |
11404 | } | |
ebd8d4e8 IC |
11405 | |
11406 | // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ... | |
11407 | var depth = buffer.readUInt8(4) | |
11408 | ||
11409 | // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key) | |
11410 | var parentFingerprint = buffer.readUInt32BE(5) | |
11411 | if (depth === 0) { | |
11412 | assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint') | |
11413 | } | |
11414 | ||
11415 | // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized. | |
11416 | // This is encoded in MSB order. (0x00000000 if master key) | |
11417 | var index = buffer.readUInt32BE(9) | |
11418 | assert(depth > 0 || index === 0, 'Invalid index') | |
11419 | ||
11420 | // 32 bytes: the chain code | |
11421 | var chainCode = buffer.slice(13, 45) | |
ab78acc6 | 11422 | var data, hd |
ebd8d4e8 IC |
11423 | |
11424 | // 33 bytes: private key data (0x00 + k) | |
ab78acc6 | 11425 | if (version === network.bip32.private) { |
ebd8d4e8 | 11426 | assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key') |
ab78acc6 | 11427 | data = buffer.slice(46, 78) |
ebd8d4e8 | 11428 | var d = BigInteger.fromBuffer(data) |
ab78acc6 | 11429 | hd = new HDNode(d, chainCode, network) |
ebd8d4e8 IC |
11430 | |
11431 | // 33 bytes: public key data (0x02 + X or 0x03 + X) | |
11432 | } else { | |
ab78acc6 | 11433 | data = buffer.slice(45, 78) |
ebd8d4e8 IC |
11434 | var Q = ecurve.Point.decodeFrom(curve, data) |
11435 | assert.equal(Q.compressed, true, 'Invalid public key') | |
11436 | ||
11437 | // Verify that the X coordinate in the public point corresponds to a point on the curve. | |
11438 | // If not, the extended public key is invalid. | |
11439 | curve.validate(Q) | |
11440 | ||
ab78acc6 | 11441 | hd = new HDNode(Q, chainCode, network) |
ebd8d4e8 IC |
11442 | } |
11443 | ||
11444 | hd.depth = depth | |
11445 | hd.index = index | |
11446 | hd.parentFingerprint = parentFingerprint | |
11447 | ||
11448 | return hd | |
11449 | } | |
11450 | ||
ab78acc6 IC |
11451 | // FIXME: remove in 2.x.y |
11452 | HDNode.fromHex = function (hex, network) { | |
11453 | return HDNode.fromBuffer(new Buffer(hex, 'hex'), network) | |
ebd8d4e8 IC |
11454 | } |
11455 | ||
ab78acc6 IC |
11456 | HDNode.prototype.getIdentifier = function () { |
11457 | return bcrypto.hash160(this.pubKey.toBuffer()) | |
ebd8d4e8 IC |
11458 | } |
11459 | ||
ab78acc6 | 11460 | HDNode.prototype.getFingerprint = function () { |
ebd8d4e8 IC |
11461 | return this.getIdentifier().slice(0, 4) |
11462 | } | |
11463 | ||
ab78acc6 | 11464 | HDNode.prototype.getAddress = function () { |
ebd8d4e8 IC |
11465 | return this.pubKey.getAddress(this.network) |
11466 | } | |
11467 | ||
ab78acc6 IC |
11468 | HDNode.prototype.neutered = function () { |
11469 | var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network) | |
11470 | neutered.depth = this.depth | |
11471 | neutered.index = this.index | |
11472 | neutered.parentFingerprint = this.parentFingerprint | |
11473 | ||
11474 | return neutered | |
11475 | } | |
11476 | ||
11477 | HDNode.prototype.toBase58 = function (isPrivate) { | |
11478 | return base58check.encode(this.toBuffer(isPrivate, true)) | |
ebd8d4e8 IC |
11479 | } |
11480 | ||
ab78acc6 IC |
11481 | // FIXME: remove in 2.x.y |
11482 | HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) { | |
11483 | if (isPrivate === undefined) { | |
11484 | isPrivate = !!this.privKey | |
11485 | ||
11486 | // FIXME: remove in 2.x.y | |
11487 | } else { | |
11488 | console.warn('isPrivate flag is deprecated, please use the .neutered() method instead') | |
11489 | } | |
11490 | ||
11491 | if (!__ignoreDeprecation) { | |
11492 | console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead') | |
11493 | } | |
ebd8d4e8 IC |
11494 | |
11495 | // Version | |
11496 | var version = isPrivate ? this.network.bip32.private : this.network.bip32.public | |
11497 | var buffer = new Buffer(HDNode.LENGTH) | |
11498 | ||
11499 | // 4 bytes: version bytes | |
11500 | buffer.writeUInt32BE(version, 0) | |
11501 | ||
11502 | // Depth | |
11503 | // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, .... | |
11504 | buffer.writeUInt8(this.depth, 4) | |
11505 | ||
11506 | // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key) | |
ab78acc6 | 11507 | buffer.writeUInt32BE(this.parentFingerprint, 5) |
ebd8d4e8 IC |
11508 | |
11509 | // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized. | |
11510 | // This is encoded in Big endian. (0x00000000 if master key) | |
11511 | buffer.writeUInt32BE(this.index, 9) | |
11512 | ||
11513 | // 32 bytes: the chain code | |
11514 | this.chainCode.copy(buffer, 13) | |
11515 | ||
11516 | // 33 bytes: the public key or private key data | |
11517 | if (isPrivate) { | |
ab78acc6 | 11518 | // FIXME: remove in 2.x.y |
ebd8d4e8 IC |
11519 | assert(this.privKey, 'Missing private key') |
11520 | ||
11521 | // 0x00 + k for private keys | |
11522 | buffer.writeUInt8(0, 45) | |
11523 | this.privKey.d.toBuffer(32).copy(buffer, 46) | |
11524 | } else { | |
ebd8d4e8 IC |
11525 | // X9.62 encoding for public keys |
11526 | this.pubKey.toBuffer().copy(buffer, 45) | |
11527 | } | |
11528 | ||
11529 | return buffer | |
11530 | } | |
11531 | ||
ab78acc6 IC |
11532 | // FIXME: remove in 2.x.y |
11533 | HDNode.prototype.toHex = function (isPrivate) { | |
ebd8d4e8 IC |
11534 | return this.toBuffer(isPrivate).toString('hex') |
11535 | } | |
11536 | ||
11537 | // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions | |
ab78acc6 | 11538 | HDNode.prototype.derive = function (index) { |
ebd8d4e8 IC |
11539 | var isHardened = index >= HDNode.HIGHEST_BIT |
11540 | var indexBuffer = new Buffer(4) | |
11541 | indexBuffer.writeUInt32BE(index, 0) | |
11542 | ||
11543 | var data | |
11544 | ||
11545 | // Hardened child | |
11546 | if (isHardened) { | |
11547 | assert(this.privKey, 'Could not derive hardened child key') | |
11548 | ||
11549 | // data = 0x00 || ser256(kpar) || ser32(index) | |
11550 | data = Buffer.concat([ | |
11551 | this.privKey.d.toBuffer(33), | |
11552 | indexBuffer | |
11553 | ]) | |
11554 | ||
11555 | // Normal child | |
11556 | } else { | |
11557 | // data = serP(point(kpar)) || ser32(index) | |
11558 | // = serP(Kpar) || ser32(index) | |
11559 | data = Buffer.concat([ | |
11560 | this.pubKey.toBuffer(), | |
11561 | indexBuffer | |
11562 | ]) | |
11563 | } | |
11564 | ||
ab78acc6 | 11565 | var I = createHmac('sha512', this.chainCode).update(data).digest() |
ebd8d4e8 IC |
11566 | var IL = I.slice(0, 32) |
11567 | var IR = I.slice(32) | |
11568 | ||
11569 | var pIL = BigInteger.fromBuffer(IL) | |
11570 | ||
11571 | // In case parse256(IL) >= n, proceed with the next value for i | |
11572 | if (pIL.compareTo(curve.n) >= 0) { | |
11573 | return this.derive(index + 1) | |
11574 | } | |
11575 | ||
11576 | // Private parent key -> private child key | |
11577 | var hd | |
11578 | if (this.privKey) { | |
11579 | // ki = parse256(IL) + kpar (mod n) | |
11580 | var ki = pIL.add(this.privKey.d).mod(curve.n) | |
11581 | ||
11582 | // In case ki == 0, proceed with the next value for i | |
11583 | if (ki.signum() === 0) { | |
11584 | return this.derive(index + 1) | |
11585 | } | |
11586 | ||
11587 | hd = new HDNode(ki, IR, this.network) | |
11588 | ||
11589 | // Public parent key -> public child key | |
11590 | } else { | |
11591 | // Ki = point(parse256(IL)) + Kpar | |
11592 | // = G*IL + Kpar | |
11593 | var Ki = curve.G.multiply(pIL).add(this.pubKey.Q) | |
11594 | ||
11595 | // In case Ki is the point at infinity, proceed with the next value for i | |
11596 | if (curve.isInfinity(Ki)) { | |
11597 | return this.derive(index + 1) | |
11598 | } | |
11599 | ||
11600 | hd = new HDNode(Ki, IR, this.network) | |
11601 | } | |
11602 | ||
11603 | hd.depth = this.depth + 1 | |
11604 | hd.index = index | |
11605 | hd.parentFingerprint = this.getFingerprint().readUInt32BE(0) | |
11606 | ||
11607 | return hd | |
11608 | } | |
11609 | ||
ab78acc6 | 11610 | HDNode.prototype.deriveHardened = function (index) { |
ebd8d4e8 IC |
11611 | // Only derives hardened private keys by default |
11612 | return this.derive(index + HDNode.HIGHEST_BIT) | |
11613 | } | |
11614 | ||
11615 | HDNode.prototype.toString = HDNode.prototype.toBase58 | |
11616 | ||
11617 | module.exports = HDNode | |
11618 | ||
ab78acc6 IC |
11619 | }).call(this,require("buffer").Buffer) |
11620 | },{"./crypto":58,"./eckey":60,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"create-hmac":45,"ecurve":49,"typeforce":53}],64:[function(require,module,exports){ | |
ebd8d4e8 | 11621 | module.exports = { |
ab78acc6 IC |
11622 | Address: require('./address'), |
11623 | base58check: require('./base58check'), | |
11624 | Block: require('./block'), | |
11625 | bufferutils: require('./bufferutils'), | |
11626 | crypto: require('./crypto'), | |
11627 | ecdsa: require('./ecdsa'), | |
11628 | ECKey: require('./eckey'), | |
11629 | ECPubKey: require('./ecpubkey'), | |
11630 | ECSignature: require('./ecsignature'), | |
11631 | Message: require('./message'), | |
11632 | opcodes: require('./opcodes'), | |
11633 | HDNode: require('./hdnode'), | |
11634 | Script: require('./script'), | |
11635 | scripts: require('./scripts'), | |
11636 | Transaction: require('./transaction'), | |
11637 | TransactionBuilder: require('./transaction_builder'), | |
11638 | networks: require('./networks'), | |
11639 | Wallet: require('./wallet') | |
11640 | } | |
11641 | ||
11642 | },{"./address":54,"./base58check":55,"./block":56,"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./eckey":60,"./ecpubkey":61,"./ecsignature":62,"./hdnode":63,"./message":65,"./networks":66,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"./transaction_builder":71,"./wallet":72}],65:[function(require,module,exports){ | |
ebd8d4e8 | 11643 | (function (Buffer){ |
ab78acc6 IC |
11644 | var bufferutils = require('./bufferutils') |
11645 | var crypto = require('./crypto') | |
11646 | var ecdsa = require('./ecdsa') | |
11647 | var networks = require('./networks') | |
11648 | ||
11649 | var BigInteger = require('bigi') | |
11650 | var ECPubKey = require('./ecpubkey') | |
11651 | var ECSignature = require('./ecsignature') | |
11652 | ||
11653 | var ecurve = require('ecurve') | |
ebd8d4e8 IC |
11654 | var ecparams = ecurve.getCurveByName('secp256k1') |
11655 | ||
ab78acc6 | 11656 | function magicHash (message, network) { |
ebd8d4e8 IC |
11657 | var magicPrefix = new Buffer(network.magicPrefix) |
11658 | var messageBuffer = new Buffer(message) | |
ab78acc6 | 11659 | var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length) |
ebd8d4e8 IC |
11660 | |
11661 | var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer]) | |
11662 | return crypto.hash256(buffer) | |
11663 | } | |
11664 | ||
ab78acc6 | 11665 | function sign (privKey, message, network) { |
ebd8d4e8 IC |
11666 | network = network || networks.bitcoin |
11667 | ||
11668 | var hash = magicHash(message, network) | |
11669 | var signature = privKey.sign(hash) | |
11670 | var e = BigInteger.fromBuffer(hash) | |
11671 | var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q) | |
11672 | ||
11673 | return signature.toCompact(i, privKey.pub.compressed) | |
11674 | } | |
11675 | ||
11676 | // TODO: network could be implied from address | |
ab78acc6 IC |
11677 | function verify (address, signature, message, network) { |
11678 | if (!Buffer.isBuffer(signature)) { | |
11679 | signature = new Buffer(signature, 'base64') | |
ebd8d4e8 | 11680 | } |
ab78acc6 | 11681 | |
ebd8d4e8 IC |
11682 | network = network || networks.bitcoin |
11683 | ||
11684 | var hash = magicHash(message, network) | |
ab78acc6 | 11685 | var parsed = ECSignature.parseCompact(signature) |
ebd8d4e8 IC |
11686 | var e = BigInteger.fromBuffer(hash) |
11687 | var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i) | |
11688 | ||
11689 | var pubKey = new ECPubKey(Q, parsed.compressed) | |
ab78acc6 | 11690 | return pubKey.getAddress(network).toString() === address.toString() |
ebd8d4e8 IC |
11691 | } |
11692 | ||
11693 | module.exports = { | |
11694 | magicHash: magicHash, | |
11695 | sign: sign, | |
11696 | verify: verify | |
11697 | } | |
11698 | ||
ab78acc6 IC |
11699 | }).call(this,require("buffer").Buffer) |
11700 | },{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){ | |
ebd8d4e8 IC |
11701 | // https://en.bitcoin.it/wiki/List_of_address_prefixes |
11702 | // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731 | |
11703 | ||
11704 | var networks = { | |
11705 | bitcoin: { | |
11706 | magicPrefix: '\x18Bitcoin Signed Message:\n', | |
11707 | bip32: { | |
11708 | public: 0x0488b21e, | |
11709 | private: 0x0488ade4 | |
11710 | }, | |
11711 | pubKeyHash: 0x00, | |
11712 | scriptHash: 0x05, | |
11713 | wif: 0x80, | |
11714 | dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162 | |
11715 | feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53 | |
11716 | estimateFee: estimateFee('bitcoin') | |
a9385c1b | 11717 | }, |
ab78acc6 IC |
11718 | testnet: { |
11719 | magicPrefix: '\x18Bitcoin Signed Message:\n', | |
a9385c1b | 11720 | bip32: { |
ab78acc6 IC |
11721 | public: 0x043587cf, |
11722 | private: 0x04358394 | |
a9385c1b | 11723 | }, |
ab78acc6 IC |
11724 | pubKeyHash: 0x6f, |
11725 | scriptHash: 0xc4, | |
11726 | wif: 0xef, | |
11727 | dustThreshold: 546, | |
cb325c58 | 11728 | feePerKb: 10000, |
ab78acc6 | 11729 | estimateFee: estimateFee('testnet') |
a9385c1b | 11730 | }, |
ab78acc6 IC |
11731 | litecoin: { |
11732 | magicPrefix: '\x19Litecoin Signed Message:\n', | |
a9385c1b | 11733 | bip32: { |
ab78acc6 IC |
11734 | public: 0x019da462, |
11735 | private: 0x019d9cfe | |
a9385c1b | 11736 | }, |
ab78acc6 IC |
11737 | pubKeyHash: 0x30, |
11738 | scriptHash: 0x05, | |
11739 | wif: 0xb0, | |
11740 | dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365 | |
11741 | dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53 | |
11742 | feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56 | |
11743 | estimateFee: estimateFee('litecoin') | |
ebd8d4e8 IC |
11744 | }, |
11745 | dogecoin: { | |
11746 | magicPrefix: '\x19Dogecoin Signed Message:\n', | |
11747 | bip32: { | |
11748 | public: 0x02facafd, | |
11749 | private: 0x02fac398 | |
11750 | }, | |
11751 | pubKeyHash: 0x1e, | |
11752 | scriptHash: 0x16, | |
11753 | wif: 0x9e, | |
11754 | dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160 | |
11755 | dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62 | |
11756 | feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58 | |
11757 | estimateFee: estimateFee('dogecoin') | |
11758 | }, | |
ab78acc6 IC |
11759 | viacoin: { |
11760 | magicPrefix: '\x18Viacoin Signed Message:\n', | |
ebd8d4e8 | 11761 | bip32: { |
ab78acc6 IC |
11762 | public: 0x0488b21e, |
11763 | private: 0x0488ade4 | |
ebd8d4e8 | 11764 | }, |
ab78acc6 IC |
11765 | pubKeyHash: 0x47, |
11766 | scriptHash: 0x21, | |
11767 | wif: 0xc7, | |
11768 | dustThreshold: 560, | |
11769 | dustSoftThreshold: 100000, | |
11770 | feePerKb: 100000, // | |
11771 | estimateFee: estimateFee('viacoin') | |
ebd8d4e8 | 11772 | }, |
ab78acc6 IC |
11773 | viacointestnet: { |
11774 | magicPrefix: '\x18Viacoin Signed Message:\n', | |
ebd8d4e8 IC |
11775 | bip32: { |
11776 | public: 0x043587cf, | |
11777 | private: 0x04358394 | |
11778 | }, | |
ab78acc6 | 11779 | pubKeyHash: 0x7f, |
ebd8d4e8 | 11780 | scriptHash: 0xc4, |
ab78acc6 IC |
11781 | wif: 0xff, |
11782 | dustThreshold: 560, | |
11783 | dustSoftThreshold: 100000, | |
11784 | feePerKb: 100000, | |
11785 | estimateFee: estimateFee('viacointestnet') | |
11786 | }, | |
11787 | gamerscoin: { | |
11788 | magicPrefix: '\x19Gamerscoin Signed Message:\n', | |
11789 | bip32: { | |
11790 | public: 0x019da462, | |
11791 | private: 0x019d9cfe | |
11792 | }, | |
11793 | pubKeyHash: 0x26, | |
11794 | scriptHash: 0x05, | |
11795 | wif: 0xA6, | |
11796 | dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363 | |
11797 | dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51 | |
11798 | feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54 | |
11799 | estimateFee: estimateFee('gamerscoin') | |
11800 | }, | |
11801 | jumbucks: { | |
11802 | magicPrefix: '\x19Jumbucks Signed Message:\n', | |
11803 | bip32: { | |
11804 | public: 0x037a689a, | |
11805 | private: 0x037a6460 | |
11806 | }, | |
11807 | pubKeyHash: 0x2b, | |
11808 | scriptHash: 0x05, | |
11809 | wif: 0xab, | |
11810 | dustThreshold: 0, | |
11811 | dustSoftThreshold: 10000, | |
ebd8d4e8 | 11812 | feePerKb: 10000, |
ab78acc6 IC |
11813 | estimateFee: estimateFee('jumbucks') |
11814 | }, | |
11815 | zetacoin: { | |
11816 | magicPrefix: '\x18Zetacoin Signed Message:\n', | |
11817 | bip32: { | |
11818 | public: 0x0488b21e, | |
11819 | private: 0x0488ade4 | |
11820 | }, | |
11821 | pubKeyHash: 0x50, | |
11822 | scriptHash: 0x09, | |
11823 | wif: 0xe0, | |
11824 | dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159 | |
11825 | feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54 | |
11826 | estimateFee: estimateFee('zetacoin') | |
ebd8d4e8 IC |
11827 | } |
11828 | } | |
11829 | ||
ab78acc6 IC |
11830 | function estimateFee (type) { |
11831 | return function (tx) { | |
ebd8d4e8 IC |
11832 | var network = networks[type] |
11833 | var baseFee = network.feePerKb | |
11834 | var byteSize = tx.toBuffer().length | |
11835 | ||
11836 | var fee = baseFee * Math.ceil(byteSize / 1000) | |
ab78acc6 | 11837 | if (network.dustSoftThreshold === undefined) return fee |
ebd8d4e8 | 11838 | |
ab78acc6 | 11839 | tx.outs.forEach(function (e) { |
ebd8d4e8 IC |
11840 | if (e.value < network.dustSoftThreshold) { |
11841 | fee += baseFee | |
11842 | } | |
11843 | }) | |
11844 | ||
11845 | return fee | |
11846 | } | |
11847 | } | |
11848 | ||
11849 | module.exports = networks | |
11850 | ||
ab78acc6 | 11851 | },{}],67:[function(require,module,exports){ |
ebd8d4e8 IC |
11852 | module.exports = { |
11853 | // push value | |
ab78acc6 IC |
11854 | OP_FALSE: 0, |
11855 | OP_0: 0, | |
11856 | OP_PUSHDATA1: 76, | |
11857 | OP_PUSHDATA2: 77, | |
11858 | OP_PUSHDATA4: 78, | |
11859 | OP_1NEGATE: 79, | |
11860 | OP_RESERVED: 80, | |
11861 | OP_1: 81, | |
11862 | OP_TRUE: 81, | |
11863 | OP_2: 82, | |
11864 | OP_3: 83, | |
11865 | OP_4: 84, | |
11866 | OP_5: 85, | |
11867 | OP_6: 86, | |
11868 | OP_7: 87, | |
11869 | OP_8: 88, | |
11870 | OP_9: 89, | |
11871 | OP_10: 90, | |
11872 | OP_11: 91, | |
11873 | OP_12: 92, | |
11874 | OP_13: 93, | |
11875 | OP_14: 94, | |
11876 | OP_15: 95, | |
11877 | OP_16: 96, | |
ebd8d4e8 IC |
11878 | |
11879 | // control | |
ab78acc6 IC |
11880 | OP_NOP: 97, |
11881 | OP_VER: 98, | |
11882 | OP_IF: 99, | |
11883 | OP_NOTIF: 100, | |
11884 | OP_VERIF: 101, | |
11885 | OP_VERNOTIF: 102, | |
11886 | OP_ELSE: 103, | |
11887 | OP_ENDIF: 104, | |
11888 | OP_VERIFY: 105, | |
11889 | OP_RETURN: 106, | |
ebd8d4e8 IC |
11890 | |
11891 | // stack ops | |
ab78acc6 IC |
11892 | OP_TOALTSTACK: 107, |
11893 | OP_FROMALTSTACK: 108, | |
11894 | OP_2DROP: 109, | |
11895 | OP_2DUP: 110, | |
11896 | OP_3DUP: 111, | |
11897 | OP_2OVER: 112, | |
11898 | OP_2ROT: 113, | |
11899 | OP_2SWAP: 114, | |
11900 | OP_IFDUP: 115, | |
11901 | OP_DEPTH: 116, | |
11902 | OP_DROP: 117, | |
11903 | OP_DUP: 118, | |
11904 | OP_NIP: 119, | |
11905 | OP_OVER: 120, | |
11906 | OP_PICK: 121, | |
11907 | OP_ROLL: 122, | |
11908 | OP_ROT: 123, | |
11909 | OP_SWAP: 124, | |
11910 | OP_TUCK: 125, | |
ebd8d4e8 IC |
11911 | |
11912 | // splice ops | |
ab78acc6 IC |
11913 | OP_CAT: 126, |
11914 | OP_SUBSTR: 127, | |
11915 | OP_LEFT: 128, | |
11916 | OP_RIGHT: 129, | |
11917 | OP_SIZE: 130, | |
ebd8d4e8 IC |
11918 | |
11919 | // bit logic | |
ab78acc6 IC |
11920 | OP_INVERT: 131, |
11921 | OP_AND: 132, | |
11922 | OP_OR: 133, | |
11923 | OP_XOR: 134, | |
11924 | OP_EQUAL: 135, | |
11925 | OP_EQUALVERIFY: 136, | |
11926 | OP_RESERVED1: 137, | |
11927 | OP_RESERVED2: 138, | |
ebd8d4e8 IC |
11928 | |
11929 | // numeric | |
ab78acc6 IC |
11930 | OP_1ADD: 139, |
11931 | OP_1SUB: 140, | |
11932 | OP_2MUL: 141, | |
11933 | OP_2DIV: 142, | |
11934 | OP_NEGATE: 143, | |
11935 | OP_ABS: 144, | |
11936 | OP_NOT: 145, | |
11937 | OP_0NOTEQUAL: 146, | |
11938 | ||
11939 | OP_ADD: 147, | |
11940 | OP_SUB: 148, | |
11941 | OP_MUL: 149, | |
11942 | OP_DIV: 150, | |
11943 | OP_MOD: 151, | |
11944 | OP_LSHIFT: 152, | |
11945 | OP_RSHIFT: 153, | |
11946 | ||
11947 | OP_BOOLAND: 154, | |
11948 | OP_BOOLOR: 155, | |
11949 | OP_NUMEQUAL: 156, | |
11950 | OP_NUMEQUALVERIFY: 157, | |
11951 | OP_NUMNOTEQUAL: 158, | |
11952 | OP_LESSTHAN: 159, | |
11953 | OP_GREATERTHAN: 160, | |
11954 | OP_LESSTHANOREQUAL: 161, | |
11955 | OP_GREATERTHANOREQUAL: 162, | |
11956 | OP_MIN: 163, | |
11957 | OP_MAX: 164, | |
11958 | ||
11959 | OP_WITHIN: 165, | |
ebd8d4e8 IC |
11960 | |
11961 | // crypto | |
ab78acc6 IC |
11962 | OP_RIPEMD160: 166, |
11963 | OP_SHA1: 167, | |
11964 | OP_SHA256: 168, | |
11965 | OP_HASH160: 169, | |
11966 | OP_HASH256: 170, | |
11967 | OP_CODESEPARATOR: 171, | |
11968 | OP_CHECKSIG: 172, | |
11969 | OP_CHECKSIGVERIFY: 173, | |
11970 | OP_CHECKMULTISIG: 174, | |
11971 | OP_CHECKMULTISIGVERIFY: 175, | |
ebd8d4e8 IC |
11972 | |
11973 | // expansion | |
ab78acc6 IC |
11974 | OP_NOP1: 176, |
11975 | OP_NOP2: 177, | |
11976 | OP_NOP3: 178, | |
11977 | OP_NOP4: 179, | |
11978 | OP_NOP5: 180, | |
11979 | OP_NOP6: 181, | |
11980 | OP_NOP7: 182, | |
11981 | OP_NOP8: 183, | |
11982 | OP_NOP9: 184, | |
11983 | OP_NOP10: 185, | |
ebd8d4e8 IC |
11984 | |
11985 | // template matching params | |
ab78acc6 IC |
11986 | OP_PUBKEYHASH: 253, |
11987 | OP_PUBKEY: 254, | |
11988 | OP_INVALIDOPCODE: 255 | |
ebd8d4e8 IC |
11989 | } |
11990 | ||
ab78acc6 | 11991 | },{}],68:[function(require,module,exports){ |
ebd8d4e8 | 11992 | (function (Buffer){ |
ab78acc6 IC |
11993 | var assert = require('assert') |
11994 | var bufferutils = require('./bufferutils') | |
11995 | var crypto = require('./crypto') | |
11996 | var typeForce = require('typeforce') | |
11997 | var opcodes = require('./opcodes') | |
ebd8d4e8 | 11998 | |
ab78acc6 IC |
11999 | function Script (buffer, chunks) { |
12000 | typeForce('Buffer', buffer) | |
12001 | typeForce('Array', chunks) | |
ebd8d4e8 IC |
12002 | |
12003 | this.buffer = buffer | |
12004 | this.chunks = chunks | |
12005 | } | |
12006 | ||
ab78acc6 | 12007 | Script.fromASM = function (asm) { |
ebd8d4e8 | 12008 | var strChunks = asm.split(' ') |
ab78acc6 IC |
12009 | var chunks = strChunks.map(function (strChunk) { |
12010 | // opcode | |
ebd8d4e8 IC |
12011 | if (strChunk in opcodes) { |
12012 | return opcodes[strChunk] | |
12013 | ||
ab78acc6 | 12014 | // data chunk |
ebd8d4e8 IC |
12015 | } else { |
12016 | return new Buffer(strChunk, 'hex') | |
12017 | } | |
12018 | }) | |
12019 | ||
12020 | return Script.fromChunks(chunks) | |
12021 | } | |
12022 | ||
ab78acc6 | 12023 | Script.fromBuffer = function (buffer) { |
ebd8d4e8 | 12024 | var chunks = [] |
ebd8d4e8 IC |
12025 | var i = 0 |
12026 | ||
12027 | while (i < buffer.length) { | |
12028 | var opcode = buffer.readUInt8(i) | |
12029 | ||
ab78acc6 | 12030 | // data chunk |
ebd8d4e8 IC |
12031 | if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) { |
12032 | var d = bufferutils.readPushDataInt(buffer, i) | |
ab78acc6 IC |
12033 | |
12034 | // did reading a pushDataInt fail? return non-chunked script | |
12035 | if (d === null) return new Script(buffer, []) | |
ebd8d4e8 IC |
12036 | i += d.size |
12037 | ||
ab78acc6 IC |
12038 | // attempt to read too much data? |
12039 | if (i + d.number > buffer.length) return new Script(buffer, []) | |
12040 | ||
ebd8d4e8 IC |
12041 | var data = buffer.slice(i, i + d.number) |
12042 | i += d.number | |
12043 | ||
12044 | chunks.push(data) | |
12045 | ||
ab78acc6 | 12046 | // opcode |
ebd8d4e8 IC |
12047 | } else { |
12048 | chunks.push(opcode) | |
12049 | ||
12050 | i += 1 | |
12051 | } | |
12052 | } | |
12053 | ||
12054 | return new Script(buffer, chunks) | |
12055 | } | |
12056 | ||
ab78acc6 IC |
12057 | Script.fromChunks = function (chunks) { |
12058 | typeForce('Array', chunks) | |
ebd8d4e8 | 12059 | |
ab78acc6 IC |
12060 | var bufferSize = chunks.reduce(function (accum, chunk) { |
12061 | // data chunk | |
ebd8d4e8 IC |
12062 | if (Buffer.isBuffer(chunk)) { |
12063 | return accum + bufferutils.pushDataSize(chunk.length) + chunk.length | |
12064 | } | |
12065 | ||
ab78acc6 | 12066 | // opcode |
ebd8d4e8 IC |
12067 | return accum + 1 |
12068 | }, 0.0) | |
12069 | ||
12070 | var buffer = new Buffer(bufferSize) | |
12071 | var offset = 0 | |
12072 | ||
ab78acc6 IC |
12073 | chunks.forEach(function (chunk) { |
12074 | // data chunk | |
ebd8d4e8 IC |
12075 | if (Buffer.isBuffer(chunk)) { |
12076 | offset += bufferutils.writePushDataInt(buffer, chunk.length, offset) | |
12077 | ||
12078 | chunk.copy(buffer, offset) | |
12079 | offset += chunk.length | |
12080 | ||
ab78acc6 | 12081 | // opcode |
ebd8d4e8 IC |
12082 | } else { |
12083 | buffer.writeUInt8(chunk, offset) | |
12084 | offset += 1 | |
12085 | } | |
12086 | }) | |
12087 | ||
12088 | assert.equal(offset, buffer.length, 'Could not decode chunks') | |
12089 | return new Script(buffer, chunks) | |
12090 | } | |
12091 | ||
ab78acc6 | 12092 | Script.fromHex = function (hex) { |
ebd8d4e8 IC |
12093 | return Script.fromBuffer(new Buffer(hex, 'hex')) |
12094 | } | |
12095 | ||
ebd8d4e8 IC |
12096 | Script.EMPTY = Script.fromChunks([]) |
12097 | ||
ab78acc6 | 12098 | Script.prototype.getHash = function () { |
ebd8d4e8 IC |
12099 | return crypto.hash160(this.buffer) |
12100 | } | |
12101 | ||
12102 | // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare... | |
ab78acc6 IC |
12103 | Script.prototype.without = function (needle) { |
12104 | return Script.fromChunks(this.chunks.filter(function (op) { | |
ebd8d4e8 IC |
12105 | return op !== needle |
12106 | })) | |
12107 | } | |
12108 | ||
ebd8d4e8 IC |
12109 | var reverseOps = [] |
12110 | for (var op in opcodes) { | |
12111 | var code = opcodes[op] | |
12112 | reverseOps[code] = op | |
12113 | } | |
12114 | ||
ab78acc6 IC |
12115 | Script.prototype.toASM = function () { |
12116 | return this.chunks.map(function (chunk) { | |
12117 | // data chunk | |
ebd8d4e8 IC |
12118 | if (Buffer.isBuffer(chunk)) { |
12119 | return chunk.toString('hex') | |
12120 | ||
ab78acc6 | 12121 | // opcode |
ebd8d4e8 IC |
12122 | } else { |
12123 | return reverseOps[chunk] | |
12124 | } | |
12125 | }).join(' ') | |
12126 | } | |
12127 | ||
ab78acc6 | 12128 | Script.prototype.toBuffer = function () { |
ebd8d4e8 IC |
12129 | return this.buffer |
12130 | } | |
12131 | ||
ab78acc6 | 12132 | Script.prototype.toHex = function () { |
ebd8d4e8 IC |
12133 | return this.toBuffer().toString('hex') |
12134 | } | |
12135 | ||
12136 | module.exports = Script | |
12137 | ||
ab78acc6 IC |
12138 | }).call(this,require("buffer").Buffer) |
12139 | },{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){ | |
ebd8d4e8 | 12140 | (function (Buffer){ |
ab78acc6 IC |
12141 | var assert = require('assert') |
12142 | var ops = require('./opcodes') | |
12143 | var typeForce = require('typeforce') | |
ebd8d4e8 | 12144 | |
ab78acc6 | 12145 | var ecurve = require('ecurve') |
ebd8d4e8 IC |
12146 | var curve = ecurve.getCurveByName('secp256k1') |
12147 | ||
ab78acc6 IC |
12148 | var ECSignature = require('./ecsignature') |
12149 | var Script = require('./script') | |
ebd8d4e8 | 12150 | |
ab78acc6 | 12151 | function isCanonicalPubKey (buffer) { |
ebd8d4e8 IC |
12152 | if (!Buffer.isBuffer(buffer)) return false |
12153 | ||
12154 | try { | |
ebd8d4e8 IC |
12155 | ecurve.Point.decodeFrom(curve, buffer) |
12156 | } catch (e) { | |
ab78acc6 IC |
12157 | if (!(e.message.match(/Invalid sequence (length|tag)/))) |
12158 | throw e | |
ebd8d4e8 IC |
12159 | |
12160 | return false | |
12161 | } | |
12162 | ||
12163 | return true | |
12164 | } | |
12165 | ||
ab78acc6 | 12166 | function isCanonicalSignature (buffer) { |
ebd8d4e8 IC |
12167 | if (!Buffer.isBuffer(buffer)) return false |
12168 | ||
12169 | try { | |
12170 | ECSignature.parseScriptSignature(buffer) | |
ab78acc6 IC |
12171 | } catch (e) { |
12172 | if (!(e.message.match(/Not a DER sequence|Invalid sequence length|Expected a DER integer|R length is zero|S length is zero|R value excessively padded|S value excessively padded|R value is negative|S value is negative|Invalid hashType/))) { | |
12173 | throw e | |
12174 | } | |
ebd8d4e8 IC |
12175 | |
12176 | return false | |
12177 | } | |
12178 | ||
12179 | return true | |
12180 | } | |
12181 | ||
ab78acc6 IC |
12182 | function isPubKeyHashInput (script) { |
12183 | return script.chunks.length === 2 && | |
12184 | isCanonicalSignature(script.chunks[0]) && | |
12185 | isCanonicalPubKey(script.chunks[1]) | |
ebd8d4e8 IC |
12186 | } |
12187 | ||
ab78acc6 IC |
12188 | function isPubKeyHashOutput (script) { |
12189 | return script.chunks.length === 5 && | |
12190 | script.chunks[0] === ops.OP_DUP && | |
12191 | script.chunks[1] === ops.OP_HASH160 && | |
12192 | Buffer.isBuffer(script.chunks[2]) && | |
12193 | script.chunks[2].length === 20 && | |
12194 | script.chunks[3] === ops.OP_EQUALVERIFY && | |
12195 | script.chunks[4] === ops.OP_CHECKSIG | |
ebd8d4e8 IC |
12196 | } |
12197 | ||
ab78acc6 IC |
12198 | function isPubKeyInput (script) { |
12199 | return script.chunks.length === 1 && | |
12200 | isCanonicalSignature(script.chunks[0]) | |
ebd8d4e8 IC |
12201 | } |
12202 | ||
ab78acc6 IC |
12203 | function isPubKeyOutput (script) { |
12204 | return script.chunks.length === 2 && | |
12205 | isCanonicalPubKey(script.chunks[0]) && | |
12206 | script.chunks[1] === ops.OP_CHECKSIG | |
ebd8d4e8 IC |
12207 | } |
12208 | ||
ab78acc6 IC |
12209 | function isScriptHashInput (script, allowIncomplete) { |
12210 | if (script.chunks.length < 2) return false | |
ebd8d4e8 | 12211 | |
ab78acc6 | 12212 | var lastChunk = script.chunks[script.chunks.length - 1] |
ebd8d4e8 IC |
12213 | if (!Buffer.isBuffer(lastChunk)) return false |
12214 | ||
ab78acc6 IC |
12215 | var scriptSig = Script.fromChunks(script.chunks.slice(0, -1)) |
12216 | var redeemScript = Script.fromBuffer(lastChunk) | |
ebd8d4e8 | 12217 | |
ab78acc6 IC |
12218 | // is redeemScript a valid script? |
12219 | if (redeemScript.chunks.length === 0) return false | |
12220 | ||
12221 | return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript) | |
ebd8d4e8 IC |
12222 | } |
12223 | ||
ab78acc6 IC |
12224 | function isScriptHashOutput (script) { |
12225 | return script.chunks.length === 3 && | |
12226 | script.chunks[0] === ops.OP_HASH160 && | |
12227 | Buffer.isBuffer(script.chunks[1]) && | |
12228 | script.chunks[1].length === 20 && | |
12229 | script.chunks[2] === ops.OP_EQUAL | |
ebd8d4e8 IC |
12230 | } |
12231 | ||
ab78acc6 IC |
12232 | // allowIncomplete is to account for combining signatures |
12233 | // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197 | |
12234 | function isMultisigInput (script, allowIncomplete) { | |
12235 | if (script.chunks.length < 2) return false | |
12236 | if (script.chunks[0] !== ops.OP_0) return false | |
12237 | ||
12238 | if (allowIncomplete) { | |
12239 | return script.chunks.slice(1).every(function (chunk) { | |
12240 | return chunk === ops.OP_0 || isCanonicalSignature(chunk) | |
12241 | }) | |
12242 | } | |
12243 | ||
12244 | return script.chunks.slice(1).every(isCanonicalSignature) | |
ebd8d4e8 IC |
12245 | } |
12246 | ||
ab78acc6 IC |
12247 | function isMultisigOutput (script) { |
12248 | if (script.chunks.length < 4) return false | |
12249 | if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false | |
ebd8d4e8 | 12250 | |
ab78acc6 IC |
12251 | var mOp = script.chunks[0] |
12252 | if (mOp === ops.OP_0) return false | |
12253 | if (mOp < ops.OP_1) return false | |
12254 | if (mOp > ops.OP_16) return false | |
ebd8d4e8 | 12255 | |
ab78acc6 IC |
12256 | var nOp = script.chunks[script.chunks.length - 2] |
12257 | if (nOp === ops.OP_0) return false | |
12258 | if (nOp < ops.OP_1) return false | |
12259 | if (nOp > ops.OP_16) return false | |
ebd8d4e8 | 12260 | |
ab78acc6 IC |
12261 | var m = mOp - (ops.OP_1 - 1) |
12262 | var n = nOp - (ops.OP_1 - 1) | |
ebd8d4e8 IC |
12263 | if (n < m) return false |
12264 | ||
ab78acc6 | 12265 | var pubKeys = script.chunks.slice(1, -2) |
ebd8d4e8 IC |
12266 | if (n < pubKeys.length) return false |
12267 | ||
12268 | return pubKeys.every(isCanonicalPubKey) | |
12269 | } | |
12270 | ||
ab78acc6 IC |
12271 | function isNullDataOutput (script) { |
12272 | return script.chunks[0] === ops.OP_RETURN | |
12273 | } | |
12274 | ||
12275 | function classifyOutput (script) { | |
12276 | typeForce('Script', script) | |
12277 | ||
12278 | if (isPubKeyHashOutput(script)) { | |
12279 | return 'pubkeyhash' | |
12280 | } else if (isScriptHashOutput(script)) { | |
12281 | return 'scripthash' | |
12282 | } else if (isMultisigOutput(script)) { | |
12283 | return 'multisig' | |
12284 | } else if (isPubKeyOutput(script)) { | |
12285 | return 'pubkey' | |
12286 | } else if (isNullDataOutput(script)) { | |
12287 | return 'nulldata' | |
12288 | } | |
12289 | ||
12290 | return 'nonstandard' | |
12291 | } | |
12292 | ||
12293 | function classifyInput (script, allowIncomplete) { | |
12294 | typeForce('Script', script) | |
12295 | ||
12296 | if (isPubKeyHashInput(script)) { | |
12297 | return 'pubkeyhash' | |
12298 | } else if (isMultisigInput(script, allowIncomplete)) { | |
12299 | return 'multisig' | |
12300 | } else if (isScriptHashInput(script, allowIncomplete)) { | |
12301 | return 'scripthash' | |
12302 | } else if (isPubKeyInput(script)) { | |
12303 | return 'pubkey' | |
12304 | } | |
12305 | ||
12306 | return 'nonstandard' | |
ebd8d4e8 IC |
12307 | } |
12308 | ||
12309 | // Standard Script Templates | |
12310 | // {pubKey} OP_CHECKSIG | |
ab78acc6 | 12311 | function pubKeyOutput (pubKey) { |
ebd8d4e8 IC |
12312 | return Script.fromChunks([ |
12313 | pubKey.toBuffer(), | |
ab78acc6 | 12314 | ops.OP_CHECKSIG |
ebd8d4e8 IC |
12315 | ]) |
12316 | } | |
12317 | ||
12318 | // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG | |
ab78acc6 IC |
12319 | function pubKeyHashOutput (hash) { |
12320 | typeForce('Buffer', hash) | |
ebd8d4e8 IC |
12321 | |
12322 | return Script.fromChunks([ | |
ab78acc6 IC |
12323 | ops.OP_DUP, |
12324 | ops.OP_HASH160, | |
ebd8d4e8 | 12325 | hash, |
ab78acc6 IC |
12326 | ops.OP_EQUALVERIFY, |
12327 | ops.OP_CHECKSIG | |
ebd8d4e8 IC |
12328 | ]) |
12329 | } | |
12330 | ||
12331 | // OP_HASH160 {scriptHash} OP_EQUAL | |
ab78acc6 IC |
12332 | function scriptHashOutput (hash) { |
12333 | typeForce('Buffer', hash) | |
ebd8d4e8 IC |
12334 | |
12335 | return Script.fromChunks([ | |
ab78acc6 | 12336 | ops.OP_HASH160, |
ebd8d4e8 | 12337 | hash, |
ab78acc6 | 12338 | ops.OP_EQUAL |
ebd8d4e8 IC |
12339 | ]) |
12340 | } | |
12341 | ||
12342 | // m [pubKeys ...] n OP_CHECKMULTISIG | |
ab78acc6 IC |
12343 | function multisigOutput (m, pubKeys) { |
12344 | typeForce(['ECPubKey'], pubKeys) | |
12345 | ||
ebd8d4e8 IC |
12346 | assert(pubKeys.length >= m, 'Not enough pubKeys provided') |
12347 | ||
ab78acc6 | 12348 | var pubKeyBuffers = pubKeys.map(function (pubKey) { |
ebd8d4e8 IC |
12349 | return pubKey.toBuffer() |
12350 | }) | |
12351 | var n = pubKeys.length | |
12352 | ||
12353 | return Script.fromChunks([].concat( | |
ab78acc6 | 12354 | (ops.OP_1 - 1) + m, |
ebd8d4e8 | 12355 | pubKeyBuffers, |
ab78acc6 IC |
12356 | (ops.OP_1 - 1) + n, |
12357 | ops.OP_CHECKMULTISIG | |
ebd8d4e8 IC |
12358 | )) |
12359 | } | |
12360 | ||
12361 | // {signature} | |
ab78acc6 IC |
12362 | function pubKeyInput (signature) { |
12363 | typeForce('Buffer', signature) | |
ebd8d4e8 IC |
12364 | |
12365 | return Script.fromChunks([signature]) | |
12366 | } | |
12367 | ||
12368 | // {signature} {pubKey} | |
ab78acc6 IC |
12369 | function pubKeyHashInput (signature, pubKey) { |
12370 | typeForce('Buffer', signature) | |
ebd8d4e8 IC |
12371 | |
12372 | return Script.fromChunks([signature, pubKey.toBuffer()]) | |
12373 | } | |
12374 | ||
12375 | // <scriptSig> {serialized scriptPubKey script} | |
ab78acc6 | 12376 | function scriptHashInput (scriptSig, scriptPubKey) { |
ebd8d4e8 IC |
12377 | return Script.fromChunks([].concat( |
12378 | scriptSig.chunks, | |
12379 | scriptPubKey.toBuffer() | |
12380 | )) | |
12381 | } | |
12382 | ||
12383 | // OP_0 [signatures ...] | |
ab78acc6 | 12384 | function multisigInput (signatures, scriptPubKey) { |
ebd8d4e8 | 12385 | if (scriptPubKey) { |
ab78acc6 IC |
12386 | assert(isMultisigOutput(scriptPubKey)) |
12387 | ||
12388 | var mOp = scriptPubKey.chunks[0] | |
12389 | var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2] | |
12390 | var m = mOp - (ops.OP_1 - 1) | |
12391 | var n = nOp - (ops.OP_1 - 1) | |
ebd8d4e8 | 12392 | |
ab78acc6 IC |
12393 | assert(signatures.length >= m, 'Not enough signatures provided') |
12394 | assert(signatures.length <= n, 'Too many signatures provided') | |
ebd8d4e8 IC |
12395 | } |
12396 | ||
ab78acc6 IC |
12397 | return Script.fromChunks([].concat(ops.OP_0, signatures)) |
12398 | } | |
12399 | ||
12400 | function nullDataOutput (data) { | |
12401 | return Script.fromChunks([ops.OP_RETURN, data]) | |
ebd8d4e8 IC |
12402 | } |
12403 | ||
12404 | module.exports = { | |
ab78acc6 IC |
12405 | isCanonicalPubKey: isCanonicalPubKey, |
12406 | isCanonicalSignature: isCanonicalSignature, | |
12407 | isPubKeyHashInput: isPubKeyHashInput, | |
12408 | isPubKeyHashOutput: isPubKeyHashOutput, | |
12409 | isPubKeyInput: isPubKeyInput, | |
12410 | isPubKeyOutput: isPubKeyOutput, | |
12411 | isScriptHashInput: isScriptHashInput, | |
12412 | isScriptHashOutput: isScriptHashOutput, | |
12413 | isMultisigInput: isMultisigInput, | |
12414 | isMultisigOutput: isMultisigOutput, | |
12415 | isNullDataOutput: isNullDataOutput, | |
ebd8d4e8 | 12416 | classifyOutput: classifyOutput, |
ab78acc6 IC |
12417 | classifyInput: classifyInput, |
12418 | pubKeyOutput: pubKeyOutput, | |
ebd8d4e8 | 12419 | pubKeyHashOutput: pubKeyHashOutput, |
ab78acc6 IC |
12420 | scriptHashOutput: scriptHashOutput, |
12421 | multisigOutput: multisigOutput, | |
ebd8d4e8 | 12422 | pubKeyInput: pubKeyInput, |
ab78acc6 | 12423 | pubKeyHashInput: pubKeyHashInput, |
ebd8d4e8 | 12424 | scriptHashInput: scriptHashInput, |
ab78acc6 IC |
12425 | multisigInput: multisigInput, |
12426 | dataOutput: function (data) { | |
12427 | console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0') | |
12428 | return nullDataOutput(data) | |
12429 | }, | |
12430 | nullDataOutput: nullDataOutput | |
ebd8d4e8 IC |
12431 | } |
12432 | ||
ab78acc6 IC |
12433 | }).call(this,require("buffer").Buffer) |
12434 | },{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){ | |
ebd8d4e8 | 12435 | (function (Buffer){ |
ab78acc6 IC |
12436 | var assert = require('assert') |
12437 | var bufferutils = require('./bufferutils') | |
12438 | var crypto = require('./crypto') | |
12439 | var typeForce = require('typeforce') | |
12440 | var opcodes = require('./opcodes') | |
12441 | var scripts = require('./scripts') | |
12442 | ||
12443 | var Address = require('./address') | |
12444 | var ECSignature = require('./ecsignature') | |
12445 | var Script = require('./script') | |
12446 | ||
12447 | function Transaction () { | |
12448 | this.version = 1 | |
12449 | this.locktime = 0 | |
12450 | this.ins = [] | |
12451 | this.outs = [] | |
12452 | } | |
ebd8d4e8 IC |
12453 | |
12454 | Transaction.DEFAULT_SEQUENCE = 0xffffffff | |
12455 | Transaction.SIGHASH_ALL = 0x01 | |
12456 | Transaction.SIGHASH_NONE = 0x02 | |
12457 | Transaction.SIGHASH_SINGLE = 0x03 | |
12458 | Transaction.SIGHASH_ANYONECANPAY = 0x80 | |
12459 | ||
ab78acc6 IC |
12460 | Transaction.fromBuffer = function (buffer, __disableAssert) { |
12461 | var offset = 0 | |
12462 | function readSlice (n) { | |
12463 | offset += n | |
12464 | return buffer.slice(offset - n, offset) | |
12465 | } | |
12466 | ||
12467 | function readUInt32 () { | |
12468 | var i = buffer.readUInt32LE(offset) | |
12469 | offset += 4 | |
12470 | return i | |
12471 | } | |
12472 | ||
12473 | function readUInt64 () { | |
12474 | var i = bufferutils.readUInt64LE(buffer, offset) | |
12475 | offset += 8 | |
12476 | return i | |
12477 | } | |
12478 | ||
12479 | function readVarInt () { | |
12480 | var vi = bufferutils.readVarInt(buffer, offset) | |
12481 | offset += vi.size | |
12482 | return vi.number | |
12483 | } | |
12484 | ||
12485 | function readScript () { | |
12486 | return Script.fromBuffer(readSlice(readVarInt())) | |
12487 | } | |
12488 | ||
12489 | function readGenerationScript () { | |
12490 | return new Script(readSlice(readVarInt()), []) | |
12491 | } | |
12492 | ||
12493 | var tx = new Transaction() | |
12494 | tx.version = readUInt32() | |
12495 | ||
12496 | var vinLen = readVarInt() | |
12497 | for (var i = 0; i < vinLen; ++i) { | |
12498 | var hash = readSlice(32) | |
12499 | ||
12500 | if (Transaction.isCoinbaseHash(hash)) { | |
12501 | tx.ins.push({ | |
12502 | hash: hash, | |
12503 | index: readUInt32(), | |
12504 | script: readGenerationScript(), | |
12505 | sequence: readUInt32() | |
12506 | }) | |
12507 | } else { | |
12508 | tx.ins.push({ | |
12509 | hash: hash, | |
12510 | index: readUInt32(), | |
12511 | script: readScript(), | |
12512 | sequence: readUInt32() | |
12513 | }) | |
12514 | } | |
12515 | } | |
12516 | ||
12517 | var voutLen = readVarInt() | |
12518 | for (i = 0; i < voutLen; ++i) { | |
12519 | tx.outs.push({ | |
12520 | value: readUInt64(), | |
12521 | script: readScript() | |
12522 | }) | |
12523 | } | |
12524 | ||
12525 | tx.locktime = readUInt32() | |
12526 | ||
12527 | if (!__disableAssert) { | |
12528 | assert.equal(offset, buffer.length, 'Transaction has unexpected data') | |
12529 | } | |
12530 | ||
12531 | return tx | |
12532 | } | |
12533 | ||
12534 | Transaction.fromHex = function (hex) { | |
12535 | return Transaction.fromBuffer(new Buffer(hex, 'hex')) | |
12536 | } | |
12537 | ||
12538 | Transaction.isCoinbaseHash = function (buffer) { | |
12539 | return Array.prototype.every.call(buffer, function (x) { | |
12540 | return x === 0 | |
12541 | }) | |
ebd8d4e8 IC |
12542 | } |
12543 | ||
12544 | /** | |
ab78acc6 | 12545 | * Create a new txIn. |
ebd8d4e8 IC |
12546 | * |
12547 | * Can be called with any of: | |
12548 | * | |
12549 | * - A transaction and an index | |
12550 | * - A transaction hash and an index | |
12551 | * | |
12552 | * Note that this method does not sign the created input. | |
12553 | */ | |
ab78acc6 IC |
12554 | Transaction.prototype.addInput = function (hash, index, sequence, script) { |
12555 | if (sequence === undefined || sequence === null) { | |
12556 | sequence = Transaction.DEFAULT_SEQUENCE | |
12557 | } | |
ebd8d4e8 | 12558 | |
ab78acc6 | 12559 | script = script || Script.EMPTY |
ebd8d4e8 | 12560 | |
ab78acc6 | 12561 | if (typeof hash === 'string') { |
ebd8d4e8 | 12562 | // TxId hex is big-endian, we need little-endian |
ab78acc6 IC |
12563 | hash = bufferutils.reverse(new Buffer(hash, 'hex')) |
12564 | } else if (hash instanceof Transaction) { | |
12565 | hash = hash.getHash() | |
ebd8d4e8 IC |
12566 | } |
12567 | ||
ab78acc6 IC |
12568 | typeForce('Buffer', hash) |
12569 | typeForce('Number', index) | |
12570 | typeForce('Number', sequence) | |
12571 | typeForce('Script', script) | |
12572 | ||
ebd8d4e8 | 12573 | assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length) |
ebd8d4e8 | 12574 | |
ab78acc6 | 12575 | // Add the input and return the input's index |
ebd8d4e8 IC |
12576 | return (this.ins.push({ |
12577 | hash: hash, | |
12578 | index: index, | |
ab78acc6 | 12579 | script: script, |
ebd8d4e8 IC |
12580 | sequence: sequence |
12581 | }) - 1) | |
12582 | } | |
12583 | ||
12584 | /** | |
ab78acc6 | 12585 | * Create a new txOut. |
ebd8d4e8 IC |
12586 | * |
12587 | * Can be called with: | |
12588 | * | |
12589 | * - A base58 address string and a value | |
12590 | * - An Address object and a value | |
12591 | * - A scriptPubKey Script and a value | |
12592 | */ | |
ab78acc6 | 12593 | Transaction.prototype.addOutput = function (scriptPubKey, value) { |
ebd8d4e8 IC |
12594 | // Attempt to get a valid address if it's a base58 address string |
12595 | if (typeof scriptPubKey === 'string') { | |
12596 | scriptPubKey = Address.fromBase58Check(scriptPubKey) | |
12597 | } | |
12598 | ||
12599 | // Attempt to get a valid script if it's an Address object | |
12600 | if (scriptPubKey instanceof Address) { | |
ab78acc6 | 12601 | scriptPubKey = scriptPubKey.toOutputScript() |
ebd8d4e8 IC |
12602 | } |
12603 | ||
ab78acc6 IC |
12604 | typeForce('Script', scriptPubKey) |
12605 | typeForce('Number', value) | |
12606 | ||
12607 | // Add the output and return the output's index | |
ebd8d4e8 IC |
12608 | return (this.outs.push({ |
12609 | script: scriptPubKey, | |
ab78acc6 | 12610 | value: value |
ebd8d4e8 IC |
12611 | }) - 1) |
12612 | } | |
12613 | ||
ab78acc6 IC |
12614 | Transaction.prototype.clone = function () { |
12615 | var newTx = new Transaction() | |
12616 | newTx.version = this.version | |
12617 | newTx.locktime = this.locktime | |
12618 | ||
12619 | newTx.ins = this.ins.map(function (txIn) { | |
12620 | return { | |
12621 | hash: txIn.hash, | |
12622 | index: txIn.index, | |
12623 | script: txIn.script, | |
12624 | sequence: txIn.sequence | |
12625 | } | |
12626 | }) | |
12627 | ||
12628 | newTx.outs = this.outs.map(function (txOut) { | |
12629 | return { | |
12630 | script: txOut.script, | |
12631 | value: txOut.value | |
12632 | } | |
12633 | }) | |
12634 | ||
12635 | return newTx | |
12636 | } | |
12637 | ||
12638 | /** | |
12639 | * Hash transaction for signing a specific input. | |
12640 | * | |
12641 | * Bitcoin uses a different hash for each signed transaction input. This | |
12642 | * method copies the transaction, makes the necessary changes based on the | |
12643 | * hashType, serializes and finally hashes the result. This hash can then be | |
12644 | * used to sign the transaction input in question. | |
12645 | */ | |
12646 | Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) { | |
12647 | // FIXME: remove in 2.x.y | |
12648 | if (arguments[0] instanceof Script) { | |
12649 | console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)') | |
12650 | ||
12651 | // swap the arguments (must be stored in tmp, arguments is special) | |
12652 | var tmp = arguments[0] | |
12653 | inIndex = arguments[1] | |
12654 | prevOutScript = tmp | |
12655 | } | |
12656 | ||
12657 | typeForce('Number', inIndex) | |
12658 | typeForce('Script', prevOutScript) | |
12659 | typeForce('Number', hashType) | |
12660 | ||
12661 | assert(inIndex >= 0, 'Invalid vin index') | |
12662 | assert(inIndex < this.ins.length, 'Invalid vin index') | |
12663 | ||
12664 | var txTmp = this.clone() | |
12665 | var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR) | |
12666 | ||
12667 | // Blank out other inputs' signatures | |
12668 | txTmp.ins.forEach(function (txIn) { | |
12669 | txIn.script = Script.EMPTY | |
12670 | }) | |
12671 | txTmp.ins[inIndex].script = hashScript | |
12672 | ||
12673 | var hashTypeModifier = hashType & 0x1f | |
12674 | ||
12675 | if (hashTypeModifier === Transaction.SIGHASH_NONE) { | |
12676 | assert(false, 'SIGHASH_NONE not yet supported') | |
12677 | } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) { | |
12678 | assert(false, 'SIGHASH_SINGLE not yet supported') | |
12679 | } | |
12680 | ||
12681 | if (hashType & Transaction.SIGHASH_ANYONECANPAY) { | |
12682 | assert(false, 'SIGHASH_ANYONECANPAY not yet supported') | |
12683 | } | |
12684 | ||
12685 | var hashTypeBuffer = new Buffer(4) | |
12686 | hashTypeBuffer.writeInt32LE(hashType, 0) | |
12687 | ||
12688 | var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer]) | |
12689 | return crypto.hash256(buffer) | |
12690 | } | |
12691 | ||
12692 | Transaction.prototype.getHash = function () { | |
12693 | return crypto.hash256(this.toBuffer()) | |
12694 | } | |
12695 | ||
12696 | Transaction.prototype.getId = function () { | |
12697 | // TxHash is little-endian, we need big-endian | |
12698 | return bufferutils.reverse(this.getHash()).toString('hex') | |
12699 | } | |
12700 | ||
ebd8d4e8 | 12701 | Transaction.prototype.toBuffer = function () { |
ab78acc6 IC |
12702 | function scriptSize (script) { |
12703 | var length = script.buffer.length | |
ebd8d4e8 | 12704 | |
ab78acc6 IC |
12705 | return bufferutils.varIntSize(length) + length |
12706 | } | |
ebd8d4e8 IC |
12707 | |
12708 | var buffer = new Buffer( | |
12709 | 8 + | |
12710 | bufferutils.varIntSize(this.ins.length) + | |
12711 | bufferutils.varIntSize(this.outs.length) + | |
ab78acc6 IC |
12712 | this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) + |
12713 | this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0) | |
ebd8d4e8 IC |
12714 | ) |
12715 | ||
12716 | var offset = 0 | |
ab78acc6 | 12717 | function writeSlice (slice) { |
ebd8d4e8 IC |
12718 | slice.copy(buffer, offset) |
12719 | offset += slice.length | |
12720 | } | |
ab78acc6 IC |
12721 | |
12722 | function writeUInt32 (i) { | |
ebd8d4e8 IC |
12723 | buffer.writeUInt32LE(i, offset) |
12724 | offset += 4 | |
12725 | } | |
ab78acc6 IC |
12726 | |
12727 | function writeUInt64 (i) { | |
ebd8d4e8 IC |
12728 | bufferutils.writeUInt64LE(buffer, i, offset) |
12729 | offset += 8 | |
12730 | } | |
ab78acc6 IC |
12731 | |
12732 | function writeVarInt (i) { | |
ebd8d4e8 IC |
12733 | var n = bufferutils.writeVarInt(buffer, i, offset) |
12734 | offset += n | |
12735 | } | |
12736 | ||
12737 | writeUInt32(this.version) | |
12738 | writeVarInt(this.ins.length) | |
12739 | ||
ab78acc6 IC |
12740 | this.ins.forEach(function (txIn) { |
12741 | writeSlice(txIn.hash) | |
12742 | writeUInt32(txIn.index) | |
12743 | writeVarInt(txIn.script.buffer.length) | |
12744 | writeSlice(txIn.script.buffer) | |
12745 | writeUInt32(txIn.sequence) | |
ebd8d4e8 IC |
12746 | }) |
12747 | ||
12748 | writeVarInt(this.outs.length) | |
ab78acc6 IC |
12749 | this.outs.forEach(function (txOut) { |
12750 | writeUInt64(txOut.value) | |
12751 | writeVarInt(txOut.script.buffer.length) | |
12752 | writeSlice(txOut.script.buffer) | |
ebd8d4e8 IC |
12753 | }) |
12754 | ||
12755 | writeUInt32(this.locktime) | |
12756 | ||
12757 | return buffer | |
12758 | } | |
12759 | ||
ab78acc6 | 12760 | Transaction.prototype.toHex = function () { |
ebd8d4e8 IC |
12761 | return this.toBuffer().toString('hex') |
12762 | } | |
12763 | ||
ab78acc6 IC |
12764 | Transaction.prototype.setInputScript = function (index, script) { |
12765 | typeForce('Number', index) | |
12766 | typeForce('Script', script) | |
12767 | ||
12768 | this.ins[index].script = script | |
12769 | } | |
12770 | ||
12771 | // FIXME: remove in 2.x.y | |
12772 | Transaction.prototype.sign = function (index, privKey, hashType) { | |
12773 | console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.') | |
12774 | ||
12775 | var prevOutScript = privKey.pub.getAddress().toOutputScript() | |
12776 | var signature = this.signInput(index, prevOutScript, privKey, hashType) | |
12777 | ||
12778 | var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub) | |
12779 | this.setInputScript(index, scriptSig) | |
12780 | } | |
12781 | ||
12782 | // FIXME: remove in 2.x.y | |
12783 | Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) { | |
12784 | console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.') | |
12785 | ||
12786 | hashType = hashType || Transaction.SIGHASH_ALL | |
12787 | ||
12788 | var hash = this.hashForSignature(index, prevOutScript, hashType) | |
12789 | var signature = privKey.sign(hash) | |
12790 | ||
12791 | return signature.toScriptSignature(hashType) | |
12792 | } | |
12793 | ||
12794 | // FIXME: remove in 2.x.y | |
12795 | Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) { | |
12796 | console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.') | |
12797 | ||
12798 | var parsed = ECSignature.parseScriptSignature(buffer) | |
12799 | var hash = this.hashForSignature(index, prevOutScript, parsed.hashType) | |
12800 | ||
12801 | return pubKey.verify(hash, parsed.signature) | |
12802 | } | |
12803 | ||
12804 | module.exports = Transaction | |
12805 | ||
12806 | }).call(this,require("buffer").Buffer) | |
12807 | },{"./address":54,"./bufferutils":57,"./crypto":58,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"assert":5,"buffer":7,"typeforce":53}],71:[function(require,module,exports){ | |
12808 | (function (Buffer){ | |
12809 | var assert = require('assert') | |
12810 | var ops = require('./opcodes') | |
12811 | var scripts = require('./scripts') | |
12812 | ||
12813 | var ECPubKey = require('./ecpubkey') | |
12814 | var ECSignature = require('./ecsignature') | |
12815 | var Script = require('./script') | |
12816 | var Transaction = require('./transaction') | |
12817 | ||
12818 | function extractInput (txIn) { | |
12819 | var redeemScript | |
12820 | var scriptSig = txIn.script | |
12821 | var prevOutScript | |
12822 | var prevOutType = scripts.classifyInput(scriptSig, true) | |
12823 | var scriptType | |
12824 | ||
12825 | // Re-classify if scriptHash | |
12826 | if (prevOutType === 'scripthash') { | |
12827 | redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0]) | |
12828 | prevOutScript = scripts.scriptHashOutput(redeemScript.getHash()) | |
12829 | ||
12830 | scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1)) | |
12831 | scriptType = scripts.classifyInput(scriptSig, true) | |
12832 | } else { | |
12833 | scriptType = prevOutType | |
12834 | } | |
12835 | ||
12836 | // Extract hashType, pubKeys and signatures | |
12837 | var hashType, parsed, pubKeys, signatures | |
12838 | ||
12839 | switch (scriptType) { | |
12840 | case 'pubkeyhash': { | |
12841 | parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0]) | |
12842 | hashType = parsed.hashType | |
12843 | pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])] | |
12844 | signatures = [parsed.signature] | |
12845 | prevOutScript = pubKeys[0].getAddress().toOutputScript() | |
12846 | ||
12847 | break | |
12848 | } | |
12849 | ||
12850 | case 'pubkey': { | |
12851 | parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0]) | |
12852 | hashType = parsed.hashType | |
12853 | signatures = [parsed.signature] | |
12854 | ||
12855 | if (redeemScript) { | |
12856 | pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])] | |
12857 | } | |
12858 | ||
12859 | break | |
12860 | } | |
12861 | ||
12862 | case 'multisig': { | |
12863 | signatures = scriptSig.chunks.slice(1).map(function (chunk) { | |
12864 | if (chunk === ops.OP_0) return chunk | |
12865 | ||
12866 | var parsed = ECSignature.parseScriptSignature(chunk) | |
12867 | hashType = parsed.hashType | |
12868 | ||
12869 | return parsed.signature | |
12870 | }) | |
12871 | ||
12872 | if (redeemScript) { | |
12873 | pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer) | |
12874 | } | |
12875 | ||
12876 | break | |
12877 | } | |
12878 | } | |
12879 | ||
12880 | return { | |
12881 | hashType: hashType, | |
12882 | prevOutScript: prevOutScript, | |
12883 | prevOutType: prevOutType, | |
12884 | pubKeys: pubKeys, | |
12885 | redeemScript: redeemScript, | |
12886 | scriptType: scriptType, | |
12887 | signatures: signatures | |
12888 | } | |
12889 | } | |
12890 | ||
12891 | function TransactionBuilder () { | |
12892 | this.prevTxMap = {} | |
12893 | this.prevOutScripts = {} | |
12894 | this.prevOutTypes = {} | |
12895 | ||
12896 | this.inputs = [] | |
12897 | this.tx = new Transaction() | |
12898 | } | |
12899 | ||
12900 | TransactionBuilder.fromTransaction = function (transaction) { | |
12901 | var txb = new TransactionBuilder() | |
12902 | ||
12903 | // Copy other transaction fields | |
12904 | txb.tx.version = transaction.version | |
12905 | txb.tx.locktime = transaction.locktime | |
12906 | ||
12907 | // Extract/add inputs | |
12908 | transaction.ins.forEach(function (txIn) { | |
12909 | txb.addInput(txIn.hash, txIn.index, txIn.sequence) | |
12910 | }) | |
12911 | ||
12912 | // Extract/add outputs | |
12913 | transaction.outs.forEach(function (txOut) { | |
12914 | txb.addOutput(txOut.script, txOut.value) | |
12915 | }) | |
12916 | ||
12917 | // Extract/add signatures | |
12918 | txb.inputs = transaction.ins.map(function (txIn) { | |
12919 | // TODO: remove me after testcase added | |
12920 | assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported') | |
12921 | ||
12922 | // Ignore empty scripts | |
12923 | if (txIn.script.buffer.length === 0) return {} | |
12924 | ||
12925 | return extractInput(txIn) | |
12926 | }) | |
12927 | ||
12928 | return txb | |
12929 | } | |
12930 | ||
12931 | TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) { | |
12932 | var prevOutHash | |
12933 | ||
12934 | // txId | |
12935 | if (typeof prevTx === 'string') { | |
12936 | prevOutHash = new Buffer(prevTx, 'hex') | |
12937 | ||
12938 | // TxId hex is big-endian, we want little-endian hash | |
12939 | Array.prototype.reverse.call(prevOutHash) | |
12940 | ||
12941 | // Transaction | |
12942 | } else if (prevTx instanceof Transaction) { | |
12943 | prevOutHash = prevTx.getHash() | |
12944 | prevOutScript = prevTx.outs[index].script | |
12945 | ||
12946 | // txHash | |
12947 | } else { | |
12948 | prevOutHash = prevTx | |
12949 | } | |
12950 | ||
12951 | var input = {} | |
12952 | if (prevOutScript) { | |
12953 | var prevOutType = scripts.classifyOutput(prevOutScript) | |
12954 | ||
12955 | // if we can, extract pubKey information | |
12956 | switch (prevOutType) { | |
12957 | case 'multisig': { | |
12958 | input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer) | |
12959 | break | |
12960 | } | |
12961 | ||
12962 | case 'pubkey': { | |
12963 | input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer) | |
12964 | break | |
12965 | } | |
12966 | } | |
12967 | ||
12968 | if (prevOutType !== 'scripthash') { | |
12969 | input.scriptType = prevOutType | |
12970 | } | |
12971 | ||
12972 | input.prevOutScript = prevOutScript | |
12973 | input.prevOutType = prevOutType | |
12974 | } | |
12975 | ||
12976 | assert(this.inputs.every(function (input2) { | |
12977 | if (input2.hashType === undefined) return true | |
12978 | ||
12979 | return input2.hashType & Transaction.SIGHASH_ANYONECANPAY | |
12980 | }), 'No, this would invalidate signatures') | |
12981 | ||
12982 | var prevOut = prevOutHash.toString('hex') + ':' + index | |
12983 | assert(!(prevOut in this.prevTxMap), 'Transaction is already an input') | |
12984 | ||
12985 | var vin = this.tx.addInput(prevOutHash, index, sequence) | |
12986 | this.inputs[vin] = input | |
12987 | this.prevTxMap[prevOut] = vin | |
12988 | ||
12989 | return vin | |
12990 | } | |
12991 | ||
12992 | TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) { | |
12993 | assert(this.inputs.every(function (input) { | |
12994 | if (input.hashType === undefined) return true | |
ebd8d4e8 | 12995 | |
ab78acc6 IC |
12996 | return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE |
12997 | }), 'No, this would invalidate signatures') | |
ebd8d4e8 | 12998 | |
ab78acc6 IC |
12999 | return this.tx.addOutput(scriptPubKey, value) |
13000 | } | |
ebd8d4e8 | 13001 | |
ab78acc6 IC |
13002 | TransactionBuilder.prototype.build = function () { |
13003 | return this.__build(false) | |
13004 | } | |
13005 | TransactionBuilder.prototype.buildIncomplete = function () { | |
13006 | return this.__build(true) | |
13007 | } | |
ebd8d4e8 | 13008 | |
ab78acc6 IC |
13009 | var canSignTypes = { |
13010 | 'pubkeyhash': true, | |
13011 | 'multisig': true, | |
13012 | 'pubkey': true | |
13013 | } | |
ebd8d4e8 | 13014 | |
ab78acc6 IC |
13015 | TransactionBuilder.prototype.__build = function (allowIncomplete) { |
13016 | if (!allowIncomplete) { | |
13017 | assert(this.tx.ins.length > 0, 'Transaction has no inputs') | |
13018 | assert(this.tx.outs.length > 0, 'Transaction has no outputs') | |
ebd8d4e8 IC |
13019 | } |
13020 | ||
ab78acc6 | 13021 | var tx = this.tx.clone() |
ebd8d4e8 | 13022 | |
ab78acc6 IC |
13023 | // Create script signatures from signature meta-data |
13024 | this.inputs.forEach(function (input, index) { | |
13025 | var scriptType = input.scriptType | |
13026 | var scriptSig | |
ebd8d4e8 | 13027 | |
ab78acc6 IC |
13028 | if (!allowIncomplete) { |
13029 | assert(!!scriptType, 'Transaction is not complete') | |
13030 | assert(scriptType in canSignTypes, scriptType + ' not supported') | |
13031 | assert(input.signatures, 'Transaction is missing signatures') | |
13032 | } | |
ebd8d4e8 | 13033 | |
ab78acc6 IC |
13034 | if (input.signatures) { |
13035 | switch (scriptType) { | |
13036 | case 'pubkeyhash': { | |
13037 | var pkhSignature = input.signatures[0].toScriptSignature(input.hashType) | |
13038 | scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0]) | |
13039 | break | |
13040 | } | |
ebd8d4e8 | 13041 | |
ab78acc6 IC |
13042 | case 'multisig': { |
13043 | // Array.prototype.map is sparse-compatible | |
13044 | var msSignatures = input.signatures.map(function (signature) { | |
13045 | return signature && signature.toScriptSignature(input.hashType) | |
13046 | }) | |
ebd8d4e8 | 13047 | |
ab78acc6 IC |
13048 | // fill in blanks with OP_0 |
13049 | if (allowIncomplete) { | |
13050 | for (var i = 0; i < msSignatures.length; ++i) { | |
13051 | if (msSignatures[i]) continue | |
ebd8d4e8 | 13052 | |
ab78acc6 IC |
13053 | msSignatures[i] = ops.OP_0 |
13054 | } | |
13055 | } else { | |
13056 | // Array.prototype.filter returns non-sparse array | |
13057 | msSignatures = msSignatures.filter(function (x) { return x }) | |
13058 | } | |
ebd8d4e8 | 13059 | |
ab78acc6 IC |
13060 | var redeemScript = allowIncomplete ? undefined : input.redeemScript |
13061 | scriptSig = scripts.multisigInput(msSignatures, redeemScript) | |
13062 | break | |
13063 | } | |
ebd8d4e8 | 13064 | |
ab78acc6 IC |
13065 | case 'pubkey': { |
13066 | var pkSignature = input.signatures[0].toScriptSignature(input.hashType) | |
13067 | scriptSig = scripts.pubKeyInput(pkSignature) | |
13068 | break | |
13069 | } | |
13070 | } | |
ebd8d4e8 | 13071 | } |
ebd8d4e8 | 13072 | |
ab78acc6 IC |
13073 | // did we build a scriptSig? |
13074 | if (scriptSig) { | |
13075 | // wrap as scriptHash if necessary | |
13076 | if (input.prevOutType === 'scripthash') { | |
13077 | scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript) | |
13078 | } | |
13079 | ||
13080 | tx.setInputScript(index, scriptSig) | |
ebd8d4e8 IC |
13081 | } |
13082 | }) | |
13083 | ||
ab78acc6 | 13084 | return tx |
ebd8d4e8 IC |
13085 | } |
13086 | ||
ab78acc6 IC |
13087 | TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) { |
13088 | assert(index in this.inputs, 'No input at index: ' + index) | |
13089 | hashType = hashType || Transaction.SIGHASH_ALL | |
ebd8d4e8 | 13090 | |
ab78acc6 IC |
13091 | var input = this.inputs[index] |
13092 | var canSign = input.hashType && | |
13093 | input.prevOutScript && | |
13094 | input.prevOutType && | |
13095 | input.pubKeys && | |
13096 | input.scriptType && | |
13097 | input.signatures | |
ebd8d4e8 | 13098 | |
ab78acc6 IC |
13099 | // are we almost ready to sign? |
13100 | if (canSign) { | |
13101 | // if redeemScript was provided, enforce consistency | |
13102 | if (redeemScript) { | |
13103 | assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript') | |
13104 | } | |
ebd8d4e8 | 13105 | |
ab78acc6 | 13106 | assert.equal(input.hashType, hashType, 'Inconsistent hashType') |
ebd8d4e8 | 13107 | |
ab78acc6 IC |
13108 | // no? prepare |
13109 | } else { | |
13110 | // must be pay-to-scriptHash? | |
13111 | if (redeemScript) { | |
13112 | // if we have a prevOutScript, enforce scriptHash equality to the redeemScript | |
13113 | if (input.prevOutScript) { | |
13114 | assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH') | |
13115 | ||
13116 | var scriptHash = input.prevOutScript.chunks[1] | |
13117 | assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex')) | |
13118 | } | |
ebd8d4e8 | 13119 | |
ab78acc6 IC |
13120 | var scriptType = scripts.classifyOutput(redeemScript) |
13121 | assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')') | |
ebd8d4e8 | 13122 | |
ab78acc6 IC |
13123 | var pubKeys = [] |
13124 | switch (scriptType) { | |
13125 | case 'multisig': { | |
13126 | pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer) | |
13127 | break | |
13128 | } | |
ebd8d4e8 | 13129 | |
ab78acc6 IC |
13130 | case 'pubkeyhash': { |
13131 | var pkh1 = redeemScript.chunks[2] | |
13132 | var pkh2 = privKey.pub.getAddress().hash | |
ebd8d4e8 | 13133 | |
ab78acc6 IC |
13134 | assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input') |
13135 | pubKeys = [privKey.pub] | |
13136 | break | |
13137 | } | |
ebd8d4e8 | 13138 | |
ab78acc6 IC |
13139 | case 'pubkey': { |
13140 | pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer) | |
13141 | break | |
13142 | } | |
13143 | } | |
ebd8d4e8 | 13144 | |
ab78acc6 IC |
13145 | if (!input.prevOutScript) { |
13146 | input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash()) | |
13147 | input.prevOutType = 'scripthash' | |
13148 | } | |
ebd8d4e8 | 13149 | |
ab78acc6 IC |
13150 | input.pubKeys = pubKeys |
13151 | input.redeemScript = redeemScript | |
13152 | input.scriptType = scriptType | |
ebd8d4e8 | 13153 | |
ab78acc6 IC |
13154 | // cannot be pay-to-scriptHash |
13155 | } else { | |
13156 | assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript') | |
ebd8d4e8 | 13157 | |
ab78acc6 IC |
13158 | // can we otherwise sign this? |
13159 | if (input.scriptType) { | |
13160 | assert(input.pubKeys, input.scriptType + ' not supported') | |
ebd8d4e8 | 13161 | |
ab78acc6 IC |
13162 | // we know nothin' Jon Snow, assume pubKeyHash |
13163 | } else { | |
13164 | input.prevOutScript = privKey.pub.getAddress().toOutputScript() | |
13165 | input.prevOutType = 'pubkeyhash' | |
13166 | input.pubKeys = [privKey.pub] | |
13167 | input.scriptType = input.prevOutType | |
13168 | } | |
13169 | } | |
ebd8d4e8 | 13170 | |
ab78acc6 IC |
13171 | input.hashType = hashType |
13172 | input.signatures = input.signatures || [] | |
13173 | } | |
13174 | ||
13175 | var signatureScript = input.redeemScript || input.prevOutScript | |
13176 | var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType) | |
13177 | ||
13178 | // enforce signature order matches public keys | |
13179 | if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) { | |
13180 | // maintain a local copy of unmatched signatures | |
13181 | var unmatched = input.signatures.slice() | |
13182 | ||
13183 | input.signatures = input.pubKeys.map(function (pubKey) { | |
13184 | var match | |
13185 | ||
13186 | // check for any matching signatures | |
13187 | unmatched.some(function (signature, i) { | |
13188 | if (!pubKey.verify(signatureHash, signature)) return false | |
13189 | match = signature | |
13190 | ||
13191 | // remove matched signature from unmatched | |
13192 | unmatched.splice(i, 1) | |
13193 | ||
13194 | return true | |
13195 | }) | |
13196 | ||
13197 | return match || undefined | |
13198 | }) | |
13199 | } | |
13200 | ||
13201 | // enforce in order signing of public keys | |
13202 | assert(input.pubKeys.some(function (pubKey, i) { | |
13203 | if (!privKey.pub.Q.equals(pubKey.Q)) return false | |
13204 | ||
13205 | assert(!input.signatures[i], 'Signature already exists') | |
13206 | var signature = privKey.sign(signatureHash) | |
13207 | input.signatures[i] = signature | |
13208 | ||
13209 | return true | |
13210 | }, this), 'privateKey cannot sign for this input') | |
ebd8d4e8 IC |
13211 | } |
13212 | ||
ab78acc6 | 13213 | module.exports = TransactionBuilder |
ebd8d4e8 | 13214 | |
ab78acc6 IC |
13215 | }).call(this,require("buffer").Buffer) |
13216 | },{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){ | |
ebd8d4e8 | 13217 | (function (Buffer){ |
ab78acc6 IC |
13218 | var assert = require('assert') |
13219 | var bufferutils = require('./bufferutils') | |
13220 | var typeForce = require('typeforce') | |
13221 | var networks = require('./networks') | |
13222 | var randomBytes = require('randombytes') | |
ebd8d4e8 | 13223 | |
ab78acc6 IC |
13224 | var Address = require('./address') |
13225 | var HDNode = require('./hdnode') | |
13226 | var TransactionBuilder = require('./transaction_builder') | |
13227 | var Script = require('./script') | |
ebd8d4e8 | 13228 | |
ab78acc6 IC |
13229 | function Wallet (seed, network) { |
13230 | console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296') | |
13231 | ||
13232 | seed = seed || randomBytes(32) | |
ebd8d4e8 IC |
13233 | network = network || networks.bitcoin |
13234 | ||
13235 | // Stored in a closure to make accidental serialization less likely | |
ab78acc6 IC |
13236 | var masterKey = HDNode.fromSeedBuffer(seed, network) |
13237 | ||
13238 | // HD first-level child derivation method should be hardened | |
13239 | // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254 | |
13240 | var accountZero = masterKey.deriveHardened(0) | |
13241 | var externalAccount = accountZero.derive(0) | |
13242 | var internalAccount = accountZero.derive(1) | |
ebd8d4e8 | 13243 | |
ebd8d4e8 IC |
13244 | this.addresses = [] |
13245 | this.changeAddresses = [] | |
ab78acc6 IC |
13246 | this.network = network |
13247 | this.unspents = [] | |
ebd8d4e8 | 13248 | |
ab78acc6 IC |
13249 | // FIXME: remove in 2.0.0 |
13250 | this.unspentMap = {} | |
ebd8d4e8 | 13251 | |
ab78acc6 IC |
13252 | // FIXME: remove in 2.0.0 |
13253 | var me = this | |
13254 | this.newMasterKey = function (seed) { | |
13255 | console.warn('newMasterKey is deprecated, please make a new Wallet instance instead') | |
13256 | ||
13257 | seed = seed || randomBytes(32) | |
13258 | masterKey = HDNode.fromSeedBuffer(seed, network) | |
ebd8d4e8 | 13259 | |
ab78acc6 | 13260 | accountZero = masterKey.deriveHardened(0) |
ebd8d4e8 IC |
13261 | externalAccount = accountZero.derive(0) |
13262 | internalAccount = accountZero.derive(1) | |
13263 | ||
13264 | me.addresses = [] | |
13265 | me.changeAddresses = [] | |
13266 | ||
ab78acc6 IC |
13267 | me.unspents = [] |
13268 | me.unspentMap = {} | |
ebd8d4e8 IC |
13269 | } |
13270 | ||
ab78acc6 IC |
13271 | this.getMasterKey = function () { |
13272 | return masterKey | |
ebd8d4e8 | 13273 | } |
ab78acc6 IC |
13274 | this.getAccountZero = function () { |
13275 | return accountZero | |
ebd8d4e8 | 13276 | } |
ab78acc6 IC |
13277 | this.getExternalAccount = function () { |
13278 | return externalAccount | |
13279 | } | |
13280 | this.getInternalAccount = function () { | |
13281 | return internalAccount | |
ebd8d4e8 | 13282 | } |
ab78acc6 | 13283 | } |
ebd8d4e8 | 13284 | |
ab78acc6 IC |
13285 | Wallet.prototype.createTransaction = function (to, value, options) { |
13286 | // FIXME: remove in 2.0.0 | |
13287 | if (typeof options !== 'object') { | |
13288 | if (options !== undefined) { | |
13289 | console.warn('Non options object parameters are deprecated, use options object instead') | |
ebd8d4e8 | 13290 | |
ab78acc6 IC |
13291 | options = { |
13292 | fixedFee: arguments[2], | |
13293 | changeAddress: arguments[3] | |
13294 | } | |
ebd8d4e8 | 13295 | } |
ebd8d4e8 IC |
13296 | } |
13297 | ||
ab78acc6 | 13298 | options = options || {} |
ebd8d4e8 | 13299 | |
ab78acc6 | 13300 | assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)') |
ebd8d4e8 | 13301 | |
ab78acc6 IC |
13302 | var changeAddress = options.changeAddress |
13303 | var fixedFee = options.fixedFee | |
13304 | var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0 | |
ebd8d4e8 | 13305 | |
ab78acc6 IC |
13306 | // filter by minConf, then pending and sort by descending value |
13307 | var unspents = this.unspents.filter(function (unspent) { | |
13308 | return unspent.confirmations >= minConf | |
13309 | }).filter(function (unspent) { | |
13310 | return !unspent.pending | |
13311 | }).sort(function (o1, o2) { | |
13312 | return o2.value - o1.value | |
13313 | }) | |
ebd8d4e8 | 13314 | |
ab78acc6 IC |
13315 | var accum = 0 |
13316 | var addresses = [] | |
13317 | var subTotal = value | |
ebd8d4e8 | 13318 | |
ab78acc6 IC |
13319 | var txb = new TransactionBuilder() |
13320 | txb.addOutput(to, value) | |
ebd8d4e8 | 13321 | |
ab78acc6 IC |
13322 | for (var i = 0; i < unspents.length; ++i) { |
13323 | var unspent = unspents[i] | |
13324 | addresses.push(unspent.address) | |
ebd8d4e8 | 13325 | |
ab78acc6 IC |
13326 | txb.addInput(unspent.txHash, unspent.index) |
13327 | ||
13328 | var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee | |
ebd8d4e8 | 13329 | |
ab78acc6 IC |
13330 | accum += unspent.value |
13331 | subTotal = value + fee | |
13332 | ||
13333 | if (accum >= subTotal) { | |
13334 | var change = accum - subTotal | |
13335 | ||
13336 | if (change > this.network.dustThreshold) { | |
13337 | txb.addOutput(changeAddress || this.getChangeAddress(), change) | |
ebd8d4e8 | 13338 | } |
ebd8d4e8 | 13339 | |
ab78acc6 | 13340 | break |
ebd8d4e8 IC |
13341 | } |
13342 | } | |
13343 | ||
ab78acc6 | 13344 | assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal) |
ebd8d4e8 | 13345 | |
ab78acc6 IC |
13346 | return this.signWith(txb, addresses).build() |
13347 | } | |
ebd8d4e8 | 13348 | |
ab78acc6 IC |
13349 | // FIXME: remove in 2.0.0 |
13350 | Wallet.prototype.processPendingTx = function (tx) { | |
13351 | this.__processTx(tx, true) | |
13352 | } | |
ebd8d4e8 | 13353 | |
ab78acc6 IC |
13354 | // FIXME: remove in 2.0.0 |
13355 | Wallet.prototype.processConfirmedTx = function (tx) { | |
13356 | this.__processTx(tx, false) | |
13357 | } | |
ebd8d4e8 | 13358 | |
ab78acc6 IC |
13359 | // FIXME: remove in 2.0.0 |
13360 | Wallet.prototype.__processTx = function (tx, isPending) { | |
13361 | console.warn('processTransaction is considered harmful, see issue #260 for more information') | |
ebd8d4e8 | 13362 | |
ab78acc6 IC |
13363 | var txId = tx.getId() |
13364 | var txHash = tx.getHash() | |
ebd8d4e8 | 13365 | |
ab78acc6 IC |
13366 | tx.outs.forEach(function (txOut, i) { |
13367 | var address | |
ebd8d4e8 | 13368 | |
ab78acc6 IC |
13369 | try { |
13370 | address = Address.fromOutputScript(txOut.script, this.network).toString() | |
13371 | } catch (e) { | |
13372 | if (!(e.message.match(/has no matching Address/))) | |
13373 | throw e | |
13374 | } | |
13375 | ||
13376 | var myAddresses = this.addresses.concat(this.changeAddresses) | |
13377 | if (myAddresses.indexOf(address) > -1) { | |
13378 | var lookup = txId + ':' + i | |
13379 | if (lookup in this.unspentMap) return | |
13380 | ||
13381 | // its unique, add it | |
13382 | var unspent = { | |
13383 | address: address, | |
13384 | confirmations: 0, // no way to determine this without more information | |
13385 | index: i, | |
13386 | txHash: txHash, | |
13387 | txId: txId, | |
13388 | value: txOut.value, | |
13389 | pending: isPending | |
ebd8d4e8 | 13390 | } |
ebd8d4e8 | 13391 | |
ab78acc6 IC |
13392 | this.unspentMap[lookup] = unspent |
13393 | this.unspents.push(unspent) | |
13394 | } | |
13395 | }, this) | |
ebd8d4e8 | 13396 | |
ab78acc6 IC |
13397 | tx.ins.forEach(function (txIn) { |
13398 | // copy and convert to big-endian hex | |
13399 | var txInId = bufferutils.reverse(txIn.hash).toString('hex') | |
ebd8d4e8 | 13400 | |
ab78acc6 IC |
13401 | var lookup = txInId + ':' + txIn.index |
13402 | if (!(lookup in this.unspentMap)) return | |
ebd8d4e8 | 13403 | |
ab78acc6 | 13404 | var unspent = this.unspentMap[lookup] |
ebd8d4e8 | 13405 | |
ab78acc6 IC |
13406 | if (isPending) { |
13407 | unspent.pending = true | |
13408 | unspent.spent = true | |
13409 | } else { | |
13410 | delete this.unspentMap[lookup] | |
ebd8d4e8 | 13411 | |
ab78acc6 IC |
13412 | this.unspents = this.unspents.filter(function (unspent2) { |
13413 | return unspent !== unspent2 | |
13414 | }) | |
13415 | } | |
13416 | }, this) | |
13417 | } | |
ebd8d4e8 | 13418 | |
ab78acc6 IC |
13419 | Wallet.prototype.generateAddress = function () { |
13420 | var k = this.addresses.length | |
13421 | var address = this.getExternalAccount().derive(k).getAddress() | |
ebd8d4e8 | 13422 | |
ab78acc6 | 13423 | this.addresses.push(address.toString()) |
ebd8d4e8 | 13424 | |
ab78acc6 IC |
13425 | return this.getReceiveAddress() |
13426 | } | |
ebd8d4e8 | 13427 | |
ab78acc6 IC |
13428 | Wallet.prototype.generateChangeAddress = function () { |
13429 | var k = this.changeAddresses.length | |
13430 | var address = this.getInternalAccount().derive(k).getAddress() | |
ebd8d4e8 | 13431 | |
ab78acc6 | 13432 | this.changeAddresses.push(address.toString()) |
ebd8d4e8 | 13433 | |
ab78acc6 IC |
13434 | return this.getChangeAddress() |
13435 | } | |
ebd8d4e8 | 13436 | |
ab78acc6 IC |
13437 | Wallet.prototype.getAddress = function () { |
13438 | if (this.addresses.length === 0) { | |
13439 | this.generateAddress() | |
ebd8d4e8 IC |
13440 | } |
13441 | ||
ab78acc6 IC |
13442 | return this.addresses[this.addresses.length - 1] |
13443 | } | |
ebd8d4e8 | 13444 | |
ab78acc6 IC |
13445 | Wallet.prototype.getBalance = function (minConf) { |
13446 | minConf = minConf || 0 | |
ebd8d4e8 | 13447 | |
ab78acc6 IC |
13448 | return this.unspents.filter(function (unspent) { |
13449 | return unspent.confirmations >= minConf | |
13450 | ||
13451 | // FIXME: remove spent filter in 2.0.0 | |
13452 | }).filter(function (unspent) { | |
13453 | return !unspent.spent | |
13454 | }).reduce(function (accum, unspent) { | |
13455 | return accum + unspent.value | |
13456 | }, 0) | |
13457 | } | |
ebd8d4e8 | 13458 | |
ab78acc6 IC |
13459 | Wallet.prototype.getChangeAddress = function () { |
13460 | if (this.changeAddresses.length === 0) { | |
13461 | this.generateChangeAddress() | |
ebd8d4e8 IC |
13462 | } |
13463 | ||
ab78acc6 IC |
13464 | return this.changeAddresses[this.changeAddresses.length - 1] |
13465 | } | |
13466 | ||
13467 | Wallet.prototype.getInternalPrivateKey = function (index) { | |
13468 | return this.getInternalAccount().derive(index).privKey | |
13469 | } | |
13470 | ||
13471 | Wallet.prototype.getPrivateKey = function (index) { | |
13472 | return this.getExternalAccount().derive(index).privKey | |
13473 | } | |
13474 | ||
13475 | Wallet.prototype.getPrivateKeyForAddress = function (address) { | |
13476 | var index | |
ebd8d4e8 | 13477 | |
ab78acc6 IC |
13478 | if ((index = this.addresses.indexOf(address)) > -1) { |
13479 | return this.getPrivateKey(index) | |
ebd8d4e8 IC |
13480 | } |
13481 | ||
ab78acc6 IC |
13482 | if ((index = this.changeAddresses.indexOf(address)) > -1) { |
13483 | return this.getInternalPrivateKey(index) | |
ebd8d4e8 IC |
13484 | } |
13485 | ||
ab78acc6 IC |
13486 | assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated') |
13487 | } | |
ebd8d4e8 | 13488 | |
ab78acc6 IC |
13489 | Wallet.prototype.getUnspentOutputs = function (minConf) { |
13490 | minConf = minConf || 0 | |
ebd8d4e8 | 13491 | |
ab78acc6 IC |
13492 | return this.unspents.filter(function (unspent) { |
13493 | return unspent.confirmations >= minConf | |
ebd8d4e8 | 13494 | |
ab78acc6 IC |
13495 | // FIXME: remove spent filter in 2.0.0 |
13496 | }).filter(function (unspent) { | |
13497 | return !unspent.spent | |
13498 | }).map(function (unspent) { | |
13499 | return { | |
13500 | address: unspent.address, | |
13501 | confirmations: unspent.confirmations, | |
13502 | index: unspent.index, | |
13503 | txId: unspent.txId, | |
13504 | value: unspent.value, | |
13505 | ||
13506 | // FIXME: remove in 2.0.0 | |
13507 | hash: unspent.txId, | |
13508 | pending: unspent.pending | |
13509 | } | |
13510 | }) | |
13511 | } | |
ebd8d4e8 | 13512 | |
ab78acc6 IC |
13513 | Wallet.prototype.setUnspentOutputs = function (unspents) { |
13514 | this.unspentMap = {} | |
13515 | this.unspents = unspents.map(function (unspent) { | |
13516 | // FIXME: remove unspent.hash in 2.0.0 | |
13517 | var txId = unspent.txId || unspent.hash | |
13518 | var index = unspent.index | |
ebd8d4e8 | 13519 | |
ab78acc6 IC |
13520 | // FIXME: remove in 2.0.0 |
13521 | if (unspent.hash !== undefined) { | |
13522 | console.warn('unspent.hash is deprecated, use unspent.txId instead') | |
13523 | } | |
ebd8d4e8 | 13524 | |
ab78acc6 IC |
13525 | // FIXME: remove in 2.0.0 |
13526 | if (index === undefined) { | |
13527 | console.warn('unspent.outputIndex is deprecated, use unspent.index instead') | |
13528 | index = unspent.outputIndex | |
13529 | } | |
ebd8d4e8 | 13530 | |
ab78acc6 IC |
13531 | typeForce('String', txId) |
13532 | typeForce('Number', index) | |
13533 | typeForce('Number', unspent.value) | |
13534 | ||
13535 | assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId) | |
13536 | assert.doesNotThrow(function () { | |
13537 | Address.fromBase58Check(unspent.address) | |
13538 | }, 'Expected Base58 Address, got ' + unspent.address) | |
13539 | assert(isFinite(index), 'Expected finite index, got ' + index) | |
13540 | ||
13541 | // FIXME: remove branch in 2.0.0 | |
13542 | if (unspent.confirmations !== undefined) { | |
13543 | typeForce('Number', unspent.confirmations) | |
ebd8d4e8 | 13544 | } |
ebd8d4e8 | 13545 | |
ab78acc6 | 13546 | var txHash = bufferutils.reverse(new Buffer(txId, 'hex')) |
ebd8d4e8 | 13547 | |
ab78acc6 IC |
13548 | unspent = { |
13549 | address: unspent.address, | |
13550 | confirmations: unspent.confirmations || 0, | |
13551 | index: index, | |
13552 | txHash: txHash, | |
13553 | txId: txId, | |
13554 | value: unspent.value, | |
ebd8d4e8 | 13555 | |
ab78acc6 IC |
13556 | // FIXME: remove in 2.0.0 |
13557 | pending: unspent.pending || false | |
13558 | } | |
13559 | ||
13560 | // FIXME: remove in 2.0.0 | |
13561 | this.unspentMap[txId + ':' + index] = unspent | |
13562 | ||
13563 | return unspent | |
13564 | }, this) | |
13565 | } | |
13566 | ||
13567 | Wallet.prototype.signWith = function (tx, addresses) { | |
13568 | addresses.forEach(function (address, i) { | |
13569 | var privKey = this.getPrivateKeyForAddress(address) | |
13570 | ||
13571 | tx.sign(i, privKey) | |
13572 | }, this) | |
13573 | ||
13574 | return tx | |
13575 | } | |
13576 | ||
13577 | function estimatePaddedFee (tx, network) { | |
13578 | var tmpTx = tx.clone() | |
13579 | tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0) | |
13580 | ||
13581 | return network.estimateFee(tmpTx) | |
ebd8d4e8 IC |
13582 | } |
13583 | ||
ab78acc6 IC |
13584 | // FIXME: 1.0.0 shims, remove in 2.0.0 |
13585 | Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress | |
13586 | Wallet.prototype.createTx = Wallet.prototype.createTransaction | |
13587 | ||
ebd8d4e8 IC |
13588 | module.exports = Wallet |
13589 | ||
ab78acc6 IC |
13590 | }).call(this,require("buffer").Buffer) |
13591 | },{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64) | |
13592 | });</script> | |
d5dc92fd IC |
13593 | <script>bitcoin.networks.shadow = { |
13594 | magicPrefix: '\x19ShadowCash Signed Message:\n', | |
13595 | bip32: { | |
13596 | public: 0xEE80286A, | |
13597 | private: 0xEE8031E8 | |
13598 | }, | |
13599 | pubKeyHash: 0x3f, | |
13600 | scriptHash: 0x7d, | |
13601 | wif: 0xbf, | |
13602 | dustThreshold: 0, | |
13603 | feePerKb: 1000, | |
13604 | estimateFee: function() { return "unused in this app" }, | |
13605 | }; | |
13606 | ||
13607 | bitcoin.networks.shadowtn = { | |
13608 | magicPrefix: '\x19ShadowCash Signed Message:\n', | |
13609 | bip32: { | |
13610 | public: 0x76C0FDFB, | |
13611 | private: 0x76C1077A | |
13612 | }, | |
13613 | pubKeyHash: 0x7f, | |
13614 | scriptHash: 0xc4, | |
13615 | wif: 0xff, | |
13616 | dustThreshold: 0, | |
13617 | feePerKb: 1000, | |
13618 | estimateFee: function() { return "unused in this app" }, | |
13619 | }; | |
5c434a8a CM |
13620 | |
13621 | bitcoin.networks.clam = { | |
13622 | bip32: { | |
13623 | public: 0xa8c26d64, | |
13624 | private: 0xa8c17826 | |
13625 | }, | |
13626 | pubKeyHash: 0x89, | |
13627 | wif: 0x85, | |
13628 | }; | |
5493efc3 | 13629 | |
13630 | bitcoin.networks.dash = { | |
13631 | bip32: { | |
13632 | public: 0x0488b21e, | |
13633 | private: 0x0488ade4 | |
13634 | }, | |
68151a47 | 13635 | pubKeyHash: 0x4c, |
5493efc3 | 13636 | scriptHash: 0x10, |
13637 | wif: 0xcc, | |
13638 | }; | |
13639 | ||
07ac4350 | 13640 | bitcoin.networks.namecoin = { |
13641 | bip32: { | |
13642 | public: 0x0488b21e, | |
13643 | private: 0x0488ade4 | |
13644 | }, | |
13645 | pubKeyHash: 0x34, | |
13646 | //scriptHash: 0x10, | |
13647 | wif: 0x80, | |
13648 | }; | |
13649 | ||
13650 | bitcoin.networks.peercoin = { | |
13651 | bip32: { | |
13652 | public: 0x0488b21e, | |
13653 | private: 0x0488ade4 | |
13654 | }, | |
13655 | pubKeyHash: 0x37, | |
13656 | //scriptHash: 0x10, | |
13657 | wif: 0xb7, | |
13658 | }; | |
13659 | ||
d5dc92fd | 13660 | </script> |
ab78acc6 | 13661 | <script>// Select components from sjcl to suit the crypto operations bip39 requires. |
80c4dd2a IC |
13662 | |
13663 | //// base.js | |
13664 | ||
13665 | /** @fileOverview Javascript cryptography implementation. | |
13666 | * | |
13667 | * Crush to remove comments, shorten variable names and | |
13668 | * generally reduce transmission size. | |
13669 | * | |
13670 | * @author Emily Stark | |
13671 | * @author Mike Hamburg | |
13672 | * @author Dan Boneh | |
13673 | */ | |
13674 | ||
13675 | "use strict"; | |
13676 | /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */ | |
13677 | /*global document, window, escape, unescape, module, require, Uint32Array */ | |
13678 | ||
13679 | /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */ | |
13680 | var sjcl = { | |
13681 | /** @namespace Symmetric ciphers. */ | |
13682 | cipher: {}, | |
13683 | ||
13684 | /** @namespace Hash functions. Right now only SHA256 is implemented. */ | |
13685 | hash: {}, | |
13686 | ||
13687 | /** @namespace Key exchange functions. Right now only SRP is implemented. */ | |
13688 | keyexchange: {}, | |
13689 | ||
13690 | /** @namespace Block cipher modes of operation. */ | |
13691 | mode: {}, | |
13692 | ||
13693 | /** @namespace Miscellaneous. HMAC and PBKDF2. */ | |
13694 | misc: {}, | |
13695 | ||
13696 | /** | |
13697 | * @namespace Bit array encoders and decoders. | |
13698 | * | |
13699 | * @description | |
13700 | * The members of this namespace are functions which translate between | |
13701 | * SJCL's bitArrays and other objects (usually strings). Because it | |
13702 | * isn't always clear which direction is encoding and which is decoding, | |
13703 | * the method names are "fromBits" and "toBits". | |
13704 | */ | |
13705 | codec: {}, | |
13706 | ||
13707 | /** @namespace Exceptions. */ | |
13708 | exception: { | |
13709 | /** @constructor Ciphertext is corrupt. */ | |
13710 | corrupt: function(message) { | |
13711 | this.toString = function() { return "CORRUPT: "+this.message; }; | |
13712 | this.message = message; | |
13713 | }, | |
13714 | ||
13715 | /** @constructor Invalid parameter. */ | |
13716 | invalid: function(message) { | |
13717 | this.toString = function() { return "INVALID: "+this.message; }; | |
13718 | this.message = message; | |
13719 | }, | |
13720 | ||
13721 | /** @constructor Bug or missing feature in SJCL. @constructor */ | |
13722 | bug: function(message) { | |
13723 | this.toString = function() { return "BUG: "+this.message; }; | |
13724 | this.message = message; | |
13725 | }, | |
13726 | ||
13727 | /** @constructor Something isn't ready. */ | |
13728 | notReady: function(message) { | |
13729 | this.toString = function() { return "NOT READY: "+this.message; }; | |
13730 | this.message = message; | |
ebd8d4e8 | 13731 | } |
80c4dd2a IC |
13732 | } |
13733 | }; | |
13734 | ||
13735 | if(typeof module !== 'undefined' && module.exports){ | |
13736 | module.exports = sjcl; | |
13737 | } | |
13738 | if (typeof define === "function") { | |
13739 | define([], function () { | |
13740 | return sjcl; | |
13741 | }); | |
13742 | } | |
13743 | ||
13744 | ||
13745 | //// bitArray.js | |
13746 | ||
13747 | /** @fileOverview Arrays of bits, encoded as arrays of Numbers. | |
13748 | * | |
13749 | * @author Emily Stark | |
13750 | * @author Mike Hamburg | |
13751 | * @author Dan Boneh | |
13752 | */ | |
13753 | ||
13754 | /** @namespace Arrays of bits, encoded as arrays of Numbers. | |
13755 | * | |
13756 | * @description | |
13757 | * <p> | |
13758 | * These objects are the currency accepted by SJCL's crypto functions. | |
13759 | * </p> | |
13760 | * | |
13761 | * <p> | |
13762 | * Most of our crypto primitives operate on arrays of 4-byte words internally, | |
13763 | * but many of them can take arguments that are not a multiple of 4 bytes. | |
13764 | * This library encodes arrays of bits (whose size need not be a multiple of 8 | |
13765 | * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an | |
13766 | * array of words, 32 bits at a time. Since the words are double-precision | |
13767 | * floating point numbers, they fit some extra data. We use this (in a private, | |
13768 | * possibly-changing manner) to encode the number of bits actually present | |
13769 | * in the last word of the array. | |
13770 | * </p> | |
13771 | * | |
13772 | * <p> | |
13773 | * Because bitwise ops clear this out-of-band data, these arrays can be passed | |
13774 | * to ciphers like AES which want arrays of words. | |
13775 | * </p> | |
13776 | */ | |
13777 | sjcl.bitArray = { | |
13778 | /** | |
13779 | * Array slices in units of bits. | |
13780 | * @param {bitArray} a The array to slice. | |
13781 | * @param {Number} bstart The offset to the start of the slice, in bits. | |
13782 | * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined, | |
13783 | * slice until the end of the array. | |
13784 | * @return {bitArray} The requested slice. | |
13785 | */ | |
13786 | bitSlice: function (a, bstart, bend) { | |
13787 | a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1); | |
13788 | return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart); | |
13789 | }, | |
13790 | ||
13791 | /** | |
13792 | * Extract a number packed into a bit array. | |
13793 | * @param {bitArray} a The array to slice. | |
13794 | * @param {Number} bstart The offset to the start of the slice, in bits. | |
13795 | * @param {Number} length The length of the number to extract. | |
13796 | * @return {Number} The requested slice. | |
13797 | */ | |
13798 | extract: function(a, bstart, blength) { | |
13799 | // FIXME: this Math.floor is not necessary at all, but for some reason | |
13800 | // seems to suppress a bug in the Chromium JIT. | |
13801 | var x, sh = Math.floor((-bstart-blength) & 31); | |
13802 | if ((bstart + blength - 1 ^ bstart) & -32) { | |
13803 | // it crosses a boundary | |
13804 | x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh); | |
13805 | } else { | |
13806 | // within a single word | |
13807 | x = a[bstart/32|0] >>> sh; | |
ebd8d4e8 | 13808 | } |
80c4dd2a IC |
13809 | return x & ((1<<blength) - 1); |
13810 | }, | |
13811 | ||
13812 | /** | |
13813 | * Concatenate two bit arrays. | |
13814 | * @param {bitArray} a1 The first array. | |
13815 | * @param {bitArray} a2 The second array. | |
13816 | * @return {bitArray} The concatenation of a1 and a2. | |
13817 | */ | |
13818 | concat: function (a1, a2) { | |
13819 | if (a1.length === 0 || a2.length === 0) { | |
13820 | return a1.concat(a2); | |
13821 | } | |
13822 | ||
13823 | var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last); | |
13824 | if (shift === 32) { | |
13825 | return a1.concat(a2); | |
13826 | } else { | |
13827 | return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1)); | |
ebd8d4e8 | 13828 | } |
80c4dd2a IC |
13829 | }, |
13830 | ||
13831 | /** | |
13832 | * Find the length of an array of bits. | |
13833 | * @param {bitArray} a The array. | |
13834 | * @return {Number} The length of a, in bits. | |
13835 | */ | |
13836 | bitLength: function (a) { | |
13837 | var l = a.length, x; | |
13838 | if (l === 0) { return 0; } | |
13839 | x = a[l - 1]; | |
13840 | return (l-1) * 32 + sjcl.bitArray.getPartial(x); | |
13841 | }, | |
13842 | ||
13843 | /** | |
13844 | * Truncate an array. | |
13845 | * @param {bitArray} a The array. | |
13846 | * @param {Number} len The length to truncate to, in bits. | |
13847 | * @return {bitArray} A new array, truncated to len bits. | |
13848 | */ | |
13849 | clamp: function (a, len) { | |
13850 | if (a.length * 32 < len) { return a; } | |
13851 | a = a.slice(0, Math.ceil(len / 32)); | |
13852 | var l = a.length; | |
13853 | len = len & 31; | |
13854 | if (l > 0 && len) { | |
13855 | a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1); | |
13856 | } | |
13857 | return a; | |
13858 | }, | |
13859 | ||
13860 | /** | |
13861 | * Make a partial word for a bit array. | |
13862 | * @param {Number} len The number of bits in the word. | |
13863 | * @param {Number} x The bits. | |
13864 | * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side. | |
13865 | * @return {Number} The partial word. | |
13866 | */ | |
13867 | partial: function (len, x, _end) { | |
13868 | if (len === 32) { return x; } | |
13869 | return (_end ? x|0 : x << (32-len)) + len * 0x10000000000; | |
13870 | }, | |
13871 | ||
13872 | /** | |
13873 | * Get the number of bits used by a partial word. | |
13874 | * @param {Number} x The partial word. | |
13875 | * @return {Number} The number of bits used by the partial word. | |
13876 | */ | |
13877 | getPartial: function (x) { | |
13878 | return Math.round(x/0x10000000000) || 32; | |
13879 | }, | |
13880 | ||
13881 | /** | |
13882 | * Compare two arrays for equality in a predictable amount of time. | |
13883 | * @param {bitArray} a The first array. | |
13884 | * @param {bitArray} b The second array. | |
13885 | * @return {boolean} true if a == b; false otherwise. | |
13886 | */ | |
13887 | equal: function (a, b) { | |
13888 | if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) { | |
13889 | return false; | |
ebd8d4e8 | 13890 | } |
80c4dd2a IC |
13891 | var x = 0, i; |
13892 | for (i=0; i<a.length; i++) { | |
13893 | x |= a[i]^b[i]; | |
ebd8d4e8 | 13894 | } |
80c4dd2a IC |
13895 | return (x === 0); |
13896 | }, | |
13897 | ||
13898 | /** Shift an array right. | |
13899 | * @param {bitArray} a The array to shift. | |
13900 | * @param {Number} shift The number of bits to shift. | |
13901 | * @param {Number} [carry=0] A byte to carry in | |
13902 | * @param {bitArray} [out=[]] An array to prepend to the output. | |
13903 | * @private | |
13904 | */ | |
13905 | _shiftRight: function (a, shift, carry, out) { | |
13906 | var i, last2=0, shift2; | |
13907 | if (out === undefined) { out = []; } | |
13908 | ||
13909 | for (; shift >= 32; shift -= 32) { | |
13910 | out.push(carry); | |
13911 | carry = 0; | |
13912 | } | |
13913 | if (shift === 0) { | |
13914 | return out.concat(a); | |
13915 | } | |
13916 | ||
13917 | for (i=0; i<a.length; i++) { | |
13918 | out.push(carry | a[i]>>>shift); | |
13919 | carry = a[i] << (32-shift); | |
13920 | } | |
13921 | last2 = a.length ? a[a.length-1] : 0; | |
13922 | shift2 = sjcl.bitArray.getPartial(last2); | |
13923 | out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1)); | |
13924 | return out; | |
13925 | }, | |
13926 | ||
13927 | /** xor a block of 4 words together. | |
13928 | * @private | |
13929 | */ | |
13930 | _xor4: function(x,y) { | |
13931 | return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]]; | |
13932 | }, | |
13933 | ||
13934 | /** byteswap a word array inplace. | |
13935 | * (does not handle partial words) | |
13936 | * @param {sjcl.bitArray} a word array | |
13937 | * @return {sjcl.bitArray} byteswapped array | |
13938 | */ | |
13939 | byteswapM: function(a) { | |
13940 | var i, v, m = 0xff00; | |
13941 | for (i = 0; i < a.length; ++i) { | |
13942 | v = a[i]; | |
13943 | a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24); | |
ebd8d4e8 | 13944 | } |
80c4dd2a IC |
13945 | return a; |
13946 | } | |
13947 | }; | |
13948 | ||
13949 | ||
13950 | //// codecString.js | |
13951 | ||
13952 | /** @fileOverview Bit array codec implementations. | |
13953 | * | |
13954 | * @author Emily Stark | |
13955 | * @author Mike Hamburg | |
13956 | * @author Dan Boneh | |
13957 | */ | |
13958 | ||
13959 | /** @namespace UTF-8 strings */ | |
13960 | sjcl.codec.utf8String = { | |
13961 | /** Convert from a bitArray to a UTF-8 string. */ | |
13962 | fromBits: function (arr) { | |
13963 | var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp; | |
13964 | for (i=0; i<bl/8; i++) { | |
13965 | if ((i&3) === 0) { | |
13966 | tmp = arr[i/4]; | |
13967 | } | |
13968 | out += String.fromCharCode(tmp >>> 24); | |
13969 | tmp <<= 8; | |
ebd8d4e8 | 13970 | } |
80c4dd2a IC |
13971 | return decodeURIComponent(escape(out)); |
13972 | }, | |
13973 | ||
13974 | /** Convert from a UTF-8 string to a bitArray. */ | |
13975 | toBits: function (str) { | |
13976 | str = unescape(encodeURIComponent(str)); | |
13977 | var out = [], i, tmp=0; | |
13978 | for (i=0; i<str.length; i++) { | |
13979 | tmp = tmp << 8 | str.charCodeAt(i); | |
13980 | if ((i&3) === 3) { | |
13981 | out.push(tmp); | |
13982 | tmp = 0; | |
13983 | } | |
ebd8d4e8 | 13984 | } |
80c4dd2a IC |
13985 | if (i&3) { |
13986 | out.push(sjcl.bitArray.partial(8*(i&3), tmp)); | |
ebd8d4e8 | 13987 | } |
80c4dd2a IC |
13988 | return out; |
13989 | } | |
13990 | }; | |
13991 | ||
13992 | ||
13993 | //// codecHex.js | |
13994 | ||
13995 | /** @fileOverview Bit array codec implementations. | |
13996 | * | |
13997 | * @author Emily Stark | |
13998 | * @author Mike Hamburg | |
13999 | * @author Dan Boneh | |
14000 | */ | |
14001 | ||
14002 | /** @namespace Hexadecimal */ | |
14003 | sjcl.codec.hex = { | |
14004 | /** Convert from a bitArray to a hex string. */ | |
14005 | fromBits: function (arr) { | |
14006 | var out = "", i; | |
14007 | for (i=0; i<arr.length; i++) { | |
14008 | out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4); | |
ebd8d4e8 | 14009 | } |
80c4dd2a IC |
14010 | return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 "); |
14011 | }, | |
14012 | /** Convert from a hex string to a bitArray. */ | |
14013 | toBits: function (str) { | |
14014 | var i, out=[], len; | |
14015 | str = str.replace(/\s|0x/g, ""); | |
14016 | len = str.length; | |
14017 | str = str + "00000000"; | |
14018 | for (i=0; i<str.length; i+=8) { | |
14019 | out.push(parseInt(str.substr(i,8),16)^0); | |
ebd8d4e8 | 14020 | } |
80c4dd2a IC |
14021 | return sjcl.bitArray.clamp(out, len*4); |
14022 | } | |
14023 | }; | |
14024 | ||
14025 | ||
14026 | //// sha512.js | |
14027 | ||
14028 | /** @fileOverview Javascript SHA-512 implementation. | |
14029 | * | |
14030 | * This implementation was written for CryptoJS by Jeff Mott and adapted for | |
14031 | * SJCL by Stefan Thomas. | |
14032 | * | |
14033 | * CryptoJS (c) 2009–2012 by Jeff Mott. All rights reserved. | |
14034 | * Released with New BSD License | |
14035 | * | |
14036 | * @author Emily Stark | |
14037 | * @author Mike Hamburg | |
14038 | * @author Dan Boneh | |
14039 | * @author Jeff Mott | |
14040 | * @author Stefan Thomas | |
14041 | */ | |
14042 | ||
14043 | /** | |
14044 | * Context for a SHA-512 operation in progress. | |
14045 | * @constructor | |
14046 | * @class Secure Hash Algorithm, 512 bits. | |
14047 | */ | |
14048 | sjcl.hash.sha512 = function (hash) { | |
14049 | if (!this._key[0]) { this._precompute(); } | |
14050 | if (hash) { | |
14051 | this._h = hash._h.slice(0); | |
14052 | this._buffer = hash._buffer.slice(0); | |
14053 | this._length = hash._length; | |
14054 | } else { | |
14055 | this.reset(); | |
14056 | } | |
14057 | }; | |
14058 | ||
14059 | /** | |
14060 | * Hash a string or an array of words. | |
14061 | * @static | |
14062 | * @param {bitArray|String} data the data to hash. | |
14063 | * @return {bitArray} The hash value, an array of 16 big-endian words. | |
14064 | */ | |
14065 | sjcl.hash.sha512.hash = function (data) { | |
14066 | return (new sjcl.hash.sha512()).update(data).finalize(); | |
14067 | }; | |
14068 | ||
14069 | sjcl.hash.sha512.prototype = { | |
14070 | /** | |
14071 | * The hash's block size, in bits. | |
14072 | * @constant | |
14073 | */ | |
14074 | blockSize: 1024, | |
14075 | ||
14076 | /** | |
14077 | * Reset the hash state. | |
14078 | * @return this | |
14079 | */ | |
14080 | reset:function () { | |
14081 | this._h = this._init.slice(0); | |
14082 | this._buffer = []; | |
14083 | this._length = 0; | |
14084 | return this; | |
14085 | }, | |
14086 | ||
14087 | /** | |
14088 | * Input several words to the hash. | |
14089 | * @param {bitArray|String} data the data to hash. | |
14090 | * @return this | |
14091 | */ | |
14092 | update: function (data) { | |
14093 | if (typeof data === "string") { | |
14094 | data = sjcl.codec.utf8String.toBits(data); | |
ebd8d4e8 | 14095 | } |
80c4dd2a IC |
14096 | var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data), |
14097 | ol = this._length, | |
14098 | nl = this._length = ol + sjcl.bitArray.bitLength(data); | |
14099 | for (i = 1024+ol & -1024; i <= nl; i+= 1024) { | |
14100 | this._block(b.splice(0,32)); | |
ebd8d4e8 | 14101 | } |
80c4dd2a IC |
14102 | return this; |
14103 | }, | |
14104 | ||
14105 | /** | |
14106 | * Complete hashing and output the hash value. | |
14107 | * @return {bitArray} The hash value, an array of 16 big-endian words. | |
14108 | */ | |
14109 | finalize:function () { | |
14110 | var i, b = this._buffer, h = this._h; | |
14111 | ||
14112 | // Round out and push the buffer | |
14113 | b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]); | |
14114 | ||
14115 | // Round out the buffer to a multiple of 32 words, less the 4 length words. | |
14116 | for (i = b.length + 4; i & 31; i++) { | |
14117 | b.push(0); | |
ebd8d4e8 | 14118 | } |
80c4dd2a IC |
14119 | |
14120 | // append the length | |
14121 | b.push(0); | |
14122 | b.push(0); | |
14123 | b.push(Math.floor(this._length / 0x100000000)); | |
14124 | b.push(this._length | 0); | |
14125 | ||
14126 | while (b.length) { | |
14127 | this._block(b.splice(0,32)); | |
ebd8d4e8 | 14128 | } |
80c4dd2a IC |
14129 | |
14130 | this.reset(); | |
14131 | return h; | |
14132 | }, | |
14133 | ||
14134 | /** | |
14135 | * The SHA-512 initialization vector, to be precomputed. | |
14136 | * @private | |
14137 | */ | |
14138 | _init:[], | |
14139 | ||
14140 | /** | |
14141 | * Least significant 24 bits of SHA512 initialization values. | |
14142 | * | |
14143 | * Javascript only has 53 bits of precision, so we compute the 40 most | |
14144 | * significant bits and add the remaining 24 bits as constants. | |
14145 | * | |
14146 | * @private | |
14147 | */ | |
14148 | _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ], | |
14149 | ||
14150 | /* | |
14151 | _init: | |
14152 | [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, | |
14153 | 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179], | |
14154 | */ | |
14155 | ||
14156 | /** | |
14157 | * The SHA-512 hash key, to be precomputed. | |
14158 | * @private | |
14159 | */ | |
14160 | _key:[], | |
14161 | ||
14162 | /** | |
14163 | * Least significant 24 bits of SHA512 key values. | |
14164 | * @private | |
14165 | */ | |
14166 | _keyr: | |
14167 | [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118, | |
14168 | 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694, | |
14169 | 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5, | |
14170 | 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70, | |
14171 | 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b, | |
14172 | 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8, | |
14173 | 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3, | |
14174 | 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b, | |
14175 | 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b, | |
14176 | 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817], | |
14177 | ||
14178 | /* | |
14179 | _key: | |
14180 | [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, | |
14181 | 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, | |
14182 | 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, | |
14183 | 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, | |
14184 | 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, | |
14185 | 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, | |
14186 | 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, | |
14187 | 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, | |
14188 | 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, | |
14189 | 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, | |
14190 | 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, | |
14191 | 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, | |
14192 | 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, | |
14193 | 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, | |
14194 | 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, | |
14195 | 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, | |
14196 | 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, | |
14197 | 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, | |
14198 | 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, | |
14199 | 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817], | |
14200 | */ | |
14201 | ||
14202 | /** | |
14203 | * Function to precompute _init and _key. | |
14204 | * @private | |
14205 | */ | |
14206 | _precompute: function () { | |
14207 | // XXX: This code is for precomputing the SHA256 constants, change for | |
14208 | // SHA512 and re-enable. | |
14209 | var i = 0, prime = 2, factor; | |
14210 | ||
14211 | function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; } | |
14212 | function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; } | |
14213 | ||
14214 | outer: for (; i<80; prime++) { | |
14215 | for (factor=2; factor*factor <= prime; factor++) { | |
14216 | if (prime % factor === 0) { | |
14217 | // not a prime | |
14218 | continue outer; | |
ebd8d4e8 | 14219 | } |
80c4dd2a IC |
14220 | } |
14221 | ||
14222 | if (i<8) { | |
14223 | this._init[i*2] = frac(Math.pow(prime, 1/2)); | |
14224 | this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i]; | |
14225 | } | |
14226 | this._key[i*2] = frac(Math.pow(prime, 1/3)); | |
14227 | this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i]; | |
14228 | i++; | |
ebd8d4e8 | 14229 | } |
80c4dd2a IC |
14230 | }, |
14231 | ||
14232 | /** | |
14233 | * Perform one cycle of SHA-512. | |
14234 | * @param {bitArray} words one block of words. | |
14235 | * @private | |
14236 | */ | |
14237 | _block:function (words) { | |
14238 | var i, wrh, wrl, | |
14239 | w = words.slice(0), | |
14240 | h = this._h, | |
14241 | k = this._key, | |
14242 | h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3], | |
14243 | h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7], | |
14244 | h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11], | |
14245 | h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15]; | |
14246 | ||
14247 | // Working variables | |
14248 | var ah = h0h, al = h0l, bh = h1h, bl = h1l, | |
14249 | ch = h2h, cl = h2l, dh = h3h, dl = h3l, | |
14250 | eh = h4h, el = h4l, fh = h5h, fl = h5l, | |
14251 | gh = h6h, gl = h6l, hh = h7h, hl = h7l; | |
14252 | ||
14253 | for (i=0; i<80; i++) { | |
14254 | // load up the input word for this round | |
14255 | if (i<16) { | |
14256 | wrh = w[i * 2]; | |
14257 | wrl = w[i * 2 + 1]; | |
14258 | } else { | |
14259 | // Gamma0 | |
14260 | var gamma0xh = w[(i-15) * 2]; | |
14261 | var gamma0xl = w[(i-15) * 2 + 1]; | |
14262 | var gamma0h = | |
14263 | ((gamma0xl << 31) | (gamma0xh >>> 1)) ^ | |
14264 | ((gamma0xl << 24) | (gamma0xh >>> 8)) ^ | |
14265 | (gamma0xh >>> 7); | |
14266 | var gamma0l = | |
14267 | ((gamma0xh << 31) | (gamma0xl >>> 1)) ^ | |
14268 | ((gamma0xh << 24) | (gamma0xl >>> 8)) ^ | |
14269 | ((gamma0xh << 25) | (gamma0xl >>> 7)); | |
14270 | ||
14271 | // Gamma1 | |
14272 | var gamma1xh = w[(i-2) * 2]; | |
14273 | var gamma1xl = w[(i-2) * 2 + 1]; | |
14274 | var gamma1h = | |
14275 | ((gamma1xl << 13) | (gamma1xh >>> 19)) ^ | |
14276 | ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ | |
14277 | (gamma1xh >>> 6); | |
14278 | var gamma1l = | |
14279 | ((gamma1xh << 13) | (gamma1xl >>> 19)) ^ | |
14280 | ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ | |
14281 | ((gamma1xh << 26) | (gamma1xl >>> 6)); | |
14282 | ||
14283 | // Shortcuts | |
14284 | var wr7h = w[(i-7) * 2]; | |
14285 | var wr7l = w[(i-7) * 2 + 1]; | |
14286 | ||
14287 | var wr16h = w[(i-16) * 2]; | |
14288 | var wr16l = w[(i-16) * 2 + 1]; | |
14289 | ||
14290 | // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16) | |
14291 | wrl = gamma0l + wr7l; | |
14292 | wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0); | |
14293 | wrl += gamma1l; | |
14294 | wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0); | |
14295 | wrl += wr16l; | |
14296 | wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0); | |
14297 | } | |
14298 | ||
14299 | w[i*2] = wrh |= 0; | |
14300 | w[i*2 + 1] = wrl |= 0; | |
14301 | ||
14302 | // Ch | |
14303 | var chh = (eh & fh) ^ (~eh & gh); | |
14304 | var chl = (el & fl) ^ (~el & gl); | |
14305 | ||
14306 | // Maj | |
14307 | var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); | |
14308 | var majl = (al & bl) ^ (al & cl) ^ (bl & cl); | |
14309 | ||
14310 | // Sigma0 | |
14311 | var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); | |
14312 | var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); | |
14313 | ||
14314 | // Sigma1 | |
14315 | var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9)); | |
14316 | var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9)); | |
14317 | ||
14318 | // K(round) | |
14319 | var krh = k[i*2]; | |
14320 | var krl = k[i*2+1]; | |
14321 | ||
14322 | // t1 = h + sigma1 + ch + K(round) + W(round) | |
14323 | var t1l = hl + sigma1l; | |
14324 | var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0); | |
14325 | t1l += chl; | |
14326 | t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0); | |
14327 | t1l += krl; | |
14328 | t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0); | |
14329 | t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972 | |
14330 | t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0); | |
14331 | ||
14332 | // t2 = sigma0 + maj | |
14333 | var t2l = sigma0l + majl; | |
14334 | var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0); | |
14335 | ||
14336 | // Update working variables | |
14337 | hh = gh; | |
14338 | hl = gl; | |
14339 | gh = fh; | |
14340 | gl = fl; | |
14341 | fh = eh; | |
14342 | fl = el; | |
14343 | el = (dl + t1l) | 0; | |
14344 | eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; | |
14345 | dh = ch; | |
14346 | dl = cl; | |
14347 | ch = bh; | |
14348 | cl = bl; | |
14349 | bh = ah; | |
14350 | bl = al; | |
14351 | al = (t1l + t2l) | 0; | |
14352 | ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0; | |
14353 | } | |
14354 | ||
14355 | // Intermediate hash | |
14356 | h0l = h[1] = (h0l + al) | 0; | |
14357 | h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0; | |
14358 | h1l = h[3] = (h1l + bl) | 0; | |
14359 | h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0; | |
14360 | h2l = h[5] = (h2l + cl) | 0; | |
14361 | h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0; | |
14362 | h3l = h[7] = (h3l + dl) | 0; | |
14363 | h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; | |
14364 | h4l = h[9] = (h4l + el) | 0; | |
14365 | h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0; | |
14366 | h5l = h[11] = (h5l + fl) | 0; | |
14367 | h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0; | |
14368 | h6l = h[13] = (h6l + gl) | 0; | |
14369 | h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0; | |
14370 | h7l = h[15] = (h7l + hl) | 0; | |
14371 | h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0; | |
14372 | } | |
14373 | }; | |
14374 | ||
14375 | ||
14376 | //// hmac.js | |
14377 | ||
14378 | /** @fileOverview HMAC implementation. | |
14379 | * | |
14380 | * @author Emily Stark | |
14381 | * @author Mike Hamburg | |
14382 | * @author Dan Boneh | |
14383 | */ | |
14384 | ||
14385 | /** HMAC with the specified hash function. | |
14386 | * @constructor | |
14387 | * @param {bitArray} key the key for HMAC. | |
14388 | * @param {Object} [hash=sjcl.hash.sha256] The hash function to use. | |
14389 | */ | |
14390 | sjcl.misc.hmac = function (key, Hash) { | |
14391 | this._hash = Hash = Hash || sjcl.hash.sha256; | |
14392 | var exKey = [[],[]], i, | |
14393 | bs = Hash.prototype.blockSize / 32; | |
14394 | this._baseHash = [new Hash(), new Hash()]; | |
14395 | ||
14396 | if (key.length > bs) { | |
14397 | key = Hash.hash(key); | |
14398 | } | |
14399 | ||
14400 | for (i=0; i<bs; i++) { | |
14401 | exKey[0][i] = key[i]^0x36363636; | |
14402 | exKey[1][i] = key[i]^0x5C5C5C5C; | |
14403 | } | |
14404 | ||
14405 | this._baseHash[0].update(exKey[0]); | |
14406 | this._baseHash[1].update(exKey[1]); | |
14407 | this._resultHash = new Hash(this._baseHash[0]); | |
14408 | }; | |
14409 | ||
14410 | /** HMAC with the specified hash function. Also called encrypt since it's a prf. | |
14411 | * @param {bitArray|String} data The data to mac. | |
14412 | */ | |
14413 | sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) { | |
14414 | if (!this._updated) { | |
14415 | this.update(data); | |
14416 | return this.digest(data); | |
14417 | } else { | |
14418 | throw new sjcl.exception.invalid("encrypt on already updated hmac called!"); | |
14419 | } | |
14420 | }; | |
14421 | ||
14422 | sjcl.misc.hmac.prototype.reset = function () { | |
14423 | this._resultHash = new this._hash(this._baseHash[0]); | |
14424 | this._updated = false; | |
14425 | }; | |
14426 | ||
14427 | sjcl.misc.hmac.prototype.update = function (data) { | |
14428 | this._updated = true; | |
14429 | this._resultHash.update(data); | |
14430 | }; | |
14431 | ||
14432 | sjcl.misc.hmac.prototype.digest = function () { | |
14433 | var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize(); | |
14434 | ||
14435 | this.reset(); | |
14436 | ||
14437 | return result; | |
14438 | }; | |
14439 | ||
14440 | ||
14441 | //// pbkdf2.js | |
14442 | ||
14443 | ||
14444 | /** @fileOverview Password-based key-derivation function, version 2.0. | |
14445 | * | |
14446 | * @author Emily Stark | |
14447 | * @author Mike Hamburg | |
14448 | * @author Dan Boneh | |
14449 | */ | |
14450 | ||
14451 | /** Password-Based Key-Derivation Function, version 2.0. | |
14452 | * | |
14453 | * Generate keys from passwords using PBKDF2-HMAC-SHA256. | |
14454 | * | |
14455 | * This is the method specified by RSA's PKCS #5 standard. | |
14456 | * | |
14457 | * @param {bitArray|String} password The password. | |
14458 | * @param {bitArray|String} salt The salt. Should have lots of entropy. | |
14459 | * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure. | |
14460 | * @param {Number} [length] The length of the derived key. Defaults to the | |
14461 | output size of the hash function. | |
14462 | * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family. | |
14463 | * @return {bitArray} the derived key. | |
14464 | */ | |
14465 | sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) { | |
14466 | count = count || 1000; | |
14467 | ||
14468 | if (length < 0 || count < 0) { | |
14469 | throw sjcl.exception.invalid("invalid params to pbkdf2"); | |
14470 | } | |
14471 | ||
14472 | if (typeof password === "string") { | |
14473 | password = sjcl.codec.utf8String.toBits(password); | |
14474 | } | |
14475 | ||
14476 | if (typeof salt === "string") { | |
14477 | salt = sjcl.codec.utf8String.toBits(salt); | |
14478 | } | |
14479 | ||
14480 | Prff = Prff || sjcl.misc.hmac; | |
14481 | ||
14482 | var prf = new Prff(password), | |
14483 | u, ui, i, j, k, out = [], b = sjcl.bitArray; | |
14484 | ||
14485 | for (k = 1; 32 * out.length < (length || 1); k++) { | |
14486 | u = ui = prf.encrypt(b.concat(salt,[k])); | |
14487 | ||
14488 | for (i=1; i<count; i++) { | |
14489 | ui = prf.encrypt(ui); | |
14490 | for (j=0; j<ui.length; j++) { | |
14491 | u[j] ^= ui[j]; | |
14492 | } | |
ebd8d4e8 | 14493 | } |
80c4dd2a IC |
14494 | |
14495 | out = out.concat(u); | |
14496 | } | |
14497 | ||
14498 | if (length) { out = b.clamp(out, length); } | |
14499 | ||
14500 | return out; | |
14501 | }; | |
14502 | ||
14503 | ||
14504 | //// sha256.js | |
14505 | ||
14506 | /** @fileOverview Javascript SHA-256 implementation. | |
14507 | * | |
14508 | * An older version of this implementation is available in the public | |
14509 | * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh, | |
14510 | * Stanford University 2008-2010 and BSD-licensed for liability | |
14511 | * reasons. | |
14512 | * | |
14513 | * Special thanks to Aldo Cortesi for pointing out several bugs in | |
14514 | * this code. | |
14515 | * | |
14516 | * @author Emily Stark | |
14517 | * @author Mike Hamburg | |
14518 | * @author Dan Boneh | |
14519 | */ | |
14520 | ||
14521 | /** | |
14522 | * Context for a SHA-256 operation in progress. | |
14523 | * @constructor | |
14524 | * @class Secure Hash Algorithm, 256 bits. | |
14525 | */ | |
14526 | sjcl.hash.sha256 = function (hash) { | |
14527 | if (!this._key[0]) { this._precompute(); } | |
14528 | if (hash) { | |
14529 | this._h = hash._h.slice(0); | |
14530 | this._buffer = hash._buffer.slice(0); | |
14531 | this._length = hash._length; | |
14532 | } else { | |
14533 | this.reset(); | |
14534 | } | |
14535 | }; | |
14536 | ||
14537 | /** | |
14538 | * Hash a string or an array of words. | |
14539 | * @static | |
14540 | * @param {bitArray|String} data the data to hash. | |
14541 | * @return {bitArray} The hash value, an array of 16 big-endian words. | |
14542 | */ | |
14543 | sjcl.hash.sha256.hash = function (data) { | |
14544 | return (new sjcl.hash.sha256()).update(data).finalize(); | |
14545 | }; | |
14546 | ||
14547 | sjcl.hash.sha256.prototype = { | |
14548 | /** | |
14549 | * The hash's block size, in bits. | |
14550 | * @constant | |
14551 | */ | |
14552 | blockSize: 512, | |
14553 | ||
14554 | /** | |
14555 | * Reset the hash state. | |
14556 | * @return this | |
14557 | */ | |
14558 | reset:function () { | |
14559 | this._h = this._init.slice(0); | |
14560 | this._buffer = []; | |
14561 | this._length = 0; | |
14562 | return this; | |
14563 | }, | |
14564 | ||
14565 | /** | |
14566 | * Input several words to the hash. | |
14567 | * @param {bitArray|String} data the data to hash. | |
14568 | * @return this | |
14569 | */ | |
14570 | update: function (data) { | |
14571 | if (typeof data === "string") { | |
14572 | data = sjcl.codec.utf8String.toBits(data); | |
14573 | } | |
14574 | var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data), | |
14575 | ol = this._length, | |
14576 | nl = this._length = ol + sjcl.bitArray.bitLength(data); | |
14577 | for (i = 512+ol & -512; i <= nl; i+= 512) { | |
14578 | this._block(b.splice(0,16)); | |
ebd8d4e8 | 14579 | } |
3af2954a | 14580 | return this; |
80c4dd2a IC |
14581 | }, |
14582 | ||
14583 | /** | |
14584 | * Complete hashing and output the hash value. | |
14585 | * @return {bitArray} The hash value, an array of 8 big-endian words. | |
14586 | */ | |
14587 | finalize:function () { | |
14588 | var i, b = this._buffer, h = this._h; | |
14589 | ||
14590 | // Round out and push the buffer | |
14591 | b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]); | |
14592 | ||
14593 | // Round out the buffer to a multiple of 16 words, less the 2 length words. | |
14594 | for (i = b.length + 2; i & 15; i++) { | |
14595 | b.push(0); | |
14596 | } | |
14597 | ||
14598 | // append the length | |
14599 | b.push(Math.floor(this._length / 0x100000000)); | |
14600 | b.push(this._length | 0); | |
14601 | ||
14602 | while (b.length) { | |
14603 | this._block(b.splice(0,16)); | |
14604 | } | |
14605 | ||
14606 | this.reset(); | |
14607 | return h; | |
14608 | }, | |
14609 | ||
14610 | /** | |
14611 | * The SHA-256 initialization vector, to be precomputed. | |
14612 | * @private | |
14613 | */ | |
14614 | _init:[], | |
14615 | /* | |
14616 | _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19], | |
14617 | */ | |
14618 | ||
14619 | /** | |
14620 | * The SHA-256 hash key, to be precomputed. | |
14621 | * @private | |
14622 | */ | |
14623 | _key:[], | |
14624 | /* | |
14625 | _key: | |
14626 | [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, | |
14627 | 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, | |
14628 | 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, | |
14629 | 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, | |
14630 | 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, | |
14631 | 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, | |
14632 | 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, | |
14633 | 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2], | |
14634 | */ | |
14635 | ||
14636 | ||
14637 | /** | |
14638 | * Function to precompute _init and _key. | |
14639 | * @private | |
14640 | */ | |
14641 | _precompute: function () { | |
14642 | var i = 0, prime = 2, factor; | |
14643 | ||
14644 | function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; } | |
14645 | ||
14646 | outer: for (; i<64; prime++) { | |
14647 | for (factor=2; factor*factor <= prime; factor++) { | |
14648 | if (prime % factor === 0) { | |
14649 | // not a prime | |
14650 | continue outer; | |
ebd8d4e8 | 14651 | } |
80c4dd2a IC |
14652 | } |
14653 | ||
14654 | if (i<8) { | |
14655 | this._init[i] = frac(Math.pow(prime, 1/2)); | |
14656 | } | |
14657 | this._key[i] = frac(Math.pow(prime, 1/3)); | |
14658 | i++; | |
ebd8d4e8 | 14659 | } |
80c4dd2a IC |
14660 | }, |
14661 | ||
14662 | /** | |
14663 | * Perform one cycle of SHA-256. | |
14664 | * @param {bitArray} words one block of words. | |
14665 | * @private | |
14666 | */ | |
14667 | _block:function (words) { | |
14668 | var i, tmp, a, b, | |
14669 | w = words.slice(0), | |
14670 | h = this._h, | |
14671 | k = this._key, | |
14672 | h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3], | |
14673 | h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7]; | |
14674 | ||
14675 | /* Rationale for placement of |0 : | |
14676 | * If a value can overflow is original 32 bits by a factor of more than a few | |
14677 | * million (2^23 ish), there is a possibility that it might overflow the | |
14678 | * 53-bit mantissa and lose precision. | |
14679 | * | |
14680 | * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that | |
14681 | * propagates around the loop, and on the hash state h[]. I don't believe | |
14682 | * that the clamps on h4 and on h0 are strictly necessary, but it's close | |
14683 | * (for h4 anyway), and better safe than sorry. | |
14684 | * | |
14685 | * The clamps on h[] are necessary for the output to be correct even in the | |
14686 | * common case and for short inputs. | |
14687 | */ | |
14688 | for (i=0; i<64; i++) { | |
14689 | // load up the input word for this round | |
14690 | if (i<16) { | |
14691 | tmp = w[i]; | |
14692 | } else { | |
14693 | a = w[(i+1 ) & 15]; | |
14694 | b = w[(i+14) & 15]; | |
14695 | tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) + | |
14696 | (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) + | |
14697 | w[i&15] + w[(i+9) & 15]) | 0; | |
14698 | } | |
14699 | ||
14700 | tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0; | |
14701 | ||
14702 | // shift register | |
14703 | h7 = h6; h6 = h5; h5 = h4; | |
14704 | h4 = h3 + tmp | 0; | |
14705 | h3 = h2; h2 = h1; h1 = h0; | |
14706 | ||
14707 | h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0; | |
14708 | } | |
14709 | ||
14710 | h[0] = h[0]+h0 | 0; | |
14711 | h[1] = h[1]+h1 | 0; | |
14712 | h[2] = h[2]+h2 | 0; | |
14713 | h[3] = h[3]+h3 | 0; | |
14714 | h[4] = h[4]+h4 | 0; | |
14715 | h[5] = h[5]+h5 | 0; | |
14716 | h[6] = h[6]+h6 | 0; | |
14717 | h[7] = h[7]+h7 | 0; | |
14718 | } | |
14719 | }; | |
ea87f1d3 IC |
14720 | </script> |
14721 | <script>// An extremely basic translation library | |
14722 | // | |
14723 | // Example usage: | |
14724 | // | |
14725 | // Set some html to be translated. Do this using the 'data-translate' attribute: | |
14726 | // | |
14727 | // <div data-translate>Test</div> | |
14728 | // <div data-translate-html><em>keep em tag</em></div> | |
52da415f IC |
14729 | // <input data-translate-placeholder placeholder="Example placeholder"> |
14730 | // <span data-translate-title title="Example title"></span> | |
ea87f1d3 IC |
14731 | // |
14732 | // Obtain all the phrases to be translated via js debug console: | |
14733 | // | |
14734 | // Translate.phrasesAsJson(); | |
14735 | // | |
14736 | // Use that template to translate the phrases into another language. | |
14737 | // Leave the key the same. Change the value to the new language. | |
14738 | // | |
14739 | // Create a js file to load the new phrases. In this example for Spanish, | |
14740 | // es.js will contain the following code: | |
14741 | // | |
14742 | // Translate.loadForeignPhrases("es", { | |
14743 | // "Test": "Test in Spanish", | |
14744 | // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>", | |
52da415f IC |
14745 | // "Example placeholder": "Example placeholder in Spanish" |
14746 | // "Example title": "Example title in Spanish" | |
ea87f1d3 IC |
14747 | // }); |
14748 | // | |
14749 | // In your UI put a listener for clicking on the Spanish button: | |
14750 | // | |
14751 | // mySpanishButton.addEventListener("click", function() { | |
14752 | // Translate.setLanguage("es"); | |
14753 | // }); | |
14754 | // myEnglishButton.addEventListener("click", function() { | |
14755 | // Translate.setLanguage("en"); | |
14756 | // }); | |
14757 | ||
14758 | Translate = new (function() { | |
14759 | ||
14760 | var defaultLanguage = "en"; | |
14761 | ||
14762 | var allPhrases = {}; | |
14763 | allPhrases[defaultLanguage] = {}; | |
14764 | ||
14765 | // Node types | |
14766 | ||
14767 | var text = { | |
14768 | selector: "[data-translate]", | |
14769 | getKey: function() { | |
14770 | return this.textContent.trim().replace(/\s+/g, " "); | |
14771 | }, | |
14772 | setPhrase: function(p) { | |
14773 | this.textContent = p; | |
14774 | }, | |
14775 | } | |
14776 | ||
14777 | var html = { | |
14778 | selector: "[data-translate-html]", | |
14779 | getKey: function() { | |
14780 | return this.innerHTML.trim().replace(/\s+/g, " "); | |
14781 | }, | |
14782 | setPhrase: function(p) { | |
14783 | this.innerHTML = p; | |
14784 | }, | |
14785 | } | |
14786 | ||
14787 | var placeholder = { | |
14788 | selector: "[data-translate-placeholder]", | |
14789 | getKey: function() { | |
14790 | return this.getAttribute("placeholder").trim().replace(/\s+/g, " "); | |
14791 | }, | |
14792 | setPhrase: function(p) { | |
14793 | this.setAttribute("placeholder", p); | |
14794 | }, | |
14795 | } | |
14796 | ||
52da415f IC |
14797 | var title = { |
14798 | selector: "[data-translate-title]", | |
14799 | getKey: function() { | |
14800 | return this.getAttribute("title").trim().replace(/\s+/g, " "); | |
14801 | }, | |
14802 | setPhrase: function(p) { | |
14803 | this.setAttribute("title", p); | |
14804 | }, | |
14805 | } | |
14806 | ||
ea87f1d3 IC |
14807 | // Get elements to be translated |
14808 | var allEls = getEls(text) | |
14809 | .concat(getEls(html)) | |
52da415f IC |
14810 | .concat(getEls(placeholder)) |
14811 | .concat(getEls(title)); | |
ea87f1d3 IC |
14812 | |
14813 | // Provides access to phrases from a non-default language. | |
14814 | // See phrases_en.js for example usage. | |
14815 | this.loadForeignPhrases = function(language, phrases) { | |
14816 | allPhrases[language] = phrases; | |
14817 | } | |
14818 | ||
14819 | // Displays a different language, eg "en" or "fr" | |
14820 | this.setLanguage = function(language) { | |
14821 | for (var i=0; i<allEls.length; i++) { | |
14822 | var el = allEls[i]; | |
14823 | var key = el.key; | |
14824 | if (!(language in allPhrases)) { | |
14825 | console.log(language + " not in allPhrases"); | |
14826 | return; | |
14827 | } | |
14828 | if (!(key in allPhrases[language])) { | |
14829 | console.log(language + " does not contain phrase: " + key); | |
14830 | return; | |
14831 | } | |
14832 | var phrase = allPhrases[language][key]; | |
14833 | el.setPhrase(phrase); | |
14834 | } | |
14835 | } | |
14836 | ||
14837 | // Converts the phrases to a key-pair json file. | |
14838 | // This is a good way to export phrases for use in translation tools. | |
14839 | this.phrasesAsJson = function(language) { | |
14840 | var keys = []; | |
14841 | for (var i=0; i<allEls.length; i++) { | |
14842 | var el = allEls[i]; | |
14843 | var key = el.key; | |
14844 | keys.push(key); | |
14845 | } | |
14846 | keys.sort(); | |
14847 | var output = {}; | |
14848 | for (var i=0; i<keys.length; i++) { | |
14849 | var key = keys[i]; | |
14850 | var translated = ""; | |
14851 | if (language in allPhrases && key in allPhrases[language]) { | |
14852 | translated = allPhrases[language][key]; | |
14853 | } | |
14854 | output[key] = translated; | |
14855 | } | |
14856 | return JSON.stringify(output, null, 2); | |
14857 | } | |
14858 | ||
14859 | function getEls(nodeType) { | |
14860 | var nodes = document.querySelectorAll(nodeType.selector); | |
14861 | var els = []; | |
14862 | for (var i=0; i<nodes.length; i++) { | |
14863 | var node = nodes[i]; | |
14864 | node.getKey = nodeType.getKey; | |
14865 | node.setPhrase = nodeType.setPhrase; | |
14866 | node.key = node.getKey(); | |
14867 | allPhrases[defaultLanguage][node.key] = node.key; | |
14868 | els.push(node); | |
14869 | } | |
14870 | return els; | |
14871 | } | |
14872 | ||
14873 | })(); | |
14874 | </script> | |
14875 | <script>Translate.loadForeignPhrases("en", | |
14876 | { | |
14877 | "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses", | |
14878 | "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses", | |
14879 | "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export", | |
14880 | "<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).", | |
14881 | "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards", | |
14882 | "Account": "Account", | |
14883 | "Address": "Address", | |
14884 | "Alternatively, download the file from the repository": "Alternatively, download the file from the repository", | |
14885 | "BIP32 Derivation Path": "BIP32 Derivation Path", | |
14886 | "BIP32 Extended Key": "BIP32 Extended Key", | |
14887 | "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)", | |
14888 | "BIP32 Root Key": "BIP32 Root Key", | |
14889 | "BIP39 Mnemonic": "BIP39 Mnemonic", | |
14890 | "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)", | |
14891 | "BIP39 Seed": "BIP39 Seed", | |
14892 | "Base 10": "Base 10", | |
14893 | "Base 6": "Base 6", | |
14894 | "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.", | |
14895 | "Binary": "Binary", | |
14896 | "Bitcoin Core": "Bitcoin Core", | |
14897 | "Bits Per Event": "Bits Per Event", | |
14898 | "Block Explorers": "Block Explorers", | |
14899 | "Can be used with": "Can be used with", | |
14900 | "Card": "Card", | |
14901 | "Coin": "Coin", | |
14902 | "Dice": "Dice", | |
14903 | "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.", | |
14904 | "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.", | |
14905 | "Entropy": "Entropy", | |
14906 | "Entropy Type": "Entropy Type", | |
14907 | "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.", | |
14908 | "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>.", | |
14909 | "Event Count": "Event Count", | |
14910 | "External / Internal": "External / Internal", | |
14911 | "Filtered Entropy": "Filtered Entropy", | |
14912 | "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>", | |
14913 | "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>.", | |
14914 | "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>.", | |
14915 | "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>", | |
14916 | "For more info see the BIP32 spec": "For more info see the BIP32 spec", | |
14917 | "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)", | |
14918 | "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below", | |
14919 | "Get the source code from the repository": "Get the source code from the repository", | |
14920 | "Hex": "Hex", | |
14921 | "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets", | |
14922 | "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.", | |
14923 | "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.", | |
14924 | "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.", | |
14925 | "Libraries": "Libraries", | |
14926 | "Mnemonic Language": "Mnemonic Language", | |
14927 | "Mnemonic Length": "Mnemonic Length", | |
14928 | "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys", | |
14929 | "More info": "More info", | |
14930 | "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets", | |
14931 | "Mycelium Wallet": "Mycelium Wallet", | |
14932 | "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key", | |
14933 | "Offline Usage": "Offline Usage", | |
14934 | "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.", | |
14935 | "Path": "Path", | |
14936 | "Private Key": "Private Key", | |
14937 | "Private Keys": "Private Keys", | |
14938 | "Public Key": "Public Key", | |
14939 | "Purpose": "Purpose", | |
14940 | "Raw Binary": "Raw Binary", | |
14941 | "Read more": "Read more", | |
14942 | "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>", | |
14943 | "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>", | |
14944 | "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>", | |
14945 | "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>", | |
14946 | "Show": "Show", | |
14947 | "Show more rows": "Show more rows", | |
14948 | "Strength": "Strength", | |
14949 | "Supply my own source of entropy": "Supply my own source of entropy", | |
14950 | "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.", | |
14951 | "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>.", | |
14952 | "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.", | |
14953 | "This project is 100% open-source code": "This project is 100% open-source code", | |
14954 | "Toggle": "Toggle", | |
14955 | "Total Bits": "Total Bits", | |
14956 | "Use hardened addresses": "Use hardened addresses", | |
14957 | "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.", | |
14958 | "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.", | |
14959 | "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>.", | |
14960 | "Valid entropy values include:": "Valid entropy values include:", | |
14961 | "Warning": "Warning", | |
14962 | "Word Count": "Word Count", | |
14963 | "You are not a good source of entropy.": "You are not a good source of entropy.", | |
14964 | "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).", | |
14965 | "You can use this tool without having to be online.": "You can use this tool without having to be online.", | |
14966 | "words": "words" | |
14967 | } | |
14968 | ); | |
dc55c6b0 | 14969 | </script> |
ab78acc6 | 14970 | <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS; |
3af2954a | 14971 | WORDLISTS["english"] = [ |
ebd8d4e8 IC |
14972 | "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse", |
14973 | "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act", | |
14974 | "action","actor","actress","actual","adapt","add","addict","address","adjust","admit", | |
14975 | "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent", | |
14976 | "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert", | |
14977 | "alien","all","alley","allow","almost","alone","alpha","already","also","alter", | |
14978 | "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger", | |
14979 | "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique", | |
14980 | "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic", | |
14981 | "area","arena","argue","arm","armed","armor","army","around","arrange","arrest", | |
14982 | "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset", | |
14983 | "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction", | |
14984 | "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake", | |
14985 | "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge", | |
14986 | "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain", | |
14987 | "barrel","base","basic","basket","battle","beach","bean","beauty","because","become", | |
14988 | "beef","before","begin","behave","behind","believe","below","belt","bench","benefit", | |
14989 | "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology", | |
14990 | "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless", | |
14991 | "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body", | |
14992 | "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss", | |
14993 | "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread", | |
14994 | "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze", | |
14995 | "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb", | |
14996 | "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy", | |
14997 | "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call", | |
14998 | "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas", | |
14999 | "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry", | |
15000 | "cart","case","cash","casino","castle","casual","cat","catalog","catch","category", | |
15001 | "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century", | |
15002 | "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase", | |
15003 | "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child", | |
15004 | "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle", | |
15005 | "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk", | |
15006 | "clever","click","client","cliff","climb","clinic","clip","clock","clog","close", | |
15007 | "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut", | |
15008 | "code","coffee","coil","coin","collect","color","column","combine","come","comfort", | |
15009 | "comic","common","company","concert","conduct","confirm","congress","connect","consider","control", | |
15010 | "convince","cook","cool","copper","copy","coral","core","corn","correct","cost", | |
15011 | "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle", | |
15012 | "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek", | |
15013 | "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial", | |
15014 | "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup", | |
15015 | "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad", | |
15016 | "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal", | |
15017 | "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense", | |
15018 | "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny", | |
15019 | "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk", | |
15020 | "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond", | |
15021 | "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur", | |
15022 | "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance", | |
15023 | "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain", | |
15024 | "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama", | |
15025 | "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop", | |
15026 | "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf", | |
15027 | "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo", | |
15028 | "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow", | |
15029 | "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody", | |
15030 | "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless", | |
15031 | "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough", | |
15032 | "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip", | |
15033 | "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate", | |
15034 | "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange", | |
15035 | "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit", | |
15036 | "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye", | |
15037 | "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame", | |
15038 | "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father", | |
15039 | "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female", | |
15040 | "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file", | |
15041 | "film","filter","final","find","fine","finger","finish","fire","firm","first", | |
15042 | "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor", | |
15043 | "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly", | |
15044 | "foam","focus","fog","foil","fold","follow","food","foot","force","forest", | |
15045 | "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile", | |
15046 | "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen", | |
15047 | "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy", | |
15048 | "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp", | |
15049 | "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture", | |
15050 | "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance", | |
15051 | "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue", | |
15052 | "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown", | |
15053 | "grab","grace","grain","grant","grape","grass","gravity","great","green","grid", | |
15054 | "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt", | |
15055 | "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy", | |
15056 | "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health", | |
15057 | "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden", | |
15058 | "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole", | |
15059 | "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital", | |
15060 | "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred", | |
15061 | "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea", | |
15062 | "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune", | |
15063 | "impact","impose","improve","impulse","inch","include","income","increase","index","indicate", | |
15064 | "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury", | |
15065 | "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install", | |
15066 | "intact","interest","into","invest","invite","involve","iron","island","isolate","issue", | |
15067 | "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel", | |
15068 | "job","join","joke","journey","joy","judge","juice","jump","jungle","junior", | |
15069 | "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney", | |
15070 | "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife", | |
15071 | "knock","know","lab","label","labor","ladder","lady","lake","lamp","language", | |
15072 | "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit", | |
15073 | "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal", | |
15074 | "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level", | |
15075 | "liar","liberty","library","license","life","lift","light","like","limb","limit", | |
15076 | "link","lion","liquid","list","little","live","lizard","load","loan","lobster", | |
15077 | "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love", | |
15078 | "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad", | |
15079 | "magic","magnet","maid","mail","main","major","make","mammal","man","manage", | |
15080 | "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market", | |
15081 | "marriage","mask","mass","master","match","material","math","matrix","matter","maximum", | |
15082 | "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt", | |
15083 | "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message", | |
15084 | "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor", | |
15085 | "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile", | |
15086 | "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral", | |
15087 | "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie", | |
15088 | "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual", | |
15089 | "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature", | |
15090 | "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net", | |
15091 | "network","neutral","never","news","next","nice","night","noble","noise","nominee", | |
15092 | "noodle","normal","north","nose","notable","note","nothing","notice","novel","now", | |
15093 | "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe", | |
15094 | "obtain","obvious","occur","ocean","october","odor","off","offer","office","often", | |
15095 | "oil","okay","old","olive","olympic","omit","once","one","onion","online", | |
15096 | "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order", | |
15097 | "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output", | |
15098 | "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact", | |
15099 | "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper", | |
15100 | "parade","parent","park","parrot","party","pass","patch","path","patient","patrol", | |
15101 | "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen", | |
15102 | "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo", | |
15103 | "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot", | |
15104 | "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate", | |
15105 | "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar", | |
15106 | "pole","police","pond","pony","pool","popular","portion","position","possible","post", | |
15107 | "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare", | |
15108 | "present","pretty","prevent","price","pride","primary","print","priority","prison","private", | |
15109 | "prize","problem","process","produce","profit","program","project","promote","proof","property", | |
15110 | "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin", | |
15111 | "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle", | |
15112 | "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit", | |
15113 | "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp", | |
15114 | "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor", | |
15115 | "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle", | |
15116 | "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release", | |
15117 | "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen", | |
15118 | "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response", | |
15119 | "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib", | |
15120 | "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot", | |
15121 | "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket", | |
15122 | "romance","roof","rookie","room","rose","rotate","rough","round","route","royal", | |
15123 | "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness", | |
15124 | "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand", | |
15125 | "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter", | |
15126 | "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script", | |
15127 | "scrub","sea","search","season","seat","second","secret","section","security","seed", | |
15128 | "seek","segment","select","sell","seminar","senior","sense","sentence","series","service", | |
15129 | "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell", | |
15130 | "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop", | |
15131 | "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side", | |
15132 | "siege","sight","sign","silent","silk","silly","silver","similar","simple","since", | |
15133 | "sing","siren","sister","situate","six","size","skate","sketch","ski","skill", | |
15134 | "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight", | |
15135 | "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth", | |
15136 | "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda", | |
15137 | "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry", | |
15138 | "sort","soul","sound","soup","source","south","space","spare","spatial","spawn", | |
15139 | "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin", | |
15140 | "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring", | |
15141 | "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp", | |
15142 | "stand","start","state","stay","steak","steel","stem","step","stereo","stick", | |
15143 | "still","sting","stock","stomach","stone","stool","story","stove","strategy","street", | |
15144 | "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway", | |
15145 | "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny", | |
15146 | "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey", | |
15147 | "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim", | |
15148 | "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag", | |
15149 | "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi", | |
15150 | "teach","team","tell","ten","tenant","tennis","tent","term","test","text", | |
15151 | "thank","that","theme","then","theory","there","they","thing","this","thought", | |
15152 | "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber", | |
15153 | "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler", | |
15154 | "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool", | |
15155 | "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist", | |
15156 | "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer", | |
15157 | "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick", | |
15158 | "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust", | |
15159 | "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle", | |
15160 | "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella", | |
15161 | "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform", | |
15162 | "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade", | |
15163 | "uphold","upon","upper","upset","urban","urge","usage","use","used","useful", | |
15164 | "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van", | |
15165 | "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue", | |
15166 | "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory", | |
15167 | "video","view","village","vintage","violin","virtual","virus","visa","visit","visual", | |
15168 | "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage", | |
15169 | "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash", | |
15170 | "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather", | |
15171 | "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat", | |
15172 | "wheel","when","where","whip","whisper","wide","width","wife","wild","will", | |
15173 | "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise", | |
15174 | "wish","witness","wolf","woman","wonder","wood","wool","word","work","world", | |
15175 | "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year", | |
15176 | "yellow","you","young","youth","zebra","zero","zone","zoo"] | |
0515eeec IC |
15177 | </script> |
15178 | <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS; | |
15179 | WORDLISTS["japanese"] = [ | |
15180 | "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい", | |
15181 | "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる", | |
15182 | "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる", | |
15183 | "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま", | |
15184 | "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい", | |
15185 | "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい", | |
15186 | "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ", | |
15187 | "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび", | |
15188 | "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ", | |
15189 | "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう", | |
15190 | "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか", | |
15191 | "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん", | |
15192 | "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい", | |
15193 | "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん", | |
15194 | "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい", | |
15195 | "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける", | |
15196 | "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる", | |
15197 | "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん", | |
15198 | "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる", | |
15199 | "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい", | |
15200 | "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん", | |
15201 | "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく", | |
15202 | "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ", | |
15203 | "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ", | |
15204 | "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ", | |
15205 | "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや", | |
15206 | "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな", | |
15207 | "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる", | |
15208 | "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと", | |
15209 | "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで", | |
15210 | "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい", | |
15211 | "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう", | |
15212 | "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき", | |
15213 | "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ", | |
15214 | "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん", | |
15215 | "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん", | |
15216 | "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう", | |
15217 | "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい", | |
15218 | "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて", | |
15219 | "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ", | |
15220 | "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう", | |
15221 | "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう", | |
15222 | "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい", | |
15223 | "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし", | |
15224 | "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん", | |
15225 | "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい", | |
15226 | "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ", | |
15227 | "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう", | |
15228 | "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした", | |
15229 | "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる", | |
15230 | "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく", | |
15231 | "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん", | |
15232 | "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは", | |
15233 | "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと", | |
15234 | "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい", | |
15235 | "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ", | |
15236 | "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし", | |
15237 | "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき", | |
15238 | "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない", | |
15239 | "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと", | |
15240 | "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい", | |
15241 | "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう", | |
15242 | "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい", | |
15243 | "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ", | |
15244 | "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか", | |
15245 | "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな", | |
15246 | "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら", | |
15247 | "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく", | |
15248 | "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる", | |
15249 | "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん", | |
15250 | "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ", | |
15251 | "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち", | |
15252 | "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん", | |
15253 | "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも", | |
15254 | "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ", | |
15255 | "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう", | |
15256 | "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい", | |
15257 | "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ", | |
15258 | "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん", | |
15259 | "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり", | |
15260 | "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん", | |
15261 | "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう", | |
15262 | "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ", | |
15263 | "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん", | |
15264 | "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん", | |
15265 | "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい", | |
15266 | "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ", | |
15267 | "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん", | |
15268 | "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい", | |
15269 | "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる", | |
15270 | "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる", | |
15271 | "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと", | |
15272 | "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん", | |
15273 | "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく", | |
15274 | "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび", | |
15275 | "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる", | |
15276 | "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん", | |
15277 | "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう", | |
15278 | "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう", | |
15279 | "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき", | |
15280 | "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい", | |
15281 | "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう", | |
15282 | "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる", | |
15283 | "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも", | |
15284 | "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび", | |
15285 | "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう", | |
15286 | "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい", | |
15287 | "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな", | |
15288 | "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ", | |
15289 | "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき", | |
15290 | "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ", | |
15291 | "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん", | |
15292 | "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき", | |
15293 | "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると", | |
15294 | "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん", | |
15295 | "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな", | |
15296 | "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ", | |
15297 | "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず", | |
15298 | "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや", | |
15299 | "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた", | |
15300 | "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ", | |
15301 | "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう", | |
15302 | "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる", | |
15303 | "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない", | |
15304 | "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり", | |
15305 | "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし", | |
15306 | "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう", | |
15307 | "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき", | |
15308 | "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ", | |
15309 | "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし", | |
15310 | "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう", | |
15311 | "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ", | |
15312 | "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく", | |
15313 | "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに", | |
15314 | "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう", | |
15315 | "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす", | |
15316 | "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり", | |
15317 | "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる", | |
15318 | "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか", | |
15319 | "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび", | |
15320 | "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて", | |
15321 | "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか", | |
15322 | "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん", | |
15323 | "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん", | |
15324 | "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ", | |
15325 | "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり", | |
15326 | "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ", | |
15327 | "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく", | |
15328 | "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう", | |
15329 | "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど", | |
15330 | "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり", | |
15331 | "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら", | |
15332 | "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき", | |
15333 | "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん", | |
15334 | "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ", | |
15335 | "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん", | |
15336 | "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん", | |
15337 | "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし", | |
15338 | "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい", | |
15339 | "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ", | |
15340 | "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん", | |
15341 | "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき", | |
15342 | "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり", | |
15343 | "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう", | |
15344 | "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり", | |
15345 | "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく", | |
15346 | "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく", | |
15347 | "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい", | |
15348 | "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ", | |
15349 | "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん", | |
15350 | "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう", | |
15351 | "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる", | |
15352 | "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん", | |
15353 | "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん", | |
15354 | "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし", | |
15355 | "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん", | |
15356 | "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう", | |
15357 | "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる", | |
15358 | "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ", | |
15359 | "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく", | |
15360 | "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう", | |
15361 | "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち", | |
15362 | "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる", | |
15363 | "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす", | |
15364 | "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき", | |
15365 | "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい", | |
15366 | "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう", | |
15367 | "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん", | |
15368 | "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす", | |
15369 | "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん", | |
15370 | "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや", | |
15371 | "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん", | |
15372 | "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ", | |
15373 | "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ", | |
15374 | "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん", | |
15375 | "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか", | |
15376 | "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご", | |
15377 | "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい", | |
15378 | "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん", | |
15379 | "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき", | |
15380 | "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ", | |
15381 | "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい", | |
15382 | "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら", | |
15383 | "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす", | |
15384 | "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"] | |
15385 | </script> | |
15386 | <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS; | |
15387 | WORDLISTS["spanish"] = [ | |
15388 | "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo", | |
15389 | "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido", | |
15390 | "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo", | |
15391 | "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición", | |
15392 | "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua", | |
15393 | "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste", | |
15394 | "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta", | |
15395 | "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar", | |
15396 | "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola", | |
15397 | "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio", | |
15398 | "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís", | |
15399 | "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año", | |
15400 | "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar", | |
15401 | "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco", | |
15402 | "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa", | |
15403 | "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso", | |
15404 | "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla", | |
15405 | "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático", | |
15406 | "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento", | |
15407 | "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión", | |
15408 | "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul", | |
15409 | "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú", | |
15410 | "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura", | |
15411 | "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar", | |
15412 | "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina", | |
15413 | "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba", | |
15414 | "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda", | |
15415 | "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma", | |
15416 | "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda", | |
15417 | "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón", | |
15418 | "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída", | |
15419 | "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma", | |
15420 | "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela", | |
15421 | "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote", | |
15422 | "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta", | |
15423 | "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal", | |
15424 | "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento", | |
15425 | "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro", | |
15426 | "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque", | |
15427 | "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro", | |
15428 | "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad", | |
15429 | "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción", | |
15430 | "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo", | |
15431 | "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer", | |
15432 | "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa", | |
15433 | "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa", | |
15434 | "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis", | |
15435 | "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir", | |
15436 | "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto", | |
15437 | "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso", | |
15438 | "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década", | |
15439 | "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso", | |
15440 | "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío", | |
15441 | "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo", | |
15442 | "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo", | |
15443 | "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo", | |
15444 | "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha", | |
15445 | "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano", | |
15446 | "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto", | |
15447 | "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir", | |
15448 | "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano", | |
15449 | "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace", | |
15450 | "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo", | |
15451 | "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada", | |
15452 | "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa", | |
15453 | "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso", | |
15454 | "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo", | |
15455 | "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso", | |
15456 | "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga", | |
15457 | "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil", | |
15458 | "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre", | |
15459 | "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro", | |
15460 | "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota", | |
15461 | "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo", | |
15462 | "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase", | |
15463 | "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza", | |
15464 | "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela", | |
15465 | "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga", | |
15466 | "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen", | |
15467 | "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar", | |
15468 | "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo", | |
15469 | "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis", | |
15470 | "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo", | |
15471 | "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra", | |
15472 | "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca", | |
15473 | "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir", | |
15474 | "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia", | |
15475 | "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga", | |
15476 | "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir", | |
15477 | "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma", | |
15478 | "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar", | |
15479 | "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio", | |
15480 | "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno", | |
15481 | "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín", | |
15482 | "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya", | |
15483 | "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio", | |
15484 | "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio", | |
15485 | "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara", | |
15486 | "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex", | |
15487 | "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión", | |
15488 | "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra", | |
15489 | "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero", | |
15490 | "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna", | |
15491 | "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave", | |
15492 | "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura", | |
15493 | "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo", | |
15494 | "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre", | |
15495 | "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo", | |
15496 | "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano", | |
15497 | "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen", | |
15498 | "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia", | |
15499 | "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla", | |
15500 | "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue", | |
15501 | "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel", | |
15502 | "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo", | |
15503 | "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila", | |
15504 | "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia", | |
15505 | "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro", | |
15506 | "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar", | |
15507 | "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo", | |
15508 | "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación", | |
15509 | "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea", | |
15510 | "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio", | |
15511 | "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño", | |
15512 | "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia", | |
15513 | "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve", | |
15514 | "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero", | |
15515 | "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre", | |
15516 | "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa", | |
15517 | "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato", | |
15518 | "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción", | |
15519 | "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita", | |
15520 | "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro", | |
15521 | "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja", | |
15522 | "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago", | |
15523 | "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan", | |
15524 | "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela", | |
15525 | "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión", | |
15526 | "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón", | |
15527 | "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea", | |
15528 | "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino", | |
15529 | "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro", | |
15530 | "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar", | |
15531 | "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino", | |
15532 | "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista", | |
15533 | "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo", | |
15534 | "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen", | |
15535 | "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal", | |
15536 | "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta", | |
15537 | "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar", | |
15538 | "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo", | |
15539 | "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón", | |
15540 | "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar", | |
15541 | "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia", | |
15542 | "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido", | |
15543 | "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño", | |
15544 | "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo", | |
15545 | "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén", | |
15546 | "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio", | |
15547 | "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate", | |
15548 | "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista", | |
15549 | "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón", | |
15550 | "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar", | |
15551 | "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco", | |
15552 | "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo", | |
15553 | "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta", | |
15554 | "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo", | |
15555 | "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción", | |
15556 | "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén", | |
15557 | "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir", | |
15558 | "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar", | |
15559 | "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta", | |
15560 | "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar", | |
15561 | "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio", | |
15562 | "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo", | |
15563 | "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén", | |
15564 | "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir", | |
15565 | "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño", | |
15566 | "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo", | |
15567 | "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa", | |
15568 | "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro", | |
15569 | "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado", | |
15570 | "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener", | |
15571 | "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro", | |
15572 | "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso", | |
15573 | "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo", | |
15574 | "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino", | |
15575 | "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax", | |
15576 | "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco", | |
15577 | "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance", | |
15578 | "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu", | |
15579 | "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo", | |
15580 | "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica", | |
15581 | "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo", | |
15582 | "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil", | |
15583 | "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale", | |
15584 | "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino", | |
15585 | "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda", | |
15586 | "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda", | |
15587 | "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo", | |
15588 | "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín", | |
15589 | "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero", | |
15590 | "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo", | |
15591 | "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur", | |
15592 | "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"] | |
15593 | </script> | |
15594 | <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS; | |
15595 | WORDLISTS["chinese_simplified"] = [ | |
15596 | "的", "一", "是", "在", "不", "了", "有", "和", "人", "这", | |
15597 | "中", "大", "为", "上", "个", "国", "我", "以", "要", "他", | |
15598 | "时", "来", "用", "们", "生", "到", "作", "地", "于", "出", | |
15599 | "就", "分", "对", "成", "会", "可", "主", "发", "年", "动", | |
15600 | "同", "工", "也", "能", "下", "过", "子", "说", "产", "种", | |
15601 | "面", "而", "方", "后", "多", "定", "行", "学", "法", "所", | |
15602 | "民", "得", "经", "十", "三", "之", "进", "着", "等", "部", | |
15603 | "度", "家", "电", "力", "里", "如", "水", "化", "高", "自", | |
15604 | "二", "理", "起", "小", "物", "现", "实", "加", "量", "都", | |
15605 | "两", "体", "制", "机", "当", "使", "点", "从", "业", "本", | |
15606 | "去", "把", "性", "好", "应", "开", "它", "合", "还", "因", | |
15607 | "由", "其", "些", "然", "前", "外", "天", "政", "四", "日", | |
15608 | "那", "社", "义", "事", "平", "形", "相", "全", "表", "间", | |
15609 | "样", "与", "关", "各", "重", "新", "线", "内", "数", "正", | |
15610 | "心", "反", "你", "明", "看", "原", "又", "么", "利", "比", | |
15611 | "或", "但", "质", "气", "第", "向", "道", "命", "此", "变", | |
15612 | "条", "只", "没", "结", "解", "问", "意", "建", "月", "公", | |
15613 | "无", "系", "军", "很", "情", "者", "最", "立", "代", "想", | |
15614 | "已", "通", "并", "提", "直", "题", "党", "程", "展", "五", | |
15615 | "果", "料", "象", "员", "革", "位", "入", "常", "文", "总", | |
15616 | "次", "品", "式", "活", "设", "及", "管", "特", "件", "长", | |
15617 | "求", "老", "头", "基", "资", "边", "流", "路", "级", "少", | |
15618 | "图", "山", "统", "接", "知", "较", "将", "组", "见", "计", | |
15619 | "别", "她", "手", "角", "期", "根", "论", "运", "农", "指", | |
15620 | "几", "九", "区", "强", "放", "决", "西", "被", "干", "做", | |
15621 | "必", "战", "先", "回", "则", "任", "取", "据", "处", "队", | |
15622 | "南", "给", "色", "光", "门", "即", "保", "治", "北", "造", | |
15623 | "百", "规", "热", "领", "七", "海", "口", "东", "导", "器", | |
15624 | "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思", | |
15625 | "术", "极", "交", "受", "联", "什", "认", "六", "共", "权", | |
15626 | "收", "证", "改", "清", "美", "再", "采", "转", "更", "单", | |
15627 | "风", "切", "打", "白", "教", "速", "花", "带", "安", "场", | |
15628 | "身", "车", "例", "真", "务", "具", "万", "每", "目", "至", | |
15629 | "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类", | |
15630 | "八", "离", "华", "名", "确", "才", "科", "张", "信", "马", | |
15631 | "节", "话", "米", "整", "空", "元", "况", "今", "集", "温", | |
15632 | "传", "土", "许", "步", "群", "广", "石", "记", "需", "段", | |
15633 | "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越", | |
15634 | "织", "装", "影", "算", "低", "持", "音", "众", "书", "布", | |
15635 | "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断", | |
15636 | "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备", | |
15637 | "半", "办", "青", "省", "列", "习", "响", "约", "支", "般", | |
15638 | "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克", | |
15639 | "何", "除", "消", "构", "府", "称", "太", "准", "精", "值", | |
15640 | "号", "率", "族", "维", "划", "选", "标", "写", "存", "候", | |
15641 | "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼", | |
15642 | "王", "按", "格", "养", "易", "置", "派", "层", "片", "始", | |
15643 | "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆", | |
15644 | "包", "火", "住", "调", "满", "县", "局", "照", "参", "红", | |
15645 | "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液", | |
15646 | "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配", | |
15647 | "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席", | |
15648 | "含", "企", "望", "密", "批", "营", "项", "防", "举", "球", | |
15649 | "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮", | |
15650 | "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供", | |
15651 | "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止", | |
15652 | "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视", | |
15653 | "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续", | |
15654 | "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司", | |
15655 | "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯", | |
15656 | "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输", | |
15657 | "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右", | |
15658 | "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴", | |
15659 | "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互", | |
15660 | "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换", | |
15661 | "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述", | |
15662 | "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令", | |
15663 | "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控", | |
15664 | "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶", | |
15665 | "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客", | |
15666 | "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协", | |
15667 | "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦", | |
15668 | "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮", | |
15669 | "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停", | |
15670 | "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻", | |
15671 | "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散", | |
15672 | "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖", | |
15673 | "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植", | |
15674 | "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸", | |
15675 | "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误", | |
15676 | "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩", | |
15677 | "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢", | |
15678 | "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚", | |
15679 | "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵", | |
15680 | "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰", | |
15681 | "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执", | |
15682 | "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松", | |
15683 | "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井", | |
15684 | "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补", | |
15685 | "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希", | |
15686 | "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架", | |
15687 | "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销", | |
15688 | "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威", | |
15689 | "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶", | |
15690 | "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措", | |
15691 | "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯", | |
15692 | "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永", | |
15693 | "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿", | |
15694 | "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶", | |
15695 | "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召", | |
15696 | "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯", | |
15697 | "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪", | |
15698 | "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳", | |
15699 | "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭", | |
15700 | "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦", | |
15701 | "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁", | |
15702 | "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退", | |
15703 | "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜", | |
15704 | "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇", | |
15705 | "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸", | |
15706 | "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典", | |
15707 | "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊", | |
15708 | "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛", | |
15709 | "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨", | |
15710 | "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡", | |
15711 | "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬", | |
15712 | "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐", | |
15713 | "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园", | |
15714 | "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭", | |
15715 | "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱", | |
15716 | "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓", | |
15717 | "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗", | |
15718 | "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘", | |
15719 | "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿", | |
15720 | "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷", | |
15721 | "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯", | |
15722 | "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳", | |
15723 | "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰", | |
15724 | "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭", | |
15725 | "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺", | |
15726 | "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡", | |
15727 | "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕", | |
15728 | "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴", | |
15729 | "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞", | |
15730 | "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰", | |
15731 | "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫", | |
15732 | "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违", | |
15733 | "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催", | |
15734 | "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮", | |
15735 | "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃", | |
15736 | "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊", | |
15737 | "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链", | |
15738 | "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅", | |
15739 | "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂", | |
15740 | "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰", | |
15741 | "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤", | |
15742 | "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹", | |
15743 | "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏", | |
15744 | "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃", | |
15745 | "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚", | |
15746 | "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦", | |
15747 | "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬", | |
15748 | "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填", | |
15749 | "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊", | |
15750 | "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍", | |
15751 | "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲", | |
15752 | "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴", | |
15753 | "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌", | |
15754 | "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊", | |
15755 | "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩", | |
15756 | "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠", | |
15757 | "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆", | |
15758 | "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭", | |
15759 | "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎", | |
15760 | "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸", | |
15761 | "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩", | |
15762 | "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭", | |
15763 | "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻", | |
15764 | "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆", | |
15765 | "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭", | |
15766 | "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝", | |
15767 | "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊", | |
15768 | "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒", | |
15769 | "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿", | |
15770 | "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥", | |
15771 | "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃", | |
15772 | "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框", | |
15773 | "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟", | |
15774 | "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛", | |
15775 | "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌", | |
15776 | "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨", | |
15777 | "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷", | |
15778 | "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱", | |
15779 | "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆", | |
15780 | "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰", | |
15781 | "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄", | |
15782 | "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲", | |
15783 | "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩", | |
15784 | "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎", | |
15785 | "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒", | |
15786 | "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇", | |
15787 | "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤", | |
15788 | "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡", | |
15789 | "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊", | |
15790 | "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪", | |
15791 | "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘", | |
15792 | "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊", | |
15793 | "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞", | |
15794 | "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄", | |
15795 | "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳", | |
15796 | "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿", | |
15797 | "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫", | |
15798 | "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝", | |
15799 | "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝", | |
15800 | "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ] | |
15801 | </script> | |
15802 | <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS; | |
15803 | WORDLISTS["chinese_traditional"] = [ | |
15804 | "的", "一", "是", "在", "不", "了", "有", "和", "人", "這", | |
15805 | "中", "大", "為", "上", "個", "國", "我", "以", "要", "他", | |
15806 | "時", "來", "用", "們", "生", "到", "作", "地", "於", "出", | |
15807 | "就", "分", "對", "成", "會", "可", "主", "發", "年", "動", | |
15808 | "同", "工", "也", "能", "下", "過", "子", "說", "產", "種", | |
15809 | "面", "而", "方", "後", "多", "定", "行", "學", "法", "所", | |
15810 | "民", "得", "經", "十", "三", "之", "進", "著", "等", "部", | |
15811 | "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自", | |
15812 | "二", "理", "起", "小", "物", "現", "實", "加", "量", "都", | |
15813 | "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本", | |
15814 | "去", "把", "性", "好", "應", "開", "它", "合", "還", "因", | |
15815 | "由", "其", "些", "然", "前", "外", "天", "政", "四", "日", | |
15816 | "那", "社", "義", "事", "平", "形", "相", "全", "表", "間", | |
15817 | "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正", | |
15818 | "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比", | |
15819 | "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變", | |
15820 | "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公", | |
15821 | "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想", | |
15822 | "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五", | |
15823 | "果", "料", "象", "員", "革", "位", "入", "常", "文", "總", | |
15824 | "次", "品", "式", "活", "設", "及", "管", "特", "件", "長", | |
15825 | "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少", | |
15826 | "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計", | |
15827 | "別", "她", "手", "角", "期", "根", "論", "運", "農", "指", | |
15828 | "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做", | |
15829 | "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊", | |
15830 | "南", "給", "色", "光", "門", "即", "保", "治", "北", "造", | |
15831 | "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器", | |
15832 | "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思", | |
15833 | "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權", | |
15834 | "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單", | |
15835 | "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場", | |
15836 | "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至", | |
15837 | "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類", | |
15838 | "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬", | |
15839 | "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫", | |
15840 | "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段", | |
15841 | "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越", | |
15842 | "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布", | |
15843 | "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷", | |
15844 | "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備", | |
15845 | "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般", | |
15846 | "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克", | |
15847 | "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值", | |
15848 | "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候", | |
15849 | "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼", | |
15850 | "王", "按", "格", "養", "易", "置", "派", "層", "片", "始", | |
15851 | "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓", | |
15852 | "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅", | |
15853 | "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液", | |
15854 | "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配", | |
15855 | "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席", | |
15856 | "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球", | |
15857 | "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪", | |
15858 | "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供", | |
15859 | "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止", | |
15860 | "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視", | |
15861 | "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續", | |
15862 | "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司", | |
15863 | "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯", | |
15864 | "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸", | |
15865 | "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右", | |
15866 | "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴", | |
15867 | "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互", | |
15868 | "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換", | |
15869 | "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述", | |
15870 | "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令", | |
15871 | "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控", | |
15872 | "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂", | |
15873 | "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客", | |
15874 | "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協", | |
15875 | "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦", | |
15876 | "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮", | |
15877 | "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停", | |
15878 | "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻", | |
15879 | "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散", | |
15880 | "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖", | |
15881 | "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植", | |
15882 | "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙", | |
15883 | "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤", | |
15884 | "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩", | |
15885 | "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡", | |
15886 | "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚", | |
15887 | "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴", | |
15888 | "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐", | |
15889 | "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執", | |
15890 | "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松", | |
15891 | "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井", | |
15892 | "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補", | |
15893 | "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希", | |
15894 | "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架", | |
15895 | "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷", | |
15896 | "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威", | |
15897 | "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠", | |
15898 | "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措", | |
15899 | "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱", | |
15900 | "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永", | |
15901 | "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿", | |
15902 | "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕", | |
15903 | "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召", | |
15904 | "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純", | |
15905 | "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍", | |
15906 | "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳", | |
15907 | "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭", | |
15908 | "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦", | |
15909 | "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁", | |
15910 | "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退", | |
15911 | "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅", | |
15912 | "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇", | |
15913 | "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸", | |
15914 | "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典", | |
15915 | "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚", | |
15916 | "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛", | |
15917 | "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨", | |
15918 | "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡", | |
15919 | "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬", | |
15920 | "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐", | |
15921 | "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園", | |
15922 | "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉", | |
15923 | "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼", | |
15924 | "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩", | |
15925 | "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗", | |
15926 | "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘", | |
15927 | "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億", | |
15928 | "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴", | |
15929 | "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯", | |
15930 | "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳", | |
15931 | "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰", | |
15932 | "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭", | |
15933 | "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺", | |
15934 | "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡", | |
15935 | "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞", | |
15936 | "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴", | |
15937 | "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞", | |
15938 | "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰", | |
15939 | "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮", | |
15940 | "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違", | |
15941 | "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催", | |
15942 | "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯", | |
15943 | "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃", | |
15944 | "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊", | |
15945 | "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈", | |
15946 | "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅", | |
15947 | "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂", | |
15948 | "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱", | |
15949 | "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤", | |
15950 | "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹", | |
15951 | "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏", | |
15952 | "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅", | |
15953 | "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠", | |
15954 | "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫", | |
15955 | "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬", | |
15956 | "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填", | |
15957 | "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊", | |
15958 | "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍", | |
15959 | "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁", | |
15960 | "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴", | |
15961 | "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌", | |
15962 | "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊", | |
15963 | "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩", | |
15964 | "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾", | |
15965 | "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆", | |
15966 | "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨", | |
15967 | "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎", | |
15968 | "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸", | |
15969 | "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩", | |
15970 | "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑", | |
15971 | "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍", | |
15972 | "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆", | |
15973 | "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭", | |
15974 | "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸", | |
15975 | "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥", | |
15976 | "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨", | |
15977 | "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償", | |
15978 | "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥", | |
15979 | "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃", | |
15980 | "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框", | |
15981 | "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟", | |
15982 | "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋", | |
15983 | "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧", | |
15984 | "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨", | |
15985 | "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷", | |
15986 | "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄", | |
15987 | "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆", | |
15988 | "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟", | |
15989 | "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟", | |
15990 | "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒", | |
15991 | "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲", | |
15992 | "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎", | |
15993 | "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒", | |
15994 | "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇", | |
15995 | "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢", | |
15996 | "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋", | |
15997 | "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼", | |
15998 | "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪", | |
15999 | "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘", | |
16000 | "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘", | |
16001 | "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈", | |
16002 | "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄", | |
16003 | "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁", | |
16004 | "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿", | |
16005 | "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫", | |
16006 | "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩", | |
16007 | "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗", | |
16008 | "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ] | |
16009 | </script> | |
16010 | <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS; | |
16011 | WORDLISTS["french"] = [ | |
16012 | "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver", | |
16013 | "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou", | |
16014 | "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter", | |
16015 | "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat", | |
16016 | "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit", | |
16017 | "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer", | |
16018 | "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable", | |
16019 | "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment", | |
16020 | "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu", | |
16021 | "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur", | |
16022 | "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux", | |
16023 | "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote", | |
16024 | "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium", | |
16025 | "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire", | |
16026 | "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte", | |
16027 | "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier", | |
16028 | "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace", | |
16029 | "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse", | |
16030 | "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome", | |
16031 | "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin", | |
16032 | "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage", | |
16033 | "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote", | |
16034 | "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon", | |
16035 | "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype", | |
16036 | "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder", | |
16037 | "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir", | |
16038 | "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon", | |
16039 | "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche", | |
16040 | "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse", | |
16041 | "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin", | |
16042 | "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre", | |
16043 | "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade", | |
16044 | "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal", | |
16045 | "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte", | |
16046 | "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne", | |
16047 | "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral", | |
16048 | "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre", | |
16049 | "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval", | |
16050 | "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette", | |
16051 | "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque", | |
16052 | "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client", | |
16053 | "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier", | |
16054 | "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline", | |
16055 | "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler", | |
16056 | "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche", | |
16057 | "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau", | |
16058 | "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser", | |
16059 | "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel", | |
16060 | "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide", | |
16061 | "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur", | |
16062 | "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider", | |
16063 | "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer", | |
16064 | "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir", | |
16065 | "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger", | |
16066 | "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester", | |
16067 | "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter", | |
16068 | "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger", | |
16069 | "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt", | |
16070 | "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage", | |
16071 | "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper", | |
16072 | "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter", | |
16073 | "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter", | |
16074 | "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif", | |
16075 | "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron", | |
16076 | "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir", | |
16077 | "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise", | |
16078 | "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie", | |
16079 | "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever", | |
16080 | "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver", | |
16081 | "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule", | |
16082 | "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver", | |
16083 | "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce", | |
16084 | "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac", | |
16085 | "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique", | |
16086 | "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie", | |
16087 | "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer", | |
16088 | "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence", | |
16089 | "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire", | |
16090 | "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille", | |
16091 | "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur", | |
16092 | "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer", | |
16093 | "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle", | |
16094 | "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir", | |
16095 | "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche", | |
16096 | "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible", | |
16097 | "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure", | |
16098 | "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir", | |
16099 | "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter", | |
16100 | "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie", | |
16101 | "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine", | |
16102 | "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe", | |
16103 | "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe", | |
16104 | "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot", | |
16105 | "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir", | |
16106 | "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier", | |
16107 | "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude", | |
16108 | "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium", | |
16109 | "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant", | |
16110 | "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon", | |
16111 | "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide", | |
16112 | "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite", | |
16113 | "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer", | |
16114 | "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice", | |
16115 | "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler", | |
16116 | "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite", | |
16117 | "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion", | |
16118 | "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse", | |
16119 | "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton", | |
16120 | "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau", | |
16121 | "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak", | |
16122 | "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser", | |
16123 | "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme", | |
16124 | "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier", | |
16125 | "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature", | |
16126 | "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide", | |
16127 | "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric", | |
16128 | "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur", | |
16129 | "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin", | |
16130 | "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice", | |
16131 | "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon", | |
16132 | "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel", | |
16133 | "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin", | |
16134 | "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir", | |
16135 | "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode", | |
16136 | "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique", | |
16137 | "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile", | |
16138 | "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur", | |
16139 | "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton", | |
16140 | "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation", | |
16141 | "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer", | |
16142 | "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation", | |
16143 | "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel", | |
16144 | "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer", | |
16145 | "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage", | |
16146 | "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger", | |
16147 | "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer", | |
16148 | "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon", | |
16149 | "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque", | |
16150 | "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner", | |
16151 | "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature", | |
16152 | "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone", | |
16153 | "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau", | |
16154 | "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer", | |
16155 | "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel", | |
16156 | "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican", | |
16157 | "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum", | |
16158 | "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit", | |
16159 | "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural", | |
16160 | "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston", | |
16161 | "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau", | |
16162 | "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète", | |
16163 | "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier", | |
16164 | "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion", | |
16165 | "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire", | |
16166 | "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver", | |
16167 | "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre", | |
16168 | "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser", | |
16169 | "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle", | |
16170 | "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin", | |
16171 | "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif", | |
16172 | "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler", | |
16173 | "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage", | |
16174 | "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise", | |
16175 | "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier", | |
16176 | "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat", | |
16177 | "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte", | |
16178 | "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque", | |
16179 | "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier", | |
16180 | "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis", | |
16181 | "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter", | |
16182 | "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi", | |
16183 | "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant", | |
16184 | "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score", | |
16185 | "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur", | |
16186 | "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer", | |
16187 | "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage", | |
16188 | "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple", | |
16189 | "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium", | |
16190 | "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur", | |
16191 | "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever", | |
16192 | "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable", | |
16193 | "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat", | |
16194 | "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier", | |
16195 | "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie", | |
16196 | "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner", | |
16197 | "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami", | |
16198 | "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir", | |
16199 | "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax", | |
16200 | "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan", | |
16201 | "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent", | |
16202 | "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique", | |
16203 | "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal", | |
16204 | "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau", | |
16205 | "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon", | |
16206 | "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire", | |
16207 | "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie", | |
16208 | "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon", | |
16209 | "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette", | |
16210 | "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure", | |
16211 | "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer", | |
16212 | "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre", | |
16213 | "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel", | |
16214 | "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin", | |
16215 | "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage", | |
16216 | "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"] | |
16217 | </script> | |
16218 | <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS; | |
16219 | WORDLISTS["italian"] = [ | |
16220 | "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno", | |
16221 | "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio", | |
16222 | "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso", | |
16223 | "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare", | |
16224 | "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume", | |
16225 | "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro", | |
16226 | "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio", | |
16227 | "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba", | |
16228 | "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare", | |
16229 | "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare", | |
16230 | "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio", | |
16231 | "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo", | |
16232 | "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro", | |
16233 | "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato", | |
16234 | "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico", | |
16235 | "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta", | |
16236 | "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno", | |
16237 | "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire", | |
16238 | "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco", | |
16239 | "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino", | |
16240 | "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta", | |
16241 | "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole", | |
16242 | "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga", | |
16243 | "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto", | |
16244 | "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco", | |
16245 | "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto", | |
16246 | "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone", | |
16247 | "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta", | |
16248 | "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata", | |
16249 | "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina", | |
16250 | "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo", | |
16251 | "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello", | |
16252 | "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre", | |
16253 | "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia", | |
16254 | "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra", | |
16255 | "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino", | |
16256 | "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente", | |
16257 | "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando", | |
16258 | "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere", | |
16259 | "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato", | |
16260 | "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato", | |
16261 | "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi", | |
16262 | "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato", | |
16263 | "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino", | |
16264 | "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino", | |
16265 | "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta", | |
16266 | "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio", | |
16267 | "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale", | |
16268 | "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo", | |
16269 | "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto", | |
16270 | "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare", | |
16271 | "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio", | |
16272 | "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi", | |
16273 | "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio", | |
16274 | "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa", | |
16275 | "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico", | |
16276 | "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale", | |
16277 | "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe", | |
16278 | "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito", | |
16279 | "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso", | |
16280 | "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo", | |
16281 | "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco", | |
16282 | "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia", | |
16283 | "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa", | |
16284 | "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta", | |
16285 | "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore", | |
16286 | "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro", | |
16287 | "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico", | |
16288 | "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare", | |
16289 | "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo", | |
16290 | "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante", | |
16291 | "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile", | |
16292 | "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano", | |
16293 | "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina", | |
16294 | "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio", | |
16295 | "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone", | |
16296 | "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito", | |
16297 | "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare", | |
16298 | "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno", | |
16299 | "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo", | |
16300 | "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere", | |
16301 | "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego", | |
16302 | "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso", | |
16303 | "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto", | |
16304 | "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano", | |
16305 | "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido", | |
16306 | "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato", | |
16307 | "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto", | |
16308 | "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso", | |
16309 | "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero", | |
16310 | "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva", | |
16311 | "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua", | |
16312 | "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica", | |
16313 | "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca", | |
16314 | "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero", | |
16315 | "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso", | |
16316 | "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra", | |
16317 | "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera", | |
16318 | "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate", | |
16319 | "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio", | |
16320 | "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare", | |
16321 | "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa", | |
16322 | "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza", | |
16323 | "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole", | |
16324 | "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso", | |
16325 | "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo", | |
16326 | "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto", | |
16327 | "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro", | |
16328 | "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi", | |
16329 | "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve", | |
16330 | "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico", | |
16331 | "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero", | |
16332 | "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo", | |
16333 | "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare", | |
16334 | "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva", | |
16335 | "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice", | |
16336 | "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino", | |
16337 | "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo", | |
16338 | "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite", | |
16339 | "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale", | |
16340 | "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico", | |
16341 | "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude", | |
16342 | "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari", | |
16343 | "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume", | |
16344 | "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto", | |
16345 | "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena", | |
16346 | "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso", | |
16347 | "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza", | |
16348 | "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota", | |
16349 | "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi", | |
16350 | "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo", | |
16351 | "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere", | |
16352 | "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa", | |
16353 | "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica", | |
16354 | "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima", | |
16355 | "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome", | |
16356 | "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica", | |
16357 | "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro", | |
16358 | "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo", | |
16359 | "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso", | |
16360 | "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto", | |
16361 | "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione", | |
16362 | "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro", | |
16363 | "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica", | |
16364 | "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma", | |
16365 | "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio", | |
16366 | "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato", | |
16367 | "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso", | |
16368 | "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva", | |
16369 | "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio", | |
16370 | "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante", | |
16371 | "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo", | |
16372 | "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma", | |
16373 | "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno", | |
16374 | "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato", | |
16375 | "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato", | |
16376 | "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso", | |
16377 | "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere", | |
16378 | "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta", | |
16379 | "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare", | |
16380 | "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato", | |
16381 | "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire", | |
16382 | "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina", | |
16383 | "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato", | |
16384 | "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare", | |
16385 | "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra", | |
16386 | "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro", | |
16387 | "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno", | |
16388 | "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato", | |
16389 | "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne", | |
16390 | "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero", | |
16391 | "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro", | |
16392 | "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire", | |
16393 | "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso", | |
16394 | "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo", | |
16395 | "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera", | |
16396 | "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato", | |
16397 | "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro", | |
16398 | "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato", | |
16399 | "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista", | |
16400 | "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone", | |
16401 | "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna", | |
16402 | "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero", | |
16403 | "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro", | |
16404 | "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio", | |
16405 | "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo", | |
16406 | "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire", | |
16407 | "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano", | |
16408 | "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio", | |
16409 | "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola", | |
16410 | "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta", | |
16411 | "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse", | |
16412 | "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono", | |
16413 | "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito", | |
16414 | "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga", | |
16415 | "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano", | |
16416 | "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto", | |
16417 | "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace", | |
16418 | "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano", | |
16419 | "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto", | |
16420 | "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento", | |
16421 | "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido", | |
16422 | "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna", | |
16423 | "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco", | |
16424 | "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"] | |
dc55c6b0 | 16425 | </script> |
ab78acc6 | 16426 | <script>/* |
3af2954a IC |
16427 | * Copyright (c) 2013 Pavol Rusnak |
16428 | * | |
16429 | * Permission is hereby granted, free of charge, to any person obtaining a copy of | |
16430 | * this software and associated documentation files (the "Software"), to deal in | |
16431 | * the Software without restriction, including without limitation the rights to | |
16432 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |
16433 | * of the Software, and to permit persons to whom the Software is furnished to do | |
16434 | * so, subject to the following conditions: | |
16435 | * | |
16436 | * The above copyright notice and this permission notice shall be included in all | |
16437 | * copies or substantial portions of the Software. | |
16438 | * | |
16439 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
16440 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
16441 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
16442 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
16443 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |
16444 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
16445 | */ | |
16446 | ||
16447 | /* | |
16448 | * Javascript port from python by Ian Coleman | |
16449 | * | |
80c4dd2a IC |
16450 | * Requires code from sjcl |
16451 | * https://github.com/bitwiseshiftleft/sjcl | |
3af2954a IC |
16452 | */ |
16453 | ||
16454 | var Mnemonic = function(language) { | |
16455 | ||
16456 | var PBKDF2_ROUNDS = 2048; | |
16457 | var RADIX = 2048; | |
16458 | ||
16459 | var self = this; | |
16460 | var wordlist = []; | |
16461 | ||
80c4dd2a IC |
16462 | var hmacSHA512 = function(key) { |
16463 | var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512); | |
16464 | this.encrypt = function() { | |
16465 | return hasher.encrypt.apply(hasher, arguments); | |
16466 | }; | |
16467 | }; | |
16468 | ||
3af2954a IC |
16469 | function init() { |
16470 | wordlist = WORDLISTS[language]; | |
16471 | if (wordlist.length != RADIX) { | |
16472 | err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.'; | |
16473 | throw err; | |
16474 | } | |
16475 | } | |
16476 | ||
16477 | self.generate = function(strength) { | |
16478 | strength = strength || 128; | |
16479 | var r = strength % 32; | |
16480 | if (r > 0) { | |
16481 | throw 'Strength should be divisible by 32, but it is not (' + r + ').'; | |
16482 | } | |
16483 | var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null; | |
16484 | if (!hasStrongCrypto) { | |
16485 | throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable'; | |
16486 | } | |
16487 | var buffer = new Uint8Array(strength / 8); | |
16488 | var data = crypto.getRandomValues(buffer); | |
16489 | return self.toMnemonic(data); | |
16490 | } | |
16491 | ||
80c4dd2a IC |
16492 | self.toMnemonic = function(byteArray) { |
16493 | if (byteArray.length % 4 > 0) { | |
16494 | throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).' | |
3af2954a IC |
16495 | } |
16496 | ||
16497 | //h = hashlib.sha256(data).hexdigest() | |
80c4dd2a IC |
16498 | var data = byteArrayToWordArray(byteArray); |
16499 | var hash = sjcl.hash.sha256.hash(data); | |
16500 | var h = sjcl.codec.hex.fromBits(hash); | |
3af2954a IC |
16501 | |
16502 | // b is a binary string, eg '00111010101100...' | |
16503 | //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \ | |
16504 | // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32] | |
16505 | // | |
16506 | // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) | |
16507 | // c = bin(int(h, 16))[2:].zfill(256) | |
16508 | // d = c[:len(data) * 8 / 32] | |
80c4dd2a IC |
16509 | var a = byteArrayToBinaryString(byteArray); |
16510 | var c = zfill(hexStringToBinaryString(h), 256); | |
16511 | var d = c.substring(0, byteArray.length * 8 / 32); | |
3af2954a IC |
16512 | // b = line1 + line2 |
16513 | var b = a + d; | |
16514 | ||
16515 | var result = []; | |
16516 | var blen = b.length / 11; | |
16517 | for (var i=0; i<blen; i++) { | |
16518 | var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2); | |
16519 | result.push(wordlist[idx]); | |
16520 | } | |
0515eeec | 16521 | return self.joinWords(result); |
3af2954a IC |
16522 | } |
16523 | ||
16524 | self.check = function(mnemonic) { | |
0515eeec | 16525 | var mnemonic = self.splitWords(mnemonic); |
18abe53b | 16526 | if (mnemonic.length == 0 || mnemonic.length % 3 > 0) { |
3af2954a IC |
16527 | return false |
16528 | } | |
16529 | // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic) | |
16530 | var idx = []; | |
16531 | for (var i=0; i<mnemonic.length; i++) { | |
16532 | var word = mnemonic[i]; | |
16533 | var wordIndex = wordlist.indexOf(word); | |
16534 | if (wordIndex == -1) { | |
16535 | return false; | |
16536 | } | |
16537 | var binaryIndex = zfill(wordIndex.toString(2), 11); | |
16538 | idx.push(binaryIndex); | |
16539 | } | |
16540 | var b = idx.join(''); | |
16541 | var l = b.length; | |
16542 | //d = b[:l / 33 * 32] | |
16543 | //h = b[-l / 33:] | |
16544 | var d = b.substring(0, l / 33 * 32); | |
16545 | var h = b.substring(l - l / 33, l); | |
16546 | //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8)) | |
80c4dd2a | 16547 | var nd = binaryStringToWordArray(d); |
3af2954a | 16548 | //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33] |
80c4dd2a IC |
16549 | var ndHash = sjcl.hash.sha256.hash(nd); |
16550 | var ndHex = sjcl.codec.hex.fromBits(ndHash); | |
16551 | var ndBstr = zfill(hexStringToBinaryString(ndHex), 256); | |
3af2954a IC |
16552 | var nh = ndBstr.substring(0,l/33); |
16553 | return h == nh; | |
16554 | } | |
16555 | ||
16556 | self.toSeed = function(mnemonic, passphrase) { | |
16557 | passphrase = passphrase || ''; | |
0515eeec | 16558 | mnemonic = self.joinWords(self.splitWords(self.normalizeString(mnemonic))); // removes blanks |
3af2954a IC |
16559 | passphrase = self.normalizeString(passphrase) |
16560 | passphrase = "mnemonic" + passphrase; | |
80c4dd2a IC |
16561 | var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonic); |
16562 | var passphraseBits = sjcl.codec.utf8String.toBits(passphrase); | |
16563 | var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512); | |
16564 | var hashHex = sjcl.codec.hex.fromBits(result); | |
16565 | return hashHex; | |
3af2954a IC |
16566 | } |
16567 | ||
0515eeec IC |
16568 | self.splitWords = function(mnemonic) { |
16569 | return mnemonic.split(/\s/g).filter(function(x) { return x.length; }); | |
16570 | } | |
16571 | ||
16572 | self.joinWords = function(words) { | |
16573 | // Set space correctly depending on the language | |
16574 | // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese | |
16575 | var space = " "; | |
16576 | if (language == "japanese") { | |
16577 | space = "\u3000"; // ideographic space | |
16578 | } | |
16579 | return words.join(space); | |
16580 | } | |
16581 | ||
3af2954a IC |
16582 | self.normalizeString = function(str) { |
16583 | if (typeof str.normalize == "function") { | |
16584 | return str.normalize("NFKD"); | |
16585 | } | |
16586 | else { | |
16587 | // TODO decide how to handle this in the future. | |
16588 | // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize | |
16589 | return str; | |
16590 | } | |
16591 | } | |
16592 | ||
80c4dd2a IC |
16593 | function byteArrayToWordArray(data) { |
16594 | var a = []; | |
16595 | for (var i=0; i<data.length/4; i++) { | |
16596 | v = 0; | |
16597 | v += data[i*4 + 0] << 8 * 3; | |
16598 | v += data[i*4 + 1] << 8 * 2; | |
16599 | v += data[i*4 + 2] << 8 * 1; | |
16600 | v += data[i*4 + 3] << 8 * 0; | |
16601 | a.push(v); | |
16602 | } | |
16603 | return a; | |
16604 | } | |
16605 | ||
3af2954a IC |
16606 | function byteArrayToBinaryString(data) { |
16607 | var bin = ""; | |
16608 | for (var i=0; i<data.length; i++) { | |
16609 | bin += zfill(data[i].toString(2), 8); | |
16610 | } | |
16611 | return bin; | |
16612 | } | |
16613 | ||
80c4dd2a IC |
16614 | function hexStringToBinaryString(hexString) { |
16615 | binaryString = ""; | |
16616 | for (var i=0; i<hexString.length; i++) { | |
16617 | binaryString += zfill(parseInt(hexString[i], 16).toString(2),4); | |
16618 | } | |
16619 | return binaryString; | |
16620 | } | |
16621 | ||
16622 | function binaryStringToWordArray(binary) { | |
16623 | var aLen = binary.length / 32; | |
16624 | var a = []; | |
16625 | for (var i=0; i<aLen; i++) { | |
16626 | var valueStr = binary.substring(0,32); | |
3af2954a | 16627 | var value = parseInt(valueStr, 2); |
80c4dd2a IC |
16628 | a.push(value); |
16629 | binary = binary.slice(32); | |
3af2954a | 16630 | } |
80c4dd2a | 16631 | return a; |
3af2954a IC |
16632 | } |
16633 | ||
16634 | // Pad a numeric string on the left with zero digits until the given width | |
16635 | // is reached. | |
16636 | // Note this differs to the python implementation because it does not | |
16637 | // handle numbers starting with a sign. | |
16638 | function zfill(source, length) { | |
16639 | source = source.toString(); | |
16640 | while (source.length < length) { | |
16641 | source = '0' + source; | |
16642 | } | |
16643 | return source; | |
16644 | } | |
16645 | ||
16646 | init(); | |
ebd8d4e8 | 16647 | |
3af2954a | 16648 | } |
dc55c6b0 | 16649 | </script> |
95f04905 IC |
16650 | <script>/* |
16651 | JavaScript BigInteger library version 0.9.1 | |
16652 | http://silentmatt.com/biginteger/ | |
18abe53b | 16653 | |
95f04905 IC |
16654 | Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com> |
16655 | Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com> | |
16656 | Licensed under the MIT license. | |
c6624d51 | 16657 | |
95f04905 IC |
16658 | Support for arbitrary internal representation base was added by |
16659 | Vitaly Magerya. | |
16660 | */ | |
18abe53b | 16661 | |
95f04905 IC |
16662 | /* |
16663 | File: biginteger.js | |
18abe53b | 16664 | |
95f04905 | 16665 | Exports: |
18abe53b | 16666 | |
95f04905 IC |
16667 | <BigInteger> |
16668 | */ | |
16669 | (function(exports) { | |
16670 | "use strict"; | |
16671 | /* | |
16672 | Class: BigInteger | |
16673 | An arbitrarily-large integer. | |
18abe53b | 16674 | |
95f04905 IC |
16675 | <BigInteger> objects should be considered immutable. None of the "built-in" |
16676 | methods modify *this* or their arguments. All properties should be | |
16677 | considered private. | |
18abe53b | 16678 | |
95f04905 IC |
16679 | All the methods of <BigInteger> instances can be called "statically". The |
16680 | static versions are convenient if you don't already have a <BigInteger> | |
16681 | object. | |
18abe53b | 16682 | |
95f04905 | 16683 | As an example, these calls are equivalent. |
18abe53b | 16684 | |
95f04905 IC |
16685 | > BigInteger(4).multiply(5); // returns BigInteger(20); |
16686 | > BigInteger.multiply(4, 5); // returns BigInteger(20); | |
18abe53b | 16687 | |
95f04905 IC |
16688 | > var a = 42; |
16689 | > var a = BigInteger.toJSValue("0b101010"); // Not completely useless... | |
16690 | */ | |
c6624d51 | 16691 | |
95f04905 | 16692 | var CONSTRUCT = {}; // Unique token to call "private" version of constructor |
c6624d51 IC |
16693 | |
16694 | /* | |
16695 | Constructor: BigInteger() | |
16696 | Convert a value to a <BigInteger>. | |
16697 | ||
16698 | Although <BigInteger()> is the constructor for <BigInteger> objects, it is | |
16699 | best not to call it as a constructor. If *n* is a <BigInteger> object, it is | |
16700 | simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse> | |
16701 | without a radix argument. | |
16702 | ||
16703 | > var n0 = BigInteger(); // Same as <BigInteger.ZERO> | |
16704 | > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123 | |
16705 | > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123 | |
16706 | > var n3 = BigInteger(n2); // Return n2, unchanged | |
16707 | ||
16708 | The constructor form only takes an array and a sign. *n* must be an | |
16709 | array of numbers in little-endian order, where each digit is between 0 | |
16710 | and BigInteger.base. The second parameter sets the sign: -1 for | |
16711 | negative, +1 for positive, or 0 for zero. The array is *not copied and | |
16712 | may be modified*. If the array contains only zeros, the sign parameter | |
16713 | is ignored and is forced to zero. | |
16714 | ||
16715 | > new BigInteger([5], -1): create a new BigInteger with value -5 | |
16716 | ||
16717 | Parameters: | |
16718 | ||
16719 | n - Value to convert to a <BigInteger>. | |
16720 | ||
16721 | Returns: | |
16722 | ||
16723 | A <BigInteger> value. | |
16724 | ||
16725 | See Also: | |
16726 | ||
16727 | <parse>, <BigInteger> | |
16728 | */ | |
16729 | function BigInteger(n, s, token) { | |
16730 | if (token !== CONSTRUCT) { | |
16731 | if (n instanceof BigInteger) { | |
16732 | return n; | |
16733 | } | |
16734 | else if (typeof n === "undefined") { | |
16735 | return ZERO; | |
16736 | } | |
16737 | return BigInteger.parse(n); | |
16738 | } | |
16739 | ||
16740 | n = n || []; // Provide the nullary constructor for subclasses. | |
16741 | while (n.length && !n[n.length - 1]) { | |
16742 | --n.length; | |
16743 | } | |
16744 | this._d = n; | |
16745 | this._s = n.length ? (s || 1) : 0; | |
16746 | } | |
16747 | ||
16748 | BigInteger._construct = function(n, s) { | |
16749 | return new BigInteger(n, s, CONSTRUCT); | |
16750 | }; | |
16751 | ||
16752 | // Base-10 speedup hacks in parse, toString, exp10 and log functions | |
16753 | // require base to be a power of 10. 10^7 is the largest such power | |
16754 | // that won't cause a precision loss when digits are multiplied. | |
16755 | var BigInteger_base = 10000000; | |
16756 | var BigInteger_base_log10 = 7; | |
16757 | ||
16758 | BigInteger.base = BigInteger_base; | |
16759 | BigInteger.base_log10 = BigInteger_base_log10; | |
16760 | ||
16761 | var ZERO = new BigInteger([], 0, CONSTRUCT); | |
16762 | // Constant: ZERO | |
16763 | // <BigInteger> 0. | |
16764 | BigInteger.ZERO = ZERO; | |
16765 | ||
16766 | var ONE = new BigInteger([1], 1, CONSTRUCT); | |
16767 | // Constant: ONE | |
16768 | // <BigInteger> 1. | |
16769 | BigInteger.ONE = ONE; | |
16770 | ||
16771 | var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT); | |
16772 | // Constant: M_ONE | |
16773 | // <BigInteger> -1. | |
16774 | BigInteger.M_ONE = M_ONE; | |
16775 | ||
16776 | // Constant: _0 | |
16777 | // Shortcut for <ZERO>. | |
16778 | BigInteger._0 = ZERO; | |
16779 | ||
16780 | // Constant: _1 | |
16781 | // Shortcut for <ONE>. | |
16782 | BigInteger._1 = ONE; | |
16783 | ||
16784 | /* | |
16785 | Constant: small | |
16786 | Array of <BigIntegers> from 0 to 36. | |
16787 | ||
16788 | These are used internally for parsing, but useful when you need a "small" | |
16789 | <BigInteger>. | |
16790 | ||
16791 | See Also: | |
16792 | ||
16793 | <ZERO>, <ONE>, <_0>, <_1> | |
16794 | */ | |
16795 | BigInteger.small = [ | |
16796 | ZERO, | |
16797 | ONE, | |
16798 | /* Assuming BigInteger_base > 36 */ | |
16799 | new BigInteger( [2], 1, CONSTRUCT), | |
16800 | new BigInteger( [3], 1, CONSTRUCT), | |
16801 | new BigInteger( [4], 1, CONSTRUCT), | |
16802 | new BigInteger( [5], 1, CONSTRUCT), | |
16803 | new BigInteger( [6], 1, CONSTRUCT), | |
16804 | new BigInteger( [7], 1, CONSTRUCT), | |
16805 | new BigInteger( [8], 1, CONSTRUCT), | |
16806 | new BigInteger( [9], 1, CONSTRUCT), | |
16807 | new BigInteger([10], 1, CONSTRUCT), | |
16808 | new BigInteger([11], 1, CONSTRUCT), | |
16809 | new BigInteger([12], 1, CONSTRUCT), | |
16810 | new BigInteger([13], 1, CONSTRUCT), | |
16811 | new BigInteger([14], 1, CONSTRUCT), | |
16812 | new BigInteger([15], 1, CONSTRUCT), | |
16813 | new BigInteger([16], 1, CONSTRUCT), | |
16814 | new BigInteger([17], 1, CONSTRUCT), | |
16815 | new BigInteger([18], 1, CONSTRUCT), | |
16816 | new BigInteger([19], 1, CONSTRUCT), | |
16817 | new BigInteger([20], 1, CONSTRUCT), | |
16818 | new BigInteger([21], 1, CONSTRUCT), | |
16819 | new BigInteger([22], 1, CONSTRUCT), | |
16820 | new BigInteger([23], 1, CONSTRUCT), | |
16821 | new BigInteger([24], 1, CONSTRUCT), | |
16822 | new BigInteger([25], 1, CONSTRUCT), | |
16823 | new BigInteger([26], 1, CONSTRUCT), | |
16824 | new BigInteger([27], 1, CONSTRUCT), | |
16825 | new BigInteger([28], 1, CONSTRUCT), | |
16826 | new BigInteger([29], 1, CONSTRUCT), | |
16827 | new BigInteger([30], 1, CONSTRUCT), | |
16828 | new BigInteger([31], 1, CONSTRUCT), | |
16829 | new BigInteger([32], 1, CONSTRUCT), | |
16830 | new BigInteger([33], 1, CONSTRUCT), | |
16831 | new BigInteger([34], 1, CONSTRUCT), | |
16832 | new BigInteger([35], 1, CONSTRUCT), | |
16833 | new BigInteger([36], 1, CONSTRUCT) | |
16834 | ]; | |
16835 | ||
16836 | // Used for parsing/radix conversion | |
16837 | BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""); | |
16838 | ||
16839 | /* | |
16840 | Method: toString | |
16841 | Convert a <BigInteger> to a string. | |
16842 | ||
16843 | When *base* is greater than 10, letters are upper case. | |
16844 | ||
16845 | Parameters: | |
16846 | ||
16847 | base - Optional base to represent the number in (default is base 10). | |
16848 | Must be between 2 and 36 inclusive, or an Error will be thrown. | |
16849 | ||
16850 | Returns: | |
16851 | ||
16852 | The string representation of the <BigInteger>. | |
16853 | */ | |
16854 | BigInteger.prototype.toString = function(base) { | |
16855 | base = +base || 10; | |
16856 | if (base < 2 || base > 36) { | |
16857 | throw new Error("illegal radix " + base + "."); | |
16858 | } | |
16859 | if (this._s === 0) { | |
16860 | return "0"; | |
16861 | } | |
16862 | if (base === 10) { | |
16863 | var str = this._s < 0 ? "-" : ""; | |
16864 | str += this._d[this._d.length - 1].toString(); | |
16865 | for (var i = this._d.length - 2; i >= 0; i--) { | |
16866 | var group = this._d[i].toString(); | |
16867 | while (group.length < BigInteger_base_log10) group = '0' + group; | |
16868 | str += group; | |
16869 | } | |
16870 | return str; | |
16871 | } | |
16872 | else { | |
16873 | var numerals = BigInteger.digits; | |
16874 | base = BigInteger.small[base]; | |
16875 | var sign = this._s; | |
16876 | ||
16877 | var n = this.abs(); | |
16878 | var digits = []; | |
16879 | var digit; | |
16880 | ||
16881 | while (n._s !== 0) { | |
16882 | var divmod = n.divRem(base); | |
16883 | n = divmod[0]; | |
16884 | digit = divmod[1]; | |
16885 | // TODO: This could be changed to unshift instead of reversing at the end. | |
16886 | // Benchmark both to compare speeds. | |
16887 | digits.push(numerals[digit.valueOf()]); | |
16888 | } | |
16889 | return (sign < 0 ? "-" : "") + digits.reverse().join(""); | |
16890 | } | |
16891 | }; | |
16892 | ||
16893 | // Verify strings for parsing | |
16894 | BigInteger.radixRegex = [ | |
16895 | /^$/, | |
16896 | /^$/, | |
16897 | /^[01]*$/, | |
16898 | /^[012]*$/, | |
16899 | /^[0-3]*$/, | |
16900 | /^[0-4]*$/, | |
16901 | /^[0-5]*$/, | |
16902 | /^[0-6]*$/, | |
16903 | /^[0-7]*$/, | |
16904 | /^[0-8]*$/, | |
16905 | /^[0-9]*$/, | |
16906 | /^[0-9aA]*$/, | |
16907 | /^[0-9abAB]*$/, | |
16908 | /^[0-9abcABC]*$/, | |
16909 | /^[0-9a-dA-D]*$/, | |
16910 | /^[0-9a-eA-E]*$/, | |
16911 | /^[0-9a-fA-F]*$/, | |
16912 | /^[0-9a-gA-G]*$/, | |
16913 | /^[0-9a-hA-H]*$/, | |
16914 | /^[0-9a-iA-I]*$/, | |
16915 | /^[0-9a-jA-J]*$/, | |
16916 | /^[0-9a-kA-K]*$/, | |
16917 | /^[0-9a-lA-L]*$/, | |
16918 | /^[0-9a-mA-M]*$/, | |
16919 | /^[0-9a-nA-N]*$/, | |
16920 | /^[0-9a-oA-O]*$/, | |
16921 | /^[0-9a-pA-P]*$/, | |
16922 | /^[0-9a-qA-Q]*$/, | |
16923 | /^[0-9a-rA-R]*$/, | |
16924 | /^[0-9a-sA-S]*$/, | |
16925 | /^[0-9a-tA-T]*$/, | |
16926 | /^[0-9a-uA-U]*$/, | |
16927 | /^[0-9a-vA-V]*$/, | |
16928 | /^[0-9a-wA-W]*$/, | |
16929 | /^[0-9a-xA-X]*$/, | |
16930 | /^[0-9a-yA-Y]*$/, | |
16931 | /^[0-9a-zA-Z]*$/ | |
16932 | ]; | |
16933 | ||
16934 | /* | |
16935 | Function: parse | |
16936 | Parse a string into a <BigInteger>. | |
16937 | ||
16938 | *base* is optional but, if provided, must be from 2 to 36 inclusive. If | |
16939 | *base* is not provided, it will be guessed based on the leading characters | |
16940 | of *s* as follows: | |
16941 | ||
16942 | - "0x" or "0X": *base* = 16 | |
16943 | - "0c" or "0C": *base* = 8 | |
16944 | - "0b" or "0B": *base* = 2 | |
16945 | - else: *base* = 10 | |
16946 | ||
16947 | If no base is provided, or *base* is 10, the number can be in exponential | |
16948 | form. For example, these are all valid: | |
16949 | ||
16950 | > BigInteger.parse("1e9"); // Same as "1000000000" | |
16951 | > BigInteger.parse("1.234*10^3"); // Same as 1234 | |
16952 | > BigInteger.parse("56789 * 10 ** -2"); // Same as 567 | |
16953 | ||
16954 | If any characters fall outside the range defined by the radix, an exception | |
16955 | will be thrown. | |
16956 | ||
16957 | Parameters: | |
16958 | ||
16959 | s - The string to parse. | |
16960 | base - Optional radix (default is to guess based on *s*). | |
16961 | ||
16962 | Returns: | |
16963 | ||
16964 | a <BigInteger> instance. | |
16965 | */ | |
16966 | BigInteger.parse = function(s, base) { | |
16967 | // Expands a number in exponential form to decimal form. | |
16968 | // expandExponential("-13.441*10^5") === "1344100"; | |
16969 | // expandExponential("1.12300e-1") === "0.112300"; | |
16970 | // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000"; | |
16971 | function expandExponential(str) { | |
16972 | str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e"); | |
16973 | ||
16974 | return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) { | |
16975 | c = +c; | |
16976 | var l = c < 0; | |
16977 | var i = n.length + c; | |
16978 | x = (l ? n : f).length; | |
16979 | c = ((c = Math.abs(c)) >= x ? c - x + l : 0); | |
16980 | var z = (new Array(c + 1)).join("0"); | |
16981 | var r = n + f; | |
16982 | return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : ""); | |
16983 | }); | |
16984 | } | |
16985 | ||
16986 | s = s.toString(); | |
16987 | if (typeof base === "undefined" || +base === 10) { | |
16988 | s = expandExponential(s); | |
16989 | } | |
16990 | ||
16991 | var prefixRE; | |
16992 | if (typeof base === "undefined") { | |
16993 | prefixRE = '0[xcb]'; | |
16994 | } | |
16995 | else if (base == 16) { | |
16996 | prefixRE = '0x'; | |
16997 | } | |
16998 | else if (base == 8) { | |
16999 | prefixRE = '0c'; | |
17000 | } | |
17001 | else if (base == 2) { | |
17002 | prefixRE = '0b'; | |
17003 | } | |
17004 | else { | |
17005 | prefixRE = ''; | |
17006 | } | |
17007 | var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s); | |
17008 | if (parts) { | |
17009 | var sign = parts[1] || "+"; | |
17010 | var baseSection = parts[2] || ""; | |
17011 | var digits = parts[3] || ""; | |
17012 | ||
17013 | if (typeof base === "undefined") { | |
17014 | // Guess base | |
17015 | if (baseSection === "0x" || baseSection === "0X") { // Hex | |
17016 | base = 16; | |
17017 | } | |
17018 | else if (baseSection === "0c" || baseSection === "0C") { // Octal | |
17019 | base = 8; | |
17020 | } | |
17021 | else if (baseSection === "0b" || baseSection === "0B") { // Binary | |
17022 | base = 2; | |
17023 | } | |
17024 | else { | |
17025 | base = 10; | |
17026 | } | |
17027 | } | |
17028 | else if (base < 2 || base > 36) { | |
17029 | throw new Error("Illegal radix " + base + "."); | |
17030 | } | |
17031 | ||
17032 | base = +base; | |
17033 | ||
17034 | // Check for digits outside the range | |
17035 | if (!(BigInteger.radixRegex[base].test(digits))) { | |
17036 | throw new Error("Bad digit for radix " + base); | |
17037 | } | |
17038 | ||
17039 | // Strip leading zeros, and convert to array | |
17040 | digits = digits.replace(/^0+/, "").split(""); | |
17041 | if (digits.length === 0) { | |
17042 | return ZERO; | |
17043 | } | |
17044 | ||
17045 | // Get the sign (we know it's not zero) | |
17046 | sign = (sign === "-") ? -1 : 1; | |
17047 | ||
17048 | // Optimize 10 | |
17049 | if (base == 10) { | |
17050 | var d = []; | |
17051 | while (digits.length >= BigInteger_base_log10) { | |
17052 | d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10)); | |
17053 | } | |
17054 | d.push(parseInt(digits.join(''), 10)); | |
17055 | return new BigInteger(d, sign, CONSTRUCT); | |
17056 | } | |
17057 | ||
17058 | // Do the conversion | |
17059 | var d = ZERO; | |
17060 | base = BigInteger.small[base]; | |
17061 | var small = BigInteger.small; | |
17062 | for (var i = 0; i < digits.length; i++) { | |
17063 | d = d.multiply(base).add(small[parseInt(digits[i], 36)]); | |
17064 | } | |
17065 | return new BigInteger(d._d, sign, CONSTRUCT); | |
17066 | } | |
17067 | else { | |
17068 | throw new Error("Invalid BigInteger format: " + s); | |
17069 | } | |
17070 | }; | |
17071 | ||
17072 | /* | |
17073 | Function: add | |
17074 | Add two <BigIntegers>. | |
17075 | ||
17076 | Parameters: | |
17077 | ||
17078 | n - The number to add to *this*. Will be converted to a <BigInteger>. | |
17079 | ||
17080 | Returns: | |
17081 | ||
17082 | The numbers added together. | |
17083 | ||
17084 | See Also: | |
17085 | ||
17086 | <subtract>, <multiply>, <quotient>, <next> | |
17087 | */ | |
17088 | BigInteger.prototype.add = function(n) { | |
17089 | if (this._s === 0) { | |
17090 | return BigInteger(n); | |
17091 | } | |
17092 | ||
17093 | n = BigInteger(n); | |
17094 | if (n._s === 0) { | |
17095 | return this; | |
17096 | } | |
17097 | if (this._s !== n._s) { | |
17098 | n = n.negate(); | |
17099 | return this.subtract(n); | |
17100 | } | |
17101 | ||
17102 | var a = this._d; | |
17103 | var b = n._d; | |
17104 | var al = a.length; | |
17105 | var bl = b.length; | |
17106 | var sum = new Array(Math.max(al, bl) + 1); | |
17107 | var size = Math.min(al, bl); | |
17108 | var carry = 0; | |
17109 | var digit; | |
17110 | ||
17111 | for (var i = 0; i < size; i++) { | |
17112 | digit = a[i] + b[i] + carry; | |
17113 | sum[i] = digit % BigInteger_base; | |
17114 | carry = (digit / BigInteger_base) | 0; | |
17115 | } | |
17116 | if (bl > al) { | |
17117 | a = b; | |
17118 | al = bl; | |
17119 | } | |
17120 | for (i = size; carry && i < al; i++) { | |
17121 | digit = a[i] + carry; | |
17122 | sum[i] = digit % BigInteger_base; | |
17123 | carry = (digit / BigInteger_base) | 0; | |
17124 | } | |
17125 | if (carry) { | |
17126 | sum[i] = carry; | |
17127 | } | |
17128 | ||
17129 | for ( ; i < al; i++) { | |
17130 | sum[i] = a[i]; | |
17131 | } | |
17132 | ||
17133 | return new BigInteger(sum, this._s, CONSTRUCT); | |
17134 | }; | |
17135 | ||
17136 | /* | |
17137 | Function: negate | |
17138 | Get the additive inverse of a <BigInteger>. | |
17139 | ||
17140 | Returns: | |
17141 | ||
17142 | A <BigInteger> with the same magnatude, but with the opposite sign. | |
17143 | ||
17144 | See Also: | |
17145 | ||
17146 | <abs> | |
17147 | */ | |
17148 | BigInteger.prototype.negate = function() { | |
17149 | return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT); | |
17150 | }; | |
17151 | ||
17152 | /* | |
17153 | Function: abs | |
17154 | Get the absolute value of a <BigInteger>. | |
17155 | ||
17156 | Returns: | |
17157 | ||
17158 | A <BigInteger> with the same magnatude, but always positive (or zero). | |
17159 | ||
17160 | See Also: | |
17161 | ||
17162 | <negate> | |
17163 | */ | |
17164 | BigInteger.prototype.abs = function() { | |
17165 | return (this._s < 0) ? this.negate() : this; | |
17166 | }; | |
17167 | ||
17168 | /* | |
17169 | Function: subtract | |
17170 | Subtract two <BigIntegers>. | |
17171 | ||
17172 | Parameters: | |
17173 | ||
17174 | n - The number to subtract from *this*. Will be converted to a <BigInteger>. | |
17175 | ||
17176 | Returns: | |
17177 | ||
17178 | The *n* subtracted from *this*. | |
17179 | ||
17180 | See Also: | |
17181 | ||
17182 | <add>, <multiply>, <quotient>, <prev> | |
17183 | */ | |
17184 | BigInteger.prototype.subtract = function(n) { | |
17185 | if (this._s === 0) { | |
17186 | return BigInteger(n).negate(); | |
17187 | } | |
17188 | ||
17189 | n = BigInteger(n); | |
17190 | if (n._s === 0) { | |
17191 | return this; | |
17192 | } | |
17193 | if (this._s !== n._s) { | |
17194 | n = n.negate(); | |
17195 | return this.add(n); | |
17196 | } | |
17197 | ||
17198 | var m = this; | |
17199 | // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a| | |
17200 | if (this._s < 0) { | |
17201 | m = new BigInteger(n._d, 1, CONSTRUCT); | |
17202 | n = new BigInteger(this._d, 1, CONSTRUCT); | |
17203 | } | |
17204 | ||
17205 | // Both are positive => a - b | |
17206 | var sign = m.compareAbs(n); | |
17207 | if (sign === 0) { | |
17208 | return ZERO; | |
17209 | } | |
17210 | else if (sign < 0) { | |
17211 | // swap m and n | |
17212 | var t = n; | |
17213 | n = m; | |
17214 | m = t; | |
17215 | } | |
17216 | ||
17217 | // a > b | |
17218 | var a = m._d; | |
17219 | var b = n._d; | |
17220 | var al = a.length; | |
17221 | var bl = b.length; | |
17222 | var diff = new Array(al); // al >= bl since a > b | |
17223 | var borrow = 0; | |
17224 | var i; | |
17225 | var digit; | |
17226 | ||
17227 | for (i = 0; i < bl; i++) { | |
17228 | digit = a[i] - borrow - b[i]; | |
17229 | if (digit < 0) { | |
17230 | digit += BigInteger_base; | |
17231 | borrow = 1; | |
17232 | } | |
17233 | else { | |
17234 | borrow = 0; | |
17235 | } | |
17236 | diff[i] = digit; | |
17237 | } | |
17238 | for (i = bl; i < al; i++) { | |
17239 | digit = a[i] - borrow; | |
17240 | if (digit < 0) { | |
17241 | digit += BigInteger_base; | |
17242 | } | |
17243 | else { | |
17244 | diff[i++] = digit; | |
17245 | break; | |
17246 | } | |
17247 | diff[i] = digit; | |
17248 | } | |
17249 | for ( ; i < al; i++) { | |
17250 | diff[i] = a[i]; | |
17251 | } | |
17252 | ||
17253 | return new BigInteger(diff, sign, CONSTRUCT); | |
17254 | }; | |
17255 | ||
17256 | (function() { | |
17257 | function addOne(n, sign) { | |
17258 | var a = n._d; | |
17259 | var sum = a.slice(); | |
17260 | var carry = true; | |
17261 | var i = 0; | |
17262 | ||
17263 | while (true) { | |
17264 | var digit = (a[i] || 0) + 1; | |
17265 | sum[i] = digit % BigInteger_base; | |
17266 | if (digit <= BigInteger_base - 1) { | |
17267 | break; | |
17268 | } | |
17269 | ++i; | |
17270 | } | |
17271 | ||
17272 | return new BigInteger(sum, sign, CONSTRUCT); | |
17273 | } | |
17274 | ||
17275 | function subtractOne(n, sign) { | |
17276 | var a = n._d; | |
17277 | var sum = a.slice(); | |
17278 | var borrow = true; | |
17279 | var i = 0; | |
17280 | ||
17281 | while (true) { | |
17282 | var digit = (a[i] || 0) - 1; | |
17283 | if (digit < 0) { | |
17284 | sum[i] = digit + BigInteger_base; | |
17285 | } | |
17286 | else { | |
17287 | sum[i] = digit; | |
17288 | break; | |
17289 | } | |
17290 | ++i; | |
17291 | } | |
17292 | ||
17293 | return new BigInteger(sum, sign, CONSTRUCT); | |
17294 | } | |
17295 | ||
17296 | /* | |
17297 | Function: next | |
17298 | Get the next <BigInteger> (add one). | |
17299 | ||
17300 | Returns: | |
17301 | ||
17302 | *this* + 1. | |
17303 | ||
17304 | See Also: | |
17305 | ||
17306 | <add>, <prev> | |
17307 | */ | |
17308 | BigInteger.prototype.next = function() { | |
17309 | switch (this._s) { | |
17310 | case 0: | |
17311 | return ONE; | |
17312 | case -1: | |
17313 | return subtractOne(this, -1); | |
17314 | // case 1: | |
17315 | default: | |
17316 | return addOne(this, 1); | |
17317 | } | |
17318 | }; | |
17319 | ||
17320 | /* | |
17321 | Function: prev | |
17322 | Get the previous <BigInteger> (subtract one). | |
17323 | ||
17324 | Returns: | |
17325 | ||
17326 | *this* - 1. | |
17327 | ||
17328 | See Also: | |
17329 | ||
17330 | <next>, <subtract> | |
17331 | */ | |
17332 | BigInteger.prototype.prev = function() { | |
17333 | switch (this._s) { | |
17334 | case 0: | |
17335 | return M_ONE; | |
17336 | case -1: | |
17337 | return addOne(this, -1); | |
17338 | // case 1: | |
17339 | default: | |
17340 | return subtractOne(this, 1); | |
17341 | } | |
17342 | }; | |
17343 | })(); | |
17344 | ||
17345 | /* | |
17346 | Function: compareAbs | |
17347 | Compare the absolute value of two <BigIntegers>. | |
17348 | ||
17349 | Calling <compareAbs> is faster than calling <abs> twice, then <compare>. | |
17350 | ||
17351 | Parameters: | |
17352 | ||
17353 | n - The number to compare to *this*. Will be converted to a <BigInteger>. | |
17354 | ||
17355 | Returns: | |
17356 | ||
17357 | -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*. | |
17358 | ||
17359 | See Also: | |
17360 | ||
17361 | <compare>, <abs> | |
17362 | */ | |
17363 | BigInteger.prototype.compareAbs = function(n) { | |
17364 | if (this === n) { | |
17365 | return 0; | |
17366 | } | |
17367 | ||
17368 | if (!(n instanceof BigInteger)) { | |
17369 | if (!isFinite(n)) { | |
17370 | return(isNaN(n) ? n : -1); | |
17371 | } | |
17372 | n = BigInteger(n); | |
17373 | } | |
17374 | ||
17375 | if (this._s === 0) { | |
17376 | return (n._s !== 0) ? -1 : 0; | |
17377 | } | |
17378 | if (n._s === 0) { | |
17379 | return 1; | |
17380 | } | |
17381 | ||
17382 | var l = this._d.length; | |
17383 | var nl = n._d.length; | |
17384 | if (l < nl) { | |
17385 | return -1; | |
17386 | } | |
17387 | else if (l > nl) { | |
17388 | return 1; | |
17389 | } | |
17390 | ||
17391 | var a = this._d; | |
17392 | var b = n._d; | |
17393 | for (var i = l-1; i >= 0; i--) { | |
17394 | if (a[i] !== b[i]) { | |
17395 | return a[i] < b[i] ? -1 : 1; | |
17396 | } | |
17397 | } | |
17398 | ||
17399 | return 0; | |
17400 | }; | |
17401 | ||
17402 | /* | |
17403 | Function: compare | |
17404 | Compare two <BigIntegers>. | |
17405 | ||
17406 | Parameters: | |
17407 | ||
17408 | n - The number to compare to *this*. Will be converted to a <BigInteger>. | |
17409 | ||
17410 | Returns: | |
17411 | ||
17412 | -1, 0, or +1 if *this* is less than, equal to, or greater than *n*. | |
17413 | ||
17414 | See Also: | |
17415 | ||
17416 | <compareAbs>, <isPositive>, <isNegative>, <isUnit> | |
17417 | */ | |
17418 | BigInteger.prototype.compare = function(n) { | |
17419 | if (this === n) { | |
17420 | return 0; | |
17421 | } | |
17422 | ||
17423 | n = BigInteger(n); | |
17424 | ||
17425 | if (this._s === 0) { | |
17426 | return -n._s; | |
17427 | } | |
17428 | ||
17429 | if (this._s === n._s) { // both positive or both negative | |
17430 | var cmp = this.compareAbs(n); | |
17431 | return cmp * this._s; | |
17432 | } | |
17433 | else { | |
17434 | return this._s; | |
17435 | } | |
17436 | }; | |
17437 | ||
17438 | /* | |
17439 | Function: isUnit | |
17440 | Return true iff *this* is either 1 or -1. | |
17441 | ||
17442 | Returns: | |
17443 | ||
17444 | true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>. | |
17445 | ||
17446 | See Also: | |
17447 | ||
17448 | <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>, | |
17449 | <BigInteger.ONE>, <BigInteger.M_ONE> | |
17450 | */ | |
17451 | BigInteger.prototype.isUnit = function() { | |
17452 | return this === ONE || | |
17453 | this === M_ONE || | |
17454 | (this._d.length === 1 && this._d[0] === 1); | |
17455 | }; | |
17456 | ||
17457 | /* | |
17458 | Function: multiply | |
17459 | Multiply two <BigIntegers>. | |
17460 | ||
17461 | Parameters: | |
17462 | ||
17463 | n - The number to multiply *this* by. Will be converted to a | |
17464 | <BigInteger>. | |
17465 | ||
17466 | Returns: | |
17467 | ||
17468 | The numbers multiplied together. | |
17469 | ||
17470 | See Also: | |
17471 | ||
17472 | <add>, <subtract>, <quotient>, <square> | |
17473 | */ | |
17474 | BigInteger.prototype.multiply = function(n) { | |
17475 | // TODO: Consider adding Karatsuba multiplication for large numbers | |
17476 | if (this._s === 0) { | |
17477 | return ZERO; | |
17478 | } | |
17479 | ||
17480 | n = BigInteger(n); | |
17481 | if (n._s === 0) { | |
17482 | return ZERO; | |
17483 | } | |
17484 | if (this.isUnit()) { | |
17485 | if (this._s < 0) { | |
17486 | return n.negate(); | |
17487 | } | |
17488 | return n; | |
17489 | } | |
17490 | if (n.isUnit()) { | |
17491 | if (n._s < 0) { | |
17492 | return this.negate(); | |
17493 | } | |
17494 | return this; | |
17495 | } | |
17496 | if (this === n) { | |
17497 | return this.square(); | |
17498 | } | |
17499 | ||
17500 | var r = (this._d.length >= n._d.length); | |
17501 | var a = (r ? this : n)._d; // a will be longer than b | |
17502 | var b = (r ? n : this)._d; | |
17503 | var al = a.length; | |
17504 | var bl = b.length; | |
17505 | ||
17506 | var pl = al + bl; | |
17507 | var partial = new Array(pl); | |
17508 | var i; | |
17509 | for (i = 0; i < pl; i++) { | |
17510 | partial[i] = 0; | |
17511 | } | |
17512 | ||
17513 | for (i = 0; i < bl; i++) { | |
17514 | var carry = 0; | |
17515 | var bi = b[i]; | |
17516 | var jlimit = al + i; | |
17517 | var digit; | |
17518 | for (var j = i; j < jlimit; j++) { | |
17519 | digit = partial[j] + bi * a[j - i] + carry; | |
17520 | carry = (digit / BigInteger_base) | 0; | |
17521 | partial[j] = (digit % BigInteger_base) | 0; | |
17522 | } | |
17523 | if (carry) { | |
17524 | digit = partial[j] + carry; | |
17525 | carry = (digit / BigInteger_base) | 0; | |
17526 | partial[j] = digit % BigInteger_base; | |
17527 | } | |
17528 | } | |
17529 | return new BigInteger(partial, this._s * n._s, CONSTRUCT); | |
17530 | }; | |
17531 | ||
17532 | // Multiply a BigInteger by a single-digit native number | |
17533 | // Assumes that this and n are >= 0 | |
17534 | // This is not really intended to be used outside the library itself | |
17535 | BigInteger.prototype.multiplySingleDigit = function(n) { | |
17536 | if (n === 0 || this._s === 0) { | |
17537 | return ZERO; | |
17538 | } | |
17539 | if (n === 1) { | |
17540 | return this; | |
17541 | } | |
17542 | ||
17543 | var digit; | |
17544 | if (this._d.length === 1) { | |
17545 | digit = this._d[0] * n; | |
17546 | if (digit >= BigInteger_base) { | |
17547 | return new BigInteger([(digit % BigInteger_base)|0, | |
17548 | (digit / BigInteger_base)|0], 1, CONSTRUCT); | |
17549 | } | |
17550 | return new BigInteger([digit], 1, CONSTRUCT); | |
17551 | } | |
17552 | ||
17553 | if (n === 2) { | |
17554 | return this.add(this); | |
17555 | } | |
17556 | if (this.isUnit()) { | |
17557 | return new BigInteger([n], 1, CONSTRUCT); | |
17558 | } | |
17559 | ||
17560 | var a = this._d; | |
17561 | var al = a.length; | |
17562 | ||
17563 | var pl = al + 1; | |
17564 | var partial = new Array(pl); | |
17565 | for (var i = 0; i < pl; i++) { | |
17566 | partial[i] = 0; | |
17567 | } | |
17568 | ||
17569 | var carry = 0; | |
17570 | for (var j = 0; j < al; j++) { | |
17571 | digit = n * a[j] + carry; | |
17572 | carry = (digit / BigInteger_base) | 0; | |
17573 | partial[j] = (digit % BigInteger_base) | 0; | |
17574 | } | |
17575 | if (carry) { | |
17576 | partial[j] = carry; | |
17577 | } | |
17578 | ||
17579 | return new BigInteger(partial, 1, CONSTRUCT); | |
17580 | }; | |
17581 | ||
17582 | /* | |
17583 | Function: square | |
17584 | Multiply a <BigInteger> by itself. | |
17585 | ||
17586 | This is slightly faster than regular multiplication, since it removes the | |
17587 | duplicated multiplcations. | |
17588 | ||
17589 | Returns: | |
17590 | ||
17591 | > this.multiply(this) | |
17592 | ||
17593 | See Also: | |
17594 | <multiply> | |
17595 | */ | |
17596 | BigInteger.prototype.square = function() { | |
17597 | // Normally, squaring a 10-digit number would take 100 multiplications. | |
17598 | // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated. | |
17599 | // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies). | |
17600 | // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org | |
17601 | ||
17602 | if (this._s === 0) { | |
17603 | return ZERO; | |
17604 | } | |
17605 | if (this.isUnit()) { | |
17606 | return ONE; | |
17607 | } | |
17608 | ||
17609 | var digits = this._d; | |
17610 | var length = digits.length; | |
17611 | var imult1 = new Array(length + length + 1); | |
17612 | var product, carry, k; | |
17613 | var i; | |
17614 | ||
17615 | // Calculate diagonal | |
17616 | for (i = 0; i < length; i++) { | |
17617 | k = i * 2; | |
17618 | product = digits[i] * digits[i]; | |
17619 | carry = (product / BigInteger_base) | 0; | |
17620 | imult1[k] = product % BigInteger_base; | |
17621 | imult1[k + 1] = carry; | |
17622 | } | |
17623 | ||
17624 | // Calculate repeating part | |
17625 | for (i = 0; i < length; i++) { | |
17626 | carry = 0; | |
17627 | k = i * 2 + 1; | |
17628 | for (var j = i + 1; j < length; j++, k++) { | |
17629 | product = digits[j] * digits[i] * 2 + imult1[k] + carry; | |
17630 | carry = (product / BigInteger_base) | 0; | |
17631 | imult1[k] = product % BigInteger_base; | |
17632 | } | |
17633 | k = length + i; | |
17634 | var digit = carry + imult1[k]; | |
17635 | carry = (digit / BigInteger_base) | 0; | |
17636 | imult1[k] = digit % BigInteger_base; | |
17637 | imult1[k + 1] += carry; | |
17638 | } | |
17639 | ||
17640 | return new BigInteger(imult1, 1, CONSTRUCT); | |
17641 | }; | |
17642 | ||
17643 | /* | |
17644 | Function: quotient | |
17645 | Divide two <BigIntegers> and truncate towards zero. | |
17646 | ||
17647 | <quotient> throws an exception if *n* is zero. | |
17648 | ||
17649 | Parameters: | |
17650 | ||
17651 | n - The number to divide *this* by. Will be converted to a <BigInteger>. | |
17652 | ||
17653 | Returns: | |
17654 | ||
17655 | The *this* / *n*, truncated to an integer. | |
17656 | ||
17657 | See Also: | |
17658 | ||
17659 | <add>, <subtract>, <multiply>, <divRem>, <remainder> | |
17660 | */ | |
17661 | BigInteger.prototype.quotient = function(n) { | |
17662 | return this.divRem(n)[0]; | |
17663 | }; | |
17664 | ||
17665 | /* | |
17666 | Function: divide | |
17667 | Deprecated synonym for <quotient>. | |
17668 | */ | |
17669 | BigInteger.prototype.divide = BigInteger.prototype.quotient; | |
17670 | ||
17671 | /* | |
17672 | Function: remainder | |
17673 | Calculate the remainder of two <BigIntegers>. | |
17674 | ||
17675 | <remainder> throws an exception if *n* is zero. | |
17676 | ||
17677 | Parameters: | |
17678 | ||
17679 | n - The remainder after *this* is divided *this* by *n*. Will be | |
17680 | converted to a <BigInteger>. | |
17681 | ||
17682 | Returns: | |
17683 | ||
17684 | *this* % *n*. | |
17685 | ||
17686 | See Also: | |
17687 | ||
17688 | <divRem>, <quotient> | |
17689 | */ | |
17690 | BigInteger.prototype.remainder = function(n) { | |
17691 | return this.divRem(n)[1]; | |
17692 | }; | |
17693 | ||
17694 | /* | |
17695 | Function: divRem | |
17696 | Calculate the integer quotient and remainder of two <BigIntegers>. | |
17697 | ||
17698 | <divRem> throws an exception if *n* is zero. | |
17699 | ||
17700 | Parameters: | |
17701 | ||
17702 | n - The number to divide *this* by. Will be converted to a <BigInteger>. | |
17703 | ||
17704 | Returns: | |
17705 | ||
17706 | A two-element array containing the quotient and the remainder. | |
17707 | ||
17708 | > a.divRem(b) | |
17709 | ||
17710 | is exactly equivalent to | |
17711 | ||
17712 | > [a.quotient(b), a.remainder(b)] | |
17713 | ||
17714 | except it is faster, because they are calculated at the same time. | |
17715 | ||
17716 | See Also: | |
17717 | ||
17718 | <quotient>, <remainder> | |
17719 | */ | |
17720 | BigInteger.prototype.divRem = function(n) { | |
17721 | n = BigInteger(n); | |
17722 | if (n._s === 0) { | |
17723 | throw new Error("Divide by zero"); | |
17724 | } | |
17725 | if (this._s === 0) { | |
17726 | return [ZERO, ZERO]; | |
17727 | } | |
17728 | if (n._d.length === 1) { | |
17729 | return this.divRemSmall(n._s * n._d[0]); | |
17730 | } | |
17731 | ||
17732 | // Test for easy cases -- |n1| <= |n2| | |
17733 | switch (this.compareAbs(n)) { | |
17734 | case 0: // n1 == n2 | |
17735 | return [this._s === n._s ? ONE : M_ONE, ZERO]; | |
17736 | case -1: // |n1| < |n2| | |
17737 | return [ZERO, this]; | |
17738 | } | |
17739 | ||
17740 | var sign = this._s * n._s; | |
17741 | var a = n.abs(); | |
17742 | var b_digits = this._d; | |
17743 | var b_index = b_digits.length; | |
17744 | var digits = n._d.length; | |
17745 | var quot = []; | |
17746 | var guess; | |
17747 | ||
17748 | var part = new BigInteger([], 0, CONSTRUCT); | |
17749 | ||
17750 | while (b_index) { | |
17751 | part._d.unshift(b_digits[--b_index]); | |
17752 | part = new BigInteger(part._d, 1, CONSTRUCT); | |
17753 | ||
17754 | if (part.compareAbs(n) < 0) { | |
17755 | quot.push(0); | |
17756 | continue; | |
17757 | } | |
17758 | if (part._s === 0) { | |
17759 | guess = 0; | |
17760 | } | |
17761 | else { | |
17762 | var xlen = part._d.length, ylen = a._d.length; | |
17763 | var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2]; | |
17764 | var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2]; | |
17765 | if (part._d.length > a._d.length) { | |
17766 | // The length of part._d can either match a._d length, | |
17767 | // or exceed it by one. | |
17768 | highx = (highx+1)*BigInteger_base; | |
17769 | } | |
17770 | guess = Math.ceil(highx/highy); | |
17771 | } | |
17772 | do { | |
17773 | var check = a.multiplySingleDigit(guess); | |
17774 | if (check.compareAbs(part) <= 0) { | |
17775 | break; | |
17776 | } | |
17777 | guess--; | |
17778 | } while (guess); | |
17779 | ||
17780 | quot.push(guess); | |
17781 | if (!guess) { | |
17782 | continue; | |
17783 | } | |
17784 | var diff = part.subtract(check); | |
17785 | part._d = diff._d.slice(); | |
17786 | } | |
17787 | ||
17788 | return [new BigInteger(quot.reverse(), sign, CONSTRUCT), | |
17789 | new BigInteger(part._d, this._s, CONSTRUCT)]; | |
17790 | }; | |
17791 | ||
17792 | // Throws an exception if n is outside of (-BigInteger.base, -1] or | |
17793 | // [1, BigInteger.base). It's not necessary to call this, since the | |
17794 | // other division functions will call it if they are able to. | |
17795 | BigInteger.prototype.divRemSmall = function(n) { | |
17796 | var r; | |
17797 | n = +n; | |
17798 | if (n === 0) { | |
17799 | throw new Error("Divide by zero"); | |
17800 | } | |
17801 | ||
17802 | var n_s = n < 0 ? -1 : 1; | |
17803 | var sign = this._s * n_s; | |
17804 | n = Math.abs(n); | |
17805 | ||
17806 | if (n < 1 || n >= BigInteger_base) { | |
17807 | throw new Error("Argument out of range"); | |
17808 | } | |
17809 | ||
17810 | if (this._s === 0) { | |
17811 | return [ZERO, ZERO]; | |
17812 | } | |
17813 | ||
17814 | if (n === 1 || n === -1) { | |
17815 | return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO]; | |
17816 | } | |
17817 | ||
17818 | // 2 <= n < BigInteger_base | |
17819 | ||
17820 | // divide a single digit by a single digit | |
17821 | if (this._d.length === 1) { | |
17822 | var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT); | |
17823 | r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT); | |
17824 | if (sign < 0) { | |
17825 | q = q.negate(); | |
17826 | } | |
17827 | if (this._s < 0) { | |
17828 | r = r.negate(); | |
17829 | } | |
17830 | return [q, r]; | |
17831 | } | |
17832 | ||
17833 | var digits = this._d.slice(); | |
17834 | var quot = new Array(digits.length); | |
17835 | var part = 0; | |
17836 | var diff = 0; | |
17837 | var i = 0; | |
17838 | var guess; | |
17839 | ||
17840 | while (digits.length) { | |
17841 | part = part * BigInteger_base + digits[digits.length - 1]; | |
17842 | if (part < n) { | |
17843 | quot[i++] = 0; | |
17844 | digits.pop(); | |
17845 | diff = BigInteger_base * diff + part; | |
17846 | continue; | |
17847 | } | |
17848 | if (part === 0) { | |
17849 | guess = 0; | |
17850 | } | |
17851 | else { | |
17852 | guess = (part / n) | 0; | |
17853 | } | |
17854 | ||
17855 | var check = n * guess; | |
17856 | diff = part - check; | |
17857 | quot[i++] = guess; | |
17858 | if (!guess) { | |
17859 | digits.pop(); | |
17860 | continue; | |
17861 | } | |
17862 | ||
17863 | digits.pop(); | |
17864 | part = diff; | |
17865 | } | |
17866 | ||
17867 | r = new BigInteger([diff], 1, CONSTRUCT); | |
17868 | if (this._s < 0) { | |
17869 | r = r.negate(); | |
17870 | } | |
17871 | return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r]; | |
17872 | }; | |
17873 | ||
17874 | /* | |
17875 | Function: isEven | |
17876 | Return true iff *this* is divisible by two. | |
17877 | ||
17878 | Note that <BigInteger.ZERO> is even. | |
17879 | ||
17880 | Returns: | |
17881 | ||
17882 | true if *this* is even, false otherwise. | |
17883 | ||
17884 | See Also: | |
17885 | ||
17886 | <isOdd> | |
17887 | */ | |
17888 | BigInteger.prototype.isEven = function() { | |
17889 | var digits = this._d; | |
17890 | return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0; | |
17891 | }; | |
17892 | ||
17893 | /* | |
17894 | Function: isOdd | |
17895 | Return true iff *this* is not divisible by two. | |
17896 | ||
17897 | Returns: | |
17898 | ||
17899 | true if *this* is odd, false otherwise. | |
17900 | ||
17901 | See Also: | |
17902 | ||
17903 | <isEven> | |
17904 | */ | |
17905 | BigInteger.prototype.isOdd = function() { | |
17906 | return !this.isEven(); | |
17907 | }; | |
17908 | ||
17909 | /* | |
17910 | Function: sign | |
17911 | Get the sign of a <BigInteger>. | |
17912 | ||
17913 | Returns: | |
17914 | ||
17915 | * -1 if *this* < 0 | |
17916 | * 0 if *this* == 0 | |
17917 | * +1 if *this* > 0 | |
17918 | ||
17919 | See Also: | |
17920 | ||
17921 | <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO> | |
17922 | */ | |
17923 | BigInteger.prototype.sign = function() { | |
17924 | return this._s; | |
17925 | }; | |
17926 | ||
17927 | /* | |
17928 | Function: isPositive | |
17929 | Return true iff *this* > 0. | |
17930 | ||
17931 | Returns: | |
17932 | ||
17933 | true if *this*.compare(<BigInteger.ZERO>) == 1. | |
17934 | ||
17935 | See Also: | |
17936 | ||
17937 | <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO> | |
17938 | */ | |
17939 | BigInteger.prototype.isPositive = function() { | |
17940 | return this._s > 0; | |
17941 | }; | |
17942 | ||
17943 | /* | |
17944 | Function: isNegative | |
17945 | Return true iff *this* < 0. | |
17946 | ||
17947 | Returns: | |
17948 | ||
17949 | true if *this*.compare(<BigInteger.ZERO>) == -1. | |
17950 | ||
17951 | See Also: | |
17952 | ||
17953 | <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO> | |
17954 | */ | |
17955 | BigInteger.prototype.isNegative = function() { | |
17956 | return this._s < 0; | |
17957 | }; | |
17958 | ||
17959 | /* | |
17960 | Function: isZero | |
17961 | Return true iff *this* == 0. | |
17962 | ||
17963 | Returns: | |
17964 | ||
17965 | true if *this*.compare(<BigInteger.ZERO>) == 0. | |
17966 | ||
17967 | See Also: | |
17968 | ||
17969 | <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO> | |
17970 | */ | |
17971 | BigInteger.prototype.isZero = function() { | |
17972 | return this._s === 0; | |
17973 | }; | |
17974 | ||
17975 | /* | |
17976 | Function: exp10 | |
17977 | Multiply a <BigInteger> by a power of 10. | |
17978 | ||
17979 | This is equivalent to, but faster than | |
17980 | ||
17981 | > if (n >= 0) { | |
17982 | > return this.multiply(BigInteger("1e" + n)); | |
17983 | > } | |
17984 | > else { // n <= 0 | |
17985 | > return this.quotient(BigInteger("1e" + -n)); | |
17986 | > } | |
17987 | ||
17988 | Parameters: | |
17989 | ||
17990 | n - The power of 10 to multiply *this* by. *n* is converted to a | |
17991 | javascipt number and must be no greater than <BigInteger.MAX_EXP> | |
17992 | (0x7FFFFFFF), or an exception will be thrown. | |
17993 | ||
17994 | Returns: | |
17995 | ||
17996 | *this* * (10 ** *n*), truncated to an integer if necessary. | |
17997 | ||
17998 | See Also: | |
17999 | ||
18000 | <pow>, <multiply> | |
18001 | */ | |
18002 | BigInteger.prototype.exp10 = function(n) { | |
18003 | n = +n; | |
18004 | if (n === 0) { | |
18005 | return this; | |
18006 | } | |
18007 | if (Math.abs(n) > Number(MAX_EXP)) { | |
18008 | throw new Error("exponent too large in BigInteger.exp10"); | |
18009 | } | |
18010 | // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case | |
18011 | if (this._s === 0) { | |
18012 | return ZERO; | |
18013 | } | |
18014 | if (n > 0) { | |
18015 | var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT); | |
18016 | ||
18017 | for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) { | |
18018 | k._d.unshift(0); | |
18019 | } | |
18020 | if (n == 0) | |
18021 | return k; | |
18022 | k._s = 1; | |
18023 | k = k.multiplySingleDigit(Math.pow(10, n)); | |
18024 | return (this._s < 0 ? k.negate() : k); | |
18025 | } else if (-n >= this._d.length*BigInteger_base_log10) { | |
18026 | return ZERO; | |
18027 | } else { | |
18028 | var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT); | |
18029 | ||
18030 | for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) { | |
18031 | k._d.shift(); | |
18032 | } | |
18033 | return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0]; | |
18034 | } | |
18035 | }; | |
18036 | ||
18037 | /* | |
18038 | Function: pow | |
18039 | Raise a <BigInteger> to a power. | |
18040 | ||
18041 | In this implementation, 0**0 is 1. | |
18042 | ||
18043 | Parameters: | |
18044 | ||
18045 | n - The exponent to raise *this* by. *n* must be no greater than | |
18046 | <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown. | |
18047 | ||
18048 | Returns: | |
18049 | ||
18050 | *this* raised to the *nth* power. | |
18051 | ||
18052 | See Also: | |
18053 | ||
18054 | <modPow> | |
18055 | */ | |
18056 | BigInteger.prototype.pow = function(n) { | |
18057 | if (this.isUnit()) { | |
18058 | if (this._s > 0) { | |
18059 | return this; | |
18060 | } | |
18061 | else { | |
18062 | return BigInteger(n).isOdd() ? this : this.negate(); | |
18063 | } | |
18064 | } | |
18065 | ||
18066 | n = BigInteger(n); | |
18067 | if (n._s === 0) { | |
18068 | return ONE; | |
18069 | } | |
18070 | else if (n._s < 0) { | |
18071 | if (this._s === 0) { | |
18072 | throw new Error("Divide by zero"); | |
18073 | } | |
18074 | else { | |
18075 | return ZERO; | |
18076 | } | |
18077 | } | |
18078 | if (this._s === 0) { | |
18079 | return ZERO; | |
18080 | } | |
18081 | if (n.isUnit()) { | |
18082 | return this; | |
18083 | } | |
18084 | ||
18085 | if (n.compareAbs(MAX_EXP) > 0) { | |
18086 | throw new Error("exponent too large in BigInteger.pow"); | |
18087 | } | |
18088 | var x = this; | |
18089 | var aux = ONE; | |
18090 | var two = BigInteger.small[2]; | |
18091 | ||
18092 | while (n.isPositive()) { | |
18093 | if (n.isOdd()) { | |
18094 | aux = aux.multiply(x); | |
18095 | if (n.isUnit()) { | |
18096 | return aux; | |
18097 | } | |
18098 | } | |
18099 | x = x.square(); | |
18100 | n = n.quotient(two); | |
18101 | } | |
18102 | ||
18103 | return aux; | |
18104 | }; | |
18105 | ||
18106 | /* | |
18107 | Function: modPow | |
18108 | Raise a <BigInteger> to a power (mod m). | |
18109 | ||
18110 | Because it is reduced by a modulus, <modPow> is not limited by | |
18111 | <BigInteger.MAX_EXP> like <pow>. | |
18112 | ||
18113 | Parameters: | |
18114 | ||
18115 | exponent - The exponent to raise *this* by. Must be positive. | |
18116 | modulus - The modulus. | |
18117 | ||
18118 | Returns: | |
18119 | ||
18120 | *this* ^ *exponent* (mod *modulus*). | |
18121 | ||
18122 | See Also: | |
18123 | ||
18124 | <pow>, <mod> | |
18125 | */ | |
18126 | BigInteger.prototype.modPow = function(exponent, modulus) { | |
18127 | var result = ONE; | |
18128 | var base = this; | |
18129 | ||
18130 | while (exponent.isPositive()) { | |
18131 | if (exponent.isOdd()) { | |
18132 | result = result.multiply(base).remainder(modulus); | |
18133 | } | |
18134 | ||
18135 | exponent = exponent.quotient(BigInteger.small[2]); | |
18136 | if (exponent.isPositive()) { | |
18137 | base = base.square().remainder(modulus); | |
18138 | } | |
18139 | } | |
18140 | ||
18141 | return result; | |
18142 | }; | |
18143 | ||
18144 | /* | |
18145 | Function: log | |
18146 | Get the natural logarithm of a <BigInteger> as a native JavaScript number. | |
18147 | ||
18148 | This is equivalent to | |
18149 | ||
18150 | > Math.log(this.toJSValue()) | |
18151 | ||
18152 | but handles values outside of the native number range. | |
18153 | ||
18154 | Returns: | |
18155 | ||
18156 | log( *this* ) | |
18157 | ||
18158 | See Also: | |
18159 | ||
18160 | <toJSValue> | |
18161 | */ | |
18162 | BigInteger.prototype.log = function() { | |
18163 | switch (this._s) { | |
18164 | case 0: return -Infinity; | |
18165 | case -1: return NaN; | |
18166 | default: // Fall through. | |
18167 | } | |
18168 | ||
18169 | var l = this._d.length; | |
18170 | ||
18171 | if (l*BigInteger_base_log10 < 30) { | |
18172 | return Math.log(this.valueOf()); | |
18173 | } | |
18174 | ||
18175 | var N = Math.ceil(30/BigInteger_base_log10); | |
18176 | var firstNdigits = this._d.slice(l - N); | |
18177 | return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base); | |
18178 | }; | |
18179 | ||
18180 | /* | |
18181 | Function: valueOf | |
18182 | Convert a <BigInteger> to a native JavaScript integer. | |
18183 | ||
18184 | This is called automatically by JavaScipt to convert a <BigInteger> to a | |
18185 | native value. | |
18186 | ||
18187 | Returns: | |
18188 | ||
18189 | > parseInt(this.toString(), 10) | |
18190 | ||
18191 | See Also: | |
18192 | ||
18193 | <toString>, <toJSValue> | |
18194 | */ | |
18195 | BigInteger.prototype.valueOf = function() { | |
18196 | return parseInt(this.toString(), 10); | |
18197 | }; | |
18198 | ||
18199 | /* | |
18200 | Function: toJSValue | |
18201 | Convert a <BigInteger> to a native JavaScript integer. | |
18202 | ||
18203 | This is the same as valueOf, but more explicitly named. | |
18204 | ||
18205 | Returns: | |
18206 | ||
18207 | > parseInt(this.toString(), 10) | |
18208 | ||
18209 | See Also: | |
18210 | ||
18211 | <toString>, <valueOf> | |
18212 | */ | |
18213 | BigInteger.prototype.toJSValue = function() { | |
18214 | return parseInt(this.toString(), 10); | |
18215 | }; | |
18216 | ||
18217 | var MAX_EXP = BigInteger(0x7FFFFFFF); | |
18218 | // Constant: MAX_EXP | |
18219 | // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647). | |
18220 | BigInteger.MAX_EXP = MAX_EXP; | |
18221 | ||
18222 | (function() { | |
18223 | function makeUnary(fn) { | |
18224 | return function(a) { | |
18225 | return fn.call(BigInteger(a)); | |
18226 | }; | |
18227 | } | |
18228 | ||
18229 | function makeBinary(fn) { | |
18230 | return function(a, b) { | |
18231 | return fn.call(BigInteger(a), BigInteger(b)); | |
18232 | }; | |
18233 | } | |
18234 | ||
18235 | function makeTrinary(fn) { | |
18236 | return function(a, b, c) { | |
18237 | return fn.call(BigInteger(a), BigInteger(b), BigInteger(c)); | |
18238 | }; | |
18239 | } | |
18240 | ||
18241 | (function() { | |
18242 | var i, fn; | |
18243 | var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(","); | |
18244 | var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(","); | |
18245 | var trinary = ["modPow"]; | |
18246 | ||
18247 | for (i = 0; i < unary.length; i++) { | |
18248 | fn = unary[i]; | |
18249 | BigInteger[fn] = makeUnary(BigInteger.prototype[fn]); | |
18250 | } | |
18251 | ||
18252 | for (i = 0; i < binary.length; i++) { | |
18253 | fn = binary[i]; | |
18254 | BigInteger[fn] = makeBinary(BigInteger.prototype[fn]); | |
18255 | } | |
18256 | ||
18257 | for (i = 0; i < trinary.length; i++) { | |
18258 | fn = trinary[i]; | |
18259 | BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]); | |
18260 | } | |
18261 | ||
18262 | BigInteger.exp10 = function(x, n) { | |
18263 | return BigInteger(x).exp10(n); | |
18264 | }; | |
18265 | })(); | |
18266 | })(); | |
18267 | ||
18268 | exports.BigInteger = BigInteger; | |
18269 | })(typeof exports !== 'undefined' ? exports : this); | |
95f04905 IC |
18270 | </script> |
18271 | <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){ | |
18272 | 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; | |
18273 | ||
18274 | },{}],2:[function(require,module,exports){ | |
18275 | 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; | |
18276 | ||
18277 | },{"./scoring":6}],3:[function(require,module,exports){ | |
18278 | 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(","), | |
18279 | 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(","), | |
18280 | 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(","), | |
18281 | 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(","), | |
18282 | 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; | |
18283 | ||
18284 | },{}],4:[function(require,module,exports){ | |
18285 | 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; | |
18286 | ||
18287 | },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){ | |
18288 | 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; | |
18289 | ||
18290 | },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){ | |
18291 | 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; | |
18292 | ||
18293 | },{"./adjacency_graphs":1}],7:[function(require,module,exports){ | |
18294 | 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; | |
18295 | ||
18296 | },{}]},{},[4])(4) | |
18297 | }); | |
18298 | //# sourceMappingURL=zxcvbn.js.map | |
18299 | </script> | |
18300 | <script>/* | |
18301 | * Detects entropy from a string. | |
18302 | * | |
18303 | * Formats include: | |
18304 | * binary [0-1] | |
18305 | * base 6 [0-5] | |
18306 | * dice 6 [1-6] | |
18307 | * decimal [0-9] | |
18308 | * hexadecimal [0-9A-F] | |
9e97eb76 | 18309 | * card [A2-9TJQK][CDHS] |
95f04905 IC |
18310 | * |
18311 | * Automatically uses lowest entropy to avoid issues such as interpretting 0101 | |
18312 | * as hexadecimal which would be 16 bits when really it's only 4 bits of binary | |
18313 | * entropy. | |
18314 | */ | |
18315 | ||
18316 | window.Entropy = new (function() { | |
18317 | ||
78b8d604 IC |
18318 | var TWO = new BigInteger(2); |
18319 | ||
95f04905 IC |
18320 | // matchers returns an array of the matched events for each type of entropy. |
18321 | // eg | |
18322 | // matchers.binary("010") returns ["0", "1", "0"] | |
18323 | // matchers.binary("a10") returns ["1", "0"] | |
18324 | // matchers.hex("a10") returns ["a", "1", "0"] | |
18325 | var matchers = { | |
18326 | binary: function(str) { | |
18327 | return str.match(/[0-1]/gi) || []; | |
18328 | }, | |
18329 | base6: function(str) { | |
18330 | return str.match(/[0-5]/gi) || []; | |
18331 | }, | |
18332 | dice: function(str) { | |
18333 | return str.match(/[1-6]/gi) || []; // ie dice numbers | |
18334 | }, | |
18335 | base10: function(str) { | |
18336 | return str.match(/[0-9]/gi) || []; | |
18337 | }, | |
18338 | hex: function(str) { | |
18339 | return str.match(/[0-9A-F]/gi) || []; | |
18340 | }, | |
18341 | card: function(str) { | |
18342 | // Format is NumberSuit, eg | |
18343 | // AH ace of hearts | |
18344 | // 8C eight of clubs | |
18345 | // TD ten of diamonds | |
18346 | // JS jack of spades | |
18347 | // QH queen of hearts | |
18348 | // KC king of clubs | |
18349 | return str.match(/([A2-9TJQK][CDHS])/gi) || []; | |
18350 | } | |
18351 | } | |
18352 | ||
18353 | // Convert array of cards from ["ac", "4d", "ks"] | |
18354 | // to numbers between 0 and 51 [0, 16, 51] | |
18355 | function convertCardsToInts(cards) { | |
18356 | var ints = []; | |
18357 | var values = "a23456789tjqk"; | |
18358 | var suits = "cdhs"; | |
18359 | for (var i=0; i<cards.length; i++) { | |
18360 | var card = cards[i].toLowerCase(); | |
18361 | var value = card[0]; | |
18362 | var suit = card[1]; | |
18363 | var asInt = 13 * suits.indexOf(suit) + values.indexOf(value); | |
18364 | ints.push(asInt); | |
18365 | } | |
18366 | return ints; | |
18367 | } | |
18368 | ||
18369 | this.fromString = function(rawEntropyStr) { | |
18370 | // Find type of entropy being used (binary, hex, dice etc) | |
18371 | var base = getBase(rawEntropyStr); | |
18372 | // Convert dice to base6 entropy (ie 1-6 to 0-5) | |
18373 | // This is done by changing all 6s to 0s | |
18374 | if (base.str == "dice") { | |
18375 | var newParts = []; | |
18376 | var newInts = []; | |
18377 | for (var i=0; i<base.parts.length; i++) { | |
18378 | var c = base.parts[i]; | |
18379 | if ("12345".indexOf(c) > -1) { | |
18380 | newParts[i] = base.parts[i]; | |
18381 | newInts[i] = base.ints[i]; | |
18382 | } | |
18383 | else { | |
18384 | newParts[i] = "0"; | |
18385 | newInts[i] = 0; | |
18386 | } | |
18387 | } | |
18388 | base.str = "base 6 (dice)"; | |
18389 | base.ints = newInts; | |
18390 | base.parts = newParts; | |
18391 | base.matcher = matchers.base6; | |
18392 | } | |
18393 | // Detect empty entropy | |
18394 | if (base.parts.length == 0) { | |
18395 | return { | |
18396 | binaryStr: "", | |
18397 | cleanStr: "", | |
18398 | cleanHtml: "", | |
18399 | base: base, | |
18400 | }; | |
18401 | } | |
18402 | // Convert base.ints to BigInteger. | |
18403 | // Due to using unusual bases, eg cards of base52, this is not as simple as | |
18404 | // using BigInteger.parse() | |
18405 | var entropyInt = BigInteger.ZERO; | |
18406 | for (var i=base.ints.length-1; i>=0; i--) { | |
18407 | var thisInt = BigInteger.parse(base.ints[i]); | |
18408 | var power = (base.ints.length - 1) - i; | |
18409 | var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt); | |
18410 | entropyInt = entropyInt.add(additionalEntropy); | |
18411 | } | |
18412 | // Convert entropy to binary | |
18413 | var entropyBin = entropyInt.toString(2); | |
18414 | // If the first integer is small, it must be padded with zeros. | |
18415 | // Otherwise the chance of the first bit being 1 is 100%, which is | |
18416 | // obviously incorrect. | |
18417 | // This is not perfect for non-2^n bases. | |
18418 | var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt)); | |
18419 | while (entropyBin.length < expectedBits) { | |
18420 | entropyBin = "0" + entropyBin; | |
18421 | } | |
94959756 IC |
18422 | // Calculate the number of bits per event |
18423 | var bitsPerEvent = Math.log2(base.asInt); | |
ea87f1d3 | 18424 | // Cards binary must be handled differently, since they're not replaced |
9e97eb76 | 18425 | if (base.asInt == 52) { |
94959756 IC |
18426 | var cardEntropy = processCardEntropy(base.parts); |
18427 | entropyBin = cardEntropy.binaryStr; | |
18428 | bitsPerEvent = cardEntropy.bitsPerEvent; | |
9e97eb76 | 18429 | } |
95f04905 IC |
18430 | // Supply a 'filtered' entropy string for display purposes |
18431 | var entropyClean = base.parts.join(""); | |
18432 | var entropyHtml = base.parts.join(""); | |
18433 | if (base.asInt == 52) { | |
18434 | entropyClean = base.parts.join(" ").toUpperCase(); | |
18435 | entropyClean = entropyClean.replace(/C/g, "\u2663"); | |
18436 | entropyClean = entropyClean.replace(/D/g, "\u2666"); | |
18437 | entropyClean = entropyClean.replace(/H/g, "\u2665"); | |
18438 | entropyClean = entropyClean.replace(/S/g, "\u2660"); | |
18439 | entropyHtml = base.parts.join(" ").toUpperCase(); | |
18440 | entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>"); | |
18441 | entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>"); | |
18442 | entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>"); | |
18443 | entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>"); | |
18444 | } | |
9e97eb76 | 18445 | // Return the result |
95f04905 IC |
18446 | var e = { |
18447 | binaryStr: entropyBin, | |
18448 | cleanStr: entropyClean, | |
18449 | cleanHtml: entropyHtml, | |
94959756 | 18450 | bitsPerEvent: bitsPerEvent, |
95f04905 IC |
18451 | base: base, |
18452 | } | |
18453 | return e; | |
18454 | } | |
18455 | ||
78b8d604 IC |
18456 | function getSortedDeck() { |
18457 | var s = []; | |
18458 | var suits = "CDHS"; | |
18459 | var values = "A23456789TJQK"; | |
18460 | for (var i=0; i<suits.length; i++) { | |
18461 | for (var j=0; j<values.length; j++) { | |
18462 | s.push(values[j]+suits[i]); | |
18463 | } | |
18464 | } | |
18465 | return s; | |
18466 | } | |
18467 | ||
95f04905 IC |
18468 | function getBase(str) { |
18469 | // Need to get the lowest base for the supplied entropy. | |
18470 | // This prevents interpreting, say, dice rolls as hexadecimal. | |
18471 | var binaryMatches = matchers.binary(str); | |
18472 | var hexMatches = matchers.hex(str); | |
18473 | // Find the lowest base that can be used, whilst ignoring any irrelevant chars | |
18474 | if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) { | |
18475 | var ints = binaryMatches.map(function(i) { return parseInt(i, 2) }); | |
18476 | return { | |
18477 | ints: ints, | |
18478 | parts: binaryMatches, | |
18479 | matcher: matchers.binary, | |
18480 | asInt: 2, | |
18481 | str: "binary", | |
18482 | } | |
18483 | } | |
18484 | var cardMatches = matchers.card(str); | |
18485 | if (cardMatches.length >= hexMatches.length / 2) { | |
18486 | var ints = convertCardsToInts(cardMatches); | |
18487 | return { | |
18488 | ints: ints, | |
18489 | parts: cardMatches, | |
18490 | matcher: matchers.card, | |
18491 | asInt: 52, | |
18492 | str: "card", | |
18493 | } | |
18494 | } | |
18495 | var diceMatches = matchers.dice(str); | |
18496 | if (diceMatches.length == hexMatches.length && hexMatches.length > 0) { | |
18497 | var ints = diceMatches.map(function(i) { return parseInt(i) }); | |
18498 | return { | |
18499 | ints: ints, | |
18500 | parts: diceMatches, | |
18501 | matcher: matchers.dice, | |
18502 | asInt: 6, | |
18503 | str: "dice", | |
18504 | } | |
18505 | } | |
18506 | var base6Matches = matchers.base6(str); | |
18507 | if (base6Matches.length == hexMatches.length && hexMatches.length > 0) { | |
18508 | var ints = base6Matches.map(function(i) { return parseInt(i) }); | |
18509 | return { | |
18510 | ints: ints, | |
18511 | parts: base6Matches, | |
18512 | matcher: matchers.base6, | |
18513 | asInt: 6, | |
18514 | str: "base 6", | |
18515 | } | |
18516 | } | |
18517 | var base10Matches = matchers.base10(str); | |
18518 | if (base10Matches.length == hexMatches.length && hexMatches.length > 0) { | |
18519 | var ints = base10Matches.map(function(i) { return parseInt(i) }); | |
18520 | return { | |
18521 | ints: ints, | |
18522 | parts: base10Matches, | |
18523 | matcher: matchers.base10, | |
18524 | asInt: 10, | |
18525 | str: "base 10", | |
18526 | } | |
18527 | } | |
18528 | var ints = hexMatches.map(function(i) { return parseInt(i, 16) }); | |
18529 | return { | |
18530 | ints: ints, | |
18531 | parts: hexMatches, | |
18532 | matcher: matchers.hex, | |
18533 | asInt: 16, | |
18534 | str: "hexadecimal", | |
18535 | } | |
18536 | } | |
18537 | ||
ea87f1d3 IC |
18538 | // Assume cards are NOT replaced. |
18539 | // Additional entropy decreases as more cards are used. This means | |
18540 | // total possible entropy is measured using n!, not base^n. | |
18541 | // eg the second last card can be only one of two, not one of fifty two | |
18542 | // so the added entropy for that card is only one bit at most | |
94959756 | 18543 | function processCardEntropy(cards) { |
ea87f1d3 IC |
18544 | // Track how many instances of each card have been used, and thus |
18545 | // how many decks are in use. | |
18546 | var cardCounts = {}; | |
18547 | var numberOfDecks = 0; | |
18548 | // Work out number of decks by max(duplicates) | |
18549 | for (var i=0; i<cards.length; i++) { | |
18550 | // Get the card that was drawn | |
18551 | var cardLower = cards[i]; | |
18552 | var card = cardLower.toUpperCase(); | |
18553 | // Initialize the count for this card if needed | |
18554 | if (!(card in cardCounts)) { | |
18555 | cardCounts[card] = 0; | |
18556 | } | |
18557 | cardCounts[card] += 1; | |
18558 | // See if this is max(duplicates) | |
18559 | if (cardCounts[card] > numberOfDecks) { | |
18560 | numberOfDecks = cardCounts[card]; | |
18561 | } | |
18562 | } | |
18563 | // Work out the total number of bits for this many decks | |
18564 | // See http://crypto.stackexchange.com/q/41886 | |
fc7c248f IC |
18565 | var gainedBits = 0; |
18566 | // Equivalent of Math.log2(factorial(52*numberOfDecks)) | |
18567 | // which becomes infinity for numberOfDecks > 4 | |
18568 | for (var i=1; i<=52*numberOfDecks; i++) { | |
18569 | gainedBits = gainedBits + Math.log2(i); | |
18570 | } | |
ea87f1d3 IC |
18571 | var lostBits = 52 * Math.log2(factorial(numberOfDecks)); |
18572 | var maxBits = gainedBits - lostBits; | |
18573 | // Convert the drawn cards to a binary representation. | |
18574 | // The exact technique for doing this is unclear. | |
18575 | // See | |
18576 | // http://crypto.stackexchange.com/a/41896 | |
18577 | // "I even doubt that this is well defined (only the average entropy | |
18578 | // is, I believe)." | |
18579 | // See | |
18580 | // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856 | |
18581 | // "The binary representation can be the first log(permutations,2) bits | |
18582 | // of the sha-2 hash of the normalized deck string." | |
18583 | // | |
18584 | // In this specific implementation, the first N bits of the hash of the | |
18585 | // normalized cards string is being used. Uppercase, no spaces; eg | |
18586 | // sha256("AH8DQSTC2H") | |
18587 | var totalCards = numberOfDecks * 52; | |
18588 | var percentUsed = cards.length / totalCards; | |
18589 | // Calculate the average number of bits of entropy for the number of | |
18590 | // cards drawn. | |
18591 | var numberOfBits = Math.floor(maxBits * percentUsed); | |
18592 | // Create a normalized string of the selected cards | |
18593 | var normalizedCards = cards.join("").toUpperCase(); | |
18594 | // Convert to binary using the SHA256 hash of the normalized cards. | |
434caecd | 18595 | // If the number of bits is more than 256, multiple hashes |
ea87f1d3 IC |
18596 | // are used until the required number of bits is reached. |
18597 | var entropyBin = ""; | |
18598 | var iterations = 0; | |
18599 | while (entropyBin.length < numberOfBits) { | |
434caecd | 18600 | var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations); |
ea87f1d3 IC |
18601 | var hashHex = sjcl.codec.hex.fromBits(hashedCards); |
18602 | for (var i=0; i<hashHex.length; i++) { | |
18603 | var decimal = parseInt(hashHex[i], 16); | |
18604 | var binary = decimal.toString(2); | |
18605 | while (binary.length < 4) { | |
18606 | binary = "0" + binary; | |
18607 | } | |
18608 | entropyBin = entropyBin + binary; | |
18609 | } | |
18610 | iterations = iterations + 1; | |
18611 | } | |
18612 | // Truncate to the appropriate number of bits. | |
18613 | entropyBin = entropyBin.substring(0, numberOfBits); | |
94959756 IC |
18614 | // Get the number of bits per event |
18615 | bitsPerEvent = maxBits / totalCards; | |
18616 | return { | |
18617 | binaryStr: entropyBin, | |
18618 | bitsPerEvent: bitsPerEvent, | |
18619 | } | |
ea87f1d3 IC |
18620 | } |
18621 | ||
95f04905 IC |
18622 | // Polyfill for Math.log2 |
18623 | // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill | |
18624 | Math.log2 = Math.log2 || function(x) { | |
18625 | // The polyfill isn't good enough because of the poor accuracy of | |
18626 | // Math.LOG2E | |
18627 | // log2(8) gave 2.9999999999999996 which when floored causes issues. | |
18628 | // So instead use the BigInteger library to get it right. | |
18629 | return BigInteger.log(x) / BigInteger.log(2); | |
18630 | }; | |
18631 | ||
9e97eb76 IC |
18632 | // Depends on BigInteger |
18633 | function factorial(n) { | |
18634 | if (n == 0) { | |
18635 | return 1; | |
18636 | } | |
18637 | f = BigInteger.ONE; | |
18638 | for (var i=1; i<=n; i++) { | |
18639 | f = f.multiply(new BigInteger(i)); | |
18640 | } | |
18641 | return f; | |
18642 | } | |
18643 | ||
95f04905 | 18644 | })(); |
c6624d51 IC |
18645 | </script> |
18646 | <script>(function() { | |
18647 | ||
18648 | // mnemonics is populated as required by getLanguage | |
18649 | var mnemonics = { "english": new Mnemonic("english") }; | |
18650 | var mnemonic = mnemonics["english"]; | |
3725abb5 | 18651 | var seed = null; |
c6624d51 IC |
18652 | var bip32RootKey = null; |
18653 | var bip32ExtendedKey = null; | |
18654 | var network = bitcoin.networks.bitcoin; | |
18655 | var addressRowTemplate = $("#address-row-template"); | |
18656 | ||
18657 | var showIndex = true; | |
18658 | var showAddress = true; | |
18659 | var showPubKey = true; | |
18660 | var showPrivKey = true; | |
52da415f | 18661 | var showQr = false; |
c6624d51 IC |
18662 | |
18663 | var entropyChangeTimeoutEvent = null; | |
18664 | var phraseChangeTimeoutEvent = null; | |
18665 | var rootKeyChangedTimeoutEvent = null; | |
18666 | ||
40892aba IC |
18667 | var generationProcesses = []; |
18668 | ||
c6624d51 IC |
18669 | var DOM = {}; |
18670 | DOM.network = $(".network"); | |
18671 | DOM.phraseNetwork = $("#network-phrase"); | |
18672 | DOM.useEntropy = $(".use-entropy"); | |
18673 | DOM.entropyContainer = $(".entropy-container"); | |
18674 | DOM.entropy = $(".entropy"); | |
2a6dd137 IC |
18675 | DOM.entropyFiltered = DOM.entropyContainer.find(".filtered"); |
18676 | DOM.entropyType = DOM.entropyContainer.find(".type"); | |
18677 | DOM.entropyStrength = DOM.entropyContainer.find(".strength"); | |
18678 | DOM.entropyEventCount = DOM.entropyContainer.find(".event-count"); | |
18679 | DOM.entropyBits = DOM.entropyContainer.find(".bits"); | |
18680 | DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event"); | |
18681 | DOM.entropyWordCount = DOM.entropyContainer.find(".word-count"); | |
18682 | DOM.entropyBinary = DOM.entropyContainer.find(".binary"); | |
18683 | DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length"); | |
c6624d51 IC |
18684 | DOM.phrase = $(".phrase"); |
18685 | DOM.passphrase = $(".passphrase"); | |
18686 | DOM.generateContainer = $(".generate-container"); | |
18687 | DOM.generate = $(".generate"); | |
18688 | DOM.seed = $(".seed"); | |
18689 | DOM.rootKey = $(".root-key"); | |
18690 | DOM.extendedPrivKey = $(".extended-priv-key"); | |
18691 | DOM.extendedPubKey = $(".extended-pub-key"); | |
18692 | DOM.bip32tab = $("#bip32-tab"); | |
18693 | DOM.bip44tab = $("#bip44-tab"); | |
18694 | DOM.bip32panel = $("#bip32"); | |
18695 | DOM.bip44panel = $("#bip44"); | |
18696 | DOM.bip32path = $("#bip32-path"); | |
18697 | DOM.bip44path = $("#bip44-path"); | |
18698 | DOM.bip44purpose = $("#bip44 .purpose"); | |
18699 | DOM.bip44coin = $("#bip44 .coin"); | |
18700 | DOM.bip44account = $("#bip44 .account"); | |
20083ab9 IC |
18701 | DOM.bip44accountXprv = $("#bip44 .account-xprv"); |
18702 | DOM.bip44accountXpub = $("#bip44 .account-xpub"); | |
c6624d51 | 18703 | DOM.bip44change = $("#bip44 .change"); |
18abe53b | 18704 | DOM.generatedStrength = $(".generate-container .strength"); |
c6624d51 IC |
18705 | DOM.hardenedAddresses = $(".hardened-addresses"); |
18706 | DOM.addresses = $(".addresses"); | |
18707 | DOM.rowsToAdd = $(".rows-to-add"); | |
18708 | DOM.more = $(".more"); | |
18709 | DOM.feedback = $(".feedback"); | |
18710 | DOM.tab = $(".derivation-type a"); | |
18711 | DOM.indexToggle = $(".index-toggle"); | |
18712 | DOM.addressToggle = $(".address-toggle"); | |
18713 | DOM.publicKeyToggle = $(".public-key-toggle"); | |
18714 | DOM.privateKeyToggle = $(".private-key-toggle"); | |
18715 | DOM.languages = $(".languages a"); | |
e00964cc | 18716 | DOM.qrContainer = $(".qr-container"); |
52da415f | 18717 | DOM.qrHider = DOM.qrContainer.find(".qr-hider"); |
e00964cc IC |
18718 | DOM.qrImage = DOM.qrContainer.find(".qr-image"); |
18719 | DOM.qrHint = DOM.qrContainer.find(".qr-hint"); | |
18720 | DOM.showQrEls = $("[data-show-qr]"); | |
c6624d51 IC |
18721 | |
18722 | function init() { | |
18723 | // Events | |
18724 | DOM.network.on("change", networkChanged); | |
18725 | DOM.useEntropy.on("change", setEntropyVisibility); | |
18726 | DOM.entropy.on("input", delayedEntropyChanged); | |
18abe53b | 18727 | DOM.entropyMnemonicLength.on("change", entropyChanged); |
c6624d51 IC |
18728 | DOM.phrase.on("input", delayedPhraseChanged); |
18729 | DOM.passphrase.on("input", delayedPhraseChanged); | |
18730 | DOM.generate.on("click", generateClicked); | |
18731 | DOM.more.on("click", showMore); | |
18732 | DOM.rootKey.on("input", delayedRootKeyChanged); | |
18733 | DOM.bip32path.on("input", calcForDerivationPath); | |
18734 | DOM.bip44purpose.on("input", calcForDerivationPath); | |
18735 | DOM.bip44coin.on("input", calcForDerivationPath); | |
18736 | DOM.bip44account.on("input", calcForDerivationPath); | |
18737 | DOM.bip44change.on("input", calcForDerivationPath); | |
18738 | DOM.tab.on("shown.bs.tab", calcForDerivationPath); | |
18739 | DOM.hardenedAddresses.on("change", calcForDerivationPath); | |
18740 | DOM.indexToggle.on("click", toggleIndexes); | |
18741 | DOM.addressToggle.on("click", toggleAddresses); | |
18742 | DOM.publicKeyToggle.on("click", togglePublicKeys); | |
18743 | DOM.privateKeyToggle.on("click", togglePrivateKeys); | |
18744 | DOM.languages.on("click", languageChanged); | |
e00964cc | 18745 | setQrEvents(DOM.showQrEls); |
c6624d51 IC |
18746 | disableForms(); |
18747 | hidePending(); | |
18748 | hideValidationError(); | |
18749 | populateNetworkSelect(); | |
18750 | } | |
18751 | ||
18752 | // Event handlers | |
18753 | ||
18754 | function networkChanged(e) { | |
18755 | var networkIndex = e.target.value; | |
18756 | networks[networkIndex].onSelect(); | |
18757 | if (seed != null) { | |
18758 | phraseChanged(); | |
18759 | } | |
18760 | else { | |
18761 | rootKeyChanged(); | |
18762 | } | |
18763 | } | |
18764 | ||
18765 | function setEntropyVisibility() { | |
18766 | if (isUsingOwnEntropy()) { | |
18767 | DOM.entropyContainer.removeClass("hidden"); | |
18768 | DOM.generateContainer.addClass("hidden"); | |
18769 | DOM.phrase.prop("readonly", true); | |
18770 | DOM.entropy.focus(); | |
18771 | entropyChanged(); | |
18772 | } | |
18773 | else { | |
18774 | DOM.entropyContainer.addClass("hidden"); | |
18775 | DOM.generateContainer.removeClass("hidden"); | |
18776 | DOM.phrase.prop("readonly", false); | |
18abe53b | 18777 | hidePending(); |
c6624d51 IC |
18778 | } |
18779 | } | |
18780 | ||
18781 | function delayedPhraseChanged() { | |
18782 | hideValidationError(); | |
18783 | showPending(); | |
18784 | if (phraseChangeTimeoutEvent != null) { | |
18785 | clearTimeout(phraseChangeTimeoutEvent); | |
18786 | } | |
18787 | phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400); | |
18788 | } | |
18789 | ||
18790 | function phraseChanged() { | |
18791 | showPending(); | |
18792 | hideValidationError(); | |
18793 | setMnemonicLanguage(); | |
18794 | // Get the mnemonic phrase | |
18795 | var phrase = DOM.phrase.val(); | |
18796 | var errorText = findPhraseErrors(phrase); | |
18797 | if (errorText) { | |
18798 | showValidationError(errorText); | |
18799 | return; | |
18800 | } | |
18801 | // Calculate and display | |
18802 | var passphrase = DOM.passphrase.val(); | |
18803 | calcBip32RootKeyFromSeed(phrase, passphrase); | |
18804 | calcForDerivationPath(); | |
18805 | hidePending(); | |
18806 | } | |
18807 | ||
18808 | function delayedEntropyChanged() { | |
18809 | hideValidationError(); | |
18810 | showPending(); | |
18811 | if (entropyChangeTimeoutEvent != null) { | |
18812 | clearTimeout(entropyChangeTimeoutEvent); | |
18813 | } | |
18814 | entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400); | |
18815 | } | |
18816 | ||
18817 | function entropyChanged() { | |
18abe53b IC |
18818 | // If blank entropy, clear mnemonic, addresses, errors |
18819 | if (DOM.entropy.val().trim().length == 0) { | |
18820 | clearDisplay(); | |
2a6dd137 | 18821 | clearEntropyFeedback(); |
18abe53b IC |
18822 | DOM.phrase.val(""); |
18823 | showValidationError("Blank entropy"); | |
18824 | return; | |
18825 | } | |
18826 | // Get the current phrase to detect changes | |
18827 | var phrase = DOM.phrase.val(); | |
18828 | // Set the phrase from the entropy | |
c6624d51 | 18829 | setMnemonicFromEntropy(); |
18abe53b IC |
18830 | // Recalc addresses if the phrase has changed |
18831 | var newPhrase = DOM.phrase.val(); | |
18832 | if (newPhrase != phrase) { | |
18833 | if (newPhrase.length == 0) { | |
18834 | clearDisplay(); | |
18835 | } | |
18836 | else { | |
18837 | phraseChanged(); | |
18838 | } | |
18839 | } | |
18840 | else { | |
18841 | hidePending(); | |
18842 | } | |
c6624d51 IC |
18843 | } |
18844 | ||
18845 | function delayedRootKeyChanged() { | |
18846 | // Warn if there is an existing mnemonic or passphrase. | |
18847 | if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) { | |
18848 | if (!confirm("This will clear existing mnemonic and passphrase")) { | |
18849 | DOM.rootKey.val(bip32RootKey); | |
18850 | return | |
18851 | } | |
18852 | } | |
18853 | hideValidationError(); | |
18854 | showPending(); | |
18855 | // Clear existing mnemonic and passphrase | |
18856 | DOM.phrase.val(""); | |
18857 | DOM.passphrase.val(""); | |
18858 | seed = null; | |
18859 | if (rootKeyChangedTimeoutEvent != null) { | |
18860 | clearTimeout(rootKeyChangedTimeoutEvent); | |
18861 | } | |
18862 | rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400); | |
18863 | } | |
18864 | ||
18865 | function rootKeyChanged() { | |
18866 | showPending(); | |
18867 | hideValidationError(); | |
18868 | // Validate the root key TODO | |
18869 | var rootKeyBase58 = DOM.rootKey.val(); | |
18870 | var errorText = validateRootKey(rootKeyBase58); | |
18871 | if (errorText) { | |
18872 | showValidationError(errorText); | |
18873 | return; | |
18874 | } | |
18875 | // Calculate and display | |
18876 | calcBip32RootKeyFromBase58(rootKeyBase58); | |
18877 | calcForDerivationPath(); | |
c6624d51 IC |
18878 | } |
18879 | ||
18880 | function calcForDerivationPath() { | |
18881 | showPending(); | |
ba3cb9ec | 18882 | clearAddressesList(); |
c6624d51 IC |
18883 | hideValidationError(); |
18884 | // Get the derivation path | |
18885 | var derivationPath = getDerivationPath(); | |
18886 | var errorText = findDerivationPathErrors(derivationPath); | |
18887 | if (errorText) { | |
18888 | showValidationError(errorText); | |
18889 | return; | |
18890 | } | |
20083ab9 IC |
18891 | bip32ExtendedKey = calcBip32ExtendedKey(derivationPath); |
18892 | if (bip44TabSelected()) { | |
18893 | displayBip44Info(); | |
18894 | } | |
c6624d51 IC |
18895 | displayBip32Info(); |
18896 | hidePending(); | |
18897 | } | |
18898 | ||
18899 | function generateClicked() { | |
18900 | if (isUsingOwnEntropy()) { | |
18901 | return; | |
18902 | } | |
18903 | clearDisplay(); | |
18904 | showPending(); | |
18905 | setTimeout(function() { | |
18906 | setMnemonicLanguage(); | |
18907 | var phrase = generateRandomPhrase(); | |
18908 | if (!phrase) { | |
18909 | return; | |
18910 | } | |
18911 | phraseChanged(); | |
18912 | }, 50); | |
18913 | } | |
18914 | ||
18915 | function languageChanged() { | |
18916 | setTimeout(function() { | |
18917 | setMnemonicLanguage(); | |
18918 | if (DOM.phrase.val().length > 0) { | |
18919 | var newPhrase = convertPhraseToNewLanguage(); | |
18920 | DOM.phrase.val(newPhrase); | |
18921 | phraseChanged(); | |
18922 | } | |
18923 | else { | |
18924 | DOM.generate.trigger("click"); | |
18925 | } | |
18926 | }, 50); | |
18927 | } | |
18928 | ||
18929 | function toggleIndexes() { | |
18930 | showIndex = !showIndex; | |
18931 | $("td.index span").toggleClass("invisible"); | |
18932 | } | |
18933 | ||
18934 | function toggleAddresses() { | |
18935 | showAddress = !showAddress; | |
18936 | $("td.address span").toggleClass("invisible"); | |
18937 | } | |
18938 | ||
18939 | function togglePublicKeys() { | |
18940 | showPubKey = !showPubKey; | |
18941 | $("td.pubkey span").toggleClass("invisible"); | |
18942 | } | |
18943 | ||
18944 | function togglePrivateKeys() { | |
18945 | showPrivKey = !showPrivKey; | |
18946 | $("td.privkey span").toggleClass("invisible"); | |
18947 | } | |
18948 | ||
18949 | // Private methods | |
18950 | ||
18951 | function generateRandomPhrase() { | |
18952 | if (!hasStrongRandom()) { | |
18953 | var errorText = "This browser does not support strong randomness"; | |
18954 | showValidationError(errorText); | |
18955 | return; | |
18956 | } | |
18abe53b | 18957 | var numWords = parseInt(DOM.generatedStrength.val()); |
c6624d51 IC |
18958 | var strength = numWords / 3 * 32; |
18959 | var words = mnemonic.generate(strength); | |
18960 | DOM.phrase.val(words); | |
18961 | return words; | |
18962 | } | |
18963 | ||
18964 | function calcBip32RootKeyFromSeed(phrase, passphrase) { | |
18965 | seed = mnemonic.toSeed(phrase, passphrase); | |
18966 | bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network); | |
18967 | } | |
18968 | ||
18969 | function calcBip32RootKeyFromBase58(rootKeyBase58) { | |
18970 | bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network); | |
18971 | } | |
18972 | ||
18973 | function calcBip32ExtendedKey(path) { | |
0a1f0259 IC |
18974 | // Check there's a root key to derive from |
18975 | if (!bip32RootKey) { | |
18976 | return bip32RootKey; | |
18977 | } | |
20083ab9 | 18978 | var extendedKey = bip32RootKey; |
c6624d51 IC |
18979 | // Derive the key from the path |
18980 | var pathBits = path.split("/"); | |
ebd8d4e8 IC |
18981 | for (var i=0; i<pathBits.length; i++) { |
18982 | var bit = pathBits[i]; | |
18983 | var index = parseInt(bit); | |
18984 | if (isNaN(index)) { | |
18985 | continue; | |
18986 | } | |
18987 | var hardened = bit[bit.length-1] == "'"; | |
ba3cb9ec IC |
18988 | var isPriv = "privKey" in extendedKey; |
18989 | var invalidDerivationPath = hardened && !isPriv; | |
18990 | if (invalidDerivationPath) { | |
18991 | extendedKey = null; | |
18992 | } | |
18993 | else if (hardened) { | |
20083ab9 | 18994 | extendedKey = extendedKey.deriveHardened(index); |
ebd8d4e8 IC |
18995 | } |
18996 | else { | |
20083ab9 | 18997 | extendedKey = extendedKey.derive(index); |
ebd8d4e8 IC |
18998 | } |
18999 | } | |
20083ab9 | 19000 | return extendedKey |
ebd8d4e8 IC |
19001 | } |
19002 | ||
19003 | function showValidationError(errorText) { | |
19004 | DOM.feedback | |
19005 | .text(errorText) | |
19006 | .show(); | |
19007 | } | |
19008 | ||
19009 | function hideValidationError() { | |
19010 | DOM.feedback | |
19011 | .text("") | |
19012 | .hide(); | |
19013 | } | |
19014 | ||
19015 | function findPhraseErrors(phrase) { | |
ebd8d4e8 | 19016 | // Preprocess the words |
783981de | 19017 | phrase = mnemonic.normalizeString(phrase); |
0515eeec | 19018 | var words = phraseToWordArray(phrase); |
18abe53b IC |
19019 | // Detect blank phrase |
19020 | if (words.length == 0) { | |
19021 | return "Blank mnemonic"; | |
19022 | } | |
563e401a | 19023 | // Check each word |
0515eeec IC |
19024 | for (var i=0; i<words.length; i++) { |
19025 | var word = words[i]; | |
19026 | var language = getLanguage(); | |
19027 | if (WORDLISTS[language].indexOf(word) == -1) { | |
563e401a IC |
19028 | console.log("Finding closest match to " + word); |
19029 | var nearestWord = findNearestWord(word); | |
19030 | return word + " not in wordlist, did you mean " + nearestWord + "?"; | |
19031 | } | |
19032 | } | |
ebd8d4e8 | 19033 | // Check the words are valid |
0515eeec | 19034 | var properPhrase = wordArrayToPhrase(words); |
ebd8d4e8 IC |
19035 | var isValid = mnemonic.check(properPhrase); |
19036 | if (!isValid) { | |
19037 | return "Invalid mnemonic"; | |
19038 | } | |
19039 | return false; | |
19040 | } | |
19041 | ||
efe41586 IC |
19042 | function validateRootKey(rootKeyBase58) { |
19043 | try { | |
19044 | bitcoin.HDNode.fromBase58(rootKeyBase58); | |
19045 | } | |
19046 | catch (e) { | |
19047 | return "Invalid root key"; | |
19048 | } | |
19049 | return ""; | |
19050 | } | |
19051 | ||
38523d36 | 19052 | function getDerivationPath() { |
20083ab9 | 19053 | if (bip44TabSelected()) { |
38523d36 IC |
19054 | var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44); |
19055 | var coin = parseIntNoNaN(DOM.bip44coin.val(), 0); | |
19056 | var account = parseIntNoNaN(DOM.bip44account.val(), 0); | |
19057 | var change = parseIntNoNaN(DOM.bip44change.val(), 0); | |
19058 | var path = "m/"; | |
19059 | path += purpose + "'/"; | |
19060 | path += coin + "'/"; | |
19061 | path += account + "'/"; | |
19062 | path += change; | |
19063 | DOM.bip44path.val(path); | |
19064 | var derivationPath = DOM.bip44path.val(); | |
19065 | console.log("Using derivation path from BIP44 tab: " + derivationPath); | |
19066 | return derivationPath; | |
19067 | } | |
20083ab9 | 19068 | else if (bip32TabSelected()) { |
38523d36 IC |
19069 | var derivationPath = DOM.bip32path.val(); |
19070 | console.log("Using derivation path from BIP32 tab: " + derivationPath); | |
19071 | return derivationPath; | |
19072 | } | |
19073 | else { | |
19074 | console.log("Unknown derivation path"); | |
19075 | } | |
19076 | } | |
19077 | ||
ebd8d4e8 | 19078 | function findDerivationPathErrors(path) { |
30c9e79d IC |
19079 | // TODO is not perfect but is better than nothing |
19080 | // Inspired by | |
19081 | // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors | |
19082 | // and | |
19083 | // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys | |
19084 | var maxDepth = 255; // TODO verify this!! | |
19085 | var maxIndexValue = Math.pow(2, 31); // TODO verify this!! | |
19086 | if (path[0] != "m") { | |
19087 | return "First character must be 'm'"; | |
19088 | } | |
19089 | if (path.length > 1) { | |
19090 | if (path[1] != "/") { | |
19091 | return "Separator must be '/'"; | |
19092 | } | |
19093 | var indexes = path.split("/"); | |
19094 | if (indexes.length > maxDepth) { | |
19095 | return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth; | |
19096 | } | |
19097 | for (var depth = 1; depth<indexes.length; depth++) { | |
19098 | var index = indexes[depth]; | |
19099 | var invalidChars = index.replace(/^[0-9]+'?$/g, "") | |
19100 | if (invalidChars.length > 0) { | |
19101 | return "Invalid characters " + invalidChars + " found at depth " + depth; | |
19102 | } | |
19103 | var indexValue = parseInt(index.replace("'", "")); | |
19104 | if (isNaN(depth)) { | |
19105 | return "Invalid number at depth " + depth; | |
19106 | } | |
19107 | if (indexValue > maxIndexValue) { | |
19108 | return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue; | |
19109 | } | |
19110 | } | |
19111 | } | |
0a1f0259 IC |
19112 | // Check root key exists or else derivation path is useless! |
19113 | if (!bip32RootKey) { | |
19114 | return "No root key"; | |
19115 | } | |
ba3cb9ec IC |
19116 | // Check no hardened derivation path when using xpub keys |
19117 | var hardened = path.indexOf("'") > -1; | |
19118 | var isXpubkey = !("privKey" in bip32RootKey); | |
19119 | if (hardened && isXpubkey) { | |
19120 | return "Hardened derivation path is invalid with xpub key"; | |
19121 | } | |
ebd8d4e8 IC |
19122 | return false; |
19123 | } | |
19124 | ||
20083ab9 IC |
19125 | function displayBip44Info() { |
19126 | // Get the derivation path for the account | |
19127 | var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44); | |
19128 | var coin = parseIntNoNaN(DOM.bip44coin.val(), 0); | |
19129 | var account = parseIntNoNaN(DOM.bip44account.val(), 0); | |
19130 | var path = "m/"; | |
19131 | path += purpose + "'/"; | |
19132 | path += coin + "'/"; | |
19133 | path += account + "'/"; | |
19134 | // Calculate the account extended keys | |
19135 | var accountExtendedKey = calcBip32ExtendedKey(path); | |
19136 | var accountXprv = accountExtendedKey.toBase58(); | |
19137 | var accountXpub = accountExtendedKey.toBase58(false); | |
19138 | // Display the extended keys | |
19139 | DOM.bip44accountXprv.val(accountXprv); | |
19140 | DOM.bip44accountXpub.val(accountXpub); | |
19141 | } | |
19142 | ||
ebd8d4e8 IC |
19143 | function displayBip32Info() { |
19144 | // Display the key | |
73161a92 | 19145 | DOM.seed.val(seed); |
ebd8d4e8 IC |
19146 | var rootKey = bip32RootKey.toBase58(); |
19147 | DOM.rootKey.val(rootKey); | |
ba3cb9ec IC |
19148 | var xprvkeyB58 = "NA"; |
19149 | if (bip32ExtendedKey.privKey) { | |
19150 | xprvkeyB58 = bip32ExtendedKey.toBase58(); | |
19151 | } | |
19152 | var extendedPrivKey = xprvkeyB58; | |
ebd8d4e8 IC |
19153 | DOM.extendedPrivKey.val(extendedPrivKey); |
19154 | var extendedPubKey = bip32ExtendedKey.toBase58(false); | |
19155 | DOM.extendedPubKey.val(extendedPubKey); | |
19156 | // Display the addresses and privkeys | |
19157 | clearAddressesList(); | |
19158 | displayAddresses(0, 20); | |
19159 | } | |
19160 | ||
19161 | function displayAddresses(start, total) { | |
40892aba IC |
19162 | generationProcesses.push(new (function() { |
19163 | ||
19164 | var rows = []; | |
19165 | ||
19166 | this.stop = function() { | |
19167 | for (var i=0; i<rows.length; i++) { | |
19168 | rows[i].shouldGenerate = false; | |
19169 | } | |
19170 | } | |
19171 | ||
19172 | for (var i=0; i<total; i++) { | |
19173 | var index = i + start; | |
19174 | rows.push(new TableRow(index)); | |
19175 | } | |
19176 | ||
19177 | })()); | |
80c4dd2a IC |
19178 | } |
19179 | ||
19180 | function TableRow(index) { | |
19181 | ||
40892aba IC |
19182 | var self = this; |
19183 | this.shouldGenerate = true; | |
1975bfbc IC |
19184 | var useHardenedAddresses = DOM.hardenedAddresses.prop("checked"); |
19185 | ||
80c4dd2a IC |
19186 | function init() { |
19187 | calculateValues(); | |
19188 | } | |
19189 | ||
19190 | function calculateValues() { | |
19191 | setTimeout(function() { | |
40892aba IC |
19192 | if (!self.shouldGenerate) { |
19193 | return; | |
19194 | } | |
1975bfbc IC |
19195 | var key = ""; |
19196 | if (useHardenedAddresses) { | |
19197 | key = bip32ExtendedKey.deriveHardened(index); | |
19198 | } | |
19199 | else { | |
19200 | key = bip32ExtendedKey.derive(index); | |
19201 | } | |
80c4dd2a | 19202 | var address = key.getAddress().toString(); |
ba3cb9ec IC |
19203 | var privkey = "NA"; |
19204 | if (key.privKey) { | |
19205 | privkey = key.privKey.toWIF(network); | |
19206 | } | |
1b12b2f5 | 19207 | var pubkey = key.pubKey.toHex(); |
38523d36 | 19208 | var indexText = getDerivationPath() + "/" + index; |
1975bfbc IC |
19209 | if (useHardenedAddresses) { |
19210 | indexText = indexText + "'"; | |
19211 | } | |
1b12b2f5 | 19212 | addAddressToList(indexText, address, pubkey, privkey); |
80c4dd2a | 19213 | }, 50) |
ebd8d4e8 | 19214 | } |
80c4dd2a IC |
19215 | |
19216 | init(); | |
19217 | ||
ebd8d4e8 IC |
19218 | } |
19219 | ||
19220 | function showMore() { | |
19221 | var start = DOM.addresses.children().length; | |
19222 | var rowsToAdd = parseInt(DOM.rowsToAdd.val()); | |
19223 | if (isNaN(rowsToAdd)) { | |
19224 | rowsToAdd = 20; | |
19225 | DOM.rowsToAdd.val("20"); | |
19226 | } | |
19227 | if (rowsToAdd > 200) { | |
19228 | var msg = "Generating " + rowsToAdd + " rows could take a while. "; | |
19229 | msg += "Do you want to continue?"; | |
19230 | if (!confirm(msg)) { | |
19231 | return; | |
19232 | } | |
19233 | } | |
ebd8d4e8 | 19234 | displayAddresses(start, rowsToAdd); |
ebd8d4e8 IC |
19235 | } |
19236 | ||
19237 | function clearDisplay() { | |
19238 | clearAddressesList(); | |
19239 | clearKey(); | |
19240 | hideValidationError(); | |
19241 | } | |
19242 | ||
19243 | function clearAddressesList() { | |
19244 | DOM.addresses.empty(); | |
40892aba IC |
19245 | stopGenerating(); |
19246 | } | |
19247 | ||
19248 | function stopGenerating() { | |
19249 | while (generationProcesses.length > 0) { | |
19250 | var generation = generationProcesses.shift(); | |
19251 | generation.stop(); | |
19252 | } | |
ebd8d4e8 IC |
19253 | } |
19254 | ||
19255 | function clearKey() { | |
19256 | DOM.rootKey.val(""); | |
19257 | DOM.extendedPrivKey.val(""); | |
19258 | DOM.extendedPubKey.val(""); | |
19259 | } | |
19260 | ||
1b12b2f5 | 19261 | function addAddressToList(indexText, address, pubkey, privkey) { |
ebd8d4e8 | 19262 | var row = $(addressRowTemplate.html()); |
80c4dd2a IC |
19263 | // Elements |
19264 | var indexCell = row.find(".index span"); | |
19265 | var addressCell = row.find(".address span"); | |
1b12b2f5 | 19266 | var pubkeyCell = row.find(".pubkey span"); |
80c4dd2a IC |
19267 | var privkeyCell = row.find(".privkey span"); |
19268 | // Content | |
ae30fed8 | 19269 | indexCell.text(indexText); |
80c4dd2a | 19270 | addressCell.text(address); |
1b12b2f5 | 19271 | pubkeyCell.text(pubkey); |
80c4dd2a IC |
19272 | privkeyCell.text(privkey); |
19273 | // Visibility | |
19274 | if (!showIndex) { | |
19275 | indexCell.addClass("invisible"); | |
19276 | } | |
19277 | if (!showAddress) { | |
19278 | addressCell.addClass("invisible"); | |
19279 | } | |
1b12b2f5 IC |
19280 | if (!showPubKey) { |
19281 | pubkeyCell.addClass("invisible"); | |
19282 | } | |
80c4dd2a | 19283 | if (!showPrivKey) { |
6d628db7 | 19284 | privkeyCell.addClass("invisible"); |
80c4dd2a | 19285 | } |
ebd8d4e8 | 19286 | DOM.addresses.append(row); |
e00964cc IC |
19287 | var rowShowQrEls = row.find("[data-show-qr]"); |
19288 | setQrEvents(rowShowQrEls); | |
ebd8d4e8 IC |
19289 | } |
19290 | ||
19291 | function hasStrongRandom() { | |
19292 | return 'crypto' in window && window['crypto'] !== null; | |
19293 | } | |
19294 | ||
19295 | function disableForms() { | |
19296 | $("form").on("submit", function(e) { | |
19297 | e.preventDefault(); | |
19298 | }); | |
19299 | } | |
19300 | ||
ebd8d4e8 IC |
19301 | function parseIntNoNaN(val, defaultVal) { |
19302 | var v = parseInt(val); | |
19303 | if (isNaN(v)) { | |
19304 | return defaultVal; | |
19305 | } | |
19306 | return v; | |
19307 | } | |
19308 | ||
19309 | function showPending() { | |
19310 | DOM.feedback | |
19311 | .text("Calculating...") | |
19312 | .show(); | |
19313 | } | |
19314 | ||
563e401a | 19315 | function findNearestWord(word) { |
0515eeec IC |
19316 | var language = getLanguage(); |
19317 | var words = WORDLISTS[language]; | |
563e401a IC |
19318 | var minDistance = 99; |
19319 | var closestWord = words[0]; | |
19320 | for (var i=0; i<words.length; i++) { | |
19321 | var comparedTo = words[i]; | |
6ea15134 IC |
19322 | if (comparedTo.indexOf(word) == 0) { |
19323 | return comparedTo; | |
19324 | } | |
563e401a IC |
19325 | var distance = Levenshtein.get(word, comparedTo); |
19326 | if (distance < minDistance) { | |
19327 | closestWord = comparedTo; | |
19328 | minDistance = distance; | |
19329 | } | |
19330 | } | |
19331 | return closestWord; | |
19332 | } | |
19333 | ||
ebd8d4e8 IC |
19334 | function hidePending() { |
19335 | DOM.feedback | |
19336 | .text("") | |
19337 | .hide(); | |
19338 | } | |
19339 | ||
ab78acc6 IC |
19340 | function populateNetworkSelect() { |
19341 | for (var i=0; i<networks.length; i++) { | |
19342 | var network = networks[i]; | |
19343 | var option = $("<option>"); | |
19344 | option.attr("value", i); | |
19345 | option.text(network.name); | |
19346 | DOM.phraseNetwork.append(option); | |
19347 | } | |
19348 | } | |
19349 | ||
0515eeec IC |
19350 | function getLanguage() { |
19351 | var defaultLanguage = "english"; | |
19352 | // Try to get from existing phrase | |
19353 | var language = getLanguageFromPhrase(); | |
19354 | // Try to get from url if not from phrase | |
19355 | if (language.length == 0) { | |
19356 | language = getLanguageFromUrl(); | |
19357 | } | |
19358 | // Default to English if no other option | |
19359 | if (language.length == 0) { | |
19360 | language = defaultLanguage; | |
19361 | } | |
19362 | return language; | |
19363 | } | |
19364 | ||
19365 | function getLanguageFromPhrase(phrase) { | |
19366 | // Check if how many words from existing phrase match a language. | |
19367 | var language = ""; | |
19368 | if (!phrase) { | |
19369 | phrase = DOM.phrase.val(); | |
19370 | } | |
19371 | if (phrase.length > 0) { | |
19372 | var words = phraseToWordArray(phrase); | |
19373 | var languageMatches = {}; | |
19374 | for (l in WORDLISTS) { | |
19375 | // Track how many words match in this language | |
19376 | languageMatches[l] = 0; | |
19377 | for (var i=0; i<words.length; i++) { | |
19378 | var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1; | |
19379 | if (wordInLanguage) { | |
19380 | languageMatches[l]++; | |
19381 | } | |
19382 | } | |
19383 | // Find languages with most word matches. | |
19384 | // This is made difficult due to commonalities between Chinese | |
19385 | // simplified vs traditional. | |
19386 | var mostMatches = 0; | |
19387 | var mostMatchedLanguages = []; | |
19388 | for (var l in languageMatches) { | |
19389 | var numMatches = languageMatches[l]; | |
19390 | if (numMatches > mostMatches) { | |
19391 | mostMatches = numMatches; | |
19392 | mostMatchedLanguages = [l]; | |
19393 | } | |
19394 | else if (numMatches == mostMatches) { | |
19395 | mostMatchedLanguages.push(l); | |
19396 | } | |
19397 | } | |
19398 | } | |
19399 | if (mostMatchedLanguages.length > 0) { | |
19400 | // Use first language and warn if multiple detected | |
19401 | language = mostMatchedLanguages[0]; | |
19402 | if (mostMatchedLanguages.length > 1) { | |
19403 | console.warn("Multiple possible languages"); | |
19404 | console.warn(mostMatchedLanguages); | |
19405 | } | |
19406 | } | |
19407 | } | |
19408 | return language; | |
19409 | } | |
19410 | ||
19411 | function getLanguageFromUrl() { | |
c6624d51 IC |
19412 | for (var language in WORDLISTS) { |
19413 | if (window.location.hash.indexOf(language) > -1) { | |
19414 | return language; | |
19415 | } | |
19416 | } | |
19417 | return ""; | |
0515eeec IC |
19418 | } |
19419 | ||
19420 | function setMnemonicLanguage() { | |
19421 | var language = getLanguage(); | |
19422 | // Load the bip39 mnemonic generator for this language if required | |
19423 | if (!(language in mnemonics)) { | |
19424 | mnemonics[language] = new Mnemonic(language); | |
19425 | } | |
19426 | mnemonic = mnemonics[language]; | |
19427 | } | |
19428 | ||
19429 | function convertPhraseToNewLanguage() { | |
19430 | var oldLanguage = getLanguageFromPhrase(); | |
19431 | var newLanguage = getLanguageFromUrl(); | |
19432 | var oldPhrase = DOM.phrase.val(); | |
19433 | var oldWords = phraseToWordArray(oldPhrase); | |
19434 | var newWords = []; | |
19435 | for (var i=0; i<oldWords.length; i++) { | |
19436 | var oldWord = oldWords[i]; | |
19437 | var index = WORDLISTS[oldLanguage].indexOf(oldWord); | |
19438 | var newWord = WORDLISTS[newLanguage][index]; | |
19439 | newWords.push(newWord); | |
19440 | } | |
19441 | newPhrase = wordArrayToPhrase(newWords); | |
19442 | return newPhrase; | |
19443 | } | |
19444 | ||
19445 | // TODO look at jsbip39 - mnemonic.splitWords | |
19446 | function phraseToWordArray(phrase) { | |
19447 | var words = phrase.split(/\s/g); | |
19448 | var noBlanks = []; | |
19449 | for (var i=0; i<words.length; i++) { | |
19450 | var word = words[i]; | |
19451 | if (word.length > 0) { | |
19452 | noBlanks.push(word); | |
19453 | } | |
19454 | } | |
19455 | return noBlanks; | |
19456 | } | |
19457 | ||
19458 | // TODO look at jsbip39 - mnemonic.joinWords | |
19459 | function wordArrayToPhrase(words) { | |
19460 | var phrase = words.join(" "); | |
19461 | var language = getLanguageFromPhrase(phrase); | |
19462 | if (language == "japanese") { | |
19463 | phrase = words.join("\u3000"); | |
19464 | } | |
19465 | return phrase; | |
19466 | } | |
19467 | ||
c6624d51 IC |
19468 | function isUsingOwnEntropy() { |
19469 | return DOM.useEntropy.prop("checked"); | |
19470 | } | |
19471 | ||
19472 | function setMnemonicFromEntropy() { | |
2a6dd137 | 19473 | clearEntropyFeedback(); |
18abe53b | 19474 | // Get entropy value |
c6624d51 | 19475 | var entropyStr = DOM.entropy.val(); |
18abe53b | 19476 | // Work out minimum base for entropy |
c6624d51 | 19477 | var entropy = Entropy.fromString(entropyStr); |
18abe53b | 19478 | if (entropy.binaryStr.length == 0) { |
c6624d51 IC |
19479 | return; |
19480 | } | |
19481 | // Show entropy details | |
18abe53b IC |
19482 | showEntropyFeedback(entropy); |
19483 | // Use entropy hash if not using raw entropy | |
19484 | var bits = entropy.binaryStr; | |
19485 | var mnemonicLength = DOM.entropyMnemonicLength.val(); | |
19486 | if (mnemonicLength != "raw") { | |
19487 | // Get bits by hashing entropy with SHA256 | |
19488 | var hash = sjcl.hash.sha256.hash(entropy.cleanStr); | |
19489 | var hex = sjcl.codec.hex.fromBits(hash); | |
19490 | bits = BigInteger.parse(hex, 16).toString(2); | |
53aaab27 | 19491 | while (bits.length % 256 != 0) { |
18abe53b IC |
19492 | bits = "0" + bits; |
19493 | } | |
19494 | // Truncate hash to suit number of words | |
19495 | mnemonicLength = parseInt(mnemonicLength); | |
19496 | var numberOfBits = 32 * mnemonicLength / 3; | |
19497 | bits = bits.substring(0, numberOfBits); | |
c6624d51 | 19498 | } |
c6624d51 | 19499 | // Discard trailing entropy |
18abe53b | 19500 | var bitsToUse = Math.floor(bits.length / 32) * 32; |
2a6dd137 IC |
19501 | var start = bits.length - bitsToUse; |
19502 | var binaryStr = bits.substring(start); | |
c6624d51 IC |
19503 | // Convert entropy string to numeric array |
19504 | var entropyArr = []; | |
18abe53b IC |
19505 | for (var i=0; i<binaryStr.length / 8; i++) { |
19506 | var byteAsBits = binaryStr.substring(i*8, i*8+8); | |
19507 | var entropyByte = parseInt(byteAsBits, 2); | |
c6624d51 IC |
19508 | entropyArr.push(entropyByte) |
19509 | } | |
19510 | // Convert entropy array to mnemonic | |
19511 | var phrase = mnemonic.toMnemonic(entropyArr); | |
19512 | // Set the mnemonic in the UI | |
19513 | DOM.phrase.val(phrase); | |
19514 | } | |
19515 | ||
2a6dd137 IC |
19516 | function clearEntropyFeedback() { |
19517 | DOM.entropyStrength.text("..."); | |
18abe53b | 19518 | DOM.entropyType.text(""); |
2a6dd137 IC |
19519 | DOM.entropyWordCount.text("0"); |
19520 | DOM.entropyEventCount.text("0"); | |
19521 | DOM.entropyBitsPerEvent.text("0"); | |
19522 | DOM.entropyBits.text("0"); | |
19523 | DOM.entropyFiltered.html(" "); | |
19524 | DOM.entropyBinary.html(" "); | |
c6624d51 IC |
19525 | } |
19526 | ||
18abe53b | 19527 | function showEntropyFeedback(entropy) { |
9e97eb76 | 19528 | var numberOfBits = entropy.binaryStr.length; |
18abe53b | 19529 | var strength = "extremely weak"; |
9e97eb76 | 19530 | if (numberOfBits >= 64) { |
18abe53b IC |
19531 | strength = "very weak"; |
19532 | } | |
9e97eb76 | 19533 | if (numberOfBits >= 96) { |
18abe53b IC |
19534 | strength = "weak"; |
19535 | } | |
9e97eb76 | 19536 | if (numberOfBits >= 128) { |
18abe53b IC |
19537 | strength = "strong"; |
19538 | } | |
9e97eb76 | 19539 | if (numberOfBits >= 160) { |
18abe53b IC |
19540 | strength = "very strong"; |
19541 | } | |
9e97eb76 | 19542 | if (numberOfBits >= 192) { |
18abe53b IC |
19543 | strength = "extremely strong"; |
19544 | } | |
19545 | // If time to crack is less than one day, and password is considered | |
19546 | // strong or better based on the number of bits, rename strength to | |
19547 | // 'easily cracked'. | |
95f04905 IC |
19548 | try { |
19549 | var z = zxcvbn(entropy.base.parts.join("")); | |
19550 | var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second; | |
19551 | if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) { | |
19552 | strength = "easily cracked"; | |
19553 | if (z.feedback.warning != "") { | |
19554 | strength = strength + " - " + z.feedback.warning; | |
19555 | }; | |
19556 | } | |
18abe53b | 19557 | } |
95f04905 IC |
19558 | catch (e) { |
19559 | strength = "unknown"; | |
19560 | console.log("Error detecting entropy strength with zxcvbn:"); | |
19561 | console.log(e); | |
19562 | } | |
95f04905 | 19563 | var entropyTypeStr = getEntropyTypeStr(entropy); |
9e97eb76 | 19564 | var wordCount = Math.floor(numberOfBits / 32) * 3; |
94959756 | 19565 | var bitsPerEvent = entropy.bitsPerEvent.toFixed(2); |
2a6dd137 | 19566 | DOM.entropyFiltered.html(entropy.cleanHtml); |
95f04905 | 19567 | DOM.entropyType.text(entropyTypeStr); |
18abe53b IC |
19568 | DOM.entropyStrength.text(strength); |
19569 | DOM.entropyEventCount.text(entropy.base.ints.length); | |
9e97eb76 | 19570 | DOM.entropyBits.text(numberOfBits); |
2a6dd137 IC |
19571 | DOM.entropyWordCount.text(wordCount); |
19572 | DOM.entropyBinary.text(entropy.binaryStr); | |
9e97eb76 | 19573 | DOM.entropyBitsPerEvent.text(bitsPerEvent); |
95f04905 IC |
19574 | } |
19575 | ||
19576 | function getEntropyTypeStr(entropy) { | |
19577 | var typeStr = entropy.base.str; | |
19578 | // Add some detail if these are cards | |
19579 | if (entropy.base.asInt == 52) { | |
19580 | var cardDetail = []; // array of message strings | |
19581 | // Detect duplicates | |
19582 | var dupes = []; | |
19583 | var dupeTracker = {}; | |
19584 | for (var i=0; i<entropy.base.parts.length; i++) { | |
19585 | var card = entropy.base.parts[i]; | |
9e97eb76 IC |
19586 | var cardUpper = card.toUpperCase(); |
19587 | if (cardUpper in dupeTracker) { | |
95f04905 IC |
19588 | dupes.push(card); |
19589 | } | |
9e97eb76 | 19590 | dupeTracker[cardUpper] = true; |
95f04905 IC |
19591 | } |
19592 | if (dupes.length > 0) { | |
19593 | var dupeWord = "duplicates"; | |
19594 | if (dupes.length == 1) { | |
19595 | dupeWord = "duplicate"; | |
19596 | } | |
19597 | var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" "); | |
19598 | if (dupes.length > 3) { | |
19599 | msg += "..."; | |
19600 | } | |
19601 | cardDetail.push(msg); | |
19602 | } | |
19603 | // Detect full deck | |
19604 | var uniqueCards = []; | |
19605 | for (var uniqueCard in dupeTracker) { | |
19606 | uniqueCards.push(uniqueCard); | |
19607 | } | |
19608 | if (uniqueCards.length == 52) { | |
19609 | cardDetail.unshift("full deck"); | |
19610 | } | |
9e97eb76 IC |
19611 | // Detect missing cards |
19612 | var values = "A23456789TJQK"; | |
19613 | var suits = "CDHS"; | |
19614 | var missingCards = []; | |
19615 | for (var i=0; i<suits.length; i++) { | |
19616 | for (var j=0; j<values.length; j++) { | |
19617 | var card = values[j] + suits[i]; | |
19618 | if (!(card in dupeTracker)) { | |
19619 | missingCards.push(card); | |
19620 | } | |
19621 | } | |
19622 | } | |
19623 | // Display missing cards if six or less, ie clearly going for full deck | |
19624 | if (missingCards.length > 0 && missingCards.length <= 6) { | |
19625 | var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" "); | |
19626 | if (missingCards.length > 3) { | |
19627 | msg += "..."; | |
19628 | } | |
19629 | cardDetail.push(msg); | |
19630 | } | |
95f04905 IC |
19631 | // Add card details to typeStr |
19632 | if (cardDetail.length > 0) { | |
19633 | typeStr += " (" + cardDetail.join(", ") + ")"; | |
19634 | } | |
19635 | } | |
19636 | return typeStr; | |
19637 | } | |
19638 | ||
e00964cc IC |
19639 | function setQrEvents(els) { |
19640 | els.on("mouseenter", createQr); | |
19641 | els.on("mouseleave", destroyQr); | |
19642 | els.on("click", toggleQr); | |
19643 | } | |
19644 | ||
19645 | function createQr(e) { | |
19646 | var content = e.target.textContent || e.target.value; | |
19647 | if (content) { | |
19648 | var size = 130; | |
19649 | DOM.qrImage.qrcode({width: size, height: size, text: content}); | |
19650 | if (!showQr) { | |
52da415f IC |
19651 | DOM.qrHider.addClass("hidden"); |
19652 | } | |
19653 | else { | |
19654 | DOM.qrHider.removeClass("hidden"); | |
e00964cc IC |
19655 | } |
19656 | DOM.qrContainer.removeClass("hidden"); | |
19657 | } | |
19658 | } | |
19659 | ||
19660 | function destroyQr() { | |
19661 | DOM.qrImage.text(""); | |
19662 | DOM.qrContainer.addClass("hidden"); | |
19663 | } | |
19664 | ||
19665 | function toggleQr() { | |
19666 | showQr = !showQr; | |
52da415f | 19667 | DOM.qrHider.toggleClass("hidden"); |
e00964cc IC |
19668 | DOM.qrHint.toggleClass("hidden"); |
19669 | } | |
19670 | ||
20083ab9 IC |
19671 | function bip44TabSelected() { |
19672 | return DOM.bip44tab.hasClass("active"); | |
19673 | } | |
19674 | ||
19675 | function bip32TabSelected() { | |
19676 | return DOM.bip32tab.hasClass("active"); | |
19677 | } | |
19678 | ||
ab78acc6 IC |
19679 | var networks = [ |
19680 | { | |
19681 | name: "Bitcoin", | |
19682 | onSelect: function() { | |
19683 | network = bitcoin.networks.bitcoin; | |
19684 | DOM.bip44coin.val(0); | |
ab78acc6 IC |
19685 | }, |
19686 | }, | |
19687 | { | |
19688 | name: "Bitcoin Testnet", | |
19689 | onSelect: function() { | |
19690 | network = bitcoin.networks.testnet; | |
19691 | DOM.bip44coin.val(1); | |
ab78acc6 IC |
19692 | }, |
19693 | }, | |
19694 | { | |
19695 | name: "Litecoin", | |
19696 | onSelect: function() { | |
19697 | network = bitcoin.networks.litecoin; | |
19698 | DOM.bip44coin.val(2); | |
19699 | }, | |
19700 | }, | |
19701 | { | |
19702 | name: "Dogecoin", | |
19703 | onSelect: function() { | |
19704 | network = bitcoin.networks.dogecoin; | |
19705 | DOM.bip44coin.val(3); | |
19706 | }, | |
19707 | }, | |
d5dc92fd IC |
19708 | { |
19709 | name: "ShadowCash", | |
19710 | onSelect: function() { | |
19711 | network = bitcoin.networks.shadow; | |
19712 | DOM.bip44coin.val(35); | |
19713 | }, | |
19714 | }, | |
19715 | { | |
19716 | name: "ShadowCash Testnet", | |
19717 | onSelect: function() { | |
19718 | network = bitcoin.networks.shadowtn; | |
19719 | DOM.bip44coin.val(1); | |
19720 | }, | |
19721 | }, | |
a3baa26e IC |
19722 | { |
19723 | name: "Viacoin", | |
19724 | onSelect: function() { | |
19725 | network = bitcoin.networks.viacoin; | |
19726 | DOM.bip44coin.val(14); | |
19727 | }, | |
19728 | }, | |
19729 | { | |
19730 | name: "Viacoin Testnet", | |
19731 | onSelect: function() { | |
19732 | network = bitcoin.networks.viacointestnet; | |
19733 | DOM.bip44coin.val(1); | |
19734 | }, | |
19735 | }, | |
19736 | { | |
19737 | name: "Jumbucks", | |
19738 | onSelect: function() { | |
19739 | network = bitcoin.networks.jumbucks; | |
19740 | DOM.bip44coin.val(26); | |
19741 | }, | |
19742 | }, | |
5c434a8a CM |
19743 | { |
19744 | name: "CLAM", | |
19745 | onSelect: function() { | |
19746 | network = bitcoin.networks.clam; | |
19747 | DOM.bip44coin.val(23); | |
19748 | }, | |
19749 | }, | |
5493efc3 | 19750 | { |
19751 | name: "DASH", | |
19752 | onSelect: function() { | |
19753 | network = bitcoin.networks.dash; | |
19754 | DOM.bip44coin.val(5); | |
19755 | }, | |
19756 | }, | |
07ac4350 | 19757 | { |
19758 | name: "Namecoin", | |
19759 | onSelect: function() { | |
19760 | network = bitcoin.networks.namecoin; | |
19761 | DOM.bip44coin.val(7); | |
19762 | }, | |
19763 | }, | |
19764 | { | |
19765 | name: "Peercoin", | |
19766 | onSelect: function() { | |
19767 | network = bitcoin.networks.peercoin; | |
19768 | DOM.bip44coin.val(6); | |
19769 | }, | |
19770 | }, | |
ab78acc6 IC |
19771 | ] |
19772 | ||
ebd8d4e8 IC |
19773 | init(); |
19774 | ||
19775 | })(); | |
dc55c6b0 | 19776 | </script> |
ebd8d4e8 IC |
19777 | </body> |
19778 | </html> |