]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Merge pull request #117 from jonathancross/iancoleman-bip39-bip49
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*!
7 * Bootstrap v3.2.0 (http://getbootstrap.com)
8 * Copyright 2011-2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}</style>
11 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" />
14 <meta content="Ian Coleman" name="author" />
15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
115 </style>
116 </head>
117 <body>
118 <div class="container">
119
120 <h1 class="text-center">Mnemonic Code Converter</h1>
121 <p class="version">v0.2.5</p>
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
127 <div class="form-group">
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
130 <p data-translate>You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).</p>
131 <p data-translate-html>
132 For more info see the
133 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
134 </p>
135 </div>
136 </div>
137 <div class="form-group generate-container">
138 <label class="col-sm-2 control-label"></label>
139 <div class="col-sm-10">
140 <div class="form-inline">
141 <div class="input-group-inline">
142 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
143 <button class="btn generate">Generate</button>
144 <select id="strength" class="strength form-control">
145 <option value="3">3</option>
146 <option value="6">6</option>
147 <option value="9">9</option>
148 <option value="12">12</option>
149 <option value="15" selected>15</option>
150 <option value="18">18</option>
151 <option value="21">21</option>
152 <option value="24">24</option>
153 </select>
154 <span data-translate>words</span>
155 </div>
156 </div>
157 </div>
158 </div>
159 <div class="entropy-container hidden">
160 <div class="form-group text-danger">
161 <label class="col-sm-2 control-label" data-translate>Warning</label>
162 <div class="col-sm-10 form-control-static">
163 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
164 <a href="#entropy-notes" data-translate>Read more</a>
165 </div>
166 </div>
167 <div class="form-group">
168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
169 <div class="col-sm-7">
170 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
171 <div class="row">
172 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
173 <div class="crack-time col-sm-3 form-control-static"></div>
174 <label class="col-sm-3 control-label" data-translate>Event Count</label>
175 <div class="event-count col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
178 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
179 <div class="type col-sm-3 form-control-static"></div>
180 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
181 <div class="bits-per-event col-sm-3 form-control-static"></div>
182 </div>
183 <div class="row">
184 <label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
185 <div class="word-count col-sm-3 form-control-static"></div>
186 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
187 <div class="bits col-sm-3 form-control-static"></div>
188 </div>
189 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
190 <div class="filtered col-sm-9 form-control-static"></div>
191 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
192 <div class="binary col-sm-9 form-control-static"></div>
193 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
194 <div class="col-sm-9">
195 <select class="mnemonic-length form-control">
196 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
197 <option value="12">12 <span data-translate>Words</span></option>
198 <option value="15">15 <span data-translate>Words</option>
199 <option value="18">18 <span data-translate>Words</span></option>
200 <option value="21">21 <span data-translate>Words</span></option>
201 <option value="24">24 <span data-translate>Words</span></option>
202 </select>
203 </div>
204 </div>
205 <div class="col-sm-3">
206 <p data-translate>Valid entropy values include:</p>
207 <ul>
208 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
209 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
210 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
211 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
212 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
213 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
214 </ul>
215 </div>
216 </div>
217 </div>
218 <div class="form-group">
219 <div class="col-sm-2"></div>
220 <div class="col-sm-10 checkbox">
221 <label>
222 <input type="checkbox" class="use-entropy">
223 <span data-translate>Supply my own source of entropy</span>
224 </label>
225 </div>
226 </div>
227 <div class="form-group">
228 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
229 <div class="col-sm-10 languages">
230 <div class="form-control no-border">
231 <a href="#english">English</a>
232 <a href="#japanese" title="Japanese">日本語</a>
233 <a href="#spanish" title="Spanish">Español</a>
234 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
235 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
236 <a href="#french" title="French">Français</a>
237 <a href="#italian" title="Italian">Italiano</a>
238 </div>
239 </div>
240 </div>
241 <div class="form-group">
242 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
243 <div class="col-sm-10">
244 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
245 </div>
246 </div>
247 <div class="form-group">
248 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
249 <div class="col-sm-10">
250 <textarea id="passphrase" class="passphrase form-control"></textarea>
251 </div>
252 </div>
253 <div class="form-group">
254 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
255 <div class="col-sm-10">
256 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
257 </div>
258 </div>
259 <div class="form-group">
260 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
261 <div class="col-sm-10">
262 <select id="network-phrase" class="network form-control">
263 <!-- populated by javascript -->
264 </select>
265 </div>
266 </div>
267 <div class="form-group">
268 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
269 <div class="col-sm-10">
270 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
271 </div>
272 </div>
273 <div class="form-group litecoin-ltub-container hidden">
274 <label for="litecoin-use-ltub" class="col-sm-2 control-label" data-translate>Prefixes</label>
275 <div class="col-sm-10 checkbox">
276 <label>
277 <input type="checkbox" id="litecoin-use-ltub" class="litecoin-use-ltub">
278 Use <code>Ltpv / Ltub</code> instead of <code>xprv / xpub</code>
279 </label>
280 </div>
281 </div>
282 </form>
283 </div>
284 </div>
285
286 <hr>
287
288 <div class="row">
289 <div class="col-md-12">
290 <h2>Derivation Path</h2>
291 <ul class="derivation-type nav nav-tabs" role="tablist">
292 <li id="bip32-tab">
293 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
294 </li>
295 <li id="bip44-tab" class="active">
296 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
297 </li>
298 <li id="bip49-tab">
299 <a href="#bip49" role="tab" data-toggle="tab">BIP49</a>
300 </li>
301 </ul>
302 <div class="derivation-type tab-content">
303 <div id="bip44" class="tab-pane active">
304 <form class="form-horizontal" role="form">
305 <br>
306 <div class="col-sm-2"></div>
307 <div class="col-sm-10">
308 <p data-translate-html>
309 For more info see the
310 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
311 </p>
312 </div>
313 <div class="form-group">
314 <label for="purpose" class="col-sm-2 control-label">
315 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
316 </label>
317 <div class="col-sm-10">
318 <input id="purpose" type="text" class="purpose form-control" value="44" readonly>
319 </div>
320 </div>
321 <div class="form-group">
322 <label for="coin" class="col-sm-2 control-label">
323 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
324 </label>
325 <div class="col-sm-10">
326 <input id="coin" type="text" class="coin form-control" value="0" readonly>
327 </div>
328 </div>
329 <div class="form-group">
330 <label for="account" class="col-sm-2 control-label">
331 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
332 </label>
333 <div class="col-sm-10">
334 <input id="account" type="text" class="account form-control" value="0">
335 </div>
336 </div>
337 <div class="form-group">
338 <label for="change" class="col-sm-2 control-label">
339 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
340 </label>
341 <div class="col-sm-10">
342 <input id="change" type="text" class="change form-control" value="0">
343 </div>
344 </div>
345 <div class="form-group">
346 <label class="col-sm-2 control-label">
347 </label>
348 <div class="col-sm-10">
349 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
350 </div>
351 </div>
352 <div class="form-group">
353 <label for="account-xprv" class="col-sm-2 control-label">
354 <span data-translate>Account Extended Private Key</span>
355 </label>
356 <div class="col-sm-10">
357 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
358 </div>
359 </div>
360 <div class="form-group">
361 <label for="account-xpub" class="col-sm-2 control-label">
362 <span data-translate>Account Extended Public Key</span>
363 </label>
364 <div class="col-sm-10">
365 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
366 </div>
367 </div>
368 <div class="form-group">
369 <label class="col-sm-2 control-label">
370 </label>
371 <div class="col-sm-10">
372 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
373 </div>
374 </div>
375 <div class="form-group">
376 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
377 <div class="col-sm-10">
378 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
379 </div>
380 </div>
381 </form>
382 </div>
383 <div id="bip32" class="tab-pane">
384 <form class="form-horizontal" role="form">
385 <br>
386 <div class="col-sm-2"></div>
387 <div class="col-sm-10">
388 <p data-translate>
389 For more info see the
390 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
391 </p>
392 </div>
393 <div class="form-group">
394 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
395 <div class="col-sm-10">
396 <select id="bip32-client" class="client form-control">
397 <option value="custom">Custom derivation path</option>
398 <!-- populated by javascript -->
399 </select>
400 </div>
401 </div>
402 <div class="form-group">
403 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
404 <div class="col-sm-10">
405 <input id="bip32-path" type="text" class="path form-control" value="m/0">
406 </div>
407 </div>
408 <div class="form-group">
409 <div class="col-sm-2"></div>
410 <label class="col-sm-10">
411 <input class="hardened-addresses" type="checkbox">
412 <span data-translate>Use hardened addresses</span>
413 </label>
414 </div>
415 <div class="form-group">
416 <div class="col-sm-2"></div>
417 <label class="col-sm-10">
418 <input class="p2wpkh-nested-in-p2sh" type="checkbox">
419 <span data-translate>Use SegWit addresses (ie P2WPKH Nested In P2SH)</span>
420 </label>
421 </div>
422 <div class="form-group">
423 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
424 <div class="col-sm-10">
425 <p class="form-control no-border" data-translate-html>
426 Use path <code>m/0'/0'</code> with hardened addresses.
427 </p>
428 <p class="form-control no-border" data-translate-html>
429 For more info see the
430 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
431 </p>
432 </div>
433 </div>
434 <div class="form-group">
435 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
436 <div class="col-sm-10">
437 <p class="form-control no-border">
438 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
439 </p>
440 <p class="form-control no-border">
441 <span data-translate>For more info see</span>
442 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
443 </p>
444 </div>
445 </div>
446 <div class="form-group">
447 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
448 <div class="col-sm-10">
449 <p class="form-control no-border">
450 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
451 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
452 </p>
453 <p class="form-control no-border">
454 <span data-translate>Can be used with</span>:
455 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
456 </p>
457 </div>
458 </div>
459 </form>
460 </div>
461 <div id="bip49" class="tab-pane">
462 <form class="form-horizontal" role="form">
463 <br>
464 <div class="unavailable hidden">
465 <div class="form-group">
466 <div class="col-sm-2"></div>
467 <div class="col-sm-10">
468 <p data-translate>BIP49 is unavailable for this coin.</p>
469 </div>
470 </div>
471 </div>
472 <div class="available">
473 <div class="col-sm-2"></div>
474 <div class="col-sm-10">
475 <p data-translate-html>
476 For more info see the
477 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">BIP49 spec</a>.
478 </p>
479 </div>
480 <div class="form-group">
481 <label for="purpose" class="col-sm-2 control-label">
482 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
483 </label>
484 <div class="col-sm-10">
485 <input id="purpose" type="text" class="purpose form-control" value="49" readonly>
486 </div>
487 </div>
488 <div class="form-group">
489 <label for="coin" class="col-sm-2 control-label">
490 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
491 </label>
492 <div class="col-sm-10">
493 <input id="coin" type="text" class="coin form-control" value="0" readonly>
494 </div>
495 </div>
496 <div class="form-group">
497 <label for="account" class="col-sm-2 control-label">
498 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
499 </label>
500 <div class="col-sm-10">
501 <input id="account" type="text" class="account form-control" value="0">
502 </div>
503 </div>
504 <div class="form-group">
505 <label for="change" class="col-sm-2 control-label">
506 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
507 </label>
508 <div class="col-sm-10">
509 <input id="change" type="text" class="change form-control" value="0">
510 </div>
511 </div>
512 <div class="form-group">
513 <label class="col-sm-2 control-label">
514 </label>
515 <div class="col-sm-10">
516 <p data-translate>The account extended keys can be used for importing to most BIP49 compatible wallets.</p>
517 </div>
518 </div>
519 <div class="form-group">
520 <label for="account-xprv" class="col-sm-2 control-label">
521 <span data-translate>Account Extended Private Key</span>
522 </label>
523 <div class="col-sm-10">
524 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
525 </div>
526 </div>
527 <div class="form-group">
528 <label for="account-xpub" class="col-sm-2 control-label">
529 <span data-translate>Account Extended Public Key</span>
530 </label>
531 <div class="col-sm-10">
532 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
533 </div>
534 </div>
535 <div class="form-group">
536 <label class="col-sm-2 control-label">
537 </label>
538 <div class="col-sm-10">
539 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
540 </div>
541 </div>
542 <div class="form-group">
543 <label for="bip49-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
544 <div class="col-sm-10">
545 <input id="bip49-path" type="text" class="path form-control" value="m/49'/0'/0'/0" readonly="readonly">
546 </div>
547 </div>
548 </div>
549 </form>
550 </div>
551 </div>
552 <form class="form-horizontal" role="form">
553 <div class="form-group">
554 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
555 <div class="col-sm-10">
556 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
557 </div>
558 </div>
559 <div class="form-group">
560 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
561 <div class="col-sm-10">
562 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
563 </div>
564 </div>
565 </form>
566 </div>
567 </div>
568
569 <hr>
570
571 <div class="row">
572 <div class="col-md-12">
573 <h2>Derived Addresses</h2>
574 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
575 <table class="table table-striped">
576 <thead>
577 <th>
578 <div class="input-group">
579 <span data-translate>Path</span>&nbsp;&nbsp;
580 <button class="index-toggle" data-translate>Toggle</button>
581 </div>
582 </th>
583 <th>
584 <div class="input-group">
585 <span data-translate>Address</span>&nbsp;&nbsp;
586 <button class="address-toggle" data-translate>Toggle</button>
587 </div>
588 </th>
589 <th>
590 <div class="input-group">
591 <span data-translate>Public Key</span>&nbsp;&nbsp;
592 <button class="public-key-toggle" data-translate>Toggle</button>
593 </div>
594 </th>
595 <th>
596 <div class="input-group">
597 <span data-translate>Private Key</span>&nbsp;&nbsp;
598 <button class="private-key-toggle" data-translate>Toggle</button>
599 </div>
600 </th>
601 </thead>
602 <tbody class="addresses monospace">
603 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
604 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
605 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
606 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
607 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
608 </tbody>
609 </table>
610 </div>
611 </div>
612 <span data-translate>Show more rows</span>:
613 <input type="number" class="rows-to-add" value="20">
614 <button class="more" data-translate>Show</button>
615
616 <hr>
617
618 <div class="row">
619 <div class="col-md-12">
620 <h2 data-translate>More info</h2>
621 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
622 <p data-translate-html>
623 Read more at the
624 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
625 </p>
626 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
627 <p data-translate-html>
628 Read more at the
629 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
630 </p>
631 <p data-translate-html>
632 See the demo at
633 <a href="http://bip32.org/" target="_blank">bip32.org</a>
634 </p>
635 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
636 <p data-translate-html>
637 Read more at the
638 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
639 </p>
640 <h3>BIP49 <span class="small" data-translate>Derivation scheme for P2WPKH-nested-in-P2SH based accounts</span></h3>
641 <p data-translate-html>
642 Read more at the
643 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">official BIP49 spec</a>
644 </p>
645 <h3 data-translate>Private Keys</h3>
646 <p>
647 <span data-translate-html>
648 Use private keys at
649 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
650 </span>
651 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
652 </p>
653 <h3 id="entropy-notes" data-translate>Entropy</h3>
654 <p>
655 <span data-translate-html>
656 Entropy values must be sourced from a
657 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
658 </span>
659 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
660 <span data-translate-html>
661 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
662 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
663 random enough for the needs of this tool.
664 </span>
665 </p>
666 <p>
667 <strong><span data-translate>Do not store entropy.</span></strong>
668 </p>
669 <p>
670 <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>
671 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
672 <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>
673 </p>
674 <p>
675 <span data-translate-html>
676 The random mnemonic generator on this page uses a
677 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
678 </span>
679 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
680 <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>
681 <span data-translate>In that case you might choose to use your own source of entropy.</span>
682 </p>
683 <p>
684 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
685 </p>
686 <h3 data-translate>License</h3>
687 <p>
688 <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.
689 </span>
690 </p>
691 <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>
692 </div>
693 </div>
694
695 <hr>
696
697 <div class="row">
698 <div class="col-md-12">
699
700 <h2 data-translate>Offline Usage</h2>
701
702 <p data-translate>
703 You can use this tool without having to be online.
704 </p>
705 <p data-translate>
706 In your browser, select file save-as, and save this page
707 as a file.
708 </p>
709 <p data-translate>
710 Double-click that file to open it in a browser
711 on any offline computer.
712 </p>
713 <p>
714 <span data-translate>Alternatively, download the file from the repository</span>
715 -
716 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
717 </p>
718
719 </div>
720 </div>
721
722 <hr>
723
724 <div class="row">
725 <div class="col-md-12">
726
727 <h2 data-translate>This project is 100% open-source code</h2>
728
729 <p>
730 <span data-translate>Get the source code from the repository</span>
731 -
732 <a href="https://github.com/iancoleman/bip39" target="_blank">
733 https://github.com/iancoleman/bip39
734 </a>
735 </p>
736
737 <h3 data-translate>Libraries</h3>
738
739 <p>
740 <span>BitcoinJS - </span>
741 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
742 https://github.com/bitcoinjs/bitcoinjs-lib
743 </a>
744 </p>
745
746 <p>
747 <span>jsBIP39 - </span>
748 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
749 https://github.com/iancoleman/jsbip39
750 </a>
751 </p>
752
753 <p>
754 <span>sjcl - </span>
755 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
756 https://github.com/bitwiseshiftleft/sjcl
757 </a>
758 </p>
759
760 <p>
761 <span>jQuery - </span>
762 <a href="https://jquery.com/" target="_blank">
763 https://jquery.com/
764 </a>
765 </p>
766
767 <p>
768 <span>Twitter Bootstrap - </span>
769 <a href="http://getbootstrap.com/" target="_blank">
770 http://getbootstrap.com/
771 </a>
772 </p>
773
774 </div>
775 </div>
776
777 </div>
778
779 <div class="qr-container hidden">
780 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
781 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
782 <div class="qr-hider hidden">
783 <div class="qr-image"></div>
784 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
785 </div>
786 </div>
787
788 <div class="feedback-container">
789 <div class="feedback">Loading...</div>
790 </div>
791
792 <script type="text/template" id="address-row-template">
793 <tr>
794 <td class="index"><span></span></td>
795 <td class="address"><span data-show-qr></span></td>
796 <td class="pubkey"><span data-show-qr></span></td>
797 <td class="privkey"><span data-show-qr></span></td>
798 </tr>
799 </script>
800 <script>// From
801 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
802 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
803 // but is not required in any modern browsers.
804 // For more information, see
805 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
806
807 //----------------------------------------------------------------------
808 //
809 // ECMAScript 2015 Polyfills
810 //
811 //----------------------------------------------------------------------
812
813 (function (global) {
814 "use strict";
815
816 // Set this to always override native implementations, for testing
817 // the polyfill in browsers with partial/full ES2015 support.
818 var OVERRIDE_NATIVE_FOR_TESTING = false;
819
820 var undefined = (void 0); // Paranoia
821
822 // Helpers
823
824 function strict(o) {
825 return o === global ? undefined : o;
826 }
827
828 function hook(o, p, f) {
829 var op = o[p];
830 console.assert(typeof op === 'function', 'Hooking a non-function');
831 o[p] = function() {
832 var o = strict(this);
833 var r = f.apply(o, arguments);
834 return r !== undefined ? r : op.apply(o, arguments);
835 };
836 }
837
838 function isSymbol(s) {
839 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
840 }
841
842 function getPropertyDescriptor(target, name) {
843 var desc = Object.getOwnPropertyDescriptor(target, name);
844 var proto = Object.getPrototypeOf(target);
845 while (!desc && proto) {
846 desc = Object.getOwnPropertyDescriptor(proto, name);
847 proto = Object.getPrototypeOf(proto);
848 }
849 return desc;
850 }
851
852 var enqueue = (function(nativePromise, nativeSetImmediate) {
853 if (nativePromise)
854 return function(job) { nativePromise.resolve().then(function() { job(); }); };
855 if (nativeSetImmediate)
856 return function(job) { nativeSetImmediate(job); };
857 return function(job) { setTimeout(job, 0); };
858 }(global['Promise'], global['setImmediate']));
859
860 function define(o, p, v, override) {
861 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
862 return;
863
864 if (typeof v === 'function') {
865 // Sanity check that functions are appropriately named (where possible)
866 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
867 Object.defineProperty(o, p, {
868 value: v,
869 configurable: true,
870 enumerable: false,
871 writable: true
872 });
873 } else {
874 Object.defineProperty(o, p, {
875 value: v,
876 configurable: false,
877 enumerable: false,
878 writable: false
879 });
880 }
881 }
882
883 function set_internal(o, p, v) {
884 Object.defineProperty(o, p, {
885 value: v,
886 configurable: false,
887 enumerable: false,
888 writable: true
889 });
890 }
891
892 // Snapshot intrinsic functions
893 var $isNaN = global.isNaN,
894 $parseInt = global.parseInt,
895 $parseFloat = global.parseFloat;
896
897 var E = Math.E,
898 LOG10E = Math.LOG10E,
899 LOG2E = Math.LOG2E,
900 abs = Math.abs,
901 ceil = Math.ceil,
902 exp = Math.exp,
903 floor = Math.floor,
904 log = Math.log,
905 max = Math.max,
906 min = Math.min,
907 pow = Math.pow,
908 random = Math.random,
909 sqrt = Math.sqrt;
910
911 var orig_match = String.prototype.match,
912 orig_replace = String.prototype.replace,
913 orig_search = String.prototype.search,
914 orig_split = String.prototype.split;
915
916 // These are used for implementing the polyfills, but not exported.
917
918 // Inspired by https://gist.github.com/1638059
919 /** @constructor */
920 function EphemeronTable() {
921 var secretKey = ObjectCreate(null);
922
923 function conceal(o) {
924 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
925 Object.defineProperty(o, 'valueOf', {
926 value: (function(secretKey) {
927 return function (k) {
928 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
929 };
930 }(secretKey)),
931 configurable: true,
932 writeable: true,
933 enumerable: false
934 });
935 return secrets;
936 }
937
938 function reveal(o) {
939 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
940 return v === o ? null : v;
941 }
942
943 return {
944 clear: function() {
945 secretKey = ObjectCreate(null);
946 },
947 remove: function(key) {
948 var secrets = reveal(key);
949 if (secrets && HasOwnProperty(secrets, 'value')) {
950 delete secrets.value;
951 return true;
952 }
953 return false;
954 },
955 get: function(key, defaultValue) {
956 var secrets = reveal(key);
957 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
958 },
959 has: function(key) {
960 var secrets = reveal(key);
961 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
962 },
963 set: function(key, value) {
964 var secrets = reveal(key) || conceal(key);
965 secrets.value = value;
966 }
967 };
968 }
969
970 var empty = Object.create(null);
971
972 //----------------------------------------------------------------------
973 //
974 // ECMAScript 2015
975 // http://www.ecma-international.org/ecma-262/6.0/
976 //
977 //----------------------------------------------------------------------
978
979 // ---------------------------------------
980 // 19.4 Symbol Objects
981 // ---------------------------------------
982
983 // NOTE: Symbols are defined here - out of spec order - since we need the
984 // properties and prototype to be populated for other polyfills.
985
986 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
987
988 var symbolForKey;
989 (function() {
990 var secret = Object.create(null);
991 var symbolMap = {};
992 symbolForKey = function(k) {
993 return symbolMap[k];
994 };
995
996 var GlobalSymbolRegistry = [];
997
998 function unique(bits) {
999 return Array(bits + 1).join('x').replace(/x/g, function() {
1000 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
1001 });
1002 }
1003
1004 // 19.4.1 The Symbol Constructor
1005 // 19.4.1.1 Symbol ( description=undefined )
1006 function Symbol(description) {
1007 if (!(this instanceof Symbol)) return new Symbol(description, secret);
1008 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
1009
1010 var descString = description === undefined ? undefined : String(description);
1011
1012 set_internal(this, '[[SymbolData]]', unique(128));
1013 set_internal(this, '[[Description]]', descString);
1014
1015 symbolMap[this] = this;
1016 return this;
1017 }
1018
1019 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
1020 global.Symbol = Symbol;
1021
1022 // 19.4.2 Properties of the Symbol Constructor
1023
1024 // 19.4.2.1 Symbol.for (key)
1025 define(Symbol, 'for', function for_(key) {
1026 var stringKey = String(key);
1027 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1028 var e = GlobalSymbolRegistry[i];
1029 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
1030 }
1031 var newSymbol = Symbol(key);
1032 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1033 return newSymbol;
1034 });
1035
1036 // 19.4.2.2 Symbol.hasInstance
1037 // 19.4.2.3 Symbol.isConcatSpreadable
1038
1039 // 19.4.2.4 Symbol.iterator
1040 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
1041
1042 // 19.4.2.5 Symbol.keyFor (sym)
1043 define(Symbol, 'keyFor', function keyFor(sym) {
1044 if (!(sym instanceof Symbol)) throw TypeError();
1045 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1046 var e = GlobalSymbolRegistry[i];
1047 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1048 }
1049 return undefined;
1050 });
1051
1052 // 19.4.2.6 Symbol.match
1053 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
1054
1055 // 19.4.2.7 Symbol.prototype
1056
1057 // 19.4.2.8 Symbol.replace
1058 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
1059
1060 // 19.4.2.9 Symbol.search
1061 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
1062
1063 // 19.4.2.10 Symbol.species
1064
1065 // 19.4.2.11 Symbol.search
1066 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
1067
1068 // 19.4.2.12 Symbol.toPrimitive
1069
1070 // 19.4.2.13 Symbol.toStringTag
1071 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1072
1073 // 19.4.2.14 Symbol.unscopables
1074
1075 // 19.4.3 Properties of the Symbol Prototype Object
1076 // 19.4.3.1 Symbol.prototype.constructor
1077
1078 // 19.4.3.2 Symbol.prototype.toString ( )
1079 Object.defineProperty(Symbol.prototype, 'toString', {
1080 value: function toString() {
1081 var s = strict(this);
1082 var desc = s['[[Description]]'];
1083 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1084 },
1085 configurable: true, writeable: true, enumerable: false });
1086
1087 // 19.4.3.3 Symbol.prototype.valueOf ( )
1088 Object.defineProperty(Symbol.prototype, 'valueOf', {
1089 value: function valueOf() {
1090 // To prevent automatic string conversion:
1091 throw TypeError();
1092
1093 // Spec has approximately the following:
1094 //var s = strict(this);
1095 //if (Type(s) === 'symbol') return s;
1096 //if (Type(s) !== 'object') throw TypeError();
1097 //if (!('[[SymbolData]]' in s)) throw TypeError();
1098 //return s['[[SymbolData]]'];
1099 },
1100 configurable: true, writeable: true, enumerable: false });
1101
1102 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1103 // (Done later to polyfill partial implementations)
1104
1105 // 19.4.4 Properties of Symbol Instances
1106 }());
1107
1108 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1109
1110 // Defined here so that other prototypes can reference it
1111 // 25.1.2 The %IteratorPrototype% Object
1112 var $IteratorPrototype$ = {};
1113
1114 //----------------------------------------
1115 // 6 ECMAScript Data Types and Values
1116 //----------------------------------------
1117
1118 // 6.1 ECMAScript Language Types
1119
1120 // "Type(x)" is used as shorthand for "the type of x"...
1121 function Type(v) {
1122 switch (typeof v) {
1123 case 'undefined': return 'undefined';
1124 case 'boolean': return 'boolean';
1125 case 'number': return 'number';
1126 case 'string': return 'string';
1127 case 'symbol': return 'symbol';
1128 default:
1129 if (v === null) return 'null';
1130 if (v instanceof global.Symbol) return 'symbol';
1131 return 'object';
1132 }
1133 }
1134
1135 // 6.1.5.1 Well-Known Symbols
1136 var $$iterator = global.Symbol.iterator,
1137 $$match = global.Symbol.match,
1138 $$replace = global.Symbol.replace,
1139 $$search = global.Symbol.search,
1140 $$split = global.Symbol.split,
1141 $$toStringTag = global.Symbol.toStringTag;
1142
1143 //----------------------------------------
1144 // 7 Abstract Operations
1145 //----------------------------------------
1146
1147 //----------------------------------------
1148 // 7.1 Type Conversion
1149 //----------------------------------------
1150
1151 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1152 // just use valueOf()
1153
1154 // 7.1.2 ToBoolean ( argument )
1155 // just use Boolean()
1156
1157 // 7.1.3 ToNumber ( argument )
1158 // just use Number()
1159
1160 // 7.1.4 ToInteger ( argument )
1161 function ToInteger(n) {
1162 n = Number(n);
1163 if ($isNaN(n)) return 0;
1164 if (n === 0 || n === Infinity || n === -Infinity) return n;
1165 return ((n < 0) ? -1 : 1) * floor(abs(n));
1166 }
1167
1168 // 7.1.5 ToInt32 ( argument )
1169 function ToInt32(v) { return v >> 0; }
1170
1171 // 7.1.6 ToUint32 ( argument )
1172 function ToUint32(v) { return v >>> 0; }
1173
1174 // 7.1.7 ToInt16 ( argument )
1175 function ToInt16(v) { return (v << 16) >> 16; }
1176
1177 // 7.1.8 ToUint16 ( argument )
1178 function ToUint16(v) { return v & 0xFFFF; }
1179
1180 // 7.1.9 ToInt8 ( argument )
1181 function ToInt8(v) { return (v << 24) >> 24; }
1182
1183 // 7.1.10 ToUint8 ( argument )
1184 function ToUint8(v) { return v & 0xFF; }
1185
1186 // 7.1.11 ToUint8Clamp ( argument )
1187 function ToUint8Clamp(argument) {
1188 var number = Number(argument);
1189 if ($isNaN(number)) return 0;
1190 if (number <= 0) return 0;
1191 if (number >= 255) return 255;
1192 var f = floor(number);
1193 if ((f + 0.5) < number) return f + 1;
1194 if (number < (f + 0.5)) return f;
1195 if (f % 2) return f + 1;
1196 return f;
1197 }
1198
1199 // 7.1.12 ToString ( argument )
1200 // just use String()
1201
1202 // 7.1.13 ToObject ( argument )
1203 function ToObject(v) {
1204 if (v === null || v === undefined) throw TypeError();
1205 return Object(v);
1206 }
1207
1208 // 7.1.14 ToPropertyKey ( argument )
1209 function ToPropertyKey(v) {
1210 return String(v);
1211 }
1212
1213 // 7.1.15 ToLength ( argument )
1214 function ToLength(v) {
1215 var len = ToInteger(v);
1216 if (len <= 0) return 0;
1217 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1218 return min(len, 0x20000000000000 - 1); // 2^53-1
1219 }
1220
1221 // 7.1.16 CanonicalNumericIndexString ( argument )
1222
1223 //----------------------------------------
1224 // 7.2 Testing and Comparison Operations
1225 //----------------------------------------
1226
1227 // 7.2.1 RequireObjectCoercible ( argument )
1228 // 7.2.2 IsArray ( argument )
1229
1230 // 7.2.3 IsCallable ( argument )
1231 function IsCallable(o) { return typeof o === 'function'; }
1232
1233 // 7.2.4 IsConstructor ( argument )
1234 function IsConstructor(o) {
1235 // Hacks for Safari 7 TypedArray XXXConstructor objects
1236 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1237 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1238 // TODO: Can this be improved on?
1239 return typeof o === 'function';
1240 }
1241
1242 // 7.2.5 IsExtensible (O)
1243 // 7.2.6 IsInteger ( argument )
1244
1245 // 7.2.7 IsPropertyKey ( argument )
1246 function IsPropertyKey(argument) {
1247 if (Type(argument) === 'string') return true;
1248 if (Type(argument) === 'symbol') return true;
1249 return false;
1250 }
1251
1252 // 7.2.8 IsRegExp ( argument )
1253 // 7.2.5 IsConstructor ( argument )
1254
1255 // 7.2.9 SameValue(x, y)
1256 function SameValue(x, y) {
1257 if (typeof x !== typeof y) return false;
1258 switch (typeof x) {
1259 case 'undefined':
1260 return true;
1261 case 'number':
1262 if (x !== x && y !== y) return true;
1263 if (x === 0 && y === 0) return 1/x === 1/y;
1264 return x === y;
1265 case 'boolean':
1266 case 'string':
1267 case 'object':
1268 default:
1269 return x === y;
1270 }
1271 }
1272
1273 // 7.2.10 SameValueZero(x, y)
1274 function SameValueZero(x, y) {
1275 if (typeof x !== typeof y) return false;
1276 switch (typeof x) {
1277 case 'undefined':
1278 return true;
1279 case 'number':
1280 if (x !== x && y !== y) return true;
1281 return x === y;
1282 case 'boolean':
1283 case 'string':
1284 case 'object':
1285 default:
1286 return x === y;
1287 }
1288 }
1289
1290 //----------------------------------------
1291 // 7.3 Operations on Objects
1292 //----------------------------------------
1293
1294 // 7.3.1 Get (O, P)
1295 // - just use o.p or o[p]
1296
1297 // 7.3.2 GetV (V, P)
1298 function GetV(v, p) {
1299 var o = ToObject(v);
1300 return o[p];
1301 }
1302
1303 // 7.3.3 Set (O, P, V, Throw)
1304 // - just use o.p = v or o[p] = v
1305
1306
1307
1308
1309 // 7.3.9 GetMethod (O, P)
1310 function GetMethod(o, p) {
1311 var func = GetV(o, p);
1312 if (func === undefined || func === null) return undefined;
1313 if (!IsCallable(func)) throw TypeError();
1314 return func;
1315 }
1316
1317 // 7.3.10 HasProperty (O, P)
1318 function HasProperty(o, p) {
1319 while (o) {
1320 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1321 if (Type(o) !== 'object') return false;
1322 o = Object.getPrototypeOf(o);
1323 }
1324 return false;
1325 }
1326
1327 // 7.3.11 HasOwnProperty (O, P)
1328 function HasOwnProperty(o, p) {
1329 return Object.prototype.hasOwnProperty.call(o, p);
1330 }
1331
1332 //----------------------------------------
1333 // 7.4 Operations on Iterator Objects
1334 //----------------------------------------
1335
1336 // 7.4.1 GetIterator ( obj, method )
1337 function GetIterator(obj, method) {
1338 if (arguments.length < 2)
1339 method = GetMethod(obj, $$iterator);
1340 var iterator = method.call(obj);
1341 if (Type(iterator) !== 'object') throw TypeError();
1342 return iterator;
1343 }
1344
1345 // 7.4.2 IteratorNext ( iterator, value )
1346 function IteratorNext(iterator, value) {
1347 if (arguments.length < 2)
1348 var result = iterator.next();
1349 else
1350 result = iterator.next(value);
1351 if (Type(result) !== 'object') throw TypeError();
1352 return result;
1353 }
1354
1355 // 7.4.3 IteratorComplete ( iterResult )
1356 function IteratorComplete(iterResult) {
1357 console.assert(Type(iterResult) === 'object');
1358 return Boolean(iterResult.done);
1359 }
1360
1361 // 7.4.4 IteratorValue ( iterResult )
1362 function IteratorValue(iterResult) {
1363 console.assert(Type(iterResult) === 'object');
1364 return iterResult.value;
1365 }
1366
1367 // 7.4.5 IteratorStep ( iterator )
1368 function IteratorStep( iterator, value ) {
1369 var result = IteratorNext(iterator, value);
1370 var done = result['done'];
1371 if (Boolean(done) === true) return false;
1372 return result;
1373 }
1374
1375 // 7.4.6 IteratorClose( iterator, completion )
1376 function IteratorClose( iterator, completion ) {
1377 console.assert(Type(iterator) === 'object');
1378 var _return = GetMethod(iterator, 'return');
1379 if (_return === undefined) return completion;
1380 try {
1381 var innerResult = _return[iterator]();
1382 } catch (result) {
1383 // TODO: If completion.[[type]] is throw, return completion
1384 return result;
1385 }
1386 if (Type(innerResult) !== 'object') throw TypeError();
1387 return completion;
1388 }
1389
1390 // 7.4.7 CreateIterResultObject (value, done)
1391 function CreateIterResultObject(value, done) {
1392 console.assert(Type(done) === 'boolean');
1393 var obj = {};
1394 obj["value"] = value;
1395 obj["done"] = done;
1396 return obj;
1397 }
1398
1399 // 7.4.8 CreateListIterator (list)
1400 // 7.4.8.1 ListIterator next( )
1401 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1402 // 7.4.9.1 CompoundIterator next( )
1403
1404 //----------------------------------------
1405 // 8 Executable Code and Execution Contexts
1406 //----------------------------------------
1407
1408 //----------------------------------------
1409 // 8.4 Jobs and Job Queues
1410 //----------------------------------------
1411
1412 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1413 function EnqueueJob(queueName, job, args) {
1414 var fn = function() { job.apply(undefined, args); };
1415 enqueue(fn);
1416 }
1417
1418 // 8.4.2 NextJob result
1419 function NextJob(result) {
1420 // no-op
1421 }
1422
1423 //----------------------------------------
1424 // 9 Ordinary and Exotic Objects Behaviors
1425 //----------------------------------------
1426
1427 // 9.1.11 [[Enumerate]] ()
1428 function Enumerate(obj) {
1429 var e = [];
1430 if (Object(obj) !== obj) return e;
1431 var visited = new Set;
1432 while (obj !== null) {
1433 Object.getOwnPropertyNames(obj).forEach(function(name) {
1434 if (!visited.has(name)) {
1435 var desc = Object.getOwnPropertyDescriptor(obj, name);
1436 if (desc) {
1437 visited.add(name);
1438 if (desc.enumerable) e.push(name);
1439 }
1440 }
1441 });
1442 obj = Object.getPrototypeOf(obj);
1443 }
1444 return e[$$iterator]();
1445 }
1446
1447 // 9.1.12 [[OwnPropertyKeys]] ( )
1448 function OwnPropertyKeys(o) {
1449 return Object.getOwnPropertyNames(o);
1450 }
1451
1452 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1453 function ObjectCreate(proto, internalSlotsList) {
1454 return Object.create(proto, internalSlotsList);
1455 }
1456
1457 // ---------------------------------------
1458 // 19 Fundamental Objects
1459 // ---------------------------------------
1460
1461 // ---------------------------------------
1462 // 19.1 Object Objects
1463 // ---------------------------------------
1464
1465 // 19.1.1 The Object Constructor
1466 // 19.1.1.1 Object ( [ value ] )
1467 // 19.1.2 Properties of the Object Constructor
1468 // 19.1.2.1 Object.assign ( target, ...sources )
1469 define(
1470 Object, 'assign',
1471 function assign(target, /*...*/sources) {
1472 var to = ToObject(target);
1473 if (arguments.length < 2) return to;
1474
1475 var sourcesIndex = 1;
1476 while (sourcesIndex < arguments.length) {
1477 var nextSource = arguments[sourcesIndex++];
1478 if (nextSource === undefined || nextSource === null) {
1479 var keys = [];
1480 } else {
1481 var from = ToObject(nextSource);
1482 keys = OwnPropertyKeys(from);
1483 }
1484 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1485 var nextKey = keys[keysIndex];
1486 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1487 if (desc !== undefined && desc.enumerable) {
1488 var propValue = from[nextKey];
1489 to[nextKey] = propValue;
1490 }
1491 }
1492 }
1493 return to;
1494 });
1495
1496 // 19.1.2.2 Object.create ( O [ , Properties ] )
1497 // 19.1.2.3 Object.defineProperties ( O, Properties )
1498 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1499 // 19.1.2.5 Object.freeze ( O )
1500 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1501
1502 (function() {
1503 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1504 $getOwnPropertyNames = Object.getOwnPropertyNames,
1505 $keys = Object.keys,
1506 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1507
1508 function isStringKey(k) { return !symbolForKey(k); }
1509
1510 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1511 define(
1512 Object, 'getOwnPropertyNames',
1513 function getOwnPropertyNames(o) {
1514 if (Object.prototype.toString.call(o) === '[object Window]') {
1515 // Workaround for cross-realm calling by IE itself.
1516 // https://github.com/inexorabletash/polyfill/issues/96
1517 try {
1518 return $getOwnPropertyNames(o).filter(isStringKey);
1519 } catch (_) {
1520 return $window_names.slice();
1521 }
1522 }
1523 return $getOwnPropertyNames(o).filter(isStringKey);
1524 }, !nativeSymbols);
1525
1526 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1527 define(
1528 Object, 'getOwnPropertySymbols',
1529 function getOwnPropertySymbols(o) {
1530 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1531 }, !nativeSymbols);
1532
1533 // 19.1.2.14 Object.keys ( O )
1534 define(
1535 Object, 'keys',
1536 function keys(o) {
1537 return $keys(o).filter(isStringKey);
1538 }, !nativeSymbols);
1539 }());
1540
1541 // 19.1.2.9 Object.getPrototypeOf ( O )
1542 // 19.1.2.10 Object.is ( value1, value2 )
1543 define(
1544 Object, 'is',
1545 function is(value1, value2) {
1546 return SameValue(value1, value2);
1547 });
1548
1549 // 19.1.2.11 Object.isExtensible ( O )
1550 // 19.1.2.12 Object.isFrozen ( O )
1551 // 19.1.2.13 Object.isSealed ( O )
1552
1553 // 19.1.2.14 Object.keys ( O )
1554 // see above
1555
1556 // 19.1.2.15 Object.preventExtensions ( O )
1557 // 19.1.2.16 Object.prototype
1558 // 19.1.2.17 Object.seal ( O )
1559
1560 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1561 define(
1562 Object, 'setPrototypeOf',
1563 function setPrototypeOf(o, proto) {
1564 if (Type(o) !== 'object') throw TypeError();
1565 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1566 o.__proto__ = proto;
1567 return o;
1568 }
1569 );
1570
1571 // 19.1.3 Properties of the Object Prototype Object
1572 // 19.1.3.1 Object.prototype.constructor
1573 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1574 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1575 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1576 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1577 // 19.1.3.6 Object.prototype.toString ( )
1578 hook(Object.prototype, 'toString',
1579 function() {
1580 var o = strict(this);
1581 if (o === Object(o) && $$toStringTag in o) {
1582 return '[object ' + o[$$toStringTag] + ']';
1583 }
1584 return undefined;
1585 });
1586
1587 // 19.1.3.7 Object.prototype.valueOf ( )
1588 // 19.1.4 Properties of Object Instances
1589
1590 // ---------------------------------------
1591 // 19.2 Function Objects
1592 // ---------------------------------------
1593
1594 // 19.2.1 The Function Constructor
1595 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1596 // 19.2.2 Properties of the Function Constructor
1597 // 19.2.2.1 Function.length
1598 // 19.2.2.2 Function.prototype
1599 // 19.2.3 Properties of the Function Prototype Object
1600 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1601 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1602 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1603 // 19.2.3.4 Function.prototype.constructor
1604 // 19.2.3.5 Function.prototype.toString ( )
1605 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1606 // 19.2.4 Function Instances
1607 // 19.2.4.1 length
1608 // 19.2.4.2 name
1609 // 19.2.4.3 prototype
1610
1611 // (No polyfillable changes from ES5)
1612
1613 // ---------------------------------------
1614 // 19.3 Boolean Objects
1615 // ---------------------------------------
1616
1617 // 19.3.1 The Boolean Constructor
1618 // 19.3.1.1 Boolean ( value )
1619 // 19.3.2 Properties of the Boolean Constructor
1620 // 19.3.2.1 Boolean.prototype
1621 // 19.3.3 Properties of the Boolean Prototype Object
1622 // 19.3.3.1 Boolean.prototype.constructor
1623 // 19.3.3.2 Boolean.prototype.toString ( )
1624 // 19.3.3.3 Boolean.prototype.valueOf ( )
1625 // 19.3.4 Properties of Boolean Instances
1626
1627 // (No polyfillable changes from ES5)
1628
1629 // ---------------------------------------
1630 // 19.4 Symbol Objects
1631 // ---------------------------------------
1632
1633 // Moved earlier in this script, so that other polyfills can depend on them.
1634
1635 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1636 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1637
1638 // ---------------------------------------
1639 // 19.5 Error Objects
1640 // ---------------------------------------
1641
1642 // 19.5.1 The Error Constructor
1643 // 19.5.1.1 Error ( message )
1644 // 19.5.1.2 new Error( ...argumentsList )
1645 // 19.5.2 Properties of the Error Constructor
1646 // 19.5.2.1 Error.prototype
1647 // 19.5.3 Properties of the Error Prototype Object
1648 // 19.5.3.1 Error.prototype.constructor
1649 // 19.5.3.2 Error.prototype.message
1650 // 19.5.3.3 Error.prototype.name
1651 // 19.5.3.4 Error.prototype.toString ( )
1652 // 19.5.4 Properties of Error Instances
1653 // 19.5.5 Native Error Types Used in This Standard
1654 // 19.5.5.1 EvalError
1655 // 19.5.5.2 RangeError
1656 // 19.5.5.3 ReferenceError
1657 // 19.5.5.4 SyntaxError
1658 // 19.5.5.5 TypeError
1659 // 19.5.5.6 URIError
1660 // 19.5.6 NativeError Object Structure
1661 // 19.5.6.1 NativeError Constructors
1662 // 19.5.6.1.1 NativeError ( message )
1663 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1664 // 19.5.6.2 Properties of the NativeError Constructors
1665 // 19.5.6.2.1 NativeError.prototype
1666 // 19.5.6.3 Properties of the NativeError Prototype Objects
1667 // 19.5.6.4 Properties of NativeError Instances
1668
1669 // (No polyfillable changes from ES5)
1670
1671 // ---------------------------------------
1672 // 20 Numbers and Dates
1673 // ---------------------------------------
1674
1675 // ---------------------------------------
1676 // 20.1 Number Objects
1677 // ---------------------------------------
1678
1679 // 20.1.1 The Number Constructor
1680 // 20.1.1.1 Number ( [ value ] )
1681 // 20.1.1.2 new Number ( ...argumentsList )
1682 // 20.1.2 Properties of the Number Constructor
1683
1684 // 20.1.2.1 Number.EPSILON
1685 define(
1686 Number, 'EPSILON',
1687 (function () {
1688 var next, result;
1689 for (next = 1; 1 + next !== 1; next = next / 2)
1690 result = next;
1691 return result;
1692 }()));
1693
1694 // 20.1.2.2 Number.isFinite ( number )
1695 define(
1696 Number, 'isFinite',
1697 function isFinite(number) {
1698 if (Type(number) !== 'number') return false;
1699 if (number !== number || number === +Infinity || number === -Infinity) return false;
1700 return true;
1701 });
1702
1703 // 20.1.2.3 Number.isInteger ( number )
1704 define(
1705 Number, 'isInteger',
1706 function isInteger(number) {
1707 if (Type(number) !== 'number') return false;
1708 if (number !== number || number === +Infinity || number === -Infinity) return false;
1709 var integer = ToInteger(number);
1710 if (integer !== number) return false;
1711 return true;
1712 });
1713
1714 // 20.1.2.4 Number.isNaN ( number )
1715 define(
1716 Number, 'isNaN',
1717 function isNaN(number) {
1718 if (Type(number) !== 'number') return false;
1719 if (number !== number) return true;
1720 return false;
1721 });
1722
1723 // 20.1.2.5 Number.isSafeInteger ( number )
1724 define(
1725 Number, 'isSafeInteger',
1726 function isSafeInteger(number) {
1727 if (Type(number) !== 'number') return false;
1728 if (number !== number || number === +Infinity || number === -Infinity) return false;
1729 var integer = ToInteger(number);
1730 if (integer !== number) return false;
1731 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1732 return true;
1733 return false;
1734 });
1735
1736 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1737 define(
1738 Number, 'MAX_SAFE_INTEGER',
1739 9007199254740991); // 2^53-1
1740
1741 // 20.1.2.7 Number.MAX_VALUE
1742
1743 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1744 define(
1745 Number, 'MIN_SAFE_INTEGER',
1746 -9007199254740991); // -2^53+1
1747
1748 // 20.1.2.9 Number.MIN_VALUE
1749 // 20.1.2.10 Number.NaN
1750 // 20.1.2.11 Number.NEGATIVE_INFINITY
1751
1752 // 20.1.2.12 Number.parseFloat ( string )
1753 define(Number, 'parseFloat', $parseFloat);
1754
1755 // 20.1.2.13 Number.parseInt ( string, radix )
1756 define(Number, 'parseInt', $parseInt);
1757
1758 // 20.1.2.14 Number.POSITIVE_INFINITY
1759 // 20.1.2.15 Number.prototype
1760
1761 // 20.1.3 Properties of the Number Prototype Object
1762 // 20.1.3.1 Number.prototype.constructor
1763 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1764 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1765 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1766 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1767 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1768 // 20.1.3.7 Number.prototype.valueOf ( )
1769 // 20.1.4 Properties of Number Instances
1770
1771 // ---------------------------------------
1772 // 20.2 The Math Object
1773 // ---------------------------------------
1774
1775 // 20.2.1 Value Properties of the Math Object
1776 // 20.2.1.1 Math.E
1777 // 20.2.1.2 Math.LN10
1778 // 20.2.1.3 Math.LN2
1779 // 20.2.1.4 Math.LOG10E
1780 // 20.2.1.5 Math.LOG2E
1781 // 20.2.1.6 Math.PI
1782 // 20.2.1.7 Math.SQRT1_2
1783 // 20.2.1.8 Math.SQRT2
1784
1785 // 20.2.1.9 Math [ @@toStringTag ]
1786 define(Math, $$toStringTag, 'Math');
1787
1788 // 20.2.2 Function Properties of the Math Object
1789 // 20.2.2.1 Math.abs ( x )
1790 // 20.2.2.2 Math.acos ( x )
1791
1792 // 20.2.2.3 Math.acosh(x)
1793 define(
1794 Math, 'acosh',
1795 function acosh(x) {
1796 x = Number(x);
1797 return log(x + sqrt(x * x - 1));
1798 });
1799
1800 // 20.2.2.4 Math.asin ( x )
1801
1802 // 20.2.2.5 Math.asinh( x )
1803 define(
1804 Math, 'asinh',
1805 function asinh(x) {
1806 x = Number(x);
1807 if (SameValue(x, -0)) {
1808 return x;
1809 }
1810 var s = sqrt(x * x + 1);
1811 return (s === -x) ? log(0) : log(x + s);
1812 });
1813
1814 // 20.2.2.6 Math.atan ( x )
1815
1816 // 20.2.2.7 Math.atanh( x )
1817 define(
1818 Math, 'atanh',
1819 function atanh(x) {
1820 x = Number(x);
1821 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1822 });
1823
1824 // 20.2.2.8 Math.atan2 ( y, x )
1825
1826 // 20.2.2.9 Math.cbrt ( x )
1827 define(
1828 Math, 'cbrt',
1829 function cbrt(x) {
1830 x = Number(x);
1831 if ($isNaN(x/x)) {
1832 return x;
1833 }
1834 var r = pow(abs(x), 1/3);
1835 var t = x/r/r;
1836 return r + (r * (t-r) / (2*r + t));
1837 });
1838
1839 // 20.2.2.10 Math.ceil ( x )
1840
1841 // 20.2.2.11 Math.clz32 ( x )
1842 define(
1843 Math, 'clz32',
1844 function clz32(x) {
1845 function clz8(x) {
1846 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1847 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1848 }
1849 x = ToUint32(x);
1850 return x & 0xff000000 ? clz8(x >> 24) :
1851 x & 0xff0000 ? clz8(x >> 16) + 8 :
1852 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1853 });
1854
1855
1856
1857 // 20.2.2.12 Math.cos ( x )
1858
1859 // 20.2.2.13 Math.cosh ( x )
1860 define(
1861 Math, 'cosh',
1862 function cosh(x) {
1863 x = Number(x);
1864 return (pow(E, x) + pow(E, -x)) / 2;
1865 });
1866
1867 // 20.2.2.14 Math.exp ( x )
1868
1869 // 20.2.2.15 Math.expm1 ( x )
1870 define(
1871 Math, 'expm1',
1872 function expm1(x) {
1873 x = Number(x);
1874 // from: http://www.johndcook.com/cpp_log1p.html
1875 if (SameValue(x, -0)) {
1876 return -0;
1877 } else if (abs(x) < 1e-5) {
1878 return x + 0.5 * x * x; // two terms of Taylor expansion
1879 } else {
1880 return exp(x) - 1;
1881 }
1882 });
1883
1884 // 20.2.2.16 Math.floor ( x )
1885
1886 // 20.2.2.17 Math.fround ( x )
1887 define(
1888 Math, 'fround',
1889 function fround(x) {
1890 if ($isNaN(x)) {
1891 return NaN;
1892 }
1893 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1894 return x;
1895 }
1896 return (new Float32Array([x]))[0];
1897 });
1898
1899 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1900 define(
1901 Math, 'hypot',
1902 function hypot() {
1903 var values = [];
1904 var m = 0, sawNaN = false;
1905 for (var i = 0; i < arguments.length; ++i) {
1906 var n = abs(Number(arguments[i]));
1907 if (n === Infinity) return n;
1908 if (n !== n) sawNaN = true;
1909 if (n > m) m = n;
1910 values[i] = n;
1911 }
1912 if (sawNaN) return NaN;
1913 if (m === 0) return +0;
1914 var sum = +0;
1915 for (i = 0; i < values.length; ++i) {
1916 var r = values[i] / m;
1917 sum = sum + r * r;
1918 }
1919 return m * sqrt(sum);
1920 });
1921
1922 // 20.2.2.19 Math.imul ( x, y )
1923 define(
1924 Math, 'imul',
1925 function imul(x, y) {
1926 var a = ToUint32(x);
1927 var b = ToUint32(y);
1928 // (slow but accurate)
1929 var ah = (a >>> 16) & 0xffff;
1930 var al = a & 0xffff;
1931 var bh = (b >>> 16) & 0xffff;
1932 var bl = b & 0xffff;
1933 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1934 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1935 );
1936
1937 // 20.2.2.20 Math.log ( x )
1938
1939 // 20.2.2.21 Math.log1p ( x )
1940 define(
1941 Math, 'log1p',
1942 function log1p(x) {
1943 x = Number(x);
1944 // from: http://www.johndcook.com/cpp_expm1.html
1945 if (x < -1) {
1946 return NaN;
1947 } else if (SameValue(x, -0)) {
1948 return -0;
1949 } else if (abs(x) > 1e-4) {
1950 return log(1 + x);
1951 } else {
1952 return (-0.5 * x + 1) * x;
1953 }
1954 });
1955
1956 // 20.2.2.22 Math.log10 ( x )
1957 define(
1958 Math, 'log10',
1959 function log10(x) {
1960 x = Number(x);
1961 return log(x) * LOG10E;
1962 });
1963
1964 // 20.2.2.23 Math.log2 ( x )
1965 define(
1966 Math, 'log2',
1967 function log2(x) {
1968 x = Number(x);
1969 return log(x) * LOG2E;
1970 });
1971
1972 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1973 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1974 // 20.2.2.26 Math.pow ( x, y )
1975 // 20.2.2.27 Math.random ( )
1976 // 20.2.2.28 Math.round ( x )
1977
1978 // 20.2.2.29 Math.sign(x)
1979 define(
1980 Math, 'sign',
1981 function sign(x) {
1982 x = Number(x);
1983 return x < 0 ? -1 : x > 0 ? 1 : x;
1984 });
1985
1986 // 20.2.2.30 Math.sin ( x )
1987
1988 // 20.2.2.31 Math.sinh( x )
1989 define(
1990 Math, 'sinh',
1991 function sinh(x) {
1992 x = Number(x);
1993 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1994 });
1995
1996 // 20.2.2.32 Math.sqrt ( x )
1997 // 20.2.2.33 Math.tan ( x )
1998
1999 // 20.2.2.34 Math.tanh ( x )
2000 define(
2001 Math, 'tanh',
2002 function tanh(x) {
2003 x = Number(x);
2004 var n = pow(E, 2 * x) - 1,
2005 d = pow(E, 2 * x) + 1;
2006 if (SameValue(x, -0))
2007 return x;
2008 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
2009 });
2010
2011 // 20.2.2.35 Math.trunc ( x )
2012 define(
2013 Math, 'trunc',
2014 function trunc(x) {
2015 x = Number(x);
2016 return $isNaN(x) ? NaN :
2017 x < 0 ? ceil(x) : floor(x);
2018 });
2019
2020 // ---------------------------------------
2021 // 20.3 Date Objects
2022 // ---------------------------------------
2023
2024 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2025 // 20.3.1.1 Time Values and Time Range
2026 // 20.3.1.2 Day Number and Time within Day
2027 // 20.3.1.3 Year Number
2028 // 20.3.1.4 Month Number
2029 // 20.3.1.5 Date Number
2030 // 20.3.1.6 Week Day
2031 // 20.3.1.7 Local Time Zone Adjustment
2032 // 20.3.1.8 Daylight Saving Time Adjustment
2033 // 20.3.1.9 Local Time
2034 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
2035 // 20.3.1.11 MakeTime (hour, min, sec, ms)
2036 // 20.3.1.12 MakeDay (year, month, date)
2037 // 20.3.1.13 MakeDate (day, time)
2038 // 20.3.1.14 TimeClip (time)
2039 // 20.3.1.15 Date Time String Format
2040 // 20.3.1.15.1 Extended years
2041 // 20.3.2 The Date Constructor
2042 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2043 // 20.3.2.2 Date ( value )
2044 // 20.3.2.3 Date ( )
2045 // 20.3.3 Properties of the Date Constructor
2046 // 20.3.3.1 Date.now ( )
2047 // 20.3.3.2 Date.parse (string)
2048 // 20.3.3.3 Date.prototype
2049 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2050 // 20.3.4 Properties of the Date Prototype Object
2051 // 20.3.4.1 Date.prototype.constructor
2052 // 20.3.4.2 Date.prototype.getDate ( )
2053 // 20.3.4.3 Date.prototype.getDay ( )
2054 // 20.3.4.4 Date.prototype.getFullYear ( )
2055 // 20.3.4.5 Date.prototype.getHours ( )
2056 // 20.3.4.6 Date.prototype.getMilliseconds ( )
2057 // 20.3.4.7 Date.prototype.getMinutes ( )
2058 // 20.3.4.8 Date.prototype.getMonth ( )
2059 // 20.3.4.9 Date.prototype.getSeconds ( )
2060 // 20.3.4.10 Date.prototype.getTime ( )
2061 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
2062 // 20.3.4.12 Date.prototype.getUTCDate ( )
2063 // 20.3.4.13 Date.prototype.getUTCDay ( )
2064 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
2065 // 20.3.4.15 Date.prototype.getUTCHours ( )
2066 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2067 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
2068 // 20.3.4.18 Date.prototype.getUTCMonth ( )
2069 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
2070 // 20.3.4.20 Date.prototype.setDate ( date )
2071 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2072 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2073 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
2074 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2075 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2076 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2077 // 20.3.4.27 Date.prototype.setTime ( time )
2078 // 20.3.4.28 Date.prototype.setUTCDate ( date )
2079 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2080 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2081 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2082 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2083 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2084 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2085 // 20.3.4.35 Date.prototype.toDateString ( )
2086 // 20.3.4.36 Date.prototype.toISOString ( )
2087 // 20.3.4.37 Date.prototype.toJSON ( key )
2088 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2089 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2090 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2091 // 20.3.4.41 Date.prototype.toString ( )
2092 // 20.3.4.42 Date.prototype.toTimeString ( )
2093 // 20.3.4.43 Date.prototype.toUTCString ( )
2094 // 20.3.4.44 Date.prototype.valueOf ( )
2095 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2096 // 20.3.5 Properties of Date Instances
2097
2098 // (No polyfillable changes from ES5)
2099
2100 // ---------------------------------------
2101 // 21 Text Processing
2102 // ---------------------------------------
2103
2104 var string_regexp_dispatch = (function() {
2105 var faux = {}, secret = Symbol();
2106 faux[Symbol.match] = function() { return secret; };
2107 return ("").match(faux) === secret;
2108 }());
2109
2110 // 21.1 String Objects
2111 // 21.1.1 The String Constructor
2112 // 21.1.1.1 String ( value )
2113 // 21.1.2 Properties of the String Constructor
2114 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2115
2116 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2117 define(
2118 String, 'fromCodePoint',
2119 function fromCodePoint(/*...codePoints*/) {
2120 var codePoints = arguments,
2121 length = codePoints.length,
2122 elements = [],
2123 nextIndex = 0;
2124 while (nextIndex < length) {
2125 var next = codePoints[nextIndex];
2126 var nextCP = Number(next);
2127 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2128 nextCP < 0 || nextCP > 0x10FFFF) {
2129 throw RangeError('Invalid code point ' + nextCP);
2130 }
2131 if (nextCP < 0x10000) {
2132 elements.push(String.fromCharCode(nextCP));
2133 } else {
2134 nextCP -= 0x10000;
2135 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2136 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2137 }
2138 nextIndex += 1;
2139 }
2140 return elements.join('');
2141 });
2142
2143 // 21.1.2.3 String.prototype
2144
2145 // 21.1.2.4 String.raw ( template , ...substitutions )
2146 define(
2147 String, 'raw',
2148 function raw(template /*, ...substitutions*/) {
2149 var substitutions = [].slice.call(arguments, 1);
2150
2151 var cooked = Object(template);
2152 var rawValue = cooked['raw'];
2153 var raw = Object(rawValue);
2154 var len = raw['length'];
2155 var literalSegments = ToLength(len);
2156 if (literalSegments <= 0) return '';
2157 var stringElements = [];
2158 var nextIndex = 0;
2159 while (true) {
2160 var next = raw[nextIndex];
2161 var nextSeg = String(next);
2162 stringElements.push(nextSeg);
2163 if (nextIndex + 1 === literalSegments)
2164 return stringElements.join('');
2165 next = substitutions[nextIndex];
2166 var nextSub = String(next);
2167 stringElements.push(nextSub);
2168 nextIndex = nextIndex + 1;
2169 }
2170 });
2171
2172 // See https://githib.com/inexorabletash/uate for a more useful version.
2173
2174 // 21.1.3 Properties of the String Prototype Object
2175 // 21.1.3.1 String.prototype.charAt ( pos )
2176 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2177
2178 // 21.1.3.3 String.prototype.codePointAt ( pos )
2179 define(
2180 String.prototype, 'codePointAt',
2181 function codePointAt(pos) {
2182 var o = strict(this);
2183 var s = String(o);
2184 var position = ToInteger(pos);
2185 var size = s.length;
2186 if (position < 0 || position >= size) return undefined;
2187 var first = s.charCodeAt(position);
2188 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2189 var second = s.charCodeAt(position + 1);
2190 if (second < 0xDC00 || second > 0xDFFF) return first;
2191 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2192 });
2193
2194 // 21.1.3.4 String.prototype.concat ( ...args )
2195 // 21.1.3.5 String.prototype.constructor
2196
2197 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2198 define(
2199 String.prototype, 'endsWith',
2200 function endsWith(searchString) {
2201 var endPosition = arguments[1];
2202
2203 var o = strict(this);
2204 var s = String(o);
2205 var searchStr = String(searchString);
2206 var len = s.length;
2207 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2208 var end = min(max(pos, 0), len);
2209 var searchLength = searchStr.length;
2210 var start = end - searchLength;
2211 if (start < 0) return false;
2212 if (s.substring(start, start + searchLength) === searchStr) return true;
2213 return false;
2214 });
2215
2216 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2217 define(
2218 String.prototype, 'includes',
2219 function includes(searchString) {
2220 var position = arguments[1];
2221
2222 var o = strict(this);
2223 var s = String(o);
2224 var searchStr = String(searchString);
2225 var pos = ToInteger(position);
2226 var len = s.length;
2227 var start = min(max(pos, 0), len);
2228 return s.indexOf(searchStr, start) !== -1;
2229 });
2230
2231 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2232 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2233 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2234 // 21.1.3.11 String.prototype.match ( regexp )
2235 define(
2236 String.prototype, 'match',
2237 function match(regexp) {
2238 var o = strict(this);
2239 var s = String(o);
2240 if (HasProperty(regexp, $$match)) var rx = regexp;
2241 else rx = new RegExp(regexp);
2242 return rx[$$match](s);
2243 }, !string_regexp_dispatch);
2244
2245 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2246
2247 // Not practical due to table sizes; if needed, pull in:
2248 // https://github.com/walling/unorm/
2249
2250 // 21.1.3.13 String.prototype.repeat ( count )
2251 define(
2252 String.prototype, 'repeat',
2253 function repeat(count) {
2254 var o = strict(this);
2255 var s = String(o);
2256 var n = ToInteger(count);
2257 if (n < 0) throw RangeError();
2258 if (n === Infinity) throw RangeError();
2259 var t = new Array(n + 1).join(s);
2260 return t;
2261 });
2262
2263 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2264 define(
2265 String.prototype, 'replace',
2266 function replace(searchValue, replaceValue) {
2267 var o = strict(this);
2268 if (HasProperty(searchValue, $$replace))
2269 return searchValue[$$replace](o, replaceValue);
2270 return orig_replace.call(o, searchValue, replaceValue);
2271 }, !string_regexp_dispatch);
2272
2273 // 21.1.3.15 String.prototype.search ( regexp )
2274 define(
2275 String.prototype, 'search',
2276 function search(regexp) {
2277 var o = strict(this);
2278 var string = String(o);
2279 if (HasProperty(regexp, $$search)) var rx = regexp;
2280 else rx = new RegExp(regexp);
2281 return rx[$$search](string);
2282 }, !string_regexp_dispatch);
2283
2284 // 21.1.3.16 String.prototype.slice ( start, end )
2285 // 21.1.3.17 String.prototype.split ( separator, limit )
2286 define(
2287 String.prototype, 'split',
2288 function split(separator, limit) {
2289 var o = strict(this);
2290 if (HasProperty(separator, $$split))
2291 return separator[$$split](o, limit);
2292 return orig_split.call(o, separator, limit);
2293 }, !string_regexp_dispatch);
2294
2295 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2296 define(
2297 String.prototype, 'startsWith',
2298 function startsWith(searchString) {
2299 var position = arguments[1];
2300
2301 var o = strict(this);
2302 var s = String(o);
2303 var searchStr = String(searchString);
2304 var pos = ToInteger(position);
2305 var len = s.length;
2306 var start = min(max(pos, 0), len);
2307 var searchLength = searchStr.length;
2308 if (searchLength + start > len) return false;
2309 if (s.substring(start, start + searchLength) === searchStr) return true;
2310 return false;
2311 });
2312
2313 // 21.1.3.19 String.prototype.substring ( start, end )
2314 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2315 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2316 // 21.1.3.22 String.prototype.toLowerCase ( )
2317 // 21.1.3.23 String.prototype.toString ( )
2318 // 21.1.3.24 String.prototype.toUpperCase ( )
2319 // 21.1.3.25 String.prototype.trim ( )
2320 // 21.1.3.26 String.prototype.valueOf ( )
2321
2322 // 21.1.3.27 String.prototype [ @@iterator ]( )
2323 define(
2324 String.prototype, $$iterator,
2325 function entries() {
2326 return CreateStringIterator(this, 'value');
2327 });
2328
2329 // 21.1.4 Properties of String Instances
2330 // 21.1.4.1 length
2331
2332 // 21.1.5 String Iterator Objects
2333 /** @constructor */
2334 function StringIterator() {}
2335
2336 // 21.1.5.1 CreateStringIterator Abstract Operation
2337 function CreateStringIterator(string, kind) {
2338 var s = String(string);
2339 var iterator = new StringIterator;
2340 set_internal(iterator, '[[IteratedString]]', s);
2341 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2342 set_internal(iterator, '[[StringIterationKind]]', kind);
2343 return iterator;
2344 }
2345
2346 // 21.1.5.2 The %StringIteratorPrototype% Object
2347 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2348 StringIterator.prototype = $StringIteratorPrototype$;
2349
2350 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2351 define(
2352 $StringIteratorPrototype$, 'next',
2353 function next() {
2354 var o = ToObject(this);
2355 var s = String(o['[[IteratedString]]']),
2356 index = o['[[StringIteratorNextIndex]]'],
2357 len = s.length;
2358 if (index >= len) {
2359 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2360 return CreateIterResultObject(undefined, true);
2361 }
2362 var cp = s.codePointAt(index);
2363 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2364 return CreateIterResultObject(String.fromCodePoint(cp), false);
2365 });
2366
2367 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2368 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2369
2370 // 21.1.5.3 Properties of String Iterator Instances
2371
2372 // ---------------------------------------
2373 // 21.2 RegExp (Regular Expression) Objects
2374 // ---------------------------------------
2375
2376 // 21.2.1 Patterns
2377 // 21.2.2 Pattern Semantics
2378 // 21.2.2.1 Notation
2379 // 21.2.2.2 Pattern
2380 // 21.2.2.3 Disjunction
2381 // 21.2.2.4 Alternative
2382 // 21.2.2.5 Term
2383 // 21.2.2.6 Assertion
2384 // 21.2.2.7 Quantifier
2385 // 21.2.2.8 Atom
2386 // 21.2.2.9 AtomEscape
2387 // 21.2.2.10 CharacterEscape
2388 // 21.2.2.11 DecimalEscape
2389 // 21.2.2.12 CharacterClassEscape
2390 // 21.2.2.13 CharacterClass
2391 // 21.2.2.14 ClassRanges
2392 // 21.2.2.15 NonemptyClassRanges
2393 // 21.2.2.16 NonemptyClassRangesNoDash
2394 // 21.2.2.17 ClassAtom
2395 // 21.2.2.18 ClassAtomNoDash
2396 // 21.2.2.19 ClassEscape
2397 // 21.2.3 The RegExp Constructor
2398 // 21.2.3.1 RegExp ( pattern, flags )
2399 // 21.2.3.2 new RegExp( ...argumentsList )
2400 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2401 // 21.2.4 Properties of the RegExp Constructor
2402 // 21.2.4.1 RegExp.prototype
2403 // 21.2.5 Properties of the RegExp Prototype Object
2404 // 21.2.5.1 RegExp.prototype.constructor
2405 // 21.2.5.2 RegExp.prototype.exec ( string )
2406
2407 // 21.2.5.3 get RegExp.prototype.flags
2408 if (!('flags' in RegExp.prototype)) {
2409 Object.defineProperty(
2410 RegExp.prototype, 'flags', {
2411 get: function() {
2412 var s = String(this);
2413 return s.substring(s.lastIndexOf('/') + 1);
2414 }
2415 });
2416 }
2417
2418 // 21.2.5.4 get RegExp.prototype.global
2419 // 21.2.5.5 get RegExp.prototype.ignoreCase
2420
2421 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2422 define(RegExp.prototype, $$match, function(string) {
2423 var o = strict(this);
2424 return orig_match.call(string, o);
2425 });
2426
2427 // 21.2.5.7 get RegExp.prototype.multiline
2428
2429 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2430 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2431 var o = strict(this);
2432 return orig_replace.call(string, o, replaceValue);
2433 });
2434
2435 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2436 define(RegExp.prototype, $$search, function(string) {
2437 var o = strict(this);
2438 return orig_search.call(string, o);
2439 });
2440
2441 // 21.2.5.10 get RegExp.prototype.source
2442
2443 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2444 define(RegExp.prototype, $$split, function(string, limit) {
2445 var o = strict(this);
2446 return orig_split.call(string, o, limit);
2447 });
2448
2449 // 21.2.5.12 get RegExp.prototype.sticky
2450 // 21.2.5.13 RegExp.prototype.test( S )
2451 // 21.2.5.14 RegExp.prototype.toString ( )
2452 // 21.2.5.15 get RegExp.prototype.unicode
2453
2454 // 21.2.6 Properties of RegExp Instances
2455 // 21.2.6.1 lastIndex
2456
2457 // (No polyfillable changes from ES5)
2458
2459 // ---------------------------------------
2460 // 22 Indexed Collections
2461 // ---------------------------------------
2462
2463 // ---------------------------------------
2464 // 22.1 Array Objects
2465 // ---------------------------------------
2466
2467 // 22.1.1 The Array Constructor
2468 // 22.1.1.1 Array ( )
2469 // 22.1.1.2 Array (len)
2470 // 22.1.1.3 Array (...items )
2471
2472 // 22.1.2 Properties of the Array Constructor
2473
2474 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2475 define(
2476 Array, 'from',
2477 function from(items) {
2478 var mapfn = arguments[1];
2479 var thisArg = arguments[2];
2480
2481 var c = strict(this);
2482 if (mapfn === undefined) {
2483 var mapping = false;
2484 } else {
2485 if (!IsCallable(mapfn)) throw TypeError();
2486 var t = thisArg;
2487 mapping = true;
2488 }
2489 var usingIterator = GetMethod(items, $$iterator);
2490 if (usingIterator !== undefined) {
2491 if (IsConstructor(c)) {
2492 var a = new c();
2493 } else {
2494 a = new Array(0);
2495 }
2496 var iterator = GetIterator(items, usingIterator);
2497 var k = 0;
2498 while (true) {
2499 var next = IteratorStep(iterator);
2500 if (next === false) {
2501 a.length = k;
2502 return a;
2503 }
2504 var nextValue = IteratorValue(next);
2505 if (mapping)
2506 var mappedValue = mapfn.call(t, nextValue);
2507 else
2508 mappedValue = nextValue;
2509 a[k] = mappedValue;
2510 k += 1;
2511 }
2512 }
2513 var arrayLike = ToObject(items);
2514 var lenValue = arrayLike.length;
2515 var len = ToLength(lenValue);
2516 if (IsConstructor(c)) {
2517 a = new c(len);
2518 } else {
2519 a = new Array(len);
2520 }
2521 k = 0;
2522 while (k < len) {
2523 var kValue = arrayLike[k];
2524 if (mapping)
2525 mappedValue = mapfn.call(t, kValue, k);
2526 else
2527 mappedValue = kValue;
2528 a[k] = mappedValue;
2529 k += 1;
2530 }
2531 a.length = len;
2532 return a;
2533 });
2534
2535 // 22.1.2.2 Array.isArray ( arg )
2536
2537 // 22.1.2.3 Array.of ( ...items )
2538 define(
2539 Array, 'of',
2540 function of() {
2541 var items = arguments;
2542
2543 var lenValue = items.length;
2544 var len = ToUint32(lenValue);
2545 var c = strict(this), a;
2546 if (IsConstructor(c)) {
2547 a = new c(len);
2548 a = ToObject(a);
2549 } else {
2550 a = new Array(len);
2551 }
2552 var k = 0;
2553 while (k < len) {
2554 a[k] = items[k];
2555 k += 1;
2556 }
2557 a.length = len;
2558 return a;
2559 });
2560
2561 // 22.1.2.4 Array.prototype
2562 // 22.1.2.5 get Array [ @@species ]
2563 // 22.1.3 Properties of the Array Prototype Object
2564 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2565 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2566 // 22.1.3.2 Array.prototype.constructor
2567 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2568 define(
2569 Array.prototype, 'copyWithin',
2570 function copyWithin(target, start/*, end*/) {
2571 var end = arguments[2];
2572
2573 var o = ToObject(this);
2574 var lenVal = o.length;
2575 var len = ToLength(lenVal);
2576 len = max(len, 0);
2577 var relativeTarget = ToInteger(target);
2578 var to;
2579 if (relativeTarget < 0)
2580 to = max(len + relativeTarget, 0);
2581 else
2582 to = min(relativeTarget, len);
2583 var relativeStart = ToInteger(start);
2584 var from;
2585 if (relativeStart < 0)
2586 from = max(len + relativeStart, 0);
2587 else
2588 from = min(relativeStart, len);
2589 var relativeEnd;
2590 if (end === undefined)
2591 relativeEnd = len;
2592 else
2593 relativeEnd = ToInteger(end);
2594 var final;
2595 if (relativeEnd < 0)
2596 final = max(len + relativeEnd, 0);
2597 else
2598 final = min(relativeEnd, len);
2599 var count = min(final - from, len - to);
2600 var direction;
2601 if (from < to && to < from + count) {
2602 direction = -1;
2603 from = from + count - 1;
2604 to = to + count - 1;
2605 } else {
2606 direction = 1;
2607 }
2608 while (count > 0) {
2609 var fromKey = String(from);
2610 var toKey = String(to);
2611 var fromPresent = HasProperty(o, fromKey);
2612 if (fromPresent) {
2613 var fromVal = o[fromKey];
2614 o[toKey] = fromVal;
2615 } else {
2616 delete o[toKey];
2617 }
2618 from = from + direction;
2619 to = to + direction;
2620 count = count - 1;
2621 }
2622 return o;
2623 });
2624
2625 // 22.1.3.4 Array.prototype.entries ( )
2626 var nativeArrayIteratorMethods =
2627 ('entries' in Array.prototype && 'next' in [].entries());
2628
2629 define(
2630 Array.prototype, 'entries',
2631 function entries() {
2632 return CreateArrayIterator(this, 'key+value');
2633 }, !nativeArrayIteratorMethods);
2634
2635 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2636
2637 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2638 define(
2639 Array.prototype, 'fill',
2640 function fill(value/*, start, end*/) {
2641 var start = arguments[1],
2642 end = arguments[2];
2643
2644 var o = ToObject(this);
2645 var lenVal = o.length;
2646 var len = ToLength(lenVal);
2647 len = max(len, 0);
2648 var relativeStart = ToInteger(start);
2649 var k;
2650 if (relativeStart < 0)
2651 k = max((len + relativeStart), 0);
2652 else
2653 k = min(relativeStart, len);
2654 var relativeEnd;
2655 if (end === undefined)
2656 relativeEnd = len;
2657 else
2658 relativeEnd = ToInteger(end);
2659 var final;
2660 if (relativeEnd < 0)
2661 final = max((len + relativeEnd), 0);
2662 else
2663 final = min(relativeEnd, len);
2664 while (k < final) {
2665 var pk = String(k);
2666 o[pk] = value;
2667 k += 1;
2668 }
2669 return o;
2670 });
2671
2672 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2673
2674 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2675 define(
2676 Array.prototype, 'find',
2677 function find(predicate) {
2678 var o = ToObject(this);
2679 var lenValue = o.length;
2680 var len = ToInteger(lenValue);
2681 if (!IsCallable(predicate)) throw TypeError();
2682 var t = arguments.length > 1 ? arguments[1] : undefined;
2683 var k = 0;
2684 while (k < len) {
2685 var pk = String(k);
2686 var kPresent = HasProperty(o, pk);
2687 if (kPresent) {
2688 var kValue = o[pk];
2689 var testResult = predicate.call(t, kValue, k, o);
2690 if (Boolean(testResult)) {
2691 return kValue;
2692 }
2693 }
2694 ++k;
2695 }
2696 return undefined;
2697 });
2698
2699 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2700 define(
2701 Array.prototype, 'findIndex',
2702 function findIndex(predicate) {
2703 var o = ToObject(this);
2704 var lenValue = o.length;
2705 var len = ToLength(lenValue);
2706 if (!IsCallable(predicate)) throw TypeError();
2707 var t = arguments.length > 1 ? arguments[1] : undefined;
2708 var k = 0;
2709 while (k < len) {
2710 var pk = String(k);
2711 var kPresent = HasProperty(o, pk);
2712 if (kPresent) {
2713 var kValue = o[pk];
2714 var testResult = predicate.call(t, kValue, k, o);
2715 if (Boolean(testResult)) {
2716 return k;
2717 }
2718 }
2719 ++k;
2720 }
2721 return -1;
2722 });
2723
2724 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2725 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2726 // 22.1.3.12 Array.prototype.join (separator)
2727
2728 // 22.1.3.13 Array.prototype.keys ( )
2729 define(
2730 Array.prototype, 'keys',
2731 function keys() {
2732 return CreateArrayIterator(this, 'key');
2733 }, !nativeArrayIteratorMethods);
2734
2735 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2736 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2737 // 22.1.3.16 Array.prototype.pop ( )
2738 // 22.1.3.17 Array.prototype.push ( ...items )
2739 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2740 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2741 // 22.1.3.20 Array.prototype.reverse ( )
2742 // 22.1.3.21 Array.prototype.shift ( )
2743 // 22.1.3.22 Array.prototype.slice (start, end)
2744 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2745 // 22.1.3.24 Array.prototype.sort (comparefn)
2746 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2747 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2748 // 22.1.3.27 Array.prototype.toString ( )
2749 // 22.1.3.28 Array.prototype.unshift ( ...items )
2750
2751 // 22.1.3.29 Array.prototype.values ( )
2752 define(
2753 Array.prototype, 'values',
2754 function values() {
2755 return CreateArrayIterator(this, 'value');
2756 }, !nativeArrayIteratorMethods);
2757
2758 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2759 define(
2760 Array.prototype, $$iterator,
2761 Array.prototype.values
2762 );
2763
2764 // 22.1.3.31 Array.prototype [ @@unscopables ]
2765 // 22.1.4 Properties of Array Instances
2766 // 22.1.4.1 length
2767
2768 // 22.1.5 Array Iterator Objects
2769 function ArrayIterator() {}
2770
2771 // 22.1.5.1 CreateArrayIterator Abstract Operation
2772 function CreateArrayIterator(array, kind) {
2773 var o = ToObject(array);
2774 var iterator = new ArrayIterator;
2775 set_internal(iterator, '[[IteratedObject]]', o);
2776 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2777 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2778 return iterator;
2779 }
2780
2781 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2782 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2783 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2784
2785 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2786 define(
2787 $ArrayIteratorPrototype$, 'next',
2788 function next() {
2789 var o = strict(this);
2790 if (Type(o) !== 'object') throw TypeError();
2791 var a = o['[[IteratedObject]]'],
2792 index = o['[[ArrayIteratorNextIndex]]'],
2793 itemKind = o['[[ArrayIterationKind]]'],
2794 lenValue = a.length,
2795 len = ToUint32(lenValue),
2796 elementKey,
2797 elementValue;
2798 if (itemKind.indexOf('sparse') !== -1) {
2799 var found = false;
2800 while (!found && index < len) {
2801 elementKey = String(index);
2802 found = HasProperty(a, elementKey);
2803 if (!found) {
2804 index += 1;
2805 }
2806 }
2807 }
2808 if (index >= len) {
2809 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2810 return CreateIterResultObject(undefined, true);
2811 }
2812 elementKey = index;
2813 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2814 if (itemKind.indexOf('value') !== -1)
2815 elementValue = a[elementKey];
2816 if (itemKind.indexOf('key+value') !== -1)
2817 return CreateIterResultObject([elementKey, elementValue], false);
2818 if (itemKind.indexOf('key') !== -1)
2819 return CreateIterResultObject(elementKey, false);
2820 if (itemKind === 'value')
2821 return CreateIterResultObject(elementValue, false);
2822 throw Error('Internal error');
2823 });
2824
2825 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2826 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2827
2828 // 22.1.5.3 Properties of Array Iterator Instances
2829
2830
2831 // ---------------------------------------
2832 // 22.2 TypedArray Objects
2833 // ---------------------------------------
2834
2835 // See typedarray.js for TypedArray polyfill
2836
2837 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2838 'Int16Array', 'Uint16Array',
2839 'Int32Array', 'Uint32Array',
2840 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2841 if (!($TypedArrayName$ in global))
2842 return;
2843 var $TypedArray$ = global[$TypedArrayName$];
2844
2845 // 22.2.1 The %TypedArray% Intrinsic Object
2846 // 22.2.1.1 %TypedArray% ( length )
2847 // 22.2.1.2 %TypedArray% ( typedArray )
2848 // 22.2.1.3 %TypedArray% ( object )
2849 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2850 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2851 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2852
2853 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2854 define(
2855 $TypedArray$, 'from',
2856 function from(source) {
2857 var mapfn = arguments[1];
2858 var thisArg = arguments[2];
2859
2860 var c = strict(this);
2861 if (!IsConstructor(c)) throw TypeError();
2862 if (mapfn === undefined) {
2863 var mapping = false;
2864 } else {
2865 if (IsCallable(mapfn)) throw TypeError();
2866 var t = thisArg;
2867 mapping = true;
2868 }
2869 var usingIterator = GetMethod(source, $$iterator);
2870 if (usingIterator !== undefined) {
2871 var iterator = GetIterator(source, usingIterator);
2872 var values = [];
2873 var next = true;
2874 while (next !== false) {
2875 next = IteratorStep(iterator);
2876 if (next !== false) {
2877 var nextValue = IteratorValue(next);
2878 values.push(nextValue);
2879 }
2880 }
2881 var len = values.length;
2882 var newObj = new c(len);
2883 var k = 0;
2884 while (k < len) {
2885 var kValue = values.shift();
2886 if (mapping) {
2887 var mappedValue = mapfn.call(t, kValue);
2888 } else {
2889 mappedValue = kValue;
2890 }
2891 newObj[k] = mappedValue;
2892 ++k;
2893 }
2894 console.assert(values.length === 0);
2895 return newObj;
2896 }
2897 var arrayLike = ToObject(source);
2898 var lenValue = arrayLike.length;
2899 len = ToLength(lenValue);
2900 newObj = new c(len);
2901 k = 0;
2902 while (k < len) {
2903 kValue = arrayLike[k];
2904 if (mapping) {
2905 mappedValue = mapfn.call(t, kValue, k);
2906 } else {
2907 mappedValue = kValue;
2908 }
2909 newObj[k] = mappedValue;
2910 ++k;
2911 }
2912 return newObj;
2913 });
2914
2915 // 22.2.2.2 %TypedArray%.of ( ...items )
2916 define(
2917 $TypedArray$, 'of',
2918 function of() {
2919 var items = arguments;
2920
2921 var len = items.length;
2922 var c = strict(this);
2923 var newObj = new c(len);
2924 var k = 0;
2925 while (k < len) {
2926 newObj[k] = items[k];
2927 ++k;
2928 }
2929 return newObj;
2930 });
2931
2932 // 22.2.2.3 %TypedArray%.prototype
2933 // 22.2.2.4 get %TypedArray% [ @@species ]
2934 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2935 // 22.2.3.1 get %TypedArray%.prototype.buffer
2936 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2937 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2938 // 22.2.3.4 %TypedArray%.prototype.constructor
2939
2940 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2941 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2942
2943 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2944 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2945
2946 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2947 define($TypedArray$.prototype, 'every', Array.prototype.every);
2948
2949 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2950 define(
2951 $TypedArray$.prototype, 'fill',
2952 //Array.prototype.fill // Doesn't work in Safari 7
2953 function fill(value/*, start, end*/) {
2954 var start = arguments[1],
2955 end = arguments[2];
2956
2957 var o = ToObject(this);
2958 var lenVal = o.length;
2959 var len = ToLength(lenVal);
2960 len = max(len, 0);
2961 var relativeStart = ToInteger(start);
2962 var k;
2963 if (relativeStart < 0) k = max((len + relativeStart), 0);
2964 else k = min(relativeStart, len);
2965 var relativeEnd;
2966 if (end === undefined) relativeEnd = len;
2967 else relativeEnd = ToInteger(end);
2968 var final;
2969 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2970 else final = min(relativeEnd, len);
2971 while (k < final) {
2972 var pk = String(k);
2973 o[pk] = value;
2974 k += 1;
2975 }
2976 return o;
2977 });
2978
2979 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2980 define(
2981 $TypedArray$.prototype, 'filter',
2982 function filter(callbackfn) {
2983 var thisArg = arguments[1];
2984
2985 var o = ToObject(this);
2986 var lenVal = o.length;
2987 var len = ToLength(lenVal);
2988 if (!IsCallable(callbackfn)) throw TypeError();
2989 var t = thisArg;
2990 var c = o.constructor;
2991 var kept = [];
2992 var k = 0;
2993 var captured = 0;
2994 while (k < len) {
2995 var kValue = o[k];
2996 var selected = callbackfn.call(t, kValue, k, o);
2997 if (selected) {
2998 kept.push(kValue);
2999 ++captured;
3000 }
3001 ++k;
3002 }
3003 var a = new c(captured);
3004 var n = 0;
3005 for (var i = 0; i < kept.length; ++i) {
3006 var e = kept[i];
3007 a[n] = e;
3008 ++n;
3009 }
3010 return a;
3011 });
3012
3013 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
3014 define($TypedArray$.prototype, 'find', Array.prototype.find);
3015
3016 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
3017 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
3018
3019 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
3020 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3021
3022 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3023 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3024
3025 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
3026 define($TypedArray$.prototype, 'join', Array.prototype.join);
3027
3028 // 22.2.3.15 %TypedArray%.prototype.keys ( )
3029 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3030
3031 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3032 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3033
3034 // 22.2.3.17 get %TypedArray%.prototype.length
3035
3036 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3037 define(
3038 $TypedArray$.prototype, 'map',
3039 function map(callbackfn) {
3040 var thisArg = arguments[1];
3041
3042 var o = ToObject(this);
3043 var lenValue = o.length;
3044 var len = ToLength(lenValue);
3045 if (!IsCallable(callbackfn)) throw TypeError();
3046 var t = thisArg;
3047 var a = undefined;
3048 var c = o.constructor;
3049 if (IsConstructor(c))
3050 a = new c(len);
3051 if (a === undefined)
3052 a = new Array(len);
3053 var k = 0;
3054 while (k < len) {
3055 var kPresent = HasProperty(o, k);
3056 if (kPresent) {
3057 var kValue = o[k];
3058 var mappedValue = callbackfn.call(t, kValue, k, o);
3059 a[k] = mappedValue;
3060 }
3061 ++k;
3062 }
3063 return a;
3064 });
3065
3066 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3067 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3068
3069 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3070 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3071
3072 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
3073 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3074
3075 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3076 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3077 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3078
3079 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3080 define(
3081 $TypedArray$.prototype, 'slice',
3082 function slice(start, end) {
3083 var o = ToObject(this);
3084 var lenVal = o.length;
3085 var len = ToLength(lenVal);
3086 var relativeStart = ToInteger(start);
3087 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
3088 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3089 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
3090 var count = final - k;
3091 var c = o.constructor;
3092 if (IsConstructor(c)) {
3093 var a = new c(count);
3094 } else {
3095 throw TypeError();
3096 }
3097 var n = 0;
3098 while (k < final) {
3099 var kValue = o[k];
3100 a[n] = kValue;
3101 ++k;
3102 ++n;
3103 }
3104 return a;
3105 });
3106
3107 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3108 define($TypedArray$.prototype, 'some', Array.prototype.some);
3109
3110 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3111 define(
3112 $TypedArray$.prototype, 'sort',
3113 function sort() {
3114 var comparefn = arguments[0];
3115
3116 function sortCompare(x, y) {
3117 console.assert(Type(x) === 'number' && Type(y) === 'number');
3118 if (x !== x && y !== y) return +0;
3119 if (x !== x) return 1;
3120 if (y !== y) return -1;
3121 if (comparefn !== undefined) {
3122 return comparefn(x, y);
3123 }
3124 if (x < y) return -1;
3125 if (x > y) return 1;
3126 return +0;
3127 }
3128 return Array.prototype.sort.call(this, sortCompare);
3129 });
3130
3131 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3132 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3133 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3134
3135 // 22.2.3.29 %TypedArray%.prototype.values ( )
3136 define($TypedArray$.prototype, 'values', Array.prototype.values);
3137
3138 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3139 define(
3140 $TypedArray$.prototype, $$iterator,
3141 $TypedArray$.prototype.values
3142 );
3143
3144 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3145 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3146
3147 // 22.2.4 The TypedArray Constructors
3148 // 22.2.4.1TypedArray( ... argumentsList)
3149 // 22.2.5 Properties of the TypedArray Constructors
3150 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3151 // 22.2.5.2 TypedArray.prototype
3152 // 22.2.6 Properties of TypedArray Prototype Objects
3153 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3154 // 22.2.6.2 TypedArray.prototype.constructor
3155 // 22.2.7 Properties of TypedArray Instances
3156 });
3157
3158 // ---------------------------------------
3159 // 23 Keyed Collection
3160 // ---------------------------------------
3161
3162 // ---------------------------------------
3163 // 23.1 Map Objects
3164 // ---------------------------------------
3165
3166 (function() {
3167 // 23.1.1 The Map Constructor
3168
3169 // 23.1.1.1 Map ( [ iterable ] )
3170 /** @constructor */
3171 function Map(/*iterable*/) {
3172 var map = strict(this);
3173 var iterable = arguments[0];
3174
3175 if (Type(map) !== 'object') throw TypeError();
3176 if ('[[MapData]]' in map) throw TypeError();
3177
3178 if (iterable !== undefined) {
3179 var adder = map['set'];
3180 if (!IsCallable(adder)) throw TypeError();
3181 var iter = GetIterator(ToObject(iterable));
3182 }
3183 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3184 if (iter === undefined) return map;
3185 while (true) {
3186 var next = IteratorStep(iter);
3187 if (next === false)
3188 return map;
3189 var nextItem = IteratorValue(next);
3190 if (Type(nextItem) !== 'object') throw TypeError();
3191 var k = nextItem[0];
3192 var v = nextItem[1];
3193 adder.call(map, k, v);
3194 }
3195
3196 return map;
3197 }
3198
3199 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3200 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3201 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3202 (new global.Map([['a', 1]]).size !== 1))
3203 global.Map = Map;
3204
3205
3206 function MapDataIndexOf(mapData, key) {
3207 var i;
3208 if (key === key) return mapData.keys.indexOf(key);
3209 // Slow case for NaN
3210 for (i = 0; i < mapData.keys.length; i += 1)
3211 if (SameValueZero(mapData.keys[i], key)) return i;
3212 return -1;
3213 }
3214
3215 // 23.1.1.2 new Map ( ... argumentsList )
3216 // 23.1.2 Properties of the Map Constructor
3217 // 23.1.2.1 Map.prototype
3218 var $MapPrototype$ = {};
3219 Map.prototype = $MapPrototype$;
3220
3221 // 23.1.2.2 get Map [ @@species ]
3222
3223 // 23.1.3 Properties of the Map Prototype Object
3224 // 23.1.3.1 Map.prototype.clear ()
3225 define(
3226 Map.prototype, 'clear',
3227 function clear() {
3228 var m = strict(this);
3229 if (Type(m) !== 'object') throw TypeError();
3230 if (!('[[MapData]]' in m)) throw TypeError();
3231 if (m['[[MapData]]'] === undefined) throw TypeError();
3232 var entries = m['[[MapData]]'];
3233 entries.keys.length = 0;
3234 entries.values.length = 0;
3235 return undefined;
3236 });
3237
3238 // 23.1.3.2 Map.prototype.constructor
3239
3240 // 23.1.3.3 Map.prototype.delete ( key )
3241 define(
3242 Map.prototype, 'delete',
3243 function delete_(key) {
3244 var m = strict(this);
3245 if (Type(m) !== 'object') throw TypeError();
3246 if (!('[[MapData]]' in m)) throw TypeError();
3247 if (m['[[MapData]]'] === undefined) throw TypeError();
3248 var entries = m['[[MapData]]'];
3249 var i = MapDataIndexOf(entries, key);
3250 if (i < 0) return false;
3251 entries.keys[i] = empty;
3252 entries.values[i] = empty;
3253 return true;
3254 });
3255
3256 // 23.1.3.4 Map.prototype.entries ( )
3257 define(
3258 Map.prototype, 'entries',
3259 function entries() {
3260 var m = strict(this);
3261 if (Type(m) !== 'object') throw TypeError();
3262 return CreateMapIterator(m, 'key+value');
3263 });
3264
3265 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3266 define(
3267 Map.prototype, 'forEach',
3268 function forEach(callbackfn /*, thisArg*/) {
3269 var thisArg = arguments[1];
3270
3271 var m = strict(this);
3272 if (Type(m) !== 'object') throw TypeError();
3273 if (!('[[MapData]]' in m)) throw TypeError();
3274 if (m['[[MapData]]'] === undefined) throw TypeError();
3275 var entries = m['[[MapData]]'];
3276
3277 if (!IsCallable(callbackfn)) {
3278 throw TypeError('First argument to forEach is not callable.');
3279 }
3280 for (var i = 0; i < entries.keys.length; ++i) {
3281 if (entries.keys[i] !== empty) {
3282 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3283 }
3284 }
3285 return undefined;
3286 });
3287
3288 // 23.1.3.6 Map.prototype.get ( key )
3289 define(
3290 Map.prototype, 'get',
3291 function get(key) {
3292 var m = strict(this);
3293 if (Type(m) !== 'object') throw TypeError();
3294 if (!('[[MapData]]' in m)) throw TypeError();
3295 if (m['[[MapData]]'] === undefined) throw TypeError();
3296 var entries = m['[[MapData]]'];
3297 var i = MapDataIndexOf(entries, key);
3298 if (i >= 0) return entries.values[i];
3299 return undefined;
3300 });
3301
3302 // 23.1.3.7 Map.prototype.has ( key )
3303 define(
3304 Map.prototype, 'has',
3305 function has(key) {
3306 var m = strict(this);
3307 if (Type(m) !== 'object') throw TypeError();
3308 if (!('[[MapData]]' in m)) throw TypeError();
3309 if (m['[[MapData]]'] === undefined) throw TypeError();
3310 var entries = m['[[MapData]]'];
3311 if (MapDataIndexOf(entries, key) >= 0) return true;
3312 return false;
3313 });
3314
3315 // 23.1.3.8 Map.prototype.keys ( )
3316 define(
3317 Map.prototype, 'keys',
3318 function keys() {
3319 var m = strict(this);
3320 if (Type(m) !== 'object') throw TypeError();
3321 return CreateMapIterator(m, 'key');
3322 });
3323
3324 // 23.1.3.9 Map.prototype.set ( key , value )
3325 define(
3326 Map.prototype, 'set',
3327 function set(key, value) {
3328 var m = strict(this);
3329 if (Type(m) !== 'object') throw TypeError();
3330 if (!('[[MapData]]' in m)) throw TypeError();
3331 if (m['[[MapData]]'] === undefined) throw TypeError();
3332 var entries = m['[[MapData]]'];
3333 var i = MapDataIndexOf(entries, key);
3334 if (i < 0) i = entries.keys.length;
3335 if (SameValue(key, -0)) key = 0;
3336 entries.keys[i] = key;
3337 entries.values[i] = value;
3338 return m;
3339 });
3340
3341 // 23.1.3.10 get Map.prototype.size
3342 Object.defineProperty(
3343 Map.prototype, 'size', {
3344 get: function() {
3345 var m = strict(this);
3346 if (Type(m) !== 'object') throw TypeError();
3347 if (!('[[MapData]]' in m)) throw TypeError();
3348 if (m['[[MapData]]'] === undefined) throw TypeError();
3349 var entries = m['[[MapData]]'];
3350 var count = 0;
3351 for (var i = 0; i < entries.keys.length; ++i) {
3352 if (entries.keys[i] !== empty)
3353 count = count + 1;
3354 }
3355 return count;
3356 }
3357 });
3358
3359 // 23.1.3.11 Map.prototype.values ( )
3360 define(
3361 Map.prototype, 'values',
3362 function values() {
3363 var m = strict(this);
3364 if (Type(m) !== 'object') throw TypeError();
3365 return CreateMapIterator(m, 'value');
3366 });
3367
3368 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3369 define(
3370 Map.prototype, $$iterator,
3371 function() {
3372 var m = strict(this);
3373 if (Type(m) !== 'object') throw TypeError();
3374 return CreateMapIterator(m, 'key+value');
3375 });
3376
3377 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3378 define(global.Map.prototype, $$toStringTag, 'Map');
3379
3380 // 23.1.4 Properties of Map Instances
3381 // 23.1.5 Map Iterator Objects
3382
3383 /** @constructor */
3384 function MapIterator() {}
3385
3386 // 23.1.5.1 CreateMapIterator Abstract Operation
3387 function CreateMapIterator(map, kind) {
3388 if (Type(map) !== 'object') throw TypeError();
3389 if (!('[[MapData]]' in map)) throw TypeError();
3390 if (map['[[MapData]]'] === undefined) throw TypeError();
3391 var iterator = new MapIterator;
3392 set_internal(iterator, '[[Map]]', map);
3393 set_internal(iterator, '[[MapNextIndex]]', 0);
3394 set_internal(iterator, '[[MapIterationKind]]', kind);
3395 return iterator;
3396 }
3397
3398 // 23.1.5.2 The %MapIteratorPrototype% Object
3399 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3400 MapIterator.prototype = $MapIteratorPrototype$;
3401
3402 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3403 define(
3404 $MapIteratorPrototype$, 'next',
3405 function next() {
3406 var o = strict(this);
3407 if (Type(o) !== 'object') throw TypeError();
3408 var m = o['[[Map]]'],
3409 index = o['[[MapNextIndex]]'],
3410 itemKind = o['[[MapIterationKind]]'],
3411 entries = m['[[MapData]]'];
3412 while (index < entries.keys.length) {
3413 var e = {key: entries.keys[index], value: entries.values[index]};
3414 index = index += 1;
3415 set_internal(o, '[[MapNextIndex]]', index);
3416 if (e.key !== empty) {
3417 if (itemKind === 'key') {
3418 return CreateIterResultObject(e.key, false);
3419 } else if (itemKind === 'value') {
3420 return CreateIterResultObject(e.value, false);
3421 } else {
3422 return CreateIterResultObject([e.key, e.value], false);
3423 }
3424 }
3425 }
3426 return CreateIterResultObject(undefined, true);
3427 });
3428
3429 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3430 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3431
3432 // 23.1.5.3 Properties of Map Iterator Instances
3433 }());
3434
3435 // ---------------------------------------
3436 // 23.2 Set Objects
3437 // ---------------------------------------
3438
3439 (function() {
3440 // 23.2.1 The Set Constructor
3441 // 23.2.1.1 Set ( [ iterable ] )
3442
3443 /** @constructor */
3444 function Set(/*iterable*/) {
3445 var set = strict(this);
3446 var iterable = arguments[0];
3447
3448 if (Type(set) !== 'object') throw TypeError();
3449 if ('[[SetData]]' in set) throw TypeError();
3450
3451 if (iterable !== undefined) {
3452 var adder = set['add'];
3453 if (!IsCallable(adder)) throw TypeError();
3454 var iter = GetIterator(ToObject(iterable));
3455 }
3456 set_internal(set, '[[SetData]]', []);
3457 if (iter === undefined) return set;
3458 while (true) {
3459 var next = IteratorStep(iter);
3460 if (next === false)
3461 return set;
3462 var nextValue = IteratorValue(next);
3463 adder.call(set, nextValue);
3464 }
3465
3466 return set;
3467 }
3468
3469 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3470 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3471 (new global.Set([1]).size !== 1))
3472 global.Set = Set;
3473
3474 function SetDataIndexOf(setData, key) {
3475 var i;
3476 if (key === key)
3477 return setData.indexOf(key);
3478 // Slow case for NaN
3479 for (i = 0; i < setData.length; i += 1)
3480 if (SameValueZero(setData[i], key)) return i;
3481 return -1;
3482 }
3483
3484 // 23.2.1.2 new Set ( ...argumentsList )
3485 // 23.2.2 Properties of the Set Constructor
3486
3487 // 23.2.2.1 Set.prototype
3488 var $SetPrototype$ = {};
3489 Set.prototype = $SetPrototype$;
3490
3491 // 23.2.2.2 get Set [ @@species ]
3492 // 23.2.3 Properties of the Set Prototype Object
3493
3494 // 23.2.3.1 Set.prototype.add (value )
3495 define(
3496 Set.prototype, 'add',
3497 function add(value) {
3498 var s = strict(this);
3499 if (Type(s) !== 'object') throw TypeError();
3500 if (!('[[SetData]]' in s)) throw TypeError();
3501 if (s['[[SetData]]'] === undefined) throw TypeError();
3502 if (SameValue(value, -0)) value = 0;
3503 var entries = s['[[SetData]]'];
3504 var i = SetDataIndexOf(entries, value);
3505 if (i < 0) i = s['[[SetData]]'].length;
3506 s['[[SetData]]'][i] = value;
3507
3508 return s;
3509 });
3510
3511 // 23.2.3.2 Set.prototype.clear ()
3512 define(
3513 Set.prototype, 'clear',
3514 function clear() {
3515 var s = strict(this);
3516 if (Type(s) !== 'object') throw TypeError();
3517 if (!('[[SetData]]' in s)) throw TypeError();
3518 if (s['[[SetData]]'] === undefined) throw TypeError();
3519 var entries = s['[[SetData]]'];
3520 entries.length = 0;
3521 return undefined;
3522 });
3523
3524 // 23.2.3.3 Set.prototype.constructor
3525 // 23.2.3.4 Set.prototype.delete ( value )
3526 define(
3527 Set.prototype, 'delete',
3528 function delete_(value) {
3529 var s = strict(this);
3530 if (Type(s) !== 'object') throw TypeError();
3531 if (!('[[SetData]]' in s)) throw TypeError();
3532 if (s['[[SetData]]'] === undefined) throw TypeError();
3533 var entries = s['[[SetData]]'];
3534 var i = SetDataIndexOf(entries, value);
3535 if (i < 0) return false;
3536 entries[i] = empty;
3537 return true;
3538 });
3539
3540 // 23.2.3.5 Set.prototype.entries ( )
3541 define(
3542 Set.prototype, 'entries',
3543 function entries() {
3544 var s = strict(this);
3545 if (Type(s) !== 'object') throw TypeError();
3546 return CreateSetIterator(s, 'key+value');
3547 });
3548
3549 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3550 define(
3551 Set.prototype, 'forEach',
3552 function forEach(callbackfn/*, thisArg*/) {
3553 var thisArg = arguments[1];
3554
3555 var s = strict(this);
3556 if (Type(s) !== 'object') throw TypeError();
3557 if (!('[[SetData]]' in s)) throw TypeError();
3558 if (s['[[SetData]]'] === undefined) throw TypeError();
3559 var entries = s['[[SetData]]'];
3560
3561 if (!IsCallable(callbackfn)) {
3562 throw TypeError('First argument to forEach is not callable.');
3563 }
3564 for (var i = 0; i < entries.length; ++i) {
3565 if (entries[i] !== empty) {
3566 callbackfn.call(thisArg, entries[i], entries[i], s);
3567 }
3568 }
3569 });
3570
3571 // 23.2.3.7 Set.prototype.has ( value )
3572 define(
3573 Set.prototype, 'has',
3574 function has(key) {
3575 var s = strict(this);
3576 if (Type(s) !== 'object') throw TypeError();
3577 if (!('[[SetData]]' in s)) throw TypeError();
3578 if (s['[[SetData]]'] === undefined) throw TypeError();
3579 var entries = s['[[SetData]]'];
3580 return SetDataIndexOf(entries, key) !== -1;
3581 });
3582
3583 // 23.2.3.8 Set.prototype.keys ( )
3584 // See Set.prototype.values
3585
3586 // 23.2.3.9 get Set.prototype.size
3587 Object.defineProperty(
3588 Set.prototype, 'size', {
3589 get: function() {
3590 var s = strict(this);
3591 if (Type(s) !== 'object') throw TypeError();
3592 if (!('[[SetData]]' in s)) throw TypeError();
3593 if (s['[[SetData]]'] === undefined) throw TypeError();
3594 var entries = s['[[SetData]]'];
3595 var count = 0;
3596 for (var i = 0; i < entries.length; ++i) {
3597 if (entries[i] !== empty)
3598 count = count + 1;
3599 }
3600 return count;
3601 }
3602 });
3603
3604 // 23.2.3.10 Set.prototype.values ( )
3605 define(
3606 Set.prototype, 'values',
3607 function values() {
3608 var s = strict(this);
3609 if (Type(s) !== 'object') throw TypeError();
3610 return CreateSetIterator(s, 'value');
3611 });
3612 // NOTE: function name is still 'values':
3613 Set.prototype.keys = Set.prototype.values;
3614
3615 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3616 define(
3617 Set.prototype, $$iterator,
3618 function() {
3619 var s = strict(this);
3620 if (Type(s) !== 'object') throw TypeError();
3621 return CreateSetIterator(s);
3622 });
3623
3624 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3625 define(global.Set.prototype, $$toStringTag, 'Set');
3626
3627 // 23.2.4 Properties of Set Instances
3628 // 23.2.5 Set Iterator Objects
3629 /** @constructor */
3630 function SetIterator() {}
3631
3632 // 23.2.5.1 CreateSetIterator Abstract Operation
3633 function CreateSetIterator(set, kind) {
3634 if (Type(set) !== 'object') throw TypeError();
3635 if (!('[[SetData]]' in set)) throw TypeError();
3636 if (set['[[SetData]]'] === undefined) throw TypeError();
3637 var iterator = new SetIterator;
3638 set_internal(iterator, '[[IteratedSet]]', set);
3639 set_internal(iterator, '[[SetNextIndex]]', 0);
3640 set_internal(iterator, '[[SetIterationKind]]', kind);
3641 return iterator;
3642 }
3643
3644 // 23.2.5.2 The %SetIteratorPrototype% Object
3645 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3646 SetIterator.prototype = $SetIteratorPrototype$;
3647
3648 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3649 define(
3650 $SetIteratorPrototype$, 'next',
3651 function next() {
3652 var o = strict(this);
3653 if (Type(o) !== 'object') throw TypeError();
3654 var s = o['[[IteratedSet]]'],
3655 index = o['[[SetNextIndex]]'],
3656 itemKind = o['[[SetIterationKind]]'],
3657 entries = s['[[SetData]]'];
3658 while (index < entries.length) {
3659 var e = entries[index];
3660 index = index += 1;
3661 set_internal(o, '[[SetNextIndex]]', index);
3662 if (e !== empty) {
3663 if (itemKind === 'key+value')
3664 return CreateIterResultObject([e, e], false);
3665 return CreateIterResultObject(e, false);
3666 }
3667 }
3668 return CreateIterResultObject(undefined, true);
3669 });
3670
3671 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3672 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3673
3674 // 23.2.5.3 Properties of Set Iterator Instances
3675
3676 }());
3677
3678 // ---------------------------------------
3679 // 23.3 WeakMap Objects
3680 // ---------------------------------------
3681
3682 (function() {
3683 // 23.3.1 The WeakMap Constructor
3684 // 23.3.1.1 WeakMap ( [ iterable ] )
3685 /** @constructor */
3686 function WeakMap(/*iterable*/) {
3687 var map = strict(this);
3688 var iterable = arguments[0];
3689
3690 if (Type(map) !== 'object') throw TypeError();
3691 if ('[[WeakMapData]]' in map) throw TypeError();
3692
3693 if (iterable !== undefined) {
3694 var adder = map['set'];
3695 if (!IsCallable(adder)) throw TypeError();
3696 var iter = GetIterator(ToObject(iterable));
3697 }
3698 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3699 if (iter === undefined) return map;
3700 while (true) {
3701 var next = IteratorStep(iter);
3702 if (next === false)
3703 return map;
3704 var nextValue = IteratorValue(next);
3705 if (Type(nextValue) !== 'object') throw TypeError();
3706 var k = nextValue[0];
3707 var v = nextValue[1];
3708 adder.call(map, k, v);
3709 }
3710
3711 return map;
3712 }
3713
3714 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3715 global.WeakMap = WeakMap;
3716
3717 // 23.3.2 Properties of the WeakMap Constructor
3718 // 23.3.2.1 WeakMap.prototype
3719 var $WeakMapPrototype$ = {};
3720 WeakMap.prototype = $WeakMapPrototype$;
3721
3722
3723
3724 // 23.3.2.2 WeakMap[ @@create ] ( )
3725 // 23.3.3 Properties of the WeakMap Prototype Object
3726
3727 // 23.3.3.1 WeakMap.prototype.constructor
3728
3729 // 23.3.3.2 WeakMap.prototype.delete ( key )
3730 define(
3731 WeakMap.prototype, 'delete',
3732 function delete_(key) {
3733 var M = strict(this);
3734 if (Type(M) !== 'object') throw TypeError();
3735 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3736 if (Type(key) !== 'object') throw TypeError('Expected object');
3737 return M['[[WeakMapData]]'].remove(key);
3738 });
3739
3740 // 23.3.3.3 WeakMap.prototype.get ( key )
3741 define(
3742 WeakMap.prototype, 'get',
3743 function get(key, defaultValue) {
3744 var M = strict(this);
3745 if (Type(M) !== 'object') throw TypeError();
3746 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3747 if (Type(key) !== 'object') throw TypeError('Expected object');
3748 return M['[[WeakMapData]]'].get(key, defaultValue);
3749 });
3750
3751 // 23.3.3.4 WeakMap.prototype.has ( key )
3752 define(
3753 WeakMap.prototype, 'has',
3754 function has(key) {
3755 var M = strict(this);
3756 if (Type(M) !== 'object') throw TypeError();
3757 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3758 if (Type(key) !== 'object') throw TypeError('Expected object');
3759 return M['[[WeakMapData]]'].has(key);
3760 });
3761
3762 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3763 define(
3764 WeakMap.prototype, 'set',
3765 function set(key, value) {
3766 var M = strict(this);
3767 if (Type(M) !== 'object') throw TypeError();
3768 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3769 if (Type(key) !== 'object') throw TypeError('Expected object');
3770 M['[[WeakMapData]]'].set(key, value);
3771 return M;
3772 });
3773
3774 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3775 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3776
3777 // 23.3.4 Properties of WeakMap Instances
3778
3779 // Polyfills for incomplete native implementations:
3780 (function() {
3781 var wm = new global.WeakMap();
3782 var orig = global.WeakMap.prototype.set;
3783 define(global.WeakMap.prototype, 'set', function set() {
3784 orig.apply(this, arguments);
3785 return this;
3786 }, wm.set({}, 0) !== wm);
3787 }());
3788 }());
3789
3790 // ---------------------------------------
3791 // 23.4 WeakSet Objects
3792 // ---------------------------------------
3793
3794 (function() {
3795 // 23.4.1 The WeakSet Constructor
3796 // 23.4.1.1 WeakSet ( [ iterable ] )
3797 /** @constructor */
3798 function WeakSet(/*iterable*/) {
3799 var set = strict(this);
3800 var iterable = arguments[0];
3801
3802 if (Type(set) !== 'object') throw TypeError();
3803 if ('[[WeakSetData]]' in set) throw TypeError();
3804
3805 if (iterable !== undefined) {
3806 var adder = set['add'];
3807 if (!IsCallable(adder)) throw TypeError();
3808 var iter = GetIterator(ToObject(iterable));
3809 }
3810 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3811 if (iter === undefined) return set;
3812 while (true) {
3813 var next = IteratorStep(iter);
3814 if (next === false)
3815 return set;
3816 var nextValue = IteratorValue(next);
3817 adder.call(set, nextValue);
3818 }
3819
3820 return set;
3821 }
3822
3823 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3824 global.WeakSet = WeakSet;
3825
3826 // 23.4.2 Properties of the WeakSet Constructor
3827 // 23.4.2.1 WeakSet.prototype
3828 var $WeakSetPrototype$ = {};
3829 WeakSet.prototype = $WeakSetPrototype$;
3830
3831 // 23.4.3 Properties of the WeakSet Prototype Object
3832 // 23.4.3.1 WeakSet.prototype.add (value )
3833 define(
3834 WeakSet.prototype, 'add',
3835 function add(value) {
3836 var S = strict(this);
3837 if (Type(S) !== 'object') throw TypeError();
3838 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3839 if (Type(value) !== 'object') throw TypeError('Expected object');
3840 S['[[WeakSetData]]'].set(value, true);
3841 return S;
3842 });
3843
3844 // 23.4.3.2 WeakSet.prototype.constructor
3845 // 23.4.3.3 WeakSet.prototype.delete ( value )
3846 define(
3847 WeakSet.prototype, 'delete',
3848 function delete_(value) {
3849 var S = strict(this);
3850 if (Type(S) !== 'object') throw TypeError();
3851 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3852 if (Type(value) !== 'object') throw TypeError('Expected object');
3853 return S['[[WeakSetData]]'].remove(value);
3854 });
3855
3856 // 23.4.3.4 WeakSet.prototype.has ( value )
3857 define(
3858 WeakSet.prototype, 'has',
3859 function has(key) {
3860 var S = strict(this);
3861 if (Type(S) !== 'object') throw TypeError();
3862 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3863 if (Type(key) !== 'object') throw TypeError('Expected object');
3864 return S['[[WeakSetData]]'].has(key);
3865 });
3866
3867 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3868 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3869
3870 // 23.4.4 Properties of WeakSet Instances
3871
3872 // Polyfills for incomplete native implementations:
3873 (function() {
3874 var ws = new global.WeakSet();
3875 var orig = global.WeakSet.prototype.add;
3876 define(global.WeakSet.prototype, 'add', function add() {
3877 orig.apply(this, arguments);
3878 return this;
3879 }, ws.add({}) !== ws);
3880 }());
3881 }());
3882
3883 // ---------------------------------------
3884 // 24 Structured Data
3885 // ---------------------------------------
3886
3887 // ---------------------------------------
3888 // 24.1 ArrayBuffer Objects
3889 // ---------------------------------------
3890
3891 // See typedarray.js for TypedArray polyfill
3892
3893 (function() {
3894 if (!('ArrayBuffer' in global))
3895 return;
3896
3897 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3898 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3899 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3900 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3901 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3902 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3903 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3904 // 24.1.2 The ArrayBuffer Constructor
3905 // 24.1.2.1 ArrayBuffer( length )
3906 // 24.1.3 Properties of the ArrayBuffer Constructor
3907
3908 // 24.1.3.1 ArrayBuffer.isView ( arg )
3909 define(
3910 ArrayBuffer, 'isView',
3911 function isView(arg) {
3912 if (Type(arg) !== 'object') return false;
3913 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3914 return false;
3915 });
3916
3917 // 24.1.3.2 ArrayBuffer.prototype
3918 // 24.1.3.3 get ArrayBuffer [ @@species ]
3919 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3920 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3921 // 24.1.4.2 ArrayBuffer.prototype.constructor
3922 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3923
3924 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3925 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3926
3927 // 24.1.5 Properties of the ArrayBuffer Instances
3928 }());
3929
3930 // ---------------------------------------
3931 // 24.2 DataView Objects
3932 // ---------------------------------------
3933
3934 // See typedarray.js for TypedArray polyfill
3935
3936 (function() {
3937 if (!('DataView' in global))
3938 return;
3939
3940 // 24.2.1 Abstract Operations For DataView Objects
3941 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3942 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3943 // 24.2.2 The DataView Constructor
3944 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3945 // 24.2.3 Properties of the DataView Constructor
3946 // 24.2.3.1 DataView.prototype
3947 // 24.2.4 Properties of the DataView Prototype Object
3948 // 24.2.4.1 get DataView.prototype.buffer
3949 // 24.2.4.2 get DataView.prototype.byteLength
3950 // 24.2.4.3 get DataView.prototype.byteOffset
3951 // 24.2.4.4 DataView.prototype.constructor
3952 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3953 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3954 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3955 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3956 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3957 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3958 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3959 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3960 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3961 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3962 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3963 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3964 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3965 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3966 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3967 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3968
3969 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3970 define(DataView.prototype, $$toStringTag, 'DataView');
3971
3972 // 24.2.5 Properties of DataView Instances
3973 }());
3974
3975 // ---------------------------------------
3976 // 24.3 The JSON Object
3977 // ---------------------------------------
3978
3979 // 24.3.1 JSON.parse ( text [ , reviver ] )
3980 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3981 // 24.3.3 JSON [ @@toStringTag ]
3982 define(JSON, $$toStringTag, 'JSON');
3983
3984 // ---------------------------------------
3985 // 25.1 Iteration
3986 // ---------------------------------------
3987
3988 // 25.1.1 Common Iteration Interfaces
3989 // 25.1.1.1 The Iterable Interface
3990 // 25.1.1.2 The Iterator Interface
3991 // 25.1.1.3 The IteratorResult Interface
3992
3993 // 25.1.2 The %IteratorPrototype% Object
3994 // Defined earlier, so other prototypes can reference it.
3995 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3996 define($IteratorPrototype$, $$iterator, function() {
3997 return this;
3998 });
3999
4000
4001 // ---------------------------------------
4002 // 25.4 Promise Objects
4003 // ---------------------------------------
4004
4005 (function() {
4006 // 25.4 Promise Objects
4007
4008 // 25.4.1 Promise Abstract Operations
4009
4010 // 25.4.1.1 PromiseCapability Records
4011 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
4012
4013 function IfAbruptRejectPromise(value, capability) {
4014 var rejectResult = capability['[[Reject]]'].call(undefined, value);
4015 return capability['[[Promise]]'];
4016 }
4017
4018 // 25.4.1.2 PromiseReaction Records
4019
4020 // 25.4.1.3 CreateResolvingFunctions ( promise )
4021
4022 function CreateResolvingFunctions(promise) {
4023 var alreadyResolved = {'[[value]]': false};
4024 var resolve = PromiseResolveFunction();
4025 set_internal(resolve, '[[Promise]]', promise);
4026 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4027 var reject = PromiseRejectFunction();
4028 set_internal(reject, '[[Promise]]', promise);
4029 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4030 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4031 }
4032
4033 // 25.4.1.3.1 Promise Reject Functions
4034
4035 function PromiseRejectFunction() {
4036 var F = function(reason) {
4037 console.assert(Type(F['[[Promise]]']) === 'object');
4038 var promise = F['[[Promise]]'];
4039 var alreadyResolved = F['[[AlreadyResolved]]'];
4040 if (alreadyResolved['[[value]]']) return undefined;
4041 set_internal(alreadyResolved, '[[value]]', true);
4042 return RejectPromise(promise, reason);
4043 };
4044 return F;
4045 }
4046
4047 // 25.4.1.3.2 Promise Resolve Functions
4048
4049 function PromiseResolveFunction() {
4050 var F = function(resolution) {
4051 console.assert(Type(F['[[Promise]]']) === 'object');
4052 var promise = F['[[Promise]]'];
4053 var alreadyResolved = F['[[AlreadyResolved]]'];
4054 if (alreadyResolved['[[value]]']) return undefined;
4055 set_internal(alreadyResolved, '[[value]]', true);
4056
4057 if (SameValue(resolution, promise)) {
4058 var selfResolutionError = TypeError();
4059 return RejectPromise(promise, selfResolutionError);
4060 }
4061 if (Type(resolution) !== 'object')
4062 return FulfillPromise(promise, resolution);
4063 try {
4064 var then = resolution['then'];
4065 } catch(then) {
4066 return RejectPromise(promise, then);
4067 }
4068 if (!IsCallable(then))
4069 return FulfillPromise(promise, resolution);
4070 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4071 return undefined;
4072 };
4073 return F;
4074 }
4075
4076 // 25.4.1.4 FulfillPromise ( promise, value )
4077
4078 function FulfillPromise(promise, value) {
4079 console.assert(promise['[[PromiseState]]'] === 'pending');
4080 var reactions = promise['[[PromiseFulfillReactions]]'];
4081 set_internal(promise, '[[PromiseResult]]', value);
4082 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4083 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4084 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4085 return TriggerPromiseReactions(reactions, value);
4086 }
4087
4088 // 25.4.1.5 NewPromiseCapability ( C )
4089
4090 function NewPromiseCapability(c) {
4091 // To keep Promise hermetic, this doesn't look much like the spec.
4092 return CreatePromiseCapabilityRecord(undefined, c);
4093 }
4094
4095 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4096
4097 function CreatePromiseCapabilityRecord(promise, constructor) {
4098 // To keep Promise hermetic, this doesn't look much like the spec.
4099 console.assert(IsConstructor(constructor));
4100 var promiseCapability = {};
4101 set_internal(promiseCapability, '[[Promise]]', promise);
4102 set_internal(promiseCapability, '[[Resolve]]', undefined);
4103 set_internal(promiseCapability, '[[Reject]]', undefined);
4104 var executor = GetCapabilitiesExecutor();
4105 set_internal(executor, '[[Capability]]', promiseCapability);
4106
4107 // NOTE: Differs from spec; object is constructed here
4108 var constructorResult = promise = new constructor(executor);
4109 set_internal(promiseCapability, '[[Promise]]', promise);
4110
4111 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4112 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4113 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4114 return promiseCapability;
4115 }
4116
4117 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4118
4119 function GetCapabilitiesExecutor() {
4120 var F = function(resolve, reject) {
4121 console.assert(F['[[Capability]]']);
4122 var promiseCapability = F['[[Capability]]'];
4123 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4124 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4125 set_internal(promiseCapability, '[[Resolve]]', resolve);
4126 set_internal(promiseCapability, '[[Reject]]', reject);
4127 return undefined;
4128 };
4129 return F;
4130 }
4131
4132 // 25.4.1.6 IsPromise ( x )
4133
4134 function IsPromise(x) {
4135 if (Type(x) !== 'object') return false;
4136 if (!('[[PromiseState]]' in x)) return false;
4137 if (x['[[PromiseState]]'] === undefined) return false;
4138 return true;
4139 }
4140
4141 // 25.4.1.7 RejectPromise ( promise, reason )
4142
4143 function RejectPromise(promise, reason) {
4144 console.assert(promise['[[PromiseState]]'] === 'pending');
4145 var reactions = promise['[[PromiseRejectReactions]]'];
4146 set_internal(promise, '[[PromiseResult]]', reason);
4147 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4148 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4149 set_internal(promise, '[[PromiseState]]', 'rejected');
4150 return TriggerPromiseReactions(reactions, reason);
4151 }
4152
4153 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4154
4155 function TriggerPromiseReactions(reactions, argument) {
4156 for (var i = 0, len = reactions.length; i < len; ++i)
4157 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4158 return undefined;
4159 }
4160
4161 // 25.4.2 Promise Jobs
4162
4163 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4164
4165 function PromiseReactionJob(reaction, argument) {
4166 var promiseCapability = reaction['[[Capabilities]]'];
4167 var handler = reaction['[[Handler]]'];
4168 var handlerResult, status;
4169 try {
4170 if (handler === 'Identity') handlerResult = argument;
4171 else if (handler === 'Thrower') throw argument;
4172 else handlerResult = handler.call(undefined, argument);
4173 } catch (handlerResult) {
4174 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4175 NextJob(status); return;
4176 }
4177 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4178 NextJob(status);
4179 }
4180
4181 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4182
4183 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4184 // SPEC BUG: promise vs. promiseToResolve
4185 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4186 try {
4187 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4188 resolvingFunctions['[[Reject]]']);
4189 } catch (thenCallResult) {
4190 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4191 NextJob(status); return;
4192 }
4193 NextJob(thenCallResult);
4194 }
4195
4196 // 25.4.3 The Promise Constructor
4197
4198 // 25.4.3.1 Promise ( executor )
4199
4200 function Promise(executor) {
4201 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4202 Object.defineProperty(this, '[[PromiseState]]', config);
4203 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4204 Object.defineProperty(this, '[[PromiseResult]]', config);
4205 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4206 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4207
4208 var promise = this;
4209 if (Type(promise) !== 'object') throw new TypeError();
4210 if (!('[[PromiseState]]' in promise)) throw TypeError();
4211 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4212 if (!IsCallable(executor)) throw TypeError();
4213
4214 set_internal(promise, '[[PromiseConstructor]]', Promise);
4215
4216 return InitializePromise(promise, executor);
4217 }
4218
4219 // 25.4.3.1.1 InitializePromise ( promise, executor )
4220
4221 function InitializePromise(promise, executor) {
4222 console.assert('[[PromiseState]]' in promise);
4223 console.assert(IsCallable(executor));
4224 set_internal(promise, '[[PromiseState]]', 'pending');
4225 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4226 set_internal(promise, '[[PromiseRejectReactions]]', []);
4227 var resolvingFunctions = CreateResolvingFunctions(promise);
4228 try {
4229 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4230 resolvingFunctions['[[Reject]]']);
4231 } catch (completion) {
4232 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4233 }
4234 return promise;
4235 }
4236
4237 // 25.4.4 Properties of the Promise Constructor
4238 // 25.4.4.1 Promise.all ( iterable )
4239
4240 define(Promise, 'all', function all(iterable) {
4241 var c = strict(this);
4242 var promiseCapability = NewPromiseCapability(c);
4243 try {
4244 var iterator = GetIterator(iterable);
4245 } catch (value) {
4246 promiseCapability['[[Reject]]'].call(undefined, value);
4247 return promiseCapability['[[Promise]]'];
4248 }
4249 var values = [];
4250 var remainingElementsCount = { value: 1 };
4251 var index = 0;
4252 while (true) {
4253 try {
4254 var next = IteratorStep(iterator);
4255 } catch (value) {
4256 promiseCapability['[[Reject]]'].call(undefined, value);
4257 return promiseCapability['[[Promise]]'];
4258 }
4259 if (!next) {
4260 remainingElementsCount.value -= 1;
4261 if (remainingElementsCount.value === 0) {
4262 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4263
4264
4265 }
4266 return promiseCapability['[[Promise]]'];
4267 }
4268 try {
4269 var nextValue = IteratorValue(next);
4270 } catch (value) {
4271 promiseCapability['[[Reject]]'].call(undefined, value);
4272 return promiseCapability['[[Promise]]'];
4273 }
4274 try {
4275 var nextPromise = c.resolve(nextValue);
4276 } catch (value) {
4277 promiseCapability['[[Reject]]'].call(undefined, value);
4278 return promiseCapability['[[Promise]]'];
4279 }
4280 var resolveElement = PromiseAllResolveElementFunction();
4281 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4282 set_internal(resolveElement, '[[Index]]', index);
4283 set_internal(resolveElement, '[[Values]]', values);
4284 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4285 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4286 remainingElementsCount.value += 1;
4287 try {
4288 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4289 } catch (value) {
4290 promiseCapability['[[Reject]]'].call(undefined, value);
4291 return promiseCapability['[[Promise]]'];
4292 }
4293 index += 1;
4294 }
4295 });
4296
4297 // 25.4.4.1.1 Promise.all Resolve Element Functions
4298
4299 function PromiseAllResolveElementFunction() {
4300 var F = function(x) {
4301 var alreadyCalled = F['[[AlreadyCalled]]'];
4302 if (alreadyCalled.value) return undefined;
4303 alreadyCalled.value = true;
4304 var index = F['[[Index]]'];
4305 var values = F['[[Values]]'];
4306 var promiseCapability = F['[[Capabilities]]'];
4307 var remainingElementsCount = F['[[RemainingElements]]'];
4308 try {
4309 values[index] = x;
4310 } catch (result) {
4311 promiseCapability['[[Reject]]'].call(undefined, result);
4312 return promiseCapability['[[Promise]]'];
4313 }
4314 remainingElementsCount.value -= 1;
4315 if (remainingElementsCount.value === 0)
4316 return promiseCapability['[[Resolve]]'].call(undefined, values);
4317 return undefined;
4318 };
4319 return F;
4320 }
4321
4322 // 25.4.4.2 Promise.prototype
4323
4324 Promise.prototype = {};
4325
4326 // 25.4.4.3 Promise.race ( iterable )
4327
4328 define(Promise, 'race', function race(iterable) {
4329 var c = strict(this);
4330 var promiseCapability = NewPromiseCapability(c);
4331 try {
4332 var iterator = GetIterator(iterable);
4333 } catch (value) {
4334 promiseCapability['[[Reject]]'].call(undefined, value);
4335 return promiseCapability['[[Promise]]'];
4336 }
4337 while (true) {
4338 try {
4339 var next = IteratorStep(iterator);
4340 } catch (value) {
4341 promiseCapability['[[Reject]]'].call(undefined, value);
4342 return promiseCapability['[[Promise]]'];
4343 }
4344 if (!next) return promiseCapability['[[Promise]]'];
4345 try {
4346 var nextValue = IteratorValue(next);
4347 } catch (value) {
4348 promiseCapability['[[Reject]]'].call(undefined, value);
4349 return promiseCapability['[[Promise]]'];
4350 }
4351 try {
4352 var nextPromise = c.resolve(nextValue);
4353 } catch (value) {
4354 promiseCapability['[[Reject]]'].call(undefined, value);
4355 return promiseCapability['[[Promise]]'];
4356 }
4357 try {
4358 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4359 } catch (value) {
4360 promiseCapability['[[Reject]]'].call(undefined, value);
4361 return promiseCapability['[[Promise]]'];
4362 }
4363 }
4364 });
4365
4366 // 25.4.4.4 Promise.reject ( r )
4367
4368 define(Promise, 'reject', function reject(r) {
4369 var c = strict(this);
4370 var promiseCapability = NewPromiseCapability(c);
4371 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4372 return promiseCapability['[[Promise]]'];
4373 });
4374
4375 // 25.4.4.5 Promise.resolve ( x )
4376
4377 define(Promise, 'resolve', function resolve(x) {
4378 var c = strict(this);
4379 if (IsPromise(x)) {
4380 var constructor = x['[[PromiseConstructor]]'];
4381 if (SameValue(constructor, c)) return x;
4382 }
4383 var promiseCapability = NewPromiseCapability(c);
4384 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4385 return promiseCapability['[[Promise]]'];
4386 });
4387
4388 // 25.4.4.6 Promise [ @@create ] ( )
4389 // 25.4.4.6.1 AllocatePromise ( constructor )
4390 // 25.4.5 Properties of the Promise Prototype Object
4391 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4392
4393 define(Promise.prototype, 'catch', function catch_(onRejected) {
4394 var promise = this;
4395 return promise.then(undefined, onRejected);
4396 });
4397
4398 // 25.4.5.2 Promise.prototype.constructor
4399
4400 Promise.prototype.constructor = Promise;
4401
4402 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4403
4404 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4405 var promise = this;
4406 if (!IsPromise(promise)) throw TypeError();
4407 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4408 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4409 var c = promise.constructor;
4410 var promiseCapability = NewPromiseCapability(c);
4411 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4412 '[[Handler]]': onFulfilled };
4413 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4414 '[[Handler]]': onRejected };
4415 if (promise['[[PromiseState]]'] === 'pending') {
4416 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4417 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4418 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4419 var value = promise['[[PromiseResult]]'];
4420 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4421 } else if (promise['[[PromiseState]]'] === 'rejected') {
4422 var reason = promise['[[PromiseResult]]'];
4423 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4424 }
4425 return promiseCapability['[[Promise]]'];
4426 });
4427
4428 // 25.4.6 Properties of Promise Instances
4429
4430 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4431 global.Promise = Promise;
4432
4433 // Patch early Promise.cast vs. Promise.resolve implementations
4434 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4435 }());
4436
4437 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4438 define(Promise.prototype, $$toStringTag, 'Promise');
4439
4440 // ---------------------------------------
4441 // 26 Reflection
4442 // ---------------------------------------
4443
4444 (function() {
4445 // 26.1 The Reflect Object
4446 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4447 global.Reflect = {};
4448
4449 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4450 define(
4451 Reflect, 'apply',
4452 function apply(target, thisArgument, argumentsList) {
4453 if (!IsCallable(target)) throw TypeError();
4454 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4455 });
4456
4457 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4458 define(
4459 Reflect, 'construct',
4460 function construct(target, argumentsList) {
4461 return __cons(target, argumentsList);
4462 });
4463
4464 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4465 define(
4466 Reflect, 'defineProperty',
4467 function defineProperty(target, propertyKey, attributes) {
4468 try {
4469 Object.defineProperty(target, propertyKey, attributes);
4470 return true;
4471 } catch (_) {
4472 return false;
4473 }
4474 });
4475
4476 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4477 define(
4478 Reflect, 'deleteProperty',
4479 function deleteProperty(target,name) {
4480 try {
4481 delete target[name];
4482 return !HasOwnProperty(target, name);
4483 } catch (_) {
4484 return false;
4485 }
4486 });
4487
4488 // 26.1.5 Reflect.enumerate ( target )
4489 define(
4490 Reflect, 'enumerate',
4491 function enumerate(target) {
4492 target = ToObject(target);
4493 var iterator = Enumerate(target);
4494 return iterator;
4495 });
4496
4497 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4498 define(
4499 Reflect, 'get',
4500 function get(target, name, receiver) {
4501 target = ToObject(target);
4502 name = String(name);
4503 receiver = (receiver === undefined) ? target : ToObject(receiver);
4504 var desc = getPropertyDescriptor(target, name);
4505 if (desc && 'get' in desc)
4506 return Function.prototype.call.call(desc['get'], receiver);
4507 return target[name];
4508 });
4509
4510 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4511 define(
4512 Reflect, 'getOwnPropertyDescriptor',
4513 Object.getOwnPropertyDescriptor);
4514
4515 // 26.1.8 Reflect.getPrototypeOf ( target )
4516 define(
4517 Reflect, 'getPrototypeOf',
4518 Object.getPrototypeOf);
4519
4520 // 26.1.9 Reflect.has ( target, propertyKey )
4521 define(
4522 Reflect, 'has',
4523 function has(target,name) {
4524 return String(name) in ToObject(target);
4525 });
4526
4527 // 26.1.10 Reflect.isExtensible (target)
4528 define(
4529 Reflect, 'isExtensible',
4530 Object.isExtensible);
4531
4532 // 26.1.11 Reflect.ownKeys ( target )
4533 define(
4534 Reflect, 'ownKeys',
4535 function ownKeys(target) {
4536 var obj = ToObject(target);
4537 return Object.getOwnPropertyNames(obj);
4538 });
4539
4540 // 26.1.12 Reflect.preventExtensions ( target )
4541 define(
4542 Reflect, 'preventExtensions',
4543 function preventExtensions(target) {
4544 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4545 });
4546
4547 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4548 define(
4549 Reflect, 'set',
4550 function set(target, name, value, receiver) {
4551 target = ToObject(target);
4552 name = String(name);
4553 receiver = (receiver === undefined) ? target : ToObject(receiver);
4554 var desc = getPropertyDescriptor(target, name);
4555 try {
4556 if (desc && 'set' in desc)
4557 Function.prototype.call.call(desc['set'], receiver, value);
4558 else
4559 target[name] = value;
4560 return true;
4561 } catch (_) {
4562 return false;
4563 }
4564 });
4565
4566 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4567 define(
4568 Reflect, 'setPrototypeOf',
4569 function setPrototypeOf(target, proto) {
4570 try {
4571 target.__proto__ = proto;
4572 return Reflect.getPrototypeOf(target) === proto;
4573 } catch(_) {
4574 return false;
4575 }
4576 });
4577
4578 }());
4579
4580 // ---------------------------------------
4581 // 26.2 Proxy Objects
4582 // ---------------------------------------
4583
4584 // Not polyfillable.
4585
4586 }(self));
4587
4588 // This helper is defined outside the main scope so that the use of
4589 // 'eval' does not taint the scope for minifiers.
4590 function __cons(t, a) {
4591 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4592 }
4593 </script>
4594 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.foo = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
4595 'use strict'
4596
4597 exports.byteLength = byteLength
4598 exports.toByteArray = toByteArray
4599 exports.fromByteArray = fromByteArray
4600
4601 var lookup = []
4602 var revLookup = []
4603 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4604
4605 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4606 for (var i = 0, len = code.length; i < len; ++i) {
4607 lookup[i] = code[i]
4608 revLookup[code.charCodeAt(i)] = i
4609 }
4610
4611 revLookup['-'.charCodeAt(0)] = 62
4612 revLookup['_'.charCodeAt(0)] = 63
4613
4614 function placeHoldersCount (b64) {
4615 var len = b64.length
4616 if (len % 4 > 0) {
4617 throw new Error('Invalid string. Length must be a multiple of 4')
4618 }
4619
4620 // the number of equal signs (place holders)
4621 // if there are two placeholders, than the two characters before it
4622 // represent one byte
4623 // if there is only one, then the three characters before it represent 2 bytes
4624 // this is just a cheap hack to not do indexOf twice
4625 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4626 }
4627
4628 function byteLength (b64) {
4629 // base64 is 4/3 + up to two characters of the original data
4630 return b64.length * 3 / 4 - placeHoldersCount(b64)
4631 }
4632
4633 function toByteArray (b64) {
4634 var i, j, l, tmp, placeHolders, arr
4635 var len = b64.length
4636 placeHolders = placeHoldersCount(b64)
4637
4638 arr = new Arr(len * 3 / 4 - placeHolders)
4639
4640 // if there are placeholders, only get up to the last complete 4 chars
4641 l = placeHolders > 0 ? len - 4 : len
4642
4643 var L = 0
4644
4645 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4646 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4647 arr[L++] = (tmp >> 16) & 0xFF
4648 arr[L++] = (tmp >> 8) & 0xFF
4649 arr[L++] = tmp & 0xFF
4650 }
4651
4652 if (placeHolders === 2) {
4653 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4654 arr[L++] = tmp & 0xFF
4655 } else if (placeHolders === 1) {
4656 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4657 arr[L++] = (tmp >> 8) & 0xFF
4658 arr[L++] = tmp & 0xFF
4659 }
4660
4661 return arr
4662 }
4663
4664 function tripletToBase64 (num) {
4665 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4666 }
4667
4668 function encodeChunk (uint8, start, end) {
4669 var tmp
4670 var output = []
4671 for (var i = start; i < end; i += 3) {
4672 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4673 output.push(tripletToBase64(tmp))
4674 }
4675 return output.join('')
4676 }
4677
4678 function fromByteArray (uint8) {
4679 var tmp
4680 var len = uint8.length
4681 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4682 var output = ''
4683 var parts = []
4684 var maxChunkLength = 16383 // must be multiple of 3
4685
4686 // go through the array every three bytes, we'll deal with trailing stuff later
4687 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4688 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4689 }
4690
4691 // pad the end with zeros, but make sure to not forget the extra bytes
4692 if (extraBytes === 1) {
4693 tmp = uint8[len - 1]
4694 output += lookup[tmp >> 2]
4695 output += lookup[(tmp << 4) & 0x3F]
4696 output += '=='
4697 } else if (extraBytes === 2) {
4698 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4699 output += lookup[tmp >> 10]
4700 output += lookup[(tmp >> 4) & 0x3F]
4701 output += lookup[(tmp << 2) & 0x3F]
4702 output += '='
4703 }
4704
4705 parts.push(output)
4706
4707 return parts.join('')
4708 }
4709
4710 },{}],2:[function(require,module,exports){
4711 /*!
4712 * The buffer module from node.js, for the browser.
4713 *
4714 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4715 * @license MIT
4716 */
4717 /* eslint-disable no-proto */
4718
4719 'use strict'
4720
4721 var base64 = require('base64-js')
4722 var ieee754 = require('ieee754')
4723
4724 exports.Buffer = Buffer
4725 exports.SlowBuffer = SlowBuffer
4726 exports.INSPECT_MAX_BYTES = 50
4727
4728 var K_MAX_LENGTH = 0x7fffffff
4729 exports.kMaxLength = K_MAX_LENGTH
4730
4731 /**
4732 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4733 * === true Use Uint8Array implementation (fastest)
4734 * === false Print warning and recommend using `buffer` v4.x which has an Object
4735 * implementation (most compatible, even IE6)
4736 *
4737 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4738 * Opera 11.6+, iOS 4.2+.
4739 *
4740 * We report that the browser does not support typed arrays if the are not subclassable
4741 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4742 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4743 * for __proto__ and has a buggy typed array implementation.
4744 */
4745 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4746
4747 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4748 typeof console.error === 'function') {
4749 console.error(
4750 'This browser lacks typed array (Uint8Array) support which is required by ' +
4751 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4752 )
4753 }
4754
4755 function typedArraySupport () {
4756 // Can typed array instances can be augmented?
4757 try {
4758 var arr = new Uint8Array(1)
4759 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4760 return arr.foo() === 42
4761 } catch (e) {
4762 return false
4763 }
4764 }
4765
4766 function createBuffer (length) {
4767 if (length > K_MAX_LENGTH) {
4768 throw new RangeError('Invalid typed array length')
4769 }
4770 // Return an augmented `Uint8Array` instance
4771 var buf = new Uint8Array(length)
4772 buf.__proto__ = Buffer.prototype
4773 return buf
4774 }
4775
4776 /**
4777 * The Buffer constructor returns instances of `Uint8Array` that have their
4778 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4779 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4780 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4781 * returns a single octet.
4782 *
4783 * The `Uint8Array` prototype remains unmodified.
4784 */
4785
4786 function Buffer (arg, encodingOrOffset, length) {
4787 // Common case.
4788 if (typeof arg === 'number') {
4789 if (typeof encodingOrOffset === 'string') {
4790 throw new Error(
4791 'If encoding is specified then the first argument must be a string'
4792 )
4793 }
4794 return allocUnsafe(arg)
4795 }
4796 return from(arg, encodingOrOffset, length)
4797 }
4798
4799 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4800 if (typeof Symbol !== 'undefined' && Symbol.species &&
4801 Buffer[Symbol.species] === Buffer) {
4802 Object.defineProperty(Buffer, Symbol.species, {
4803 value: null,
4804 configurable: true,
4805 enumerable: false,
4806 writable: false
4807 })
4808 }
4809
4810 Buffer.poolSize = 8192 // not used by this implementation
4811
4812 function from (value, encodingOrOffset, length) {
4813 if (typeof value === 'number') {
4814 throw new TypeError('"value" argument must not be a number')
4815 }
4816
4817 if (value instanceof ArrayBuffer) {
4818 return fromArrayBuffer(value, encodingOrOffset, length)
4819 }
4820
4821 if (typeof value === 'string') {
4822 return fromString(value, encodingOrOffset)
4823 }
4824
4825 return fromObject(value)
4826 }
4827
4828 /**
4829 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4830 * if value is a number.
4831 * Buffer.from(str[, encoding])
4832 * Buffer.from(array)
4833 * Buffer.from(buffer)
4834 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4835 **/
4836 Buffer.from = function (value, encodingOrOffset, length) {
4837 return from(value, encodingOrOffset, length)
4838 }
4839
4840 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4841 // https://github.com/feross/buffer/pull/148
4842 Buffer.prototype.__proto__ = Uint8Array.prototype
4843 Buffer.__proto__ = Uint8Array
4844
4845 function assertSize (size) {
4846 if (typeof size !== 'number') {
4847 throw new TypeError('"size" argument must be a number')
4848 } else if (size < 0) {
4849 throw new RangeError('"size" argument must not be negative')
4850 }
4851 }
4852
4853 function alloc (size, fill, encoding) {
4854 assertSize(size)
4855 if (size <= 0) {
4856 return createBuffer(size)
4857 }
4858 if (fill !== undefined) {
4859 // Only pay attention to encoding if it's a string. This
4860 // prevents accidentally sending in a number that would
4861 // be interpretted as a start offset.
4862 return typeof encoding === 'string'
4863 ? createBuffer(size).fill(fill, encoding)
4864 : createBuffer(size).fill(fill)
4865 }
4866 return createBuffer(size)
4867 }
4868
4869 /**
4870 * Creates a new filled Buffer instance.
4871 * alloc(size[, fill[, encoding]])
4872 **/
4873 Buffer.alloc = function (size, fill, encoding) {
4874 return alloc(size, fill, encoding)
4875 }
4876
4877 function allocUnsafe (size) {
4878 assertSize(size)
4879 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4880 }
4881
4882 /**
4883 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4884 * */
4885 Buffer.allocUnsafe = function (size) {
4886 return allocUnsafe(size)
4887 }
4888 /**
4889 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4890 */
4891 Buffer.allocUnsafeSlow = function (size) {
4892 return allocUnsafe(size)
4893 }
4894
4895 function fromString (string, encoding) {
4896 if (typeof encoding !== 'string' || encoding === '') {
4897 encoding = 'utf8'
4898 }
4899
4900 if (!Buffer.isEncoding(encoding)) {
4901 throw new TypeError('"encoding" must be a valid string encoding')
4902 }
4903
4904 var length = byteLength(string, encoding) | 0
4905 var buf = createBuffer(length)
4906
4907 var actual = buf.write(string, encoding)
4908
4909 if (actual !== length) {
4910 // Writing a hex string, for example, that contains invalid characters will
4911 // cause everything after the first invalid character to be ignored. (e.g.
4912 // 'abxxcd' will be treated as 'ab')
4913 buf = buf.slice(0, actual)
4914 }
4915
4916 return buf
4917 }
4918
4919 function fromArrayLike (array) {
4920 var length = array.length < 0 ? 0 : checked(array.length) | 0
4921 var buf = createBuffer(length)
4922 for (var i = 0; i < length; i += 1) {
4923 buf[i] = array[i] & 255
4924 }
4925 return buf
4926 }
4927
4928 function fromArrayBuffer (array, byteOffset, length) {
4929 if (byteOffset < 0 || array.byteLength < byteOffset) {
4930 throw new RangeError('\'offset\' is out of bounds')
4931 }
4932
4933 if (array.byteLength < byteOffset + (length || 0)) {
4934 throw new RangeError('\'length\' is out of bounds')
4935 }
4936
4937 var buf
4938 if (byteOffset === undefined && length === undefined) {
4939 buf = new Uint8Array(array)
4940 } else if (length === undefined) {
4941 buf = new Uint8Array(array, byteOffset)
4942 } else {
4943 buf = new Uint8Array(array, byteOffset, length)
4944 }
4945
4946 // Return an augmented `Uint8Array` instance
4947 buf.__proto__ = Buffer.prototype
4948 return buf
4949 }
4950
4951 function fromObject (obj) {
4952 if (Buffer.isBuffer(obj)) {
4953 var len = checked(obj.length) | 0
4954 var buf = createBuffer(len)
4955
4956 if (buf.length === 0) {
4957 return buf
4958 }
4959
4960 obj.copy(buf, 0, 0, len)
4961 return buf
4962 }
4963
4964 if (obj) {
4965 if (isArrayBufferView(obj) || 'length' in obj) {
4966 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4967 return createBuffer(0)
4968 }
4969 return fromArrayLike(obj)
4970 }
4971
4972 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4973 return fromArrayLike(obj.data)
4974 }
4975 }
4976
4977 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4978 }
4979
4980 function checked (length) {
4981 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4982 // length is NaN (which is otherwise coerced to zero.)
4983 if (length >= K_MAX_LENGTH) {
4984 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4985 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4986 }
4987 return length | 0
4988 }
4989
4990 function SlowBuffer (length) {
4991 if (+length != length) { // eslint-disable-line eqeqeq
4992 length = 0
4993 }
4994 return Buffer.alloc(+length)
4995 }
4996
4997 Buffer.isBuffer = function isBuffer (b) {
4998 return b != null && b._isBuffer === true
4999 }
5000
5001 Buffer.compare = function compare (a, b) {
5002 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
5003 throw new TypeError('Arguments must be Buffers')
5004 }
5005
5006 if (a === b) return 0
5007
5008 var x = a.length
5009 var y = b.length
5010
5011 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
5012 if (a[i] !== b[i]) {
5013 x = a[i]
5014 y = b[i]
5015 break
5016 }
5017 }
5018
5019 if (x < y) return -1
5020 if (y < x) return 1
5021 return 0
5022 }
5023
5024 Buffer.isEncoding = function isEncoding (encoding) {
5025 switch (String(encoding).toLowerCase()) {
5026 case 'hex':
5027 case 'utf8':
5028 case 'utf-8':
5029 case 'ascii':
5030 case 'latin1':
5031 case 'binary':
5032 case 'base64':
5033 case 'ucs2':
5034 case 'ucs-2':
5035 case 'utf16le':
5036 case 'utf-16le':
5037 return true
5038 default:
5039 return false
5040 }
5041 }
5042
5043 Buffer.concat = function concat (list, length) {
5044 if (!Array.isArray(list)) {
5045 throw new TypeError('"list" argument must be an Array of Buffers')
5046 }
5047
5048 if (list.length === 0) {
5049 return Buffer.alloc(0)
5050 }
5051
5052 var i
5053 if (length === undefined) {
5054 length = 0
5055 for (i = 0; i < list.length; ++i) {
5056 length += list[i].length
5057 }
5058 }
5059
5060 var buffer = Buffer.allocUnsafe(length)
5061 var pos = 0
5062 for (i = 0; i < list.length; ++i) {
5063 var buf = list[i]
5064 if (!Buffer.isBuffer(buf)) {
5065 throw new TypeError('"list" argument must be an Array of Buffers')
5066 }
5067 buf.copy(buffer, pos)
5068 pos += buf.length
5069 }
5070 return buffer
5071 }
5072
5073 function byteLength (string, encoding) {
5074 if (Buffer.isBuffer(string)) {
5075 return string.length
5076 }
5077 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5078 return string.byteLength
5079 }
5080 if (typeof string !== 'string') {
5081 string = '' + string
5082 }
5083
5084 var len = string.length
5085 if (len === 0) return 0
5086
5087 // Use a for loop to avoid recursion
5088 var loweredCase = false
5089 for (;;) {
5090 switch (encoding) {
5091 case 'ascii':
5092 case 'latin1':
5093 case 'binary':
5094 return len
5095 case 'utf8':
5096 case 'utf-8':
5097 case undefined:
5098 return utf8ToBytes(string).length
5099 case 'ucs2':
5100 case 'ucs-2':
5101 case 'utf16le':
5102 case 'utf-16le':
5103 return len * 2
5104 case 'hex':
5105 return len >>> 1
5106 case 'base64':
5107 return base64ToBytes(string).length
5108 default:
5109 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5110 encoding = ('' + encoding).toLowerCase()
5111 loweredCase = true
5112 }
5113 }
5114 }
5115 Buffer.byteLength = byteLength
5116
5117 function slowToString (encoding, start, end) {
5118 var loweredCase = false
5119
5120 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5121 // property of a typed array.
5122
5123 // This behaves neither like String nor Uint8Array in that we set start/end
5124 // to their upper/lower bounds if the value passed is out of range.
5125 // undefined is handled specially as per ECMA-262 6th Edition,
5126 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5127 if (start === undefined || start < 0) {
5128 start = 0
5129 }
5130 // Return early if start > this.length. Done here to prevent potential uint32
5131 // coercion fail below.
5132 if (start > this.length) {
5133 return ''
5134 }
5135
5136 if (end === undefined || end > this.length) {
5137 end = this.length
5138 }
5139
5140 if (end <= 0) {
5141 return ''
5142 }
5143
5144 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5145 end >>>= 0
5146 start >>>= 0
5147
5148 if (end <= start) {
5149 return ''
5150 }
5151
5152 if (!encoding) encoding = 'utf8'
5153
5154 while (true) {
5155 switch (encoding) {
5156 case 'hex':
5157 return hexSlice(this, start, end)
5158
5159 case 'utf8':
5160 case 'utf-8':
5161 return utf8Slice(this, start, end)
5162
5163 case 'ascii':
5164 return asciiSlice(this, start, end)
5165
5166 case 'latin1':
5167 case 'binary':
5168 return latin1Slice(this, start, end)
5169
5170 case 'base64':
5171 return base64Slice(this, start, end)
5172
5173 case 'ucs2':
5174 case 'ucs-2':
5175 case 'utf16le':
5176 case 'utf-16le':
5177 return utf16leSlice(this, start, end)
5178
5179 default:
5180 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5181 encoding = (encoding + '').toLowerCase()
5182 loweredCase = true
5183 }
5184 }
5185 }
5186
5187 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5188 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5189 // reliably in a browserify context because there could be multiple different
5190 // copies of the 'buffer' package in use. This method works even for Buffer
5191 // instances that were created from another copy of the `buffer` package.
5192 // See: https://github.com/feross/buffer/issues/154
5193 Buffer.prototype._isBuffer = true
5194
5195 function swap (b, n, m) {
5196 var i = b[n]
5197 b[n] = b[m]
5198 b[m] = i
5199 }
5200
5201 Buffer.prototype.swap16 = function swap16 () {
5202 var len = this.length
5203 if (len % 2 !== 0) {
5204 throw new RangeError('Buffer size must be a multiple of 16-bits')
5205 }
5206 for (var i = 0; i < len; i += 2) {
5207 swap(this, i, i + 1)
5208 }
5209 return this
5210 }
5211
5212 Buffer.prototype.swap32 = function swap32 () {
5213 var len = this.length
5214 if (len % 4 !== 0) {
5215 throw new RangeError('Buffer size must be a multiple of 32-bits')
5216 }
5217 for (var i = 0; i < len; i += 4) {
5218 swap(this, i, i + 3)
5219 swap(this, i + 1, i + 2)
5220 }
5221 return this
5222 }
5223
5224 Buffer.prototype.swap64 = function swap64 () {
5225 var len = this.length
5226 if (len % 8 !== 0) {
5227 throw new RangeError('Buffer size must be a multiple of 64-bits')
5228 }
5229 for (var i = 0; i < len; i += 8) {
5230 swap(this, i, i + 7)
5231 swap(this, i + 1, i + 6)
5232 swap(this, i + 2, i + 5)
5233 swap(this, i + 3, i + 4)
5234 }
5235 return this
5236 }
5237
5238 Buffer.prototype.toString = function toString () {
5239 var length = this.length
5240 if (length === 0) return ''
5241 if (arguments.length === 0) return utf8Slice(this, 0, length)
5242 return slowToString.apply(this, arguments)
5243 }
5244
5245 Buffer.prototype.equals = function equals (b) {
5246 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5247 if (this === b) return true
5248 return Buffer.compare(this, b) === 0
5249 }
5250
5251 Buffer.prototype.inspect = function inspect () {
5252 var str = ''
5253 var max = exports.INSPECT_MAX_BYTES
5254 if (this.length > 0) {
5255 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5256 if (this.length > max) str += ' ... '
5257 }
5258 return '<Buffer ' + str + '>'
5259 }
5260
5261 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5262 if (!Buffer.isBuffer(target)) {
5263 throw new TypeError('Argument must be a Buffer')
5264 }
5265
5266 if (start === undefined) {
5267 start = 0
5268 }
5269 if (end === undefined) {
5270 end = target ? target.length : 0
5271 }
5272 if (thisStart === undefined) {
5273 thisStart = 0
5274 }
5275 if (thisEnd === undefined) {
5276 thisEnd = this.length
5277 }
5278
5279 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5280 throw new RangeError('out of range index')
5281 }
5282
5283 if (thisStart >= thisEnd && start >= end) {
5284 return 0
5285 }
5286 if (thisStart >= thisEnd) {
5287 return -1
5288 }
5289 if (start >= end) {
5290 return 1
5291 }
5292
5293 start >>>= 0
5294 end >>>= 0
5295 thisStart >>>= 0
5296 thisEnd >>>= 0
5297
5298 if (this === target) return 0
5299
5300 var x = thisEnd - thisStart
5301 var y = end - start
5302 var len = Math.min(x, y)
5303
5304 var thisCopy = this.slice(thisStart, thisEnd)
5305 var targetCopy = target.slice(start, end)
5306
5307 for (var i = 0; i < len; ++i) {
5308 if (thisCopy[i] !== targetCopy[i]) {
5309 x = thisCopy[i]
5310 y = targetCopy[i]
5311 break
5312 }
5313 }
5314
5315 if (x < y) return -1
5316 if (y < x) return 1
5317 return 0
5318 }
5319
5320 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5321 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5322 //
5323 // Arguments:
5324 // - buffer - a Buffer to search
5325 // - val - a string, Buffer, or number
5326 // - byteOffset - an index into `buffer`; will be clamped to an int32
5327 // - encoding - an optional encoding, relevant is val is a string
5328 // - dir - true for indexOf, false for lastIndexOf
5329 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5330 // Empty buffer means no match
5331 if (buffer.length === 0) return -1
5332
5333 // Normalize byteOffset
5334 if (typeof byteOffset === 'string') {
5335 encoding = byteOffset
5336 byteOffset = 0
5337 } else if (byteOffset > 0x7fffffff) {
5338 byteOffset = 0x7fffffff
5339 } else if (byteOffset < -0x80000000) {
5340 byteOffset = -0x80000000
5341 }
5342 byteOffset = +byteOffset // Coerce to Number.
5343 if (numberIsNaN(byteOffset)) {
5344 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5345 byteOffset = dir ? 0 : (buffer.length - 1)
5346 }
5347
5348 // Normalize byteOffset: negative offsets start from the end of the buffer
5349 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5350 if (byteOffset >= buffer.length) {
5351 if (dir) return -1
5352 else byteOffset = buffer.length - 1
5353 } else if (byteOffset < 0) {
5354 if (dir) byteOffset = 0
5355 else return -1
5356 }
5357
5358 // Normalize val
5359 if (typeof val === 'string') {
5360 val = Buffer.from(val, encoding)
5361 }
5362
5363 // Finally, search either indexOf (if dir is true) or lastIndexOf
5364 if (Buffer.isBuffer(val)) {
5365 // Special case: looking for empty string/buffer always fails
5366 if (val.length === 0) {
5367 return -1
5368 }
5369 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5370 } else if (typeof val === 'number') {
5371 val = val & 0xFF // Search for a byte value [0-255]
5372 if (typeof Uint8Array.prototype.indexOf === 'function') {
5373 if (dir) {
5374 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5375 } else {
5376 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5377 }
5378 }
5379 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5380 }
5381
5382 throw new TypeError('val must be string, number or Buffer')
5383 }
5384
5385 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5386 var indexSize = 1
5387 var arrLength = arr.length
5388 var valLength = val.length
5389
5390 if (encoding !== undefined) {
5391 encoding = String(encoding).toLowerCase()
5392 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5393 encoding === 'utf16le' || encoding === 'utf-16le') {
5394 if (arr.length < 2 || val.length < 2) {
5395 return -1
5396 }
5397 indexSize = 2
5398 arrLength /= 2
5399 valLength /= 2
5400 byteOffset /= 2
5401 }
5402 }
5403
5404 function read (buf, i) {
5405 if (indexSize === 1) {
5406 return buf[i]
5407 } else {
5408 return buf.readUInt16BE(i * indexSize)
5409 }
5410 }
5411
5412 var i
5413 if (dir) {
5414 var foundIndex = -1
5415 for (i = byteOffset; i < arrLength; i++) {
5416 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5417 if (foundIndex === -1) foundIndex = i
5418 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5419 } else {
5420 if (foundIndex !== -1) i -= i - foundIndex
5421 foundIndex = -1
5422 }
5423 }
5424 } else {
5425 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5426 for (i = byteOffset; i >= 0; i--) {
5427 var found = true
5428 for (var j = 0; j < valLength; j++) {
5429 if (read(arr, i + j) !== read(val, j)) {
5430 found = false
5431 break
5432 }
5433 }
5434 if (found) return i
5435 }
5436 }
5437
5438 return -1
5439 }
5440
5441 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5442 return this.indexOf(val, byteOffset, encoding) !== -1
5443 }
5444
5445 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5446 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5447 }
5448
5449 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5450 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5451 }
5452
5453 function hexWrite (buf, string, offset, length) {
5454 offset = Number(offset) || 0
5455 var remaining = buf.length - offset
5456 if (!length) {
5457 length = remaining
5458 } else {
5459 length = Number(length)
5460 if (length > remaining) {
5461 length = remaining
5462 }
5463 }
5464
5465 // must be an even number of digits
5466 var strLen = string.length
5467 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5468
5469 if (length > strLen / 2) {
5470 length = strLen / 2
5471 }
5472 for (var i = 0; i < length; ++i) {
5473 var parsed = parseInt(string.substr(i * 2, 2), 16)
5474 if (numberIsNaN(parsed)) return i
5475 buf[offset + i] = parsed
5476 }
5477 return i
5478 }
5479
5480 function utf8Write (buf, string, offset, length) {
5481 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5482 }
5483
5484 function asciiWrite (buf, string, offset, length) {
5485 return blitBuffer(asciiToBytes(string), buf, offset, length)
5486 }
5487
5488 function latin1Write (buf, string, offset, length) {
5489 return asciiWrite(buf, string, offset, length)
5490 }
5491
5492 function base64Write (buf, string, offset, length) {
5493 return blitBuffer(base64ToBytes(string), buf, offset, length)
5494 }
5495
5496 function ucs2Write (buf, string, offset, length) {
5497 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5498 }
5499
5500 Buffer.prototype.write = function write (string, offset, length, encoding) {
5501 // Buffer#write(string)
5502 if (offset === undefined) {
5503 encoding = 'utf8'
5504 length = this.length
5505 offset = 0
5506 // Buffer#write(string, encoding)
5507 } else if (length === undefined && typeof offset === 'string') {
5508 encoding = offset
5509 length = this.length
5510 offset = 0
5511 // Buffer#write(string, offset[, length][, encoding])
5512 } else if (isFinite(offset)) {
5513 offset = offset >>> 0
5514 if (isFinite(length)) {
5515 length = length >>> 0
5516 if (encoding === undefined) encoding = 'utf8'
5517 } else {
5518 encoding = length
5519 length = undefined
5520 }
5521 } else {
5522 throw new Error(
5523 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5524 )
5525 }
5526
5527 var remaining = this.length - offset
5528 if (length === undefined || length > remaining) length = remaining
5529
5530 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5531 throw new RangeError('Attempt to write outside buffer bounds')
5532 }
5533
5534 if (!encoding) encoding = 'utf8'
5535
5536 var loweredCase = false
5537 for (;;) {
5538 switch (encoding) {
5539 case 'hex':
5540 return hexWrite(this, string, offset, length)
5541
5542 case 'utf8':
5543 case 'utf-8':
5544 return utf8Write(this, string, offset, length)
5545
5546 case 'ascii':
5547 return asciiWrite(this, string, offset, length)
5548
5549 case 'latin1':
5550 case 'binary':
5551 return latin1Write(this, string, offset, length)
5552
5553 case 'base64':
5554 // Warning: maxLength not taken into account in base64Write
5555 return base64Write(this, string, offset, length)
5556
5557 case 'ucs2':
5558 case 'ucs-2':
5559 case 'utf16le':
5560 case 'utf-16le':
5561 return ucs2Write(this, string, offset, length)
5562
5563 default:
5564 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5565 encoding = ('' + encoding).toLowerCase()
5566 loweredCase = true
5567 }
5568 }
5569 }
5570
5571 Buffer.prototype.toJSON = function toJSON () {
5572 return {
5573 type: 'Buffer',
5574 data: Array.prototype.slice.call(this._arr || this, 0)
5575 }
5576 }
5577
5578 function base64Slice (buf, start, end) {
5579 if (start === 0 && end === buf.length) {
5580 return base64.fromByteArray(buf)
5581 } else {
5582 return base64.fromByteArray(buf.slice(start, end))
5583 }
5584 }
5585
5586 function utf8Slice (buf, start, end) {
5587 end = Math.min(buf.length, end)
5588 var res = []
5589
5590 var i = start
5591 while (i < end) {
5592 var firstByte = buf[i]
5593 var codePoint = null
5594 var bytesPerSequence = (firstByte > 0xEF) ? 4
5595 : (firstByte > 0xDF) ? 3
5596 : (firstByte > 0xBF) ? 2
5597 : 1
5598
5599 if (i + bytesPerSequence <= end) {
5600 var secondByte, thirdByte, fourthByte, tempCodePoint
5601
5602 switch (bytesPerSequence) {
5603 case 1:
5604 if (firstByte < 0x80) {
5605 codePoint = firstByte
5606 }
5607 break
5608 case 2:
5609 secondByte = buf[i + 1]
5610 if ((secondByte & 0xC0) === 0x80) {
5611 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5612 if (tempCodePoint > 0x7F) {
5613 codePoint = tempCodePoint
5614 }
5615 }
5616 break
5617 case 3:
5618 secondByte = buf[i + 1]
5619 thirdByte = buf[i + 2]
5620 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5621 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5622 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5623 codePoint = tempCodePoint
5624 }
5625 }
5626 break
5627 case 4:
5628 secondByte = buf[i + 1]
5629 thirdByte = buf[i + 2]
5630 fourthByte = buf[i + 3]
5631 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5632 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5633 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5634 codePoint = tempCodePoint
5635 }
5636 }
5637 }
5638 }
5639
5640 if (codePoint === null) {
5641 // we did not generate a valid codePoint so insert a
5642 // replacement char (U+FFFD) and advance only 1 byte
5643 codePoint = 0xFFFD
5644 bytesPerSequence = 1
5645 } else if (codePoint > 0xFFFF) {
5646 // encode to utf16 (surrogate pair dance)
5647 codePoint -= 0x10000
5648 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5649 codePoint = 0xDC00 | codePoint & 0x3FF
5650 }
5651
5652 res.push(codePoint)
5653 i += bytesPerSequence
5654 }
5655
5656 return decodeCodePointsArray(res)
5657 }
5658
5659 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5660 // the lowest limit is Chrome, with 0x10000 args.
5661 // We go 1 magnitude less, for safety
5662 var MAX_ARGUMENTS_LENGTH = 0x1000
5663
5664 function decodeCodePointsArray (codePoints) {
5665 var len = codePoints.length
5666 if (len <= MAX_ARGUMENTS_LENGTH) {
5667 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5668 }
5669
5670 // Decode in chunks to avoid "call stack size exceeded".
5671 var res = ''
5672 var i = 0
5673 while (i < len) {
5674 res += String.fromCharCode.apply(
5675 String,
5676 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5677 )
5678 }
5679 return res
5680 }
5681
5682 function asciiSlice (buf, start, end) {
5683 var ret = ''
5684 end = Math.min(buf.length, end)
5685
5686 for (var i = start; i < end; ++i) {
5687 ret += String.fromCharCode(buf[i] & 0x7F)
5688 }
5689 return ret
5690 }
5691
5692 function latin1Slice (buf, start, end) {
5693 var ret = ''
5694 end = Math.min(buf.length, end)
5695
5696 for (var i = start; i < end; ++i) {
5697 ret += String.fromCharCode(buf[i])
5698 }
5699 return ret
5700 }
5701
5702 function hexSlice (buf, start, end) {
5703 var len = buf.length
5704
5705 if (!start || start < 0) start = 0
5706 if (!end || end < 0 || end > len) end = len
5707
5708 var out = ''
5709 for (var i = start; i < end; ++i) {
5710 out += toHex(buf[i])
5711 }
5712 return out
5713 }
5714
5715 function utf16leSlice (buf, start, end) {
5716 var bytes = buf.slice(start, end)
5717 var res = ''
5718 for (var i = 0; i < bytes.length; i += 2) {
5719 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5720 }
5721 return res
5722 }
5723
5724 Buffer.prototype.slice = function slice (start, end) {
5725 var len = this.length
5726 start = ~~start
5727 end = end === undefined ? len : ~~end
5728
5729 if (start < 0) {
5730 start += len
5731 if (start < 0) start = 0
5732 } else if (start > len) {
5733 start = len
5734 }
5735
5736 if (end < 0) {
5737 end += len
5738 if (end < 0) end = 0
5739 } else if (end > len) {
5740 end = len
5741 }
5742
5743 if (end < start) end = start
5744
5745 var newBuf = this.subarray(start, end)
5746 // Return an augmented `Uint8Array` instance
5747 newBuf.__proto__ = Buffer.prototype
5748 return newBuf
5749 }
5750
5751 /*
5752 * Need to make sure that buffer isn't trying to write out of bounds.
5753 */
5754 function checkOffset (offset, ext, length) {
5755 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5756 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5757 }
5758
5759 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5760 offset = offset >>> 0
5761 byteLength = byteLength >>> 0
5762 if (!noAssert) checkOffset(offset, byteLength, this.length)
5763
5764 var val = this[offset]
5765 var mul = 1
5766 var i = 0
5767 while (++i < byteLength && (mul *= 0x100)) {
5768 val += this[offset + i] * mul
5769 }
5770
5771 return val
5772 }
5773
5774 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5775 offset = offset >>> 0
5776 byteLength = byteLength >>> 0
5777 if (!noAssert) {
5778 checkOffset(offset, byteLength, this.length)
5779 }
5780
5781 var val = this[offset + --byteLength]
5782 var mul = 1
5783 while (byteLength > 0 && (mul *= 0x100)) {
5784 val += this[offset + --byteLength] * mul
5785 }
5786
5787 return val
5788 }
5789
5790 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5791 offset = offset >>> 0
5792 if (!noAssert) checkOffset(offset, 1, this.length)
5793 return this[offset]
5794 }
5795
5796 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5797 offset = offset >>> 0
5798 if (!noAssert) checkOffset(offset, 2, this.length)
5799 return this[offset] | (this[offset + 1] << 8)
5800 }
5801
5802 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5803 offset = offset >>> 0
5804 if (!noAssert) checkOffset(offset, 2, this.length)
5805 return (this[offset] << 8) | this[offset + 1]
5806 }
5807
5808 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5809 offset = offset >>> 0
5810 if (!noAssert) checkOffset(offset, 4, this.length)
5811
5812 return ((this[offset]) |
5813 (this[offset + 1] << 8) |
5814 (this[offset + 2] << 16)) +
5815 (this[offset + 3] * 0x1000000)
5816 }
5817
5818 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5819 offset = offset >>> 0
5820 if (!noAssert) checkOffset(offset, 4, this.length)
5821
5822 return (this[offset] * 0x1000000) +
5823 ((this[offset + 1] << 16) |
5824 (this[offset + 2] << 8) |
5825 this[offset + 3])
5826 }
5827
5828 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5829 offset = offset >>> 0
5830 byteLength = byteLength >>> 0
5831 if (!noAssert) checkOffset(offset, byteLength, this.length)
5832
5833 var val = this[offset]
5834 var mul = 1
5835 var i = 0
5836 while (++i < byteLength && (mul *= 0x100)) {
5837 val += this[offset + i] * mul
5838 }
5839 mul *= 0x80
5840
5841 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5842
5843 return val
5844 }
5845
5846 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5847 offset = offset >>> 0
5848 byteLength = byteLength >>> 0
5849 if (!noAssert) checkOffset(offset, byteLength, this.length)
5850
5851 var i = byteLength
5852 var mul = 1
5853 var val = this[offset + --i]
5854 while (i > 0 && (mul *= 0x100)) {
5855 val += this[offset + --i] * mul
5856 }
5857 mul *= 0x80
5858
5859 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5860
5861 return val
5862 }
5863
5864 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5865 offset = offset >>> 0
5866 if (!noAssert) checkOffset(offset, 1, this.length)
5867 if (!(this[offset] & 0x80)) return (this[offset])
5868 return ((0xff - this[offset] + 1) * -1)
5869 }
5870
5871 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5872 offset = offset >>> 0
5873 if (!noAssert) checkOffset(offset, 2, this.length)
5874 var val = this[offset] | (this[offset + 1] << 8)
5875 return (val & 0x8000) ? val | 0xFFFF0000 : val
5876 }
5877
5878 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5879 offset = offset >>> 0
5880 if (!noAssert) checkOffset(offset, 2, this.length)
5881 var val = this[offset + 1] | (this[offset] << 8)
5882 return (val & 0x8000) ? val | 0xFFFF0000 : val
5883 }
5884
5885 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5886 offset = offset >>> 0
5887 if (!noAssert) checkOffset(offset, 4, this.length)
5888
5889 return (this[offset]) |
5890 (this[offset + 1] << 8) |
5891 (this[offset + 2] << 16) |
5892 (this[offset + 3] << 24)
5893 }
5894
5895 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5896 offset = offset >>> 0
5897 if (!noAssert) checkOffset(offset, 4, this.length)
5898
5899 return (this[offset] << 24) |
5900 (this[offset + 1] << 16) |
5901 (this[offset + 2] << 8) |
5902 (this[offset + 3])
5903 }
5904
5905 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5906 offset = offset >>> 0
5907 if (!noAssert) checkOffset(offset, 4, this.length)
5908 return ieee754.read(this, offset, true, 23, 4)
5909 }
5910
5911 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5912 offset = offset >>> 0
5913 if (!noAssert) checkOffset(offset, 4, this.length)
5914 return ieee754.read(this, offset, false, 23, 4)
5915 }
5916
5917 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5918 offset = offset >>> 0
5919 if (!noAssert) checkOffset(offset, 8, this.length)
5920 return ieee754.read(this, offset, true, 52, 8)
5921 }
5922
5923 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5924 offset = offset >>> 0
5925 if (!noAssert) checkOffset(offset, 8, this.length)
5926 return ieee754.read(this, offset, false, 52, 8)
5927 }
5928
5929 function checkInt (buf, value, offset, ext, max, min) {
5930 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5931 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5932 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5933 }
5934
5935 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5936 value = +value
5937 offset = offset >>> 0
5938 byteLength = byteLength >>> 0
5939 if (!noAssert) {
5940 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5941 checkInt(this, value, offset, byteLength, maxBytes, 0)
5942 }
5943
5944 var mul = 1
5945 var i = 0
5946 this[offset] = value & 0xFF
5947 while (++i < byteLength && (mul *= 0x100)) {
5948 this[offset + i] = (value / mul) & 0xFF
5949 }
5950
5951 return offset + byteLength
5952 }
5953
5954 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5955 value = +value
5956 offset = offset >>> 0
5957 byteLength = byteLength >>> 0
5958 if (!noAssert) {
5959 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5960 checkInt(this, value, offset, byteLength, maxBytes, 0)
5961 }
5962
5963 var i = byteLength - 1
5964 var mul = 1
5965 this[offset + i] = value & 0xFF
5966 while (--i >= 0 && (mul *= 0x100)) {
5967 this[offset + i] = (value / mul) & 0xFF
5968 }
5969
5970 return offset + byteLength
5971 }
5972
5973 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5974 value = +value
5975 offset = offset >>> 0
5976 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5977 this[offset] = (value & 0xff)
5978 return offset + 1
5979 }
5980
5981 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5982 value = +value
5983 offset = offset >>> 0
5984 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5985 this[offset] = (value & 0xff)
5986 this[offset + 1] = (value >>> 8)
5987 return offset + 2
5988 }
5989
5990 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5991 value = +value
5992 offset = offset >>> 0
5993 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5994 this[offset] = (value >>> 8)
5995 this[offset + 1] = (value & 0xff)
5996 return offset + 2
5997 }
5998
5999 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
6000 value = +value
6001 offset = offset >>> 0
6002 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6003 this[offset + 3] = (value >>> 24)
6004 this[offset + 2] = (value >>> 16)
6005 this[offset + 1] = (value >>> 8)
6006 this[offset] = (value & 0xff)
6007 return offset + 4
6008 }
6009
6010 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
6011 value = +value
6012 offset = offset >>> 0
6013 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6014 this[offset] = (value >>> 24)
6015 this[offset + 1] = (value >>> 16)
6016 this[offset + 2] = (value >>> 8)
6017 this[offset + 3] = (value & 0xff)
6018 return offset + 4
6019 }
6020
6021 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6022 value = +value
6023 offset = offset >>> 0
6024 if (!noAssert) {
6025 var limit = Math.pow(2, (8 * byteLength) - 1)
6026
6027 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6028 }
6029
6030 var i = 0
6031 var mul = 1
6032 var sub = 0
6033 this[offset] = value & 0xFF
6034 while (++i < byteLength && (mul *= 0x100)) {
6035 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6036 sub = 1
6037 }
6038 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6039 }
6040
6041 return offset + byteLength
6042 }
6043
6044 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6045 value = +value
6046 offset = offset >>> 0
6047 if (!noAssert) {
6048 var limit = Math.pow(2, (8 * byteLength) - 1)
6049
6050 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6051 }
6052
6053 var i = byteLength - 1
6054 var mul = 1
6055 var sub = 0
6056 this[offset + i] = value & 0xFF
6057 while (--i >= 0 && (mul *= 0x100)) {
6058 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6059 sub = 1
6060 }
6061 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6062 }
6063
6064 return offset + byteLength
6065 }
6066
6067 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6068 value = +value
6069 offset = offset >>> 0
6070 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6071 if (value < 0) value = 0xff + value + 1
6072 this[offset] = (value & 0xff)
6073 return offset + 1
6074 }
6075
6076 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6077 value = +value
6078 offset = offset >>> 0
6079 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6080 this[offset] = (value & 0xff)
6081 this[offset + 1] = (value >>> 8)
6082 return offset + 2
6083 }
6084
6085 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6086 value = +value
6087 offset = offset >>> 0
6088 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6089 this[offset] = (value >>> 8)
6090 this[offset + 1] = (value & 0xff)
6091 return offset + 2
6092 }
6093
6094 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6095 value = +value
6096 offset = offset >>> 0
6097 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6098 this[offset] = (value & 0xff)
6099 this[offset + 1] = (value >>> 8)
6100 this[offset + 2] = (value >>> 16)
6101 this[offset + 3] = (value >>> 24)
6102 return offset + 4
6103 }
6104
6105 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6106 value = +value
6107 offset = offset >>> 0
6108 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6109 if (value < 0) value = 0xffffffff + value + 1
6110 this[offset] = (value >>> 24)
6111 this[offset + 1] = (value >>> 16)
6112 this[offset + 2] = (value >>> 8)
6113 this[offset + 3] = (value & 0xff)
6114 return offset + 4
6115 }
6116
6117 function checkIEEE754 (buf, value, offset, ext, max, min) {
6118 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6119 if (offset < 0) throw new RangeError('Index out of range')
6120 }
6121
6122 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6123 value = +value
6124 offset = offset >>> 0
6125 if (!noAssert) {
6126 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6127 }
6128 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6129 return offset + 4
6130 }
6131
6132 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6133 return writeFloat(this, value, offset, true, noAssert)
6134 }
6135
6136 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6137 return writeFloat(this, value, offset, false, noAssert)
6138 }
6139
6140 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6141 value = +value
6142 offset = offset >>> 0
6143 if (!noAssert) {
6144 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6145 }
6146 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6147 return offset + 8
6148 }
6149
6150 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6151 return writeDouble(this, value, offset, true, noAssert)
6152 }
6153
6154 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6155 return writeDouble(this, value, offset, false, noAssert)
6156 }
6157
6158 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6159 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6160 if (!start) start = 0
6161 if (!end && end !== 0) end = this.length
6162 if (targetStart >= target.length) targetStart = target.length
6163 if (!targetStart) targetStart = 0
6164 if (end > 0 && end < start) end = start
6165
6166 // Copy 0 bytes; we're done
6167 if (end === start) return 0
6168 if (target.length === 0 || this.length === 0) return 0
6169
6170 // Fatal error conditions
6171 if (targetStart < 0) {
6172 throw new RangeError('targetStart out of bounds')
6173 }
6174 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6175 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6176
6177 // Are we oob?
6178 if (end > this.length) end = this.length
6179 if (target.length - targetStart < end - start) {
6180 end = target.length - targetStart + start
6181 }
6182
6183 var len = end - start
6184 var i
6185
6186 if (this === target && start < targetStart && targetStart < end) {
6187 // descending copy from end
6188 for (i = len - 1; i >= 0; --i) {
6189 target[i + targetStart] = this[i + start]
6190 }
6191 } else if (len < 1000) {
6192 // ascending copy from start
6193 for (i = 0; i < len; ++i) {
6194 target[i + targetStart] = this[i + start]
6195 }
6196 } else {
6197 Uint8Array.prototype.set.call(
6198 target,
6199 this.subarray(start, start + len),
6200 targetStart
6201 )
6202 }
6203
6204 return len
6205 }
6206
6207 // Usage:
6208 // buffer.fill(number[, offset[, end]])
6209 // buffer.fill(buffer[, offset[, end]])
6210 // buffer.fill(string[, offset[, end]][, encoding])
6211 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6212 // Handle string cases:
6213 if (typeof val === 'string') {
6214 if (typeof start === 'string') {
6215 encoding = start
6216 start = 0
6217 end = this.length
6218 } else if (typeof end === 'string') {
6219 encoding = end
6220 end = this.length
6221 }
6222 if (val.length === 1) {
6223 var code = val.charCodeAt(0)
6224 if (code < 256) {
6225 val = code
6226 }
6227 }
6228 if (encoding !== undefined && typeof encoding !== 'string') {
6229 throw new TypeError('encoding must be a string')
6230 }
6231 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6232 throw new TypeError('Unknown encoding: ' + encoding)
6233 }
6234 } else if (typeof val === 'number') {
6235 val = val & 255
6236 }
6237
6238 // Invalid ranges are not set to a default, so can range check early.
6239 if (start < 0 || this.length < start || this.length < end) {
6240 throw new RangeError('Out of range index')
6241 }
6242
6243 if (end <= start) {
6244 return this
6245 }
6246
6247 start = start >>> 0
6248 end = end === undefined ? this.length : end >>> 0
6249
6250 if (!val) val = 0
6251
6252 var i
6253 if (typeof val === 'number') {
6254 for (i = start; i < end; ++i) {
6255 this[i] = val
6256 }
6257 } else {
6258 var bytes = Buffer.isBuffer(val)
6259 ? val
6260 : new Buffer(val, encoding)
6261 var len = bytes.length
6262 for (i = 0; i < end - start; ++i) {
6263 this[i + start] = bytes[i % len]
6264 }
6265 }
6266
6267 return this
6268 }
6269
6270 // HELPER FUNCTIONS
6271 // ================
6272
6273 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6274
6275 function base64clean (str) {
6276 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6277 str = str.trim().replace(INVALID_BASE64_RE, '')
6278 // Node converts strings with length < 2 to ''
6279 if (str.length < 2) return ''
6280 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6281 while (str.length % 4 !== 0) {
6282 str = str + '='
6283 }
6284 return str
6285 }
6286
6287 function toHex (n) {
6288 if (n < 16) return '0' + n.toString(16)
6289 return n.toString(16)
6290 }
6291
6292 function utf8ToBytes (string, units) {
6293 units = units || Infinity
6294 var codePoint
6295 var length = string.length
6296 var leadSurrogate = null
6297 var bytes = []
6298
6299 for (var i = 0; i < length; ++i) {
6300 codePoint = string.charCodeAt(i)
6301
6302 // is surrogate component
6303 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6304 // last char was a lead
6305 if (!leadSurrogate) {
6306 // no lead yet
6307 if (codePoint > 0xDBFF) {
6308 // unexpected trail
6309 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6310 continue
6311 } else if (i + 1 === length) {
6312 // unpaired lead
6313 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6314 continue
6315 }
6316
6317 // valid lead
6318 leadSurrogate = codePoint
6319
6320 continue
6321 }
6322
6323 // 2 leads in a row
6324 if (codePoint < 0xDC00) {
6325 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6326 leadSurrogate = codePoint
6327 continue
6328 }
6329
6330 // valid surrogate pair
6331 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6332 } else if (leadSurrogate) {
6333 // valid bmp char, but last char was a lead
6334 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6335 }
6336
6337 leadSurrogate = null
6338
6339 // encode utf8
6340 if (codePoint < 0x80) {
6341 if ((units -= 1) < 0) break
6342 bytes.push(codePoint)
6343 } else if (codePoint < 0x800) {
6344 if ((units -= 2) < 0) break
6345 bytes.push(
6346 codePoint >> 0x6 | 0xC0,
6347 codePoint & 0x3F | 0x80
6348 )
6349 } else if (codePoint < 0x10000) {
6350 if ((units -= 3) < 0) break
6351 bytes.push(
6352 codePoint >> 0xC | 0xE0,
6353 codePoint >> 0x6 & 0x3F | 0x80,
6354 codePoint & 0x3F | 0x80
6355 )
6356 } else if (codePoint < 0x110000) {
6357 if ((units -= 4) < 0) break
6358 bytes.push(
6359 codePoint >> 0x12 | 0xF0,
6360 codePoint >> 0xC & 0x3F | 0x80,
6361 codePoint >> 0x6 & 0x3F | 0x80,
6362 codePoint & 0x3F | 0x80
6363 )
6364 } else {
6365 throw new Error('Invalid code point')
6366 }
6367 }
6368
6369 return bytes
6370 }
6371
6372 function asciiToBytes (str) {
6373 var byteArray = []
6374 for (var i = 0; i < str.length; ++i) {
6375 // Node's code seems to be doing this and not & 0x7F..
6376 byteArray.push(str.charCodeAt(i) & 0xFF)
6377 }
6378 return byteArray
6379 }
6380
6381 function utf16leToBytes (str, units) {
6382 var c, hi, lo
6383 var byteArray = []
6384 for (var i = 0; i < str.length; ++i) {
6385 if ((units -= 2) < 0) break
6386
6387 c = str.charCodeAt(i)
6388 hi = c >> 8
6389 lo = c % 256
6390 byteArray.push(lo)
6391 byteArray.push(hi)
6392 }
6393
6394 return byteArray
6395 }
6396
6397 function base64ToBytes (str) {
6398 return base64.toByteArray(base64clean(str))
6399 }
6400
6401 function blitBuffer (src, dst, offset, length) {
6402 for (var i = 0; i < length; ++i) {
6403 if ((i + offset >= dst.length) || (i >= src.length)) break
6404 dst[i + offset] = src[i]
6405 }
6406 return i
6407 }
6408
6409 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6410 function isArrayBufferView (obj) {
6411 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6412 }
6413
6414 function numberIsNaN (obj) {
6415 return obj !== obj // eslint-disable-line no-self-compare
6416 }
6417
6418 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6419 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6420 var e, m
6421 var eLen = nBytes * 8 - mLen - 1
6422 var eMax = (1 << eLen) - 1
6423 var eBias = eMax >> 1
6424 var nBits = -7
6425 var i = isLE ? (nBytes - 1) : 0
6426 var d = isLE ? -1 : 1
6427 var s = buffer[offset + i]
6428
6429 i += d
6430
6431 e = s & ((1 << (-nBits)) - 1)
6432 s >>= (-nBits)
6433 nBits += eLen
6434 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6435
6436 m = e & ((1 << (-nBits)) - 1)
6437 e >>= (-nBits)
6438 nBits += mLen
6439 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6440
6441 if (e === 0) {
6442 e = 1 - eBias
6443 } else if (e === eMax) {
6444 return m ? NaN : ((s ? -1 : 1) * Infinity)
6445 } else {
6446 m = m + Math.pow(2, mLen)
6447 e = e - eBias
6448 }
6449 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6450 }
6451
6452 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6453 var e, m, c
6454 var eLen = nBytes * 8 - mLen - 1
6455 var eMax = (1 << eLen) - 1
6456 var eBias = eMax >> 1
6457 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6458 var i = isLE ? 0 : (nBytes - 1)
6459 var d = isLE ? 1 : -1
6460 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6461
6462 value = Math.abs(value)
6463
6464 if (isNaN(value) || value === Infinity) {
6465 m = isNaN(value) ? 1 : 0
6466 e = eMax
6467 } else {
6468 e = Math.floor(Math.log(value) / Math.LN2)
6469 if (value * (c = Math.pow(2, -e)) < 1) {
6470 e--
6471 c *= 2
6472 }
6473 if (e + eBias >= 1) {
6474 value += rt / c
6475 } else {
6476 value += rt * Math.pow(2, 1 - eBias)
6477 }
6478 if (value * c >= 2) {
6479 e++
6480 c /= 2
6481 }
6482
6483 if (e + eBias >= eMax) {
6484 m = 0
6485 e = eMax
6486 } else if (e + eBias >= 1) {
6487 m = (value * c - 1) * Math.pow(2, mLen)
6488 e = e + eBias
6489 } else {
6490 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6491 e = 0
6492 }
6493 }
6494
6495 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6496
6497 e = (e << mLen) | m
6498 eLen += mLen
6499 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6500
6501 buffer[offset + i - d] |= s * 128
6502 }
6503
6504 },{}],4:[function(require,module,exports){
6505 window.basex = require('base-x')
6506 },{"base-x":5}],5:[function(require,module,exports){
6507 // base-x encoding
6508 // Forked from https://github.com/cryptocoinjs/bs58
6509 // Originally written by Mike Hearn for BitcoinJ
6510 // Copyright (c) 2011 Google Inc
6511 // Ported to JavaScript by Stefan Thomas
6512 // Merged Buffer refactorings from base58-native by Stephen Pair
6513 // Copyright (c) 2013 BitPay Inc
6514
6515 var Buffer = require('safe-buffer').Buffer
6516
6517 module.exports = function base (ALPHABET) {
6518 var ALPHABET_MAP = {}
6519 var BASE = ALPHABET.length
6520 var LEADER = ALPHABET.charAt(0)
6521
6522 // pre-compute lookup table
6523 for (var z = 0; z < ALPHABET.length; z++) {
6524 var x = ALPHABET.charAt(z)
6525
6526 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6527 ALPHABET_MAP[x] = z
6528 }
6529
6530 function encode (source) {
6531 if (source.length === 0) return ''
6532
6533 var digits = [0]
6534 for (var i = 0; i < source.length; ++i) {
6535 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6536 carry += digits[j] << 8
6537 digits[j] = carry % BASE
6538 carry = (carry / BASE) | 0
6539 }
6540
6541 while (carry > 0) {
6542 digits.push(carry % BASE)
6543 carry = (carry / BASE) | 0
6544 }
6545 }
6546
6547 var string = ''
6548
6549 // deal with leading zeros
6550 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6551 // convert digits to a string
6552 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6553
6554 return string
6555 }
6556
6557 function decodeUnsafe (string) {
6558 if (string.length === 0) return Buffer.allocUnsafe(0)
6559
6560 var bytes = [0]
6561 for (var i = 0; i < string.length; i++) {
6562 var value = ALPHABET_MAP[string[i]]
6563 if (value === undefined) return
6564
6565 for (var j = 0, carry = value; j < bytes.length; ++j) {
6566 carry += bytes[j] * BASE
6567 bytes[j] = carry & 0xff
6568 carry >>= 8
6569 }
6570
6571 while (carry > 0) {
6572 bytes.push(carry & 0xff)
6573 carry >>= 8
6574 }
6575 }
6576
6577 // deal with leading zeros
6578 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6579 bytes.push(0)
6580 }
6581
6582 return Buffer.from(bytes.reverse())
6583 }
6584
6585 function decode (string) {
6586 var buffer = decodeUnsafe(string)
6587 if (buffer) return buffer
6588
6589 throw new Error('Non-base' + BASE + ' character')
6590 }
6591
6592 return {
6593 encode: encode,
6594 decodeUnsafe: decodeUnsafe,
6595 decode: decode
6596 }
6597 }
6598
6599 },{"safe-buffer":6}],6:[function(require,module,exports){
6600 module.exports = require('buffer')
6601
6602 },{"buffer":2}]},{},[4])(4)
6603 });</script>
6604 <script>(function (root) {
6605 "use strict";
6606
6607 /***** unorm.js *****/
6608
6609 /*
6610 * UnicodeNormalizer 1.0.0
6611 * Copyright (c) 2008 Matsuza
6612 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6613 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6614 * $Rev: 13309 $
6615 */
6616
6617 var DEFAULT_FEATURE = [null, 0, {}];
6618 var CACHE_THRESHOLD = 10;
6619 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6620 var NCount = VCount * TCount; // 588
6621 var SCount = LCount * NCount; // 11172
6622
6623 var UChar = function(cp, feature){
6624 this.codepoint = cp;
6625 this.feature = feature;
6626 };
6627
6628 // Strategies
6629 var cache = {};
6630 var cacheCounter = [];
6631 for (var i = 0; i <= 0xFF; ++i){
6632 cacheCounter[i] = 0;
6633 }
6634
6635 function fromCache(next, cp, needFeature){
6636 var ret = cache[cp];
6637 if(!ret){
6638 ret = next(cp, needFeature);
6639 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6640 cache[cp] = ret;
6641 }
6642 }
6643 return ret;
6644 }
6645
6646 function fromData(next, cp, needFeature){
6647 var hash = cp & 0xFF00;
6648 var dunit = UChar.udata[hash] || {};
6649 var f = dunit[cp];
6650 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6651 }
6652 function fromCpOnly(next, cp, needFeature){
6653 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6654 }
6655 function fromRuleBasedJamo(next, cp, needFeature){
6656 var j;
6657 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6658 return next(cp, needFeature);
6659 }
6660 if(LBase <= cp && cp < LBase + LCount){
6661 var c = {};
6662 var base = (cp - LBase) * VCount;
6663 for (j = 0; j < VCount; ++j){
6664 c[VBase + j] = SBase + TCount * (j + base);
6665 }
6666 return new UChar(cp, [,,c]);
6667 }
6668
6669 var SIndex = cp - SBase;
6670 var TIndex = SIndex % TCount;
6671 var feature = [];
6672 if(TIndex !== 0){
6673 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6674 } else {
6675 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6676 feature[2] = {};
6677 for (j = 1; j < TCount; ++j){
6678 feature[2][TBase + j] = cp + j;
6679 }
6680 }
6681 return new UChar(cp, feature);
6682 }
6683 function fromCpFilter(next, cp, needFeature){
6684 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6685 }
6686
6687 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6688
6689 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6690 return function (cp, needFeature) {
6691 return strategy(next, cp, needFeature);
6692 };
6693 }, null);
6694
6695 UChar.isHighSurrogate = function(cp){
6696 return cp >= 0xD800 && cp <= 0xDBFF;
6697 };
6698 UChar.isLowSurrogate = function(cp){
6699 return cp >= 0xDC00 && cp <= 0xDFFF;
6700 };
6701
6702 UChar.prototype.prepFeature = function(){
6703 if(!this.feature){
6704 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6705 }
6706 };
6707
6708 UChar.prototype.toString = function(){
6709 if(this.codepoint < 0x10000){
6710 return String.fromCharCode(this.codepoint);
6711 } else {
6712 var x = this.codepoint - 0x10000;
6713 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6714 }
6715 };
6716
6717 UChar.prototype.getDecomp = function(){
6718 this.prepFeature();
6719 return this.feature[0] || null;
6720 };
6721
6722 UChar.prototype.isCompatibility = function(){
6723 this.prepFeature();
6724 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6725 };
6726 UChar.prototype.isExclude = function(){
6727 this.prepFeature();
6728 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6729 };
6730 UChar.prototype.getCanonicalClass = function(){
6731 this.prepFeature();
6732 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6733 };
6734 UChar.prototype.getComposite = function(following){
6735 this.prepFeature();
6736 if(!this.feature[2]){
6737 return null;
6738 }
6739 var cp = this.feature[2][following.codepoint];
6740 return cp ? UChar.fromCharCode(cp) : null;
6741 };
6742
6743 var UCharIterator = function(str){
6744 this.str = str;
6745 this.cursor = 0;
6746 };
6747 UCharIterator.prototype.next = function(){
6748 if(!!this.str && this.cursor < this.str.length){
6749 var cp = this.str.charCodeAt(this.cursor++);
6750 var d;
6751 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6752 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6753 ++this.cursor;
6754 }
6755 return UChar.fromCharCode(cp);
6756 } else {
6757 this.str = null;
6758 return null;
6759 }
6760 };
6761
6762 var RecursDecompIterator = function(it, cano){
6763 this.it = it;
6764 this.canonical = cano;
6765 this.resBuf = [];
6766 };
6767
6768 RecursDecompIterator.prototype.next = function(){
6769 function recursiveDecomp(cano, uchar){
6770 var decomp = uchar.getDecomp();
6771 if(!!decomp && !(cano && uchar.isCompatibility())){
6772 var ret = [];
6773 for(var i = 0; i < decomp.length; ++i){
6774 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6775 ret = ret.concat(a);
6776 }
6777 return ret;
6778 } else {
6779 return [uchar];
6780 }
6781 }
6782 if(this.resBuf.length === 0){
6783 var uchar = this.it.next();
6784 if(!uchar){
6785 return null;
6786 }
6787 this.resBuf = recursiveDecomp(this.canonical, uchar);
6788 }
6789 return this.resBuf.shift();
6790 };
6791
6792 var DecompIterator = function(it){
6793 this.it = it;
6794 this.resBuf = [];
6795 };
6796
6797 DecompIterator.prototype.next = function(){
6798 var cc;
6799 if(this.resBuf.length === 0){
6800 do{
6801 var uchar = this.it.next();
6802 if(!uchar){
6803 break;
6804 }
6805 cc = uchar.getCanonicalClass();
6806 var inspt = this.resBuf.length;
6807 if(cc !== 0){
6808 for(; inspt > 0; --inspt){
6809 var uchar2 = this.resBuf[inspt - 1];
6810 var cc2 = uchar2.getCanonicalClass();
6811 if(cc2 <= cc){
6812 break;
6813 }
6814 }
6815 }
6816 this.resBuf.splice(inspt, 0, uchar);
6817 } while(cc !== 0);
6818 }
6819 return this.resBuf.shift();
6820 };
6821
6822 var CompIterator = function(it){
6823 this.it = it;
6824 this.procBuf = [];
6825 this.resBuf = [];
6826 this.lastClass = null;
6827 };
6828
6829 CompIterator.prototype.next = function(){
6830 while(this.resBuf.length === 0){
6831 var uchar = this.it.next();
6832 if(!uchar){
6833 this.resBuf = this.procBuf;
6834 this.procBuf = [];
6835 break;
6836 }
6837 if(this.procBuf.length === 0){
6838 this.lastClass = uchar.getCanonicalClass();
6839 this.procBuf.push(uchar);
6840 } else {
6841 var starter = this.procBuf[0];
6842 var composite = starter.getComposite(uchar);
6843 var cc = uchar.getCanonicalClass();
6844 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6845 this.procBuf[0] = composite;
6846 } else {
6847 if(cc === 0){
6848 this.resBuf = this.procBuf;
6849 this.procBuf = [];
6850 }
6851 this.lastClass = cc;
6852 this.procBuf.push(uchar);
6853 }
6854 }
6855 }
6856 return this.resBuf.shift();
6857 };
6858
6859 var createIterator = function(mode, str){
6860 switch(mode){
6861 case "NFD":
6862 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6863 case "NFKD":
6864 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6865 case "NFC":
6866 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6867 case "NFKC":
6868 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6869 }
6870 throw mode + " is invalid";
6871 };
6872 var normalize = function(mode, str){
6873 var it = createIterator(mode, str);
6874 var ret = "";
6875 var uchar;
6876 while(!!(uchar = it.next())){
6877 ret += uchar.toString();
6878 }
6879 return ret;
6880 };
6881
6882 /* API functions */
6883 function nfd(str){
6884 return normalize("NFD", str);
6885 }
6886
6887 function nfkd(str){
6888 return normalize("NFKD", str);
6889 }
6890
6891 function nfc(str){
6892 return normalize("NFC", str);
6893 }
6894
6895 function nfkc(str){
6896 return normalize("NFKC", str);
6897 }
6898
6899 /* Unicode data */
6900 UChar.udata={
6901 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
6902 256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
6903 512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},
6904 768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},
6905 1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
6906 1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
6907 1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
6908 1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
6909 2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},
6910 2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
6911 2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},
6912 2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
6913 3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
6914 3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
6915 3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
6916 3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
6917 4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
6918 4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},
6919 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6920 4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},
6921 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6922 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6923 5632:{71231:[,9],71350:[,9],71351:[,7]},
6924 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6925 6144:{6313:[,228]},
6926 6400:{6457:[,222],6458:[,230],6459:[,220]},
6927 6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},
6928 6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
6929 7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},
6930 7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
6931 7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
6932 7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
6933 8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
6934 8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
6935 8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
6936 8960:{9001:[[12296]],9002:[[12297]]},
6937 9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
6938 10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
6939 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6940 11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
6941 11776:{11935:[[27597],256],12019:[[40863],256]},
6942 12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
6943 12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
6944 12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
6945 12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
6946 13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
6947 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6948 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6949 42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},
6950 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6951 43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
6952 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6953 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6954 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6955 48128:{113822:[,1]},
6956 53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
6957 53760:{119362:[,230],119363:[,230],119364:[,230]},
6958 54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
6959 54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
6960 54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
6961 55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
6962 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6963 60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
6964 61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
6965 61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
6966 63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
6967 63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
6968 64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
6969 64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
6970 64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
6971 64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
6972 65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
6973 65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
6974
6975 };
6976
6977 /***** Module to export */
6978 var unorm = {
6979 nfc: nfc,
6980 nfd: nfd,
6981 nfkc: nfkc,
6982 nfkd: nfkd
6983 };
6984
6985 /*globals module:true,define:true*/
6986
6987 // CommonJS
6988 if (typeof module === "object") {
6989 module.exports = unorm;
6990
6991 // AMD
6992 } else if (typeof define === "function" && define.amd) {
6993 define("unorm", function () {
6994 return unorm;
6995 });
6996
6997 // Global
6998 } else {
6999 root.unorm = unorm;
7000 }
7001
7002 /***** Export as shim for String::normalize method *****/
7003 /*
7004 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
7005
7006 21.1.3.12 String.prototype.normalize(form="NFC")
7007 When the normalize method is called with one argument form, the following steps are taken:
7008
7009 1. Let O be CheckObjectCoercible(this value).
7010 2. Let S be ToString(O).
7011 3. ReturnIfAbrupt(S).
7012 4. If form is not provided or undefined let form be "NFC".
7013 5. Let f be ToString(form).
7014 6. ReturnIfAbrupt(f).
7015 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
7016 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.
7017 9. Return ns.
7018
7019 The length property of the normalize method is 0.
7020
7021 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
7022 */
7023 unorm.shimApplied = false;
7024
7025 if (!String.prototype.normalize) {
7026 String.prototype.normalize = function(form) {
7027 var str = "" + this;
7028 form = form === undefined ? "NFC" : form;
7029
7030 if (form === "NFC") {
7031 return unorm.nfc(str);
7032 } else if (form === "NFD") {
7033 return unorm.nfd(str);
7034 } else if (form === "NFKC") {
7035 return unorm.nfkc(str);
7036 } else if (form === "NFKD") {
7037 return unorm.nfkd(str);
7038 } else {
7039 throw new RangeError("Invalid normalization form: " + form);
7040 }
7041 };
7042
7043 unorm.shimApplied = true;
7044 }
7045 }(this));
7046 </script>
7047 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
7048 !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)
7049 },_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))
7050 },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});
7051 </script>
7052 <script>/*!
7053 * Bootstrap v3.2.0 (http://getbootstrap.com)
7054 * Copyright 2011-2014 Twitter, Inc.
7055 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7056 */
7057 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>
7058 <script>(function() {
7059 'use strict';
7060
7061 /**
7062 * Extend an Object with another Object's properties.
7063 *
7064 * The source objects are specified as additional arguments.
7065 *
7066 * @param dst Object the object to extend.
7067 *
7068 * @return Object the final object.
7069 */
7070 var _extend = function(dst) {
7071 var sources = Array.prototype.slice.call(arguments, 1);
7072 for (var i=0; i<sources.length; ++i) {
7073 var src = sources[i];
7074 for (var p in src) {
7075 if (src.hasOwnProperty(p)) dst[p] = src[p];
7076 }
7077 }
7078 return dst;
7079 };
7080
7081
7082 /**
7083 * Defer execution of given function.
7084 * @param {Function} func
7085 */
7086 var _defer = function(func) {
7087 if (typeof setImmediate === 'function') {
7088 return setImmediate(func);
7089 } else {
7090 return setTimeout(func, 0);
7091 }
7092 };
7093
7094 /**
7095 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7096 */
7097 var Levenshtein = {
7098 /**
7099 * Calculate levenshtein distance of the two strings.
7100 *
7101 * @param str1 String the first string.
7102 * @param str2 String the second string.
7103 * @return Integer the levenshtein distance (0 and above).
7104 */
7105 get: function(str1, str2) {
7106 // base cases
7107 if (str1 === str2) return 0;
7108 if (str1.length === 0) return str2.length;
7109 if (str2.length === 0) return str1.length;
7110
7111 // two rows
7112 var prevRow = new Array(str2.length + 1),
7113 curCol, nextCol, i, j, tmp;
7114
7115 // initialise previous row
7116 for (i=0; i<prevRow.length; ++i) {
7117 prevRow[i] = i;
7118 }
7119
7120 // calculate current row distance from previous row
7121 for (i=0; i<str1.length; ++i) {
7122 nextCol = i + 1;
7123
7124 for (j=0; j<str2.length; ++j) {
7125 curCol = nextCol;
7126
7127 // substution
7128 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7129 // insertion
7130 tmp = curCol + 1;
7131 if (nextCol > tmp) {
7132 nextCol = tmp;
7133 }
7134 // deletion
7135 tmp = prevRow[j + 1] + 1;
7136 if (nextCol > tmp) {
7137 nextCol = tmp;
7138 }
7139
7140 // copy current col value into previous (in preparation for next iteration)
7141 prevRow[j] = curCol;
7142 }
7143
7144 // copy last col value into previous (in preparation for next iteration)
7145 prevRow[j] = nextCol;
7146 }
7147
7148 return nextCol;
7149 },
7150
7151 /**
7152 * Asynchronously calculate levenshtein distance of the two strings.
7153 *
7154 * @param str1 String the first string.
7155 * @param str2 String the second string.
7156 * @param cb Function callback function with signature: function(Error err, int distance)
7157 * @param [options] Object additional options.
7158 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7159 */
7160 getAsync: function(str1, str2, cb, options) {
7161 options = _extend({}, {
7162 progress: null
7163 }, options);
7164
7165 // base cases
7166 if (str1 === str2) return cb(null, 0);
7167 if (str1.length === 0) return cb(null, str2.length);
7168 if (str2.length === 0) return cb(null, str1.length);
7169
7170 // two rows
7171 var prevRow = new Array(str2.length + 1),
7172 curCol, nextCol,
7173 i, j, tmp,
7174 startTime, currentTime;
7175
7176 // initialise previous row
7177 for (i=0; i<prevRow.length; ++i) {
7178 prevRow[i] = i;
7179 }
7180
7181 nextCol = 1;
7182 i = 0;
7183 j = -1;
7184
7185 var __calculate = function() {
7186 // reset timer
7187 startTime = new Date().valueOf();
7188 currentTime = startTime;
7189
7190 // keep going until one second has elapsed
7191 while (currentTime - startTime < 1000) {
7192 // reached end of current row?
7193 if (str2.length <= (++j)) {
7194 // copy current into previous (in preparation for next iteration)
7195 prevRow[j] = nextCol;
7196
7197 // if already done all chars
7198 if (str1.length <= (++i)) {
7199 return cb(null, nextCol);
7200 }
7201 // else if we have more left to do
7202 else {
7203 nextCol = i + 1;
7204 j = 0;
7205 }
7206 }
7207
7208 // calculation
7209 curCol = nextCol;
7210
7211 // substution
7212 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7213 // insertion
7214 tmp = curCol + 1;
7215 if (nextCol > tmp) {
7216 nextCol = tmp;
7217 }
7218 // deletion
7219 tmp = prevRow[j + 1] + 1;
7220 if (nextCol > tmp) {
7221 nextCol = tmp;
7222 }
7223
7224 // copy current into previous (in preparation for next iteration)
7225 prevRow[j] = curCol;
7226
7227 // get current time
7228 currentTime = new Date().valueOf();
7229 }
7230
7231 // send a progress update?
7232 if (null !== options.progress) {
7233 try {
7234 options.progress.call(null, (i * 100.0/ str1.length));
7235 } catch (err) {
7236 return cb('Progress callback: ' + err.toString());
7237 }
7238 }
7239
7240 // next iteration
7241 _defer(__calculate);
7242 };
7243
7244 __calculate();
7245 }
7246
7247 };
7248
7249 // amd
7250 if (typeof define !== "undefined" && define !== null && define.amd) {
7251 define(function() {
7252 return Levenshtein;
7253 });
7254 }
7255 // commonjs
7256 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7257 module.exports = Levenshtein;
7258 }
7259 // web worker
7260 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7261 self.Levenshtein = Levenshtein;
7262 }
7263 // browser main thread
7264 else if (typeof window !== "undefined" && window !== null) {
7265 window.Levenshtein = Levenshtein;
7266 }
7267 }());
7268
7269 </script>
7270 <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},
7271 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;
7272 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-
7273 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]=
7274 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},
7275 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=
7276 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-
7277 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,
7278 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=
7279 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&&
7280 (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,
7281 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)-
7282 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:"+
7283 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:"+
7284 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+
7285 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),
7286 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>
7287 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],
7288 [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,
7289 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,
7290 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,
7291 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,
7292 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,
7293 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*
7294 (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,
7295 correctLevel:3,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),
7296 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",
7297 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7298 </script>
7299 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoinjs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
7300 (function (global){
7301 'use strict';
7302
7303 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7304 // original notice:
7305
7306 /*!
7307 * The buffer module from node.js, for the browser.
7308 *
7309 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7310 * @license MIT
7311 */
7312 function compare(a, b) {
7313 if (a === b) {
7314 return 0;
7315 }
7316
7317 var x = a.length;
7318 var y = b.length;
7319
7320 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
7321 if (a[i] !== b[i]) {
7322 x = a[i];
7323 y = b[i];
7324 break;
7325 }
7326 }
7327
7328 if (x < y) {
7329 return -1;
7330 }
7331 if (y < x) {
7332 return 1;
7333 }
7334 return 0;
7335 }
7336 function isBuffer(b) {
7337 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7338 return global.Buffer.isBuffer(b);
7339 }
7340 return !!(b != null && b._isBuffer);
7341 }
7342
7343 // based on node assert, original notice:
7344
7345 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
7346 //
7347 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7348 //
7349 // Originally from narwhal.js (http://narwhaljs.org)
7350 // Copyright (c) 2009 Thomas Robinson <280north.com>
7351 //
7352 // Permission is hereby granted, free of charge, to any person obtaining a copy
7353 // of this software and associated documentation files (the 'Software'), to
7354 // deal in the Software without restriction, including without limitation the
7355 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7356 // sell copies of the Software, and to permit persons to whom the Software is
7357 // furnished to do so, subject to the following conditions:
7358 //
7359 // The above copyright notice and this permission notice shall be included in
7360 // all copies or substantial portions of the Software.
7361 //
7362 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7363 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7364 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7365 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7366 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7367 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7368
7369 var util = require('util/');
7370 var hasOwn = Object.prototype.hasOwnProperty;
7371 var pSlice = Array.prototype.slice;
7372 var functionsHaveNames = (function () {
7373 return function foo() {}.name === 'foo';
7374 }());
7375 function pToString (obj) {
7376 return Object.prototype.toString.call(obj);
7377 }
7378 function isView(arrbuf) {
7379 if (isBuffer(arrbuf)) {
7380 return false;
7381 }
7382 if (typeof global.ArrayBuffer !== 'function') {
7383 return false;
7384 }
7385 if (typeof ArrayBuffer.isView === 'function') {
7386 return ArrayBuffer.isView(arrbuf);
7387 }
7388 if (!arrbuf) {
7389 return false;
7390 }
7391 if (arrbuf instanceof DataView) {
7392 return true;
7393 }
7394 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7395 return true;
7396 }
7397 return false;
7398 }
7399 // 1. The assert module provides functions that throw
7400 // AssertionError's when particular conditions are not met. The
7401 // assert module must conform to the following interface.
7402
7403 var assert = module.exports = ok;
7404
7405 // 2. The AssertionError is defined in assert.
7406 // new assert.AssertionError({ message: message,
7407 // actual: actual,
7408 // expected: expected })
7409
7410 var regex = /\s*function\s+([^\(\s]*)\s*/;
7411 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7412 function getName(func) {
7413 if (!util.isFunction(func)) {
7414 return;
7415 }
7416 if (functionsHaveNames) {
7417 return func.name;
7418 }
7419 var str = func.toString();
7420 var match = str.match(regex);
7421 return match && match[1];
7422 }
7423 assert.AssertionError = function AssertionError(options) {
7424 this.name = 'AssertionError';
7425 this.actual = options.actual;
7426 this.expected = options.expected;
7427 this.operator = options.operator;
7428 if (options.message) {
7429 this.message = options.message;
7430 this.generatedMessage = false;
7431 } else {
7432 this.message = getMessage(this);
7433 this.generatedMessage = true;
7434 }
7435 var stackStartFunction = options.stackStartFunction || fail;
7436 if (Error.captureStackTrace) {
7437 Error.captureStackTrace(this, stackStartFunction);
7438 } else {
7439 // non v8 browsers so we can have a stacktrace
7440 var err = new Error();
7441 if (err.stack) {
7442 var out = err.stack;
7443
7444 // try to strip useless frames
7445 var fn_name = getName(stackStartFunction);
7446 var idx = out.indexOf('\n' + fn_name);
7447 if (idx >= 0) {
7448 // once we have located the function frame
7449 // we need to strip out everything before it (and its line)
7450 var next_line = out.indexOf('\n', idx + 1);
7451 out = out.substring(next_line + 1);
7452 }
7453
7454 this.stack = out;
7455 }
7456 }
7457 };
7458
7459 // assert.AssertionError instanceof Error
7460 util.inherits(assert.AssertionError, Error);
7461
7462 function truncate(s, n) {
7463 if (typeof s === 'string') {
7464 return s.length < n ? s : s.slice(0, n);
7465 } else {
7466 return s;
7467 }
7468 }
7469 function inspect(something) {
7470 if (functionsHaveNames || !util.isFunction(something)) {
7471 return util.inspect(something);
7472 }
7473 var rawname = getName(something);
7474 var name = rawname ? ': ' + rawname : '';
7475 return '[Function' + name + ']';
7476 }
7477 function getMessage(self) {
7478 return truncate(inspect(self.actual), 128) + ' ' +
7479 self.operator + ' ' +
7480 truncate(inspect(self.expected), 128);
7481 }
7482
7483 // At present only the three keys mentioned above are used and
7484 // understood by the spec. Implementations or sub modules can pass
7485 // other keys to the AssertionError's constructor - they will be
7486 // ignored.
7487
7488 // 3. All of the following functions must throw an AssertionError
7489 // when a corresponding condition is not met, with a message that
7490 // may be undefined if not provided. All assertion methods provide
7491 // both the actual and expected values to the assertion error for
7492 // display purposes.
7493
7494 function fail(actual, expected, message, operator, stackStartFunction) {
7495 throw new assert.AssertionError({
7496 message: message,
7497 actual: actual,
7498 expected: expected,
7499 operator: operator,
7500 stackStartFunction: stackStartFunction
7501 });
7502 }
7503
7504 // EXTENSION! allows for well behaved errors defined elsewhere.
7505 assert.fail = fail;
7506
7507 // 4. Pure assertion tests whether a value is truthy, as determined
7508 // by !!guard.
7509 // assert.ok(guard, message_opt);
7510 // This statement is equivalent to assert.equal(true, !!guard,
7511 // message_opt);. To test strictly for the value true, use
7512 // assert.strictEqual(true, guard, message_opt);.
7513
7514 function ok(value, message) {
7515 if (!value) fail(value, true, message, '==', assert.ok);
7516 }
7517 assert.ok = ok;
7518
7519 // 5. The equality assertion tests shallow, coercive equality with
7520 // ==.
7521 // assert.equal(actual, expected, message_opt);
7522
7523 assert.equal = function equal(actual, expected, message) {
7524 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7525 };
7526
7527 // 6. The non-equality assertion tests for whether two objects are not equal
7528 // with != assert.notEqual(actual, expected, message_opt);
7529
7530 assert.notEqual = function notEqual(actual, expected, message) {
7531 if (actual == expected) {
7532 fail(actual, expected, message, '!=', assert.notEqual);
7533 }
7534 };
7535
7536 // 7. The equivalence assertion tests a deep equality relation.
7537 // assert.deepEqual(actual, expected, message_opt);
7538
7539 assert.deepEqual = function deepEqual(actual, expected, message) {
7540 if (!_deepEqual(actual, expected, false)) {
7541 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
7542 }
7543 };
7544
7545 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7546 if (!_deepEqual(actual, expected, true)) {
7547 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7548 }
7549 };
7550
7551 function _deepEqual(actual, expected, strict, memos) {
7552 // 7.1. All identical values are equivalent, as determined by ===.
7553 if (actual === expected) {
7554 return true;
7555 } else if (isBuffer(actual) && isBuffer(expected)) {
7556 return compare(actual, expected) === 0;
7557
7558 // 7.2. If the expected value is a Date object, the actual value is
7559 // equivalent if it is also a Date object that refers to the same time.
7560 } else if (util.isDate(actual) && util.isDate(expected)) {
7561 return actual.getTime() === expected.getTime();
7562
7563 // 7.3 If the expected value is a RegExp object, the actual value is
7564 // equivalent if it is also a RegExp object with the same source and
7565 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7566 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7567 return actual.source === expected.source &&
7568 actual.global === expected.global &&
7569 actual.multiline === expected.multiline &&
7570 actual.lastIndex === expected.lastIndex &&
7571 actual.ignoreCase === expected.ignoreCase;
7572
7573 // 7.4. Other pairs that do not both pass typeof value == 'object',
7574 // equivalence is determined by ==.
7575 } else if ((actual === null || typeof actual !== 'object') &&
7576 (expected === null || typeof expected !== 'object')) {
7577 return strict ? actual === expected : actual == expected;
7578
7579 // If both values are instances of typed arrays, wrap their underlying
7580 // ArrayBuffers in a Buffer each to increase performance
7581 // This optimization requires the arrays to have the same type as checked by
7582 // Object.prototype.toString (aka pToString). Never perform binary
7583 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
7584 // bit patterns are not identical.
7585 } else if (isView(actual) && isView(expected) &&
7586 pToString(actual) === pToString(expected) &&
7587 !(actual instanceof Float32Array ||
7588 actual instanceof Float64Array)) {
7589 return compare(new Uint8Array(actual.buffer),
7590 new Uint8Array(expected.buffer)) === 0;
7591
7592 // 7.5 For all other Object pairs, including Array objects, equivalence is
7593 // determined by having the same number of owned properties (as verified
7594 // with Object.prototype.hasOwnProperty.call), the same set of keys
7595 // (although not necessarily the same order), equivalent values for every
7596 // corresponding key, and an identical 'prototype' property. Note: this
7597 // accounts for both named and indexed properties on Arrays.
7598 } else if (isBuffer(actual) !== isBuffer(expected)) {
7599 return false;
7600 } else {
7601 memos = memos || {actual: [], expected: []};
7602
7603 var actualIndex = memos.actual.indexOf(actual);
7604 if (actualIndex !== -1) {
7605 if (actualIndex === memos.expected.indexOf(expected)) {
7606 return true;
7607 }
7608 }
7609
7610 memos.actual.push(actual);
7611 memos.expected.push(expected);
7612
7613 return objEquiv(actual, expected, strict, memos);
7614 }
7615 }
7616
7617 function isArguments(object) {
7618 return Object.prototype.toString.call(object) == '[object Arguments]';
7619 }
7620
7621 function objEquiv(a, b, strict, actualVisitedObjects) {
7622 if (a === null || a === undefined || b === null || b === undefined)
7623 return false;
7624 // if one is a primitive, the other must be same
7625 if (util.isPrimitive(a) || util.isPrimitive(b))
7626 return a === b;
7627 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7628 return false;
7629 var aIsArgs = isArguments(a);
7630 var bIsArgs = isArguments(b);
7631 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7632 return false;
7633 if (aIsArgs) {
7634 a = pSlice.call(a);
7635 b = pSlice.call(b);
7636 return _deepEqual(a, b, strict);
7637 }
7638 var ka = objectKeys(a);
7639 var kb = objectKeys(b);
7640 var key, i;
7641 // having the same number of owned properties (keys incorporates
7642 // hasOwnProperty)
7643 if (ka.length !== kb.length)
7644 return false;
7645 //the same set of keys (although not necessarily the same order),
7646 ka.sort();
7647 kb.sort();
7648 //~~~cheap key test
7649 for (i = ka.length - 1; i >= 0; i--) {
7650 if (ka[i] !== kb[i])
7651 return false;
7652 }
7653 //equivalent values for every corresponding key, and
7654 //~~~possibly expensive deep test
7655 for (i = ka.length - 1; i >= 0; i--) {
7656 key = ka[i];
7657 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7658 return false;
7659 }
7660 return true;
7661 }
7662
7663 // 8. The non-equivalence assertion tests for any deep inequality.
7664 // assert.notDeepEqual(actual, expected, message_opt);
7665
7666 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7667 if (_deepEqual(actual, expected, false)) {
7668 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7669 }
7670 };
7671
7672 assert.notDeepStrictEqual = notDeepStrictEqual;
7673 function notDeepStrictEqual(actual, expected, message) {
7674 if (_deepEqual(actual, expected, true)) {
7675 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7676 }
7677 }
7678
7679
7680 // 9. The strict equality assertion tests strict equality, as determined by ===.
7681 // assert.strictEqual(actual, expected, message_opt);
7682
7683 assert.strictEqual = function strictEqual(actual, expected, message) {
7684 if (actual !== expected) {
7685 fail(actual, expected, message, '===', assert.strictEqual);
7686 }
7687 };
7688
7689 // 10. The strict non-equality assertion tests for strict inequality, as
7690 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7691
7692 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7693 if (actual === expected) {
7694 fail(actual, expected, message, '!==', assert.notStrictEqual);
7695 }
7696 };
7697
7698 function expectedException(actual, expected) {
7699 if (!actual || !expected) {
7700 return false;
7701 }
7702
7703 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7704 return expected.test(actual);
7705 }
7706
7707 try {
7708 if (actual instanceof expected) {
7709 return true;
7710 }
7711 } catch (e) {
7712 // Ignore. The instanceof check doesn't work for arrow functions.
7713 }
7714
7715 if (Error.isPrototypeOf(expected)) {
7716 return false;
7717 }
7718
7719 return expected.call({}, actual) === true;
7720 }
7721
7722 function _tryBlock(block) {
7723 var error;
7724 try {
7725 block();
7726 } catch (e) {
7727 error = e;
7728 }
7729 return error;
7730 }
7731
7732 function _throws(shouldThrow, block, expected, message) {
7733 var actual;
7734
7735 if (typeof block !== 'function') {
7736 throw new TypeError('"block" argument must be a function');
7737 }
7738
7739 if (typeof expected === 'string') {
7740 message = expected;
7741 expected = null;
7742 }
7743
7744 actual = _tryBlock(block);
7745
7746 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7747 (message ? ' ' + message : '.');
7748
7749 if (shouldThrow && !actual) {
7750 fail(actual, expected, 'Missing expected exception' + message);
7751 }
7752
7753 var userProvidedMessage = typeof message === 'string';
7754 var isUnwantedException = !shouldThrow && util.isError(actual);
7755 var isUnexpectedException = !shouldThrow && actual && !expected;
7756
7757 if ((isUnwantedException &&
7758 userProvidedMessage &&
7759 expectedException(actual, expected)) ||
7760 isUnexpectedException) {
7761 fail(actual, expected, 'Got unwanted exception' + message);
7762 }
7763
7764 if ((shouldThrow && actual && expected &&
7765 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7766 throw actual;
7767 }
7768 }
7769
7770 // 11. Expected to throw an error:
7771 // assert.throws(block, Error_opt, message_opt);
7772
7773 assert.throws = function(block, /*optional*/error, /*optional*/message) {
7774 _throws(true, block, error, message);
7775 };
7776
7777 // EXTENSION! This is annoying to write outside this module.
7778 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7779 _throws(false, block, error, message);
7780 };
7781
7782 assert.ifError = function(err) { if (err) throw err; };
7783
7784 var objectKeys = Object.keys || function (obj) {
7785 var keys = [];
7786 for (var key in obj) {
7787 if (hasOwn.call(obj, key)) keys.push(key);
7788 }
7789 return keys;
7790 };
7791
7792 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7793 },{"util/":32}],2:[function(require,module,exports){
7794 'use strict'
7795
7796 exports.byteLength = byteLength
7797 exports.toByteArray = toByteArray
7798 exports.fromByteArray = fromByteArray
7799
7800 var lookup = []
7801 var revLookup = []
7802 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7803
7804 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7805 for (var i = 0, len = code.length; i < len; ++i) {
7806 lookup[i] = code[i]
7807 revLookup[code.charCodeAt(i)] = i
7808 }
7809
7810 revLookup['-'.charCodeAt(0)] = 62
7811 revLookup['_'.charCodeAt(0)] = 63
7812
7813 function placeHoldersCount (b64) {
7814 var len = b64.length
7815 if (len % 4 > 0) {
7816 throw new Error('Invalid string. Length must be a multiple of 4')
7817 }
7818
7819 // the number of equal signs (place holders)
7820 // if there are two placeholders, than the two characters before it
7821 // represent one byte
7822 // if there is only one, then the three characters before it represent 2 bytes
7823 // this is just a cheap hack to not do indexOf twice
7824 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
7825 }
7826
7827 function byteLength (b64) {
7828 // base64 is 4/3 + up to two characters of the original data
7829 return (b64.length * 3 / 4) - placeHoldersCount(b64)
7830 }
7831
7832 function toByteArray (b64) {
7833 var i, l, tmp, placeHolders, arr
7834 var len = b64.length
7835 placeHolders = placeHoldersCount(b64)
7836
7837 arr = new Arr((len * 3 / 4) - placeHolders)
7838
7839 // if there are placeholders, only get up to the last complete 4 chars
7840 l = placeHolders > 0 ? len - 4 : len
7841
7842 var L = 0
7843
7844 for (i = 0; i < l; i += 4) {
7845 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
7846 arr[L++] = (tmp >> 16) & 0xFF
7847 arr[L++] = (tmp >> 8) & 0xFF
7848 arr[L++] = tmp & 0xFF
7849 }
7850
7851 if (placeHolders === 2) {
7852 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
7853 arr[L++] = tmp & 0xFF
7854 } else if (placeHolders === 1) {
7855 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
7856 arr[L++] = (tmp >> 8) & 0xFF
7857 arr[L++] = tmp & 0xFF
7858 }
7859
7860 return arr
7861 }
7862
7863 function tripletToBase64 (num) {
7864 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
7865 }
7866
7867 function encodeChunk (uint8, start, end) {
7868 var tmp
7869 var output = []
7870 for (var i = start; i < end; i += 3) {
7871 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
7872 output.push(tripletToBase64(tmp))
7873 }
7874 return output.join('')
7875 }
7876
7877 function fromByteArray (uint8) {
7878 var tmp
7879 var len = uint8.length
7880 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
7881 var output = ''
7882 var parts = []
7883 var maxChunkLength = 16383 // must be multiple of 3
7884
7885 // go through the array every three bytes, we'll deal with trailing stuff later
7886 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7887 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
7888 }
7889
7890 // pad the end with zeros, but make sure to not forget the extra bytes
7891 if (extraBytes === 1) {
7892 tmp = uint8[len - 1]
7893 output += lookup[tmp >> 2]
7894 output += lookup[(tmp << 4) & 0x3F]
7895 output += '=='
7896 } else if (extraBytes === 2) {
7897 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
7898 output += lookup[tmp >> 10]
7899 output += lookup[(tmp >> 4) & 0x3F]
7900 output += lookup[(tmp << 2) & 0x3F]
7901 output += '='
7902 }
7903
7904 parts.push(output)
7905
7906 return parts.join('')
7907 }
7908
7909 },{}],3:[function(require,module,exports){
7910
7911 },{}],4:[function(require,module,exports){
7912 /*!
7913 * The buffer module from node.js, for the browser.
7914 *
7915 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7916 * @license MIT
7917 */
7918 /* eslint-disable no-proto */
7919
7920 'use strict'
7921
7922 var base64 = require('base64-js')
7923 var ieee754 = require('ieee754')
7924
7925 exports.Buffer = Buffer
7926 exports.SlowBuffer = SlowBuffer
7927 exports.INSPECT_MAX_BYTES = 50
7928
7929 var K_MAX_LENGTH = 0x7fffffff
7930 exports.kMaxLength = K_MAX_LENGTH
7931
7932 /**
7933 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7934 * === true Use Uint8Array implementation (fastest)
7935 * === false Print warning and recommend using `buffer` v4.x which has an Object
7936 * implementation (most compatible, even IE6)
7937 *
7938 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7939 * Opera 11.6+, iOS 4.2+.
7940 *
7941 * We report that the browser does not support typed arrays if the are not subclassable
7942 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
7943 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
7944 * for __proto__ and has a buggy typed array implementation.
7945 */
7946 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
7947
7948 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
7949 typeof console.error === 'function') {
7950 console.error(
7951 'This browser lacks typed array (Uint8Array) support which is required by ' +
7952 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
7953 )
7954 }
7955
7956 function typedArraySupport () {
7957 // Can typed array instances can be augmented?
7958 try {
7959 var arr = new Uint8Array(1)
7960 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
7961 return arr.foo() === 42
7962 } catch (e) {
7963 return false
7964 }
7965 }
7966
7967 function createBuffer (length) {
7968 if (length > K_MAX_LENGTH) {
7969 throw new RangeError('Invalid typed array length')
7970 }
7971 // Return an augmented `Uint8Array` instance
7972 var buf = new Uint8Array(length)
7973 buf.__proto__ = Buffer.prototype
7974 return buf
7975 }
7976
7977 /**
7978 * The Buffer constructor returns instances of `Uint8Array` that have their
7979 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
7980 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
7981 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
7982 * returns a single octet.
7983 *
7984 * The `Uint8Array` prototype remains unmodified.
7985 */
7986
7987 function Buffer (arg, encodingOrOffset, length) {
7988 // Common case.
7989 if (typeof arg === 'number') {
7990 if (typeof encodingOrOffset === 'string') {
7991 throw new Error(
7992 'If encoding is specified then the first argument must be a string'
7993 )
7994 }
7995 return allocUnsafe(arg)
7996 }
7997 return from(arg, encodingOrOffset, length)
7998 }
7999
8000 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
8001 if (typeof Symbol !== 'undefined' && Symbol.species &&
8002 Buffer[Symbol.species] === Buffer) {
8003 Object.defineProperty(Buffer, Symbol.species, {
8004 value: null,
8005 configurable: true,
8006 enumerable: false,
8007 writable: false
8008 })
8009 }
8010
8011 Buffer.poolSize = 8192 // not used by this implementation
8012
8013 function from (value, encodingOrOffset, length) {
8014 if (typeof value === 'number') {
8015 throw new TypeError('"value" argument must not be a number')
8016 }
8017
8018 if (value instanceof ArrayBuffer) {
8019 return fromArrayBuffer(value, encodingOrOffset, length)
8020 }
8021
8022 if (typeof value === 'string') {
8023 return fromString(value, encodingOrOffset)
8024 }
8025
8026 return fromObject(value)
8027 }
8028
8029 /**
8030 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8031 * if value is a number.
8032 * Buffer.from(str[, encoding])
8033 * Buffer.from(array)
8034 * Buffer.from(buffer)
8035 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8036 **/
8037 Buffer.from = function (value, encodingOrOffset, length) {
8038 return from(value, encodingOrOffset, length)
8039 }
8040
8041 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8042 // https://github.com/feross/buffer/pull/148
8043 Buffer.prototype.__proto__ = Uint8Array.prototype
8044 Buffer.__proto__ = Uint8Array
8045
8046 function assertSize (size) {
8047 if (typeof size !== 'number') {
8048 throw new TypeError('"size" argument must be a number')
8049 } else if (size < 0) {
8050 throw new RangeError('"size" argument must not be negative')
8051 }
8052 }
8053
8054 function alloc (size, fill, encoding) {
8055 assertSize(size)
8056 if (size <= 0) {
8057 return createBuffer(size)
8058 }
8059 if (fill !== undefined) {
8060 // Only pay attention to encoding if it's a string. This
8061 // prevents accidentally sending in a number that would
8062 // be interpretted as a start offset.
8063 return typeof encoding === 'string'
8064 ? createBuffer(size).fill(fill, encoding)
8065 : createBuffer(size).fill(fill)
8066 }
8067 return createBuffer(size)
8068 }
8069
8070 /**
8071 * Creates a new filled Buffer instance.
8072 * alloc(size[, fill[, encoding]])
8073 **/
8074 Buffer.alloc = function (size, fill, encoding) {
8075 return alloc(size, fill, encoding)
8076 }
8077
8078 function allocUnsafe (size) {
8079 assertSize(size)
8080 return createBuffer(size < 0 ? 0 : checked(size) | 0)
8081 }
8082
8083 /**
8084 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8085 * */
8086 Buffer.allocUnsafe = function (size) {
8087 return allocUnsafe(size)
8088 }
8089 /**
8090 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8091 */
8092 Buffer.allocUnsafeSlow = function (size) {
8093 return allocUnsafe(size)
8094 }
8095
8096 function fromString (string, encoding) {
8097 if (typeof encoding !== 'string' || encoding === '') {
8098 encoding = 'utf8'
8099 }
8100
8101 if (!Buffer.isEncoding(encoding)) {
8102 throw new TypeError('"encoding" must be a valid string encoding')
8103 }
8104
8105 var length = byteLength(string, encoding) | 0
8106 var buf = createBuffer(length)
8107
8108 var actual = buf.write(string, encoding)
8109
8110 if (actual !== length) {
8111 // Writing a hex string, for example, that contains invalid characters will
8112 // cause everything after the first invalid character to be ignored. (e.g.
8113 // 'abxxcd' will be treated as 'ab')
8114 buf = buf.slice(0, actual)
8115 }
8116
8117 return buf
8118 }
8119
8120 function fromArrayLike (array) {
8121 var length = array.length < 0 ? 0 : checked(array.length) | 0
8122 var buf = createBuffer(length)
8123 for (var i = 0; i < length; i += 1) {
8124 buf[i] = array[i] & 255
8125 }
8126 return buf
8127 }
8128
8129 function fromArrayBuffer (array, byteOffset, length) {
8130 if (byteOffset < 0 || array.byteLength < byteOffset) {
8131 throw new RangeError('\'offset\' is out of bounds')
8132 }
8133
8134 if (array.byteLength < byteOffset + (length || 0)) {
8135 throw new RangeError('\'length\' is out of bounds')
8136 }
8137
8138 var buf
8139 if (byteOffset === undefined && length === undefined) {
8140 buf = new Uint8Array(array)
8141 } else if (length === undefined) {
8142 buf = new Uint8Array(array, byteOffset)
8143 } else {
8144 buf = new Uint8Array(array, byteOffset, length)
8145 }
8146
8147 // Return an augmented `Uint8Array` instance
8148 buf.__proto__ = Buffer.prototype
8149 return buf
8150 }
8151
8152 function fromObject (obj) {
8153 if (Buffer.isBuffer(obj)) {
8154 var len = checked(obj.length) | 0
8155 var buf = createBuffer(len)
8156
8157 if (buf.length === 0) {
8158 return buf
8159 }
8160
8161 obj.copy(buf, 0, 0, len)
8162 return buf
8163 }
8164
8165 if (obj) {
8166 if (isArrayBufferView(obj) || 'length' in obj) {
8167 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8168 return createBuffer(0)
8169 }
8170 return fromArrayLike(obj)
8171 }
8172
8173 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8174 return fromArrayLike(obj.data)
8175 }
8176 }
8177
8178 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8179 }
8180
8181 function checked (length) {
8182 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8183 // length is NaN (which is otherwise coerced to zero.)
8184 if (length >= K_MAX_LENGTH) {
8185 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8186 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
8187 }
8188 return length | 0
8189 }
8190
8191 function SlowBuffer (length) {
8192 if (+length != length) { // eslint-disable-line eqeqeq
8193 length = 0
8194 }
8195 return Buffer.alloc(+length)
8196 }
8197
8198 Buffer.isBuffer = function isBuffer (b) {
8199 return b != null && b._isBuffer === true
8200 }
8201
8202 Buffer.compare = function compare (a, b) {
8203 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8204 throw new TypeError('Arguments must be Buffers')
8205 }
8206
8207 if (a === b) return 0
8208
8209 var x = a.length
8210 var y = b.length
8211
8212 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
8213 if (a[i] !== b[i]) {
8214 x = a[i]
8215 y = b[i]
8216 break
8217 }
8218 }
8219
8220 if (x < y) return -1
8221 if (y < x) return 1
8222 return 0
8223 }
8224
8225 Buffer.isEncoding = function isEncoding (encoding) {
8226 switch (String(encoding).toLowerCase()) {
8227 case 'hex':
8228 case 'utf8':
8229 case 'utf-8':
8230 case 'ascii':
8231 case 'latin1':
8232 case 'binary':
8233 case 'base64':
8234 case 'ucs2':
8235 case 'ucs-2':
8236 case 'utf16le':
8237 case 'utf-16le':
8238 return true
8239 default:
8240 return false
8241 }
8242 }
8243
8244 Buffer.concat = function concat (list, length) {
8245 if (!Array.isArray(list)) {
8246 throw new TypeError('"list" argument must be an Array of Buffers')
8247 }
8248
8249 if (list.length === 0) {
8250 return Buffer.alloc(0)
8251 }
8252
8253 var i
8254 if (length === undefined) {
8255 length = 0
8256 for (i = 0; i < list.length; ++i) {
8257 length += list[i].length
8258 }
8259 }
8260
8261 var buffer = Buffer.allocUnsafe(length)
8262 var pos = 0
8263 for (i = 0; i < list.length; ++i) {
8264 var buf = list[i]
8265 if (!Buffer.isBuffer(buf)) {
8266 throw new TypeError('"list" argument must be an Array of Buffers')
8267 }
8268 buf.copy(buffer, pos)
8269 pos += buf.length
8270 }
8271 return buffer
8272 }
8273
8274 function byteLength (string, encoding) {
8275 if (Buffer.isBuffer(string)) {
8276 return string.length
8277 }
8278 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8279 return string.byteLength
8280 }
8281 if (typeof string !== 'string') {
8282 string = '' + string
8283 }
8284
8285 var len = string.length
8286 if (len === 0) return 0
8287
8288 // Use a for loop to avoid recursion
8289 var loweredCase = false
8290 for (;;) {
8291 switch (encoding) {
8292 case 'ascii':
8293 case 'latin1':
8294 case 'binary':
8295 return len
8296 case 'utf8':
8297 case 'utf-8':
8298 case undefined:
8299 return utf8ToBytes(string).length
8300 case 'ucs2':
8301 case 'ucs-2':
8302 case 'utf16le':
8303 case 'utf-16le':
8304 return len * 2
8305 case 'hex':
8306 return len >>> 1
8307 case 'base64':
8308 return base64ToBytes(string).length
8309 default:
8310 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8311 encoding = ('' + encoding).toLowerCase()
8312 loweredCase = true
8313 }
8314 }
8315 }
8316 Buffer.byteLength = byteLength
8317
8318 function slowToString (encoding, start, end) {
8319 var loweredCase = false
8320
8321 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
8322 // property of a typed array.
8323
8324 // This behaves neither like String nor Uint8Array in that we set start/end
8325 // to their upper/lower bounds if the value passed is out of range.
8326 // undefined is handled specially as per ECMA-262 6th Edition,
8327 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8328 if (start === undefined || start < 0) {
8329 start = 0
8330 }
8331 // Return early if start > this.length. Done here to prevent potential uint32
8332 // coercion fail below.
8333 if (start > this.length) {
8334 return ''
8335 }
8336
8337 if (end === undefined || end > this.length) {
8338 end = this.length
8339 }
8340
8341 if (end <= 0) {
8342 return ''
8343 }
8344
8345 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
8346 end >>>= 0
8347 start >>>= 0
8348
8349 if (end <= start) {
8350 return ''
8351 }
8352
8353 if (!encoding) encoding = 'utf8'
8354
8355 while (true) {
8356 switch (encoding) {
8357 case 'hex':
8358 return hexSlice(this, start, end)
8359
8360 case 'utf8':
8361 case 'utf-8':
8362 return utf8Slice(this, start, end)
8363
8364 case 'ascii':
8365 return asciiSlice(this, start, end)
8366
8367 case 'latin1':
8368 case 'binary':
8369 return latin1Slice(this, start, end)
8370
8371 case 'base64':
8372 return base64Slice(this, start, end)
8373
8374 case 'ucs2':
8375 case 'ucs-2':
8376 case 'utf16le':
8377 case 'utf-16le':
8378 return utf16leSlice(this, start, end)
8379
8380 default:
8381 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8382 encoding = (encoding + '').toLowerCase()
8383 loweredCase = true
8384 }
8385 }
8386 }
8387
8388 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8389 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8390 // reliably in a browserify context because there could be multiple different
8391 // copies of the 'buffer' package in use. This method works even for Buffer
8392 // instances that were created from another copy of the `buffer` package.
8393 // See: https://github.com/feross/buffer/issues/154
8394 Buffer.prototype._isBuffer = true
8395
8396 function swap (b, n, m) {
8397 var i = b[n]
8398 b[n] = b[m]
8399 b[m] = i
8400 }
8401
8402 Buffer.prototype.swap16 = function swap16 () {
8403 var len = this.length
8404 if (len % 2 !== 0) {
8405 throw new RangeError('Buffer size must be a multiple of 16-bits')
8406 }
8407 for (var i = 0; i < len; i += 2) {
8408 swap(this, i, i + 1)
8409 }
8410 return this
8411 }
8412
8413 Buffer.prototype.swap32 = function swap32 () {
8414 var len = this.length
8415 if (len % 4 !== 0) {
8416 throw new RangeError('Buffer size must be a multiple of 32-bits')
8417 }
8418 for (var i = 0; i < len; i += 4) {
8419 swap(this, i, i + 3)
8420 swap(this, i + 1, i + 2)
8421 }
8422 return this
8423 }
8424
8425 Buffer.prototype.swap64 = function swap64 () {
8426 var len = this.length
8427 if (len % 8 !== 0) {
8428 throw new RangeError('Buffer size must be a multiple of 64-bits')
8429 }
8430 for (var i = 0; i < len; i += 8) {
8431 swap(this, i, i + 7)
8432 swap(this, i + 1, i + 6)
8433 swap(this, i + 2, i + 5)
8434 swap(this, i + 3, i + 4)
8435 }
8436 return this
8437 }
8438
8439 Buffer.prototype.toString = function toString () {
8440 var length = this.length
8441 if (length === 0) return ''
8442 if (arguments.length === 0) return utf8Slice(this, 0, length)
8443 return slowToString.apply(this, arguments)
8444 }
8445
8446 Buffer.prototype.equals = function equals (b) {
8447 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8448 if (this === b) return true
8449 return Buffer.compare(this, b) === 0
8450 }
8451
8452 Buffer.prototype.inspect = function inspect () {
8453 var str = ''
8454 var max = exports.INSPECT_MAX_BYTES
8455 if (this.length > 0) {
8456 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
8457 if (this.length > max) str += ' ... '
8458 }
8459 return '<Buffer ' + str + '>'
8460 }
8461
8462 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8463 if (!Buffer.isBuffer(target)) {
8464 throw new TypeError('Argument must be a Buffer')
8465 }
8466
8467 if (start === undefined) {
8468 start = 0
8469 }
8470 if (end === undefined) {
8471 end = target ? target.length : 0
8472 }
8473 if (thisStart === undefined) {
8474 thisStart = 0
8475 }
8476 if (thisEnd === undefined) {
8477 thisEnd = this.length
8478 }
8479
8480 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
8481 throw new RangeError('out of range index')
8482 }
8483
8484 if (thisStart >= thisEnd && start >= end) {
8485 return 0
8486 }
8487 if (thisStart >= thisEnd) {
8488 return -1
8489 }
8490 if (start >= end) {
8491 return 1
8492 }
8493
8494 start >>>= 0
8495 end >>>= 0
8496 thisStart >>>= 0
8497 thisEnd >>>= 0
8498
8499 if (this === target) return 0
8500
8501 var x = thisEnd - thisStart
8502 var y = end - start
8503 var len = Math.min(x, y)
8504
8505 var thisCopy = this.slice(thisStart, thisEnd)
8506 var targetCopy = target.slice(start, end)
8507
8508 for (var i = 0; i < len; ++i) {
8509 if (thisCopy[i] !== targetCopy[i]) {
8510 x = thisCopy[i]
8511 y = targetCopy[i]
8512 break
8513 }
8514 }
8515
8516 if (x < y) return -1
8517 if (y < x) return 1
8518 return 0
8519 }
8520
8521 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
8522 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8523 //
8524 // Arguments:
8525 // - buffer - a Buffer to search
8526 // - val - a string, Buffer, or number
8527 // - byteOffset - an index into `buffer`; will be clamped to an int32
8528 // - encoding - an optional encoding, relevant is val is a string
8529 // - dir - true for indexOf, false for lastIndexOf
8530 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8531 // Empty buffer means no match
8532 if (buffer.length === 0) return -1
8533
8534 // Normalize byteOffset
8535 if (typeof byteOffset === 'string') {
8536 encoding = byteOffset
8537 byteOffset = 0
8538 } else if (byteOffset > 0x7fffffff) {
8539 byteOffset = 0x7fffffff
8540 } else if (byteOffset < -0x80000000) {
8541 byteOffset = -0x80000000
8542 }
8543 byteOffset = +byteOffset // Coerce to Number.
8544 if (numberIsNaN(byteOffset)) {
8545 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
8546 byteOffset = dir ? 0 : (buffer.length - 1)
8547 }
8548
8549 // Normalize byteOffset: negative offsets start from the end of the buffer
8550 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
8551 if (byteOffset >= buffer.length) {
8552 if (dir) return -1
8553 else byteOffset = buffer.length - 1
8554 } else if (byteOffset < 0) {
8555 if (dir) byteOffset = 0
8556 else return -1
8557 }
8558
8559 // Normalize val
8560 if (typeof val === 'string') {
8561 val = Buffer.from(val, encoding)
8562 }
8563
8564 // Finally, search either indexOf (if dir is true) or lastIndexOf
8565 if (Buffer.isBuffer(val)) {
8566 // Special case: looking for empty string/buffer always fails
8567 if (val.length === 0) {
8568 return -1
8569 }
8570 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8571 } else if (typeof val === 'number') {
8572 val = val & 0xFF // Search for a byte value [0-255]
8573 if (typeof Uint8Array.prototype.indexOf === 'function') {
8574 if (dir) {
8575 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8576 } else {
8577 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8578 }
8579 }
8580 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8581 }
8582
8583 throw new TypeError('val must be string, number or Buffer')
8584 }
8585
8586 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8587 var indexSize = 1
8588 var arrLength = arr.length
8589 var valLength = val.length
8590
8591 if (encoding !== undefined) {
8592 encoding = String(encoding).toLowerCase()
8593 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
8594 encoding === 'utf16le' || encoding === 'utf-16le') {
8595 if (arr.length < 2 || val.length < 2) {
8596 return -1
8597 }
8598 indexSize = 2
8599 arrLength /= 2
8600 valLength /= 2
8601 byteOffset /= 2
8602 }
8603 }
8604
8605 function read (buf, i) {
8606 if (indexSize === 1) {
8607 return buf[i]
8608 } else {
8609 return buf.readUInt16BE(i * indexSize)
8610 }
8611 }
8612
8613 var i
8614 if (dir) {
8615 var foundIndex = -1
8616 for (i = byteOffset; i < arrLength; i++) {
8617 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
8618 if (foundIndex === -1) foundIndex = i
8619 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
8620 } else {
8621 if (foundIndex !== -1) i -= i - foundIndex
8622 foundIndex = -1
8623 }
8624 }
8625 } else {
8626 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
8627 for (i = byteOffset; i >= 0; i--) {
8628 var found = true
8629 for (var j = 0; j < valLength; j++) {
8630 if (read(arr, i + j) !== read(val, j)) {
8631 found = false
8632 break
8633 }
8634 }
8635 if (found) return i
8636 }
8637 }
8638
8639 return -1
8640 }
8641
8642 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8643 return this.indexOf(val, byteOffset, encoding) !== -1
8644 }
8645
8646 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8647 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8648 }
8649
8650 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8651 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8652 }
8653
8654 function hexWrite (buf, string, offset, length) {
8655 offset = Number(offset) || 0
8656 var remaining = buf.length - offset
8657 if (!length) {
8658 length = remaining
8659 } else {
8660 length = Number(length)
8661 if (length > remaining) {
8662 length = remaining
8663 }
8664 }
8665
8666 // must be an even number of digits
8667 var strLen = string.length
8668 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
8669
8670 if (length > strLen / 2) {
8671 length = strLen / 2
8672 }
8673 for (var i = 0; i < length; ++i) {
8674 var parsed = parseInt(string.substr(i * 2, 2), 16)
8675 if (numberIsNaN(parsed)) return i
8676 buf[offset + i] = parsed
8677 }
8678 return i
8679 }
8680
8681 function utf8Write (buf, string, offset, length) {
8682 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8683 }
8684
8685 function asciiWrite (buf, string, offset, length) {
8686 return blitBuffer(asciiToBytes(string), buf, offset, length)
8687 }
8688
8689 function latin1Write (buf, string, offset, length) {
8690 return asciiWrite(buf, string, offset, length)
8691 }
8692
8693 function base64Write (buf, string, offset, length) {
8694 return blitBuffer(base64ToBytes(string), buf, offset, length)
8695 }
8696
8697 function ucs2Write (buf, string, offset, length) {
8698 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8699 }
8700
8701 Buffer.prototype.write = function write (string, offset, length, encoding) {
8702 // Buffer#write(string)
8703 if (offset === undefined) {
8704 encoding = 'utf8'
8705 length = this.length
8706 offset = 0
8707 // Buffer#write(string, encoding)
8708 } else if (length === undefined && typeof offset === 'string') {
8709 encoding = offset
8710 length = this.length
8711 offset = 0
8712 // Buffer#write(string, offset[, length][, encoding])
8713 } else if (isFinite(offset)) {
8714 offset = offset >>> 0
8715 if (isFinite(length)) {
8716 length = length >>> 0
8717 if (encoding === undefined) encoding = 'utf8'
8718 } else {
8719 encoding = length
8720 length = undefined
8721 }
8722 } else {
8723 throw new Error(
8724 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8725 )
8726 }
8727
8728 var remaining = this.length - offset
8729 if (length === undefined || length > remaining) length = remaining
8730
8731 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
8732 throw new RangeError('Attempt to write outside buffer bounds')
8733 }
8734
8735 if (!encoding) encoding = 'utf8'
8736
8737 var loweredCase = false
8738 for (;;) {
8739 switch (encoding) {
8740 case 'hex':
8741 return hexWrite(this, string, offset, length)
8742
8743 case 'utf8':
8744 case 'utf-8':
8745 return utf8Write(this, string, offset, length)
8746
8747 case 'ascii':
8748 return asciiWrite(this, string, offset, length)
8749
8750 case 'latin1':
8751 case 'binary':
8752 return latin1Write(this, string, offset, length)
8753
8754 case 'base64':
8755 // Warning: maxLength not taken into account in base64Write
8756 return base64Write(this, string, offset, length)
8757
8758 case 'ucs2':
8759 case 'ucs-2':
8760 case 'utf16le':
8761 case 'utf-16le':
8762 return ucs2Write(this, string, offset, length)
8763
8764 default:
8765 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8766 encoding = ('' + encoding).toLowerCase()
8767 loweredCase = true
8768 }
8769 }
8770 }
8771
8772 Buffer.prototype.toJSON = function toJSON () {
8773 return {
8774 type: 'Buffer',
8775 data: Array.prototype.slice.call(this._arr || this, 0)
8776 }
8777 }
8778
8779 function base64Slice (buf, start, end) {
8780 if (start === 0 && end === buf.length) {
8781 return base64.fromByteArray(buf)
8782 } else {
8783 return base64.fromByteArray(buf.slice(start, end))
8784 }
8785 }
8786
8787 function utf8Slice (buf, start, end) {
8788 end = Math.min(buf.length, end)
8789 var res = []
8790
8791 var i = start
8792 while (i < end) {
8793 var firstByte = buf[i]
8794 var codePoint = null
8795 var bytesPerSequence = (firstByte > 0xEF) ? 4
8796 : (firstByte > 0xDF) ? 3
8797 : (firstByte > 0xBF) ? 2
8798 : 1
8799
8800 if (i + bytesPerSequence <= end) {
8801 var secondByte, thirdByte, fourthByte, tempCodePoint
8802
8803 switch (bytesPerSequence) {
8804 case 1:
8805 if (firstByte < 0x80) {
8806 codePoint = firstByte
8807 }
8808 break
8809 case 2:
8810 secondByte = buf[i + 1]
8811 if ((secondByte & 0xC0) === 0x80) {
8812 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
8813 if (tempCodePoint > 0x7F) {
8814 codePoint = tempCodePoint
8815 }
8816 }
8817 break
8818 case 3:
8819 secondByte = buf[i + 1]
8820 thirdByte = buf[i + 2]
8821 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
8822 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
8823 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
8824 codePoint = tempCodePoint
8825 }
8826 }
8827 break
8828 case 4:
8829 secondByte = buf[i + 1]
8830 thirdByte = buf[i + 2]
8831 fourthByte = buf[i + 3]
8832 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
8833 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
8834 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
8835 codePoint = tempCodePoint
8836 }
8837 }
8838 }
8839 }
8840
8841 if (codePoint === null) {
8842 // we did not generate a valid codePoint so insert a
8843 // replacement char (U+FFFD) and advance only 1 byte
8844 codePoint = 0xFFFD
8845 bytesPerSequence = 1
8846 } else if (codePoint > 0xFFFF) {
8847 // encode to utf16 (surrogate pair dance)
8848 codePoint -= 0x10000
8849 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
8850 codePoint = 0xDC00 | codePoint & 0x3FF
8851 }
8852
8853 res.push(codePoint)
8854 i += bytesPerSequence
8855 }
8856
8857 return decodeCodePointsArray(res)
8858 }
8859
8860 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
8861 // the lowest limit is Chrome, with 0x10000 args.
8862 // We go 1 magnitude less, for safety
8863 var MAX_ARGUMENTS_LENGTH = 0x1000
8864
8865 function decodeCodePointsArray (codePoints) {
8866 var len = codePoints.length
8867 if (len <= MAX_ARGUMENTS_LENGTH) {
8868 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
8869 }
8870
8871 // Decode in chunks to avoid "call stack size exceeded".
8872 var res = ''
8873 var i = 0
8874 while (i < len) {
8875 res += String.fromCharCode.apply(
8876 String,
8877 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
8878 )
8879 }
8880 return res
8881 }
8882
8883 function asciiSlice (buf, start, end) {
8884 var ret = ''
8885 end = Math.min(buf.length, end)
8886
8887 for (var i = start; i < end; ++i) {
8888 ret += String.fromCharCode(buf[i] & 0x7F)
8889 }
8890 return ret
8891 }
8892
8893 function latin1Slice (buf, start, end) {
8894 var ret = ''
8895 end = Math.min(buf.length, end)
8896
8897 for (var i = start; i < end; ++i) {
8898 ret += String.fromCharCode(buf[i])
8899 }
8900 return ret
8901 }
8902
8903 function hexSlice (buf, start, end) {
8904 var len = buf.length
8905
8906 if (!start || start < 0) start = 0
8907 if (!end || end < 0 || end > len) end = len
8908
8909 var out = ''
8910 for (var i = start; i < end; ++i) {
8911 out += toHex(buf[i])
8912 }
8913 return out
8914 }
8915
8916 function utf16leSlice (buf, start, end) {
8917 var bytes = buf.slice(start, end)
8918 var res = ''
8919 for (var i = 0; i < bytes.length; i += 2) {
8920 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
8921 }
8922 return res
8923 }
8924
8925 Buffer.prototype.slice = function slice (start, end) {
8926 var len = this.length
8927 start = ~~start
8928 end = end === undefined ? len : ~~end
8929
8930 if (start < 0) {
8931 start += len
8932 if (start < 0) start = 0
8933 } else if (start > len) {
8934 start = len
8935 }
8936
8937 if (end < 0) {
8938 end += len
8939 if (end < 0) end = 0
8940 } else if (end > len) {
8941 end = len
8942 }
8943
8944 if (end < start) end = start
8945
8946 var newBuf = this.subarray(start, end)
8947 // Return an augmented `Uint8Array` instance
8948 newBuf.__proto__ = Buffer.prototype
8949 return newBuf
8950 }
8951
8952 /*
8953 * Need to make sure that buffer isn't trying to write out of bounds.
8954 */
8955 function checkOffset (offset, ext, length) {
8956 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8957 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8958 }
8959
8960 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8961 offset = offset >>> 0
8962 byteLength = byteLength >>> 0
8963 if (!noAssert) checkOffset(offset, byteLength, this.length)
8964
8965 var val = this[offset]
8966 var mul = 1
8967 var i = 0
8968 while (++i < byteLength && (mul *= 0x100)) {
8969 val += this[offset + i] * mul
8970 }
8971
8972 return val
8973 }
8974
8975 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8976 offset = offset >>> 0
8977 byteLength = byteLength >>> 0
8978 if (!noAssert) {
8979 checkOffset(offset, byteLength, this.length)
8980 }
8981
8982 var val = this[offset + --byteLength]
8983 var mul = 1
8984 while (byteLength > 0 && (mul *= 0x100)) {
8985 val += this[offset + --byteLength] * mul
8986 }
8987
8988 return val
8989 }
8990
8991 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
8992 offset = offset >>> 0
8993 if (!noAssert) checkOffset(offset, 1, this.length)
8994 return this[offset]
8995 }
8996
8997 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
8998 offset = offset >>> 0
8999 if (!noAssert) checkOffset(offset, 2, this.length)
9000 return this[offset] | (this[offset + 1] << 8)
9001 }
9002
9003 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
9004 offset = offset >>> 0
9005 if (!noAssert) checkOffset(offset, 2, this.length)
9006 return (this[offset] << 8) | this[offset + 1]
9007 }
9008
9009 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
9010 offset = offset >>> 0
9011 if (!noAssert) checkOffset(offset, 4, this.length)
9012
9013 return ((this[offset]) |
9014 (this[offset + 1] << 8) |
9015 (this[offset + 2] << 16)) +
9016 (this[offset + 3] * 0x1000000)
9017 }
9018
9019 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
9020 offset = offset >>> 0
9021 if (!noAssert) checkOffset(offset, 4, this.length)
9022
9023 return (this[offset] * 0x1000000) +
9024 ((this[offset + 1] << 16) |
9025 (this[offset + 2] << 8) |
9026 this[offset + 3])
9027 }
9028
9029 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9030 offset = offset >>> 0
9031 byteLength = byteLength >>> 0
9032 if (!noAssert) checkOffset(offset, byteLength, this.length)
9033
9034 var val = this[offset]
9035 var mul = 1
9036 var i = 0
9037 while (++i < byteLength && (mul *= 0x100)) {
9038 val += this[offset + i] * mul
9039 }
9040 mul *= 0x80
9041
9042 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9043
9044 return val
9045 }
9046
9047 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9048 offset = offset >>> 0
9049 byteLength = byteLength >>> 0
9050 if (!noAssert) checkOffset(offset, byteLength, this.length)
9051
9052 var i = byteLength
9053 var mul = 1
9054 var val = this[offset + --i]
9055 while (i > 0 && (mul *= 0x100)) {
9056 val += this[offset + --i] * mul
9057 }
9058 mul *= 0x80
9059
9060 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9061
9062 return val
9063 }
9064
9065 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9066 offset = offset >>> 0
9067 if (!noAssert) checkOffset(offset, 1, this.length)
9068 if (!(this[offset] & 0x80)) return (this[offset])
9069 return ((0xff - this[offset] + 1) * -1)
9070 }
9071
9072 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9073 offset = offset >>> 0
9074 if (!noAssert) checkOffset(offset, 2, this.length)
9075 var val = this[offset] | (this[offset + 1] << 8)
9076 return (val & 0x8000) ? val | 0xFFFF0000 : val
9077 }
9078
9079 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9080 offset = offset >>> 0
9081 if (!noAssert) checkOffset(offset, 2, this.length)
9082 var val = this[offset + 1] | (this[offset] << 8)
9083 return (val & 0x8000) ? val | 0xFFFF0000 : val
9084 }
9085
9086 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9087 offset = offset >>> 0
9088 if (!noAssert) checkOffset(offset, 4, this.length)
9089
9090 return (this[offset]) |
9091 (this[offset + 1] << 8) |
9092 (this[offset + 2] << 16) |
9093 (this[offset + 3] << 24)
9094 }
9095
9096 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9097 offset = offset >>> 0
9098 if (!noAssert) checkOffset(offset, 4, this.length)
9099
9100 return (this[offset] << 24) |
9101 (this[offset + 1] << 16) |
9102 (this[offset + 2] << 8) |
9103 (this[offset + 3])
9104 }
9105
9106 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9107 offset = offset >>> 0
9108 if (!noAssert) checkOffset(offset, 4, this.length)
9109 return ieee754.read(this, offset, true, 23, 4)
9110 }
9111
9112 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9113 offset = offset >>> 0
9114 if (!noAssert) checkOffset(offset, 4, this.length)
9115 return ieee754.read(this, offset, false, 23, 4)
9116 }
9117
9118 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9119 offset = offset >>> 0
9120 if (!noAssert) checkOffset(offset, 8, this.length)
9121 return ieee754.read(this, offset, true, 52, 8)
9122 }
9123
9124 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9125 offset = offset >>> 0
9126 if (!noAssert) checkOffset(offset, 8, this.length)
9127 return ieee754.read(this, offset, false, 52, 8)
9128 }
9129
9130 function checkInt (buf, value, offset, ext, max, min) {
9131 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
9132 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
9133 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9134 }
9135
9136 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9137 value = +value
9138 offset = offset >>> 0
9139 byteLength = byteLength >>> 0
9140 if (!noAssert) {
9141 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9142 checkInt(this, value, offset, byteLength, maxBytes, 0)
9143 }
9144
9145 var mul = 1
9146 var i = 0
9147 this[offset] = value & 0xFF
9148 while (++i < byteLength && (mul *= 0x100)) {
9149 this[offset + i] = (value / mul) & 0xFF
9150 }
9151
9152 return offset + byteLength
9153 }
9154
9155 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9156 value = +value
9157 offset = offset >>> 0
9158 byteLength = byteLength >>> 0
9159 if (!noAssert) {
9160 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9161 checkInt(this, value, offset, byteLength, maxBytes, 0)
9162 }
9163
9164 var i = byteLength - 1
9165 var mul = 1
9166 this[offset + i] = value & 0xFF
9167 while (--i >= 0 && (mul *= 0x100)) {
9168 this[offset + i] = (value / mul) & 0xFF
9169 }
9170
9171 return offset + byteLength
9172 }
9173
9174 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9175 value = +value
9176 offset = offset >>> 0
9177 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
9178 this[offset] = (value & 0xff)
9179 return offset + 1
9180 }
9181
9182 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9183 value = +value
9184 offset = offset >>> 0
9185 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9186 this[offset] = (value & 0xff)
9187 this[offset + 1] = (value >>> 8)
9188 return offset + 2
9189 }
9190
9191 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9192 value = +value
9193 offset = offset >>> 0
9194 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9195 this[offset] = (value >>> 8)
9196 this[offset + 1] = (value & 0xff)
9197 return offset + 2
9198 }
9199
9200 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9201 value = +value
9202 offset = offset >>> 0
9203 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9204 this[offset + 3] = (value >>> 24)
9205 this[offset + 2] = (value >>> 16)
9206 this[offset + 1] = (value >>> 8)
9207 this[offset] = (value & 0xff)
9208 return offset + 4
9209 }
9210
9211 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9212 value = +value
9213 offset = offset >>> 0
9214 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9215 this[offset] = (value >>> 24)
9216 this[offset + 1] = (value >>> 16)
9217 this[offset + 2] = (value >>> 8)
9218 this[offset + 3] = (value & 0xff)
9219 return offset + 4
9220 }
9221
9222 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9223 value = +value
9224 offset = offset >>> 0
9225 if (!noAssert) {
9226 var limit = Math.pow(2, (8 * byteLength) - 1)
9227
9228 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9229 }
9230
9231 var i = 0
9232 var mul = 1
9233 var sub = 0
9234 this[offset] = value & 0xFF
9235 while (++i < byteLength && (mul *= 0x100)) {
9236 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
9237 sub = 1
9238 }
9239 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9240 }
9241
9242 return offset + byteLength
9243 }
9244
9245 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9246 value = +value
9247 offset = offset >>> 0
9248 if (!noAssert) {
9249 var limit = Math.pow(2, (8 * byteLength) - 1)
9250
9251 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9252 }
9253
9254 var i = byteLength - 1
9255 var mul = 1
9256 var sub = 0
9257 this[offset + i] = value & 0xFF
9258 while (--i >= 0 && (mul *= 0x100)) {
9259 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
9260 sub = 1
9261 }
9262 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9263 }
9264
9265 return offset + byteLength
9266 }
9267
9268 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9269 value = +value
9270 offset = offset >>> 0
9271 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
9272 if (value < 0) value = 0xff + value + 1
9273 this[offset] = (value & 0xff)
9274 return offset + 1
9275 }
9276
9277 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9278 value = +value
9279 offset = offset >>> 0
9280 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9281 this[offset] = (value & 0xff)
9282 this[offset + 1] = (value >>> 8)
9283 return offset + 2
9284 }
9285
9286 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9287 value = +value
9288 offset = offset >>> 0
9289 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9290 this[offset] = (value >>> 8)
9291 this[offset + 1] = (value & 0xff)
9292 return offset + 2
9293 }
9294
9295 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9296 value = +value
9297 offset = offset >>> 0
9298 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9299 this[offset] = (value & 0xff)
9300 this[offset + 1] = (value >>> 8)
9301 this[offset + 2] = (value >>> 16)
9302 this[offset + 3] = (value >>> 24)
9303 return offset + 4
9304 }
9305
9306 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9307 value = +value
9308 offset = offset >>> 0
9309 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9310 if (value < 0) value = 0xffffffff + value + 1
9311 this[offset] = (value >>> 24)
9312 this[offset + 1] = (value >>> 16)
9313 this[offset + 2] = (value >>> 8)
9314 this[offset + 3] = (value & 0xff)
9315 return offset + 4
9316 }
9317
9318 function checkIEEE754 (buf, value, offset, ext, max, min) {
9319 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9320 if (offset < 0) throw new RangeError('Index out of range')
9321 }
9322
9323 function writeFloat (buf, value, offset, littleEndian, noAssert) {
9324 value = +value
9325 offset = offset >>> 0
9326 if (!noAssert) {
9327 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
9328 }
9329 ieee754.write(buf, value, offset, littleEndian, 23, 4)
9330 return offset + 4
9331 }
9332
9333 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9334 return writeFloat(this, value, offset, true, noAssert)
9335 }
9336
9337 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9338 return writeFloat(this, value, offset, false, noAssert)
9339 }
9340
9341 function writeDouble (buf, value, offset, littleEndian, noAssert) {
9342 value = +value
9343 offset = offset >>> 0
9344 if (!noAssert) {
9345 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
9346 }
9347 ieee754.write(buf, value, offset, littleEndian, 52, 8)
9348 return offset + 8
9349 }
9350
9351 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9352 return writeDouble(this, value, offset, true, noAssert)
9353 }
9354
9355 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9356 return writeDouble(this, value, offset, false, noAssert)
9357 }
9358
9359 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
9360 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9361 if (!start) start = 0
9362 if (!end && end !== 0) end = this.length
9363 if (targetStart >= target.length) targetStart = target.length
9364 if (!targetStart) targetStart = 0
9365 if (end > 0 && end < start) end = start
9366
9367 // Copy 0 bytes; we're done
9368 if (end === start) return 0
9369 if (target.length === 0 || this.length === 0) return 0
9370
9371 // Fatal error conditions
9372 if (targetStart < 0) {
9373 throw new RangeError('targetStart out of bounds')
9374 }
9375 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
9376 if (end < 0) throw new RangeError('sourceEnd out of bounds')
9377
9378 // Are we oob?
9379 if (end > this.length) end = this.length
9380 if (target.length - targetStart < end - start) {
9381 end = target.length - targetStart + start
9382 }
9383
9384 var len = end - start
9385 var i
9386
9387 if (this === target && start < targetStart && targetStart < end) {
9388 // descending copy from end
9389 for (i = len - 1; i >= 0; --i) {
9390 target[i + targetStart] = this[i + start]
9391 }
9392 } else if (len < 1000) {
9393 // ascending copy from start
9394 for (i = 0; i < len; ++i) {
9395 target[i + targetStart] = this[i + start]
9396 }
9397 } else {
9398 Uint8Array.prototype.set.call(
9399 target,
9400 this.subarray(start, start + len),
9401 targetStart
9402 )
9403 }
9404
9405 return len
9406 }
9407
9408 // Usage:
9409 // buffer.fill(number[, offset[, end]])
9410 // buffer.fill(buffer[, offset[, end]])
9411 // buffer.fill(string[, offset[, end]][, encoding])
9412 Buffer.prototype.fill = function fill (val, start, end, encoding) {
9413 // Handle string cases:
9414 if (typeof val === 'string') {
9415 if (typeof start === 'string') {
9416 encoding = start
9417 start = 0
9418 end = this.length
9419 } else if (typeof end === 'string') {
9420 encoding = end
9421 end = this.length
9422 }
9423 if (val.length === 1) {
9424 var code = val.charCodeAt(0)
9425 if (code < 256) {
9426 val = code
9427 }
9428 }
9429 if (encoding !== undefined && typeof encoding !== 'string') {
9430 throw new TypeError('encoding must be a string')
9431 }
9432 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9433 throw new TypeError('Unknown encoding: ' + encoding)
9434 }
9435 } else if (typeof val === 'number') {
9436 val = val & 255
9437 }
9438
9439 // Invalid ranges are not set to a default, so can range check early.
9440 if (start < 0 || this.length < start || this.length < end) {
9441 throw new RangeError('Out of range index')
9442 }
9443
9444 if (end <= start) {
9445 return this
9446 }
9447
9448 start = start >>> 0
9449 end = end === undefined ? this.length : end >>> 0
9450
9451 if (!val) val = 0
9452
9453 var i
9454 if (typeof val === 'number') {
9455 for (i = start; i < end; ++i) {
9456 this[i] = val
9457 }
9458 } else {
9459 var bytes = Buffer.isBuffer(val)
9460 ? val
9461 : new Buffer(val, encoding)
9462 var len = bytes.length
9463 for (i = 0; i < end - start; ++i) {
9464 this[i + start] = bytes[i % len]
9465 }
9466 }
9467
9468 return this
9469 }
9470
9471 // HELPER FUNCTIONS
9472 // ================
9473
9474 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
9475
9476 function base64clean (str) {
9477 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9478 str = str.trim().replace(INVALID_BASE64_RE, '')
9479 // Node converts strings with length < 2 to ''
9480 if (str.length < 2) return ''
9481 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9482 while (str.length % 4 !== 0) {
9483 str = str + '='
9484 }
9485 return str
9486 }
9487
9488 function toHex (n) {
9489 if (n < 16) return '0' + n.toString(16)
9490 return n.toString(16)
9491 }
9492
9493 function utf8ToBytes (string, units) {
9494 units = units || Infinity
9495 var codePoint
9496 var length = string.length
9497 var leadSurrogate = null
9498 var bytes = []
9499
9500 for (var i = 0; i < length; ++i) {
9501 codePoint = string.charCodeAt(i)
9502
9503 // is surrogate component
9504 if (codePoint > 0xD7FF && codePoint < 0xE000) {
9505 // last char was a lead
9506 if (!leadSurrogate) {
9507 // no lead yet
9508 if (codePoint > 0xDBFF) {
9509 // unexpected trail
9510 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9511 continue
9512 } else if (i + 1 === length) {
9513 // unpaired lead
9514 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9515 continue
9516 }
9517
9518 // valid lead
9519 leadSurrogate = codePoint
9520
9521 continue
9522 }
9523
9524 // 2 leads in a row
9525 if (codePoint < 0xDC00) {
9526 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9527 leadSurrogate = codePoint
9528 continue
9529 }
9530
9531 // valid surrogate pair
9532 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
9533 } else if (leadSurrogate) {
9534 // valid bmp char, but last char was a lead
9535 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9536 }
9537
9538 leadSurrogate = null
9539
9540 // encode utf8
9541 if (codePoint < 0x80) {
9542 if ((units -= 1) < 0) break
9543 bytes.push(codePoint)
9544 } else if (codePoint < 0x800) {
9545 if ((units -= 2) < 0) break
9546 bytes.push(
9547 codePoint >> 0x6 | 0xC0,
9548 codePoint & 0x3F | 0x80
9549 )
9550 } else if (codePoint < 0x10000) {
9551 if ((units -= 3) < 0) break
9552 bytes.push(
9553 codePoint >> 0xC | 0xE0,
9554 codePoint >> 0x6 & 0x3F | 0x80,
9555 codePoint & 0x3F | 0x80
9556 )
9557 } else if (codePoint < 0x110000) {
9558 if ((units -= 4) < 0) break
9559 bytes.push(
9560 codePoint >> 0x12 | 0xF0,
9561 codePoint >> 0xC & 0x3F | 0x80,
9562 codePoint >> 0x6 & 0x3F | 0x80,
9563 codePoint & 0x3F | 0x80
9564 )
9565 } else {
9566 throw new Error('Invalid code point')
9567 }
9568 }
9569
9570 return bytes
9571 }
9572
9573 function asciiToBytes (str) {
9574 var byteArray = []
9575 for (var i = 0; i < str.length; ++i) {
9576 // Node's code seems to be doing this and not & 0x7F..
9577 byteArray.push(str.charCodeAt(i) & 0xFF)
9578 }
9579 return byteArray
9580 }
9581
9582 function utf16leToBytes (str, units) {
9583 var c, hi, lo
9584 var byteArray = []
9585 for (var i = 0; i < str.length; ++i) {
9586 if ((units -= 2) < 0) break
9587
9588 c = str.charCodeAt(i)
9589 hi = c >> 8
9590 lo = c % 256
9591 byteArray.push(lo)
9592 byteArray.push(hi)
9593 }
9594
9595 return byteArray
9596 }
9597
9598 function base64ToBytes (str) {
9599 return base64.toByteArray(base64clean(str))
9600 }
9601
9602 function blitBuffer (src, dst, offset, length) {
9603 for (var i = 0; i < length; ++i) {
9604 if ((i + offset >= dst.length) || (i >= src.length)) break
9605 dst[i + offset] = src[i]
9606 }
9607 return i
9608 }
9609
9610 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9611 function isArrayBufferView (obj) {
9612 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9613 }
9614
9615 function numberIsNaN (obj) {
9616 return obj !== obj // eslint-disable-line no-self-compare
9617 }
9618
9619 },{"base64-js":2,"ieee754":7}],5:[function(require,module,exports){
9620 (function (Buffer){
9621 // Copyright Joyent, Inc. and other Node contributors.
9622 //
9623 // Permission is hereby granted, free of charge, to any person obtaining a
9624 // copy of this software and associated documentation files (the
9625 // "Software"), to deal in the Software without restriction, including
9626 // without limitation the rights to use, copy, modify, merge, publish,
9627 // distribute, sublicense, and/or sell copies of the Software, and to permit
9628 // persons to whom the Software is furnished to do so, subject to the
9629 // following conditions:
9630 //
9631 // The above copyright notice and this permission notice shall be included
9632 // in all copies or substantial portions of the Software.
9633 //
9634 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9635 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9636 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9637 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9638 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9639 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9640 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9641
9642 // NOTE: These type checking functions intentionally don't use `instanceof`
9643 // because it is fragile and can be easily faked with `Object.create()`.
9644
9645 function isArray(arg) {
9646 if (Array.isArray) {
9647 return Array.isArray(arg);
9648 }
9649 return objectToString(arg) === '[object Array]';
9650 }
9651 exports.isArray = isArray;
9652
9653 function isBoolean(arg) {
9654 return typeof arg === 'boolean';
9655 }
9656 exports.isBoolean = isBoolean;
9657
9658 function isNull(arg) {
9659 return arg === null;
9660 }
9661 exports.isNull = isNull;
9662
9663 function isNullOrUndefined(arg) {
9664 return arg == null;
9665 }
9666 exports.isNullOrUndefined = isNullOrUndefined;
9667
9668 function isNumber(arg) {
9669 return typeof arg === 'number';
9670 }
9671 exports.isNumber = isNumber;
9672
9673 function isString(arg) {
9674 return typeof arg === 'string';
9675 }
9676 exports.isString = isString;
9677
9678 function isSymbol(arg) {
9679 return typeof arg === 'symbol';
9680 }
9681 exports.isSymbol = isSymbol;
9682
9683 function isUndefined(arg) {
9684 return arg === void 0;
9685 }
9686 exports.isUndefined = isUndefined;
9687
9688 function isRegExp(re) {
9689 return objectToString(re) === '[object RegExp]';
9690 }
9691 exports.isRegExp = isRegExp;
9692
9693 function isObject(arg) {
9694 return typeof arg === 'object' && arg !== null;
9695 }
9696 exports.isObject = isObject;
9697
9698 function isDate(d) {
9699 return objectToString(d) === '[object Date]';
9700 }
9701 exports.isDate = isDate;
9702
9703 function isError(e) {
9704 return (objectToString(e) === '[object Error]' || e instanceof Error);
9705 }
9706 exports.isError = isError;
9707
9708 function isFunction(arg) {
9709 return typeof arg === 'function';
9710 }
9711 exports.isFunction = isFunction;
9712
9713 function isPrimitive(arg) {
9714 return arg === null ||
9715 typeof arg === 'boolean' ||
9716 typeof arg === 'number' ||
9717 typeof arg === 'string' ||
9718 typeof arg === 'symbol' || // ES6 symbol
9719 typeof arg === 'undefined';
9720 }
9721 exports.isPrimitive = isPrimitive;
9722
9723 exports.isBuffer = Buffer.isBuffer;
9724
9725 function objectToString(o) {
9726 return Object.prototype.toString.call(o);
9727 }
9728
9729 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9730 },{"../../is-buffer/index.js":9}],6:[function(require,module,exports){
9731 // Copyright Joyent, Inc. and other Node contributors.
9732 //
9733 // Permission is hereby granted, free of charge, to any person obtaining a
9734 // copy of this software and associated documentation files (the
9735 // "Software"), to deal in the Software without restriction, including
9736 // without limitation the rights to use, copy, modify, merge, publish,
9737 // distribute, sublicense, and/or sell copies of the Software, and to permit
9738 // persons to whom the Software is furnished to do so, subject to the
9739 // following conditions:
9740 //
9741 // The above copyright notice and this permission notice shall be included
9742 // in all copies or substantial portions of the Software.
9743 //
9744 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9745 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9746 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9747 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9748 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9749 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9750 // USE OR OTHER DEALINGS IN THE SOFTWARE.
9751
9752 function EventEmitter() {
9753 this._events = this._events || {};
9754 this._maxListeners = this._maxListeners || undefined;
9755 }
9756 module.exports = EventEmitter;
9757
9758 // Backwards-compat with node 0.10.x
9759 EventEmitter.EventEmitter = EventEmitter;
9760
9761 EventEmitter.prototype._events = undefined;
9762 EventEmitter.prototype._maxListeners = undefined;
9763
9764 // By default EventEmitters will print a warning if more than 10 listeners are
9765 // added to it. This is a useful default which helps finding memory leaks.
9766 EventEmitter.defaultMaxListeners = 10;
9767
9768 // Obviously not all Emitters should be limited to 10. This function allows
9769 // that to be increased. Set to zero for unlimited.
9770 EventEmitter.prototype.setMaxListeners = function(n) {
9771 if (!isNumber(n) || n < 0 || isNaN(n))
9772 throw TypeError('n must be a positive number');
9773 this._maxListeners = n;
9774 return this;
9775 };
9776
9777 EventEmitter.prototype.emit = function(type) {
9778 var er, handler, len, args, i, listeners;
9779
9780 if (!this._events)
9781 this._events = {};
9782
9783 // If there is no 'error' event listener then throw.
9784 if (type === 'error') {
9785 if (!this._events.error ||
9786 (isObject(this._events.error) && !this._events.error.length)) {
9787 er = arguments[1];
9788 if (er instanceof Error) {
9789 throw er; // Unhandled 'error' event
9790 } else {
9791 // At least give some kind of context to the user
9792 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9793 err.context = er;
9794 throw err;
9795 }
9796 }
9797 }
9798
9799 handler = this._events[type];
9800
9801 if (isUndefined(handler))
9802 return false;
9803
9804 if (isFunction(handler)) {
9805 switch (arguments.length) {
9806 // fast cases
9807 case 1:
9808 handler.call(this);
9809 break;
9810 case 2:
9811 handler.call(this, arguments[1]);
9812 break;
9813 case 3:
9814 handler.call(this, arguments[1], arguments[2]);
9815 break;
9816 // slower
9817 default:
9818 args = Array.prototype.slice.call(arguments, 1);
9819 handler.apply(this, args);
9820 }
9821 } else if (isObject(handler)) {
9822 args = Array.prototype.slice.call(arguments, 1);
9823 listeners = handler.slice();
9824 len = listeners.length;
9825 for (i = 0; i < len; i++)
9826 listeners[i].apply(this, args);
9827 }
9828
9829 return true;
9830 };
9831
9832 EventEmitter.prototype.addListener = function(type, listener) {
9833 var m;
9834
9835 if (!isFunction(listener))
9836 throw TypeError('listener must be a function');
9837
9838 if (!this._events)
9839 this._events = {};
9840
9841 // To avoid recursion in the case that type === "newListener"! Before
9842 // adding it to the listeners, first emit "newListener".
9843 if (this._events.newListener)
9844 this.emit('newListener', type,
9845 isFunction(listener.listener) ?
9846 listener.listener : listener);
9847
9848 if (!this._events[type])
9849 // Optimize the case of one listener. Don't need the extra array object.
9850 this._events[type] = listener;
9851 else if (isObject(this._events[type]))
9852 // If we've already got an array, just append.
9853 this._events[type].push(listener);
9854 else
9855 // Adding the second element, need to change to array.
9856 this._events[type] = [this._events[type], listener];
9857
9858 // Check for listener leak
9859 if (isObject(this._events[type]) && !this._events[type].warned) {
9860 if (!isUndefined(this._maxListeners)) {
9861 m = this._maxListeners;
9862 } else {
9863 m = EventEmitter.defaultMaxListeners;
9864 }
9865
9866 if (m && m > 0 && this._events[type].length > m) {
9867 this._events[type].warned = true;
9868 console.error('(node) warning: possible EventEmitter memory ' +
9869 'leak detected. %d listeners added. ' +
9870 'Use emitter.setMaxListeners() to increase limit.',
9871 this._events[type].length);
9872 if (typeof console.trace === 'function') {
9873 // not supported in IE 10
9874 console.trace();
9875 }
9876 }
9877 }
9878
9879 return this;
9880 };
9881
9882 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
9883
9884 EventEmitter.prototype.once = function(type, listener) {
9885 if (!isFunction(listener))
9886 throw TypeError('listener must be a function');
9887
9888 var fired = false;
9889
9890 function g() {
9891 this.removeListener(type, g);
9892
9893 if (!fired) {
9894 fired = true;
9895 listener.apply(this, arguments);
9896 }
9897 }
9898
9899 g.listener = listener;
9900 this.on(type, g);
9901
9902 return this;
9903 };
9904
9905 // emits a 'removeListener' event iff the listener was removed
9906 EventEmitter.prototype.removeListener = function(type, listener) {
9907 var list, position, length, i;
9908
9909 if (!isFunction(listener))
9910 throw TypeError('listener must be a function');
9911
9912 if (!this._events || !this._events[type])
9913 return this;
9914
9915 list = this._events[type];
9916 length = list.length;
9917 position = -1;
9918
9919 if (list === listener ||
9920 (isFunction(list.listener) && list.listener === listener)) {
9921 delete this._events[type];
9922 if (this._events.removeListener)
9923 this.emit('removeListener', type, listener);
9924
9925 } else if (isObject(list)) {
9926 for (i = length; i-- > 0;) {
9927 if (list[i] === listener ||
9928 (list[i].listener && list[i].listener === listener)) {
9929 position = i;
9930 break;
9931 }
9932 }
9933
9934 if (position < 0)
9935 return this;
9936
9937 if (list.length === 1) {
9938 list.length = 0;
9939 delete this._events[type];
9940 } else {
9941 list.splice(position, 1);
9942 }
9943
9944 if (this._events.removeListener)
9945 this.emit('removeListener', type, listener);
9946 }
9947
9948 return this;
9949 };
9950
9951 EventEmitter.prototype.removeAllListeners = function(type) {
9952 var key, listeners;
9953
9954 if (!this._events)
9955 return this;
9956
9957 // not listening for removeListener, no need to emit
9958 if (!this._events.removeListener) {
9959 if (arguments.length === 0)
9960 this._events = {};
9961 else if (this._events[type])
9962 delete this._events[type];
9963 return this;
9964 }
9965
9966 // emit removeListener for all listeners on all events
9967 if (arguments.length === 0) {
9968 for (key in this._events) {
9969 if (key === 'removeListener') continue;
9970 this.removeAllListeners(key);
9971 }
9972 this.removeAllListeners('removeListener');
9973 this._events = {};
9974 return this;
9975 }
9976
9977 listeners = this._events[type];
9978
9979 if (isFunction(listeners)) {
9980 this.removeListener(type, listeners);
9981 } else if (listeners) {
9982 // LIFO order
9983 while (listeners.length)
9984 this.removeListener(type, listeners[listeners.length - 1]);
9985 }
9986 delete this._events[type];
9987
9988 return this;
9989 };
9990
9991 EventEmitter.prototype.listeners = function(type) {
9992 var ret;
9993 if (!this._events || !this._events[type])
9994 ret = [];
9995 else if (isFunction(this._events[type]))
9996 ret = [this._events[type]];
9997 else
9998 ret = this._events[type].slice();
9999 return ret;
10000 };
10001
10002 EventEmitter.prototype.listenerCount = function(type) {
10003 if (this._events) {
10004 var evlistener = this._events[type];
10005
10006 if (isFunction(evlistener))
10007 return 1;
10008 else if (evlistener)
10009 return evlistener.length;
10010 }
10011 return 0;
10012 };
10013
10014 EventEmitter.listenerCount = function(emitter, type) {
10015 return emitter.listenerCount(type);
10016 };
10017
10018 function isFunction(arg) {
10019 return typeof arg === 'function';
10020 }
10021
10022 function isNumber(arg) {
10023 return typeof arg === 'number';
10024 }
10025
10026 function isObject(arg) {
10027 return typeof arg === 'object' && arg !== null;
10028 }
10029
10030 function isUndefined(arg) {
10031 return arg === void 0;
10032 }
10033
10034 },{}],7:[function(require,module,exports){
10035 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10036 var e, m
10037 var eLen = nBytes * 8 - mLen - 1
10038 var eMax = (1 << eLen) - 1
10039 var eBias = eMax >> 1
10040 var nBits = -7
10041 var i = isLE ? (nBytes - 1) : 0
10042 var d = isLE ? -1 : 1
10043 var s = buffer[offset + i]
10044
10045 i += d
10046
10047 e = s & ((1 << (-nBits)) - 1)
10048 s >>= (-nBits)
10049 nBits += eLen
10050 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10051
10052 m = e & ((1 << (-nBits)) - 1)
10053 e >>= (-nBits)
10054 nBits += mLen
10055 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10056
10057 if (e === 0) {
10058 e = 1 - eBias
10059 } else if (e === eMax) {
10060 return m ? NaN : ((s ? -1 : 1) * Infinity)
10061 } else {
10062 m = m + Math.pow(2, mLen)
10063 e = e - eBias
10064 }
10065 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10066 }
10067
10068 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10069 var e, m, c
10070 var eLen = nBytes * 8 - mLen - 1
10071 var eMax = (1 << eLen) - 1
10072 var eBias = eMax >> 1
10073 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10074 var i = isLE ? 0 : (nBytes - 1)
10075 var d = isLE ? 1 : -1
10076 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10077
10078 value = Math.abs(value)
10079
10080 if (isNaN(value) || value === Infinity) {
10081 m = isNaN(value) ? 1 : 0
10082 e = eMax
10083 } else {
10084 e = Math.floor(Math.log(value) / Math.LN2)
10085 if (value * (c = Math.pow(2, -e)) < 1) {
10086 e--
10087 c *= 2
10088 }
10089 if (e + eBias >= 1) {
10090 value += rt / c
10091 } else {
10092 value += rt * Math.pow(2, 1 - eBias)
10093 }
10094 if (value * c >= 2) {
10095 e++
10096 c /= 2
10097 }
10098
10099 if (e + eBias >= eMax) {
10100 m = 0
10101 e = eMax
10102 } else if (e + eBias >= 1) {
10103 m = (value * c - 1) * Math.pow(2, mLen)
10104 e = e + eBias
10105 } else {
10106 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10107 e = 0
10108 }
10109 }
10110
10111 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10112
10113 e = (e << mLen) | m
10114 eLen += mLen
10115 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10116
10117 buffer[offset + i - d] |= s * 128
10118 }
10119
10120 },{}],8:[function(require,module,exports){
10121 if (typeof Object.create === 'function') {
10122 // implementation from standard node.js 'util' module
10123 module.exports = function inherits(ctor, superCtor) {
10124 ctor.super_ = superCtor
10125 ctor.prototype = Object.create(superCtor.prototype, {
10126 constructor: {
10127 value: ctor,
10128 enumerable: false,
10129 writable: true,
10130 configurable: true
10131 }
10132 });
10133 };
10134 } else {
10135 // old school shim for old browsers
10136 module.exports = function inherits(ctor, superCtor) {
10137 ctor.super_ = superCtor
10138 var TempCtor = function () {}
10139 TempCtor.prototype = superCtor.prototype
10140 ctor.prototype = new TempCtor()
10141 ctor.prototype.constructor = ctor
10142 }
10143 }
10144
10145 },{}],9:[function(require,module,exports){
10146 /*!
10147 * Determine if an object is a Buffer
10148 *
10149 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
10150 * @license MIT
10151 */
10152
10153 // The _isBuffer check is for Safari 5-7 support, because it's missing
10154 // Object.prototype.constructor. Remove this eventually
10155 module.exports = function (obj) {
10156 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10157 }
10158
10159 function isBuffer (obj) {
10160 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
10161 }
10162
10163 // For Node v0.10 support. Remove this eventually.
10164 function isSlowBuffer (obj) {
10165 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
10166 }
10167
10168 },{}],10:[function(require,module,exports){
10169 var toString = {}.toString;
10170
10171 module.exports = Array.isArray || function (arr) {
10172 return toString.call(arr) == '[object Array]';
10173 };
10174
10175 },{}],11:[function(require,module,exports){
10176 (function (process){
10177 'use strict';
10178
10179 if (!process.version ||
10180 process.version.indexOf('v0.') === 0 ||
10181 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
10182 module.exports = nextTick;
10183 } else {
10184 module.exports = process.nextTick;
10185 }
10186
10187 function nextTick(fn, arg1, arg2, arg3) {
10188 if (typeof fn !== 'function') {
10189 throw new TypeError('"callback" argument must be a function');
10190 }
10191 var len = arguments.length;
10192 var args, i;
10193 switch (len) {
10194 case 0:
10195 case 1:
10196 return process.nextTick(fn);
10197 case 2:
10198 return process.nextTick(function afterTickOne() {
10199 fn.call(null, arg1);
10200 });
10201 case 3:
10202 return process.nextTick(function afterTickTwo() {
10203 fn.call(null, arg1, arg2);
10204 });
10205 case 4:
10206 return process.nextTick(function afterTickThree() {
10207 fn.call(null, arg1, arg2, arg3);
10208 });
10209 default:
10210 args = new Array(len - 1);
10211 i = 0;
10212 while (i < args.length) {
10213 args[i++] = arguments[i];
10214 }
10215 return process.nextTick(function afterTick() {
10216 fn.apply(null, args);
10217 });
10218 }
10219 }
10220
10221 }).call(this,require('_process'))
10222 },{"_process":12}],12:[function(require,module,exports){
10223 // shim for using process in browser
10224 var process = module.exports = {};
10225
10226 // cached from whatever global is present so that test runners that stub it
10227 // don't break things. But we need to wrap it in a try catch in case it is
10228 // wrapped in strict mode code which doesn't define any globals. It's inside a
10229 // function because try/catches deoptimize in certain engines.
10230
10231 var cachedSetTimeout;
10232 var cachedClearTimeout;
10233
10234 function defaultSetTimout() {
10235 throw new Error('setTimeout has not been defined');
10236 }
10237 function defaultClearTimeout () {
10238 throw new Error('clearTimeout has not been defined');
10239 }
10240 (function () {
10241 try {
10242 if (typeof setTimeout === 'function') {
10243 cachedSetTimeout = setTimeout;
10244 } else {
10245 cachedSetTimeout = defaultSetTimout;
10246 }
10247 } catch (e) {
10248 cachedSetTimeout = defaultSetTimout;
10249 }
10250 try {
10251 if (typeof clearTimeout === 'function') {
10252 cachedClearTimeout = clearTimeout;
10253 } else {
10254 cachedClearTimeout = defaultClearTimeout;
10255 }
10256 } catch (e) {
10257 cachedClearTimeout = defaultClearTimeout;
10258 }
10259 } ())
10260 function runTimeout(fun) {
10261 if (cachedSetTimeout === setTimeout) {
10262 //normal enviroments in sane situations
10263 return setTimeout(fun, 0);
10264 }
10265 // if setTimeout wasn't available but was latter defined
10266 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10267 cachedSetTimeout = setTimeout;
10268 return setTimeout(fun, 0);
10269 }
10270 try {
10271 // when when somebody has screwed with setTimeout but no I.E. maddness
10272 return cachedSetTimeout(fun, 0);
10273 } catch(e){
10274 try {
10275 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10276 return cachedSetTimeout.call(null, fun, 0);
10277 } catch(e){
10278 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
10279 return cachedSetTimeout.call(this, fun, 0);
10280 }
10281 }
10282
10283
10284 }
10285 function runClearTimeout(marker) {
10286 if (cachedClearTimeout === clearTimeout) {
10287 //normal enviroments in sane situations
10288 return clearTimeout(marker);
10289 }
10290 // if clearTimeout wasn't available but was latter defined
10291 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10292 cachedClearTimeout = clearTimeout;
10293 return clearTimeout(marker);
10294 }
10295 try {
10296 // when when somebody has screwed with setTimeout but no I.E. maddness
10297 return cachedClearTimeout(marker);
10298 } catch (e){
10299 try {
10300 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10301 return cachedClearTimeout.call(null, marker);
10302 } catch (e){
10303 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
10304 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10305 return cachedClearTimeout.call(this, marker);
10306 }
10307 }
10308
10309
10310
10311 }
10312 var queue = [];
10313 var draining = false;
10314 var currentQueue;
10315 var queueIndex = -1;
10316
10317 function cleanUpNextTick() {
10318 if (!draining || !currentQueue) {
10319 return;
10320 }
10321 draining = false;
10322 if (currentQueue.length) {
10323 queue = currentQueue.concat(queue);
10324 } else {
10325 queueIndex = -1;
10326 }
10327 if (queue.length) {
10328 drainQueue();
10329 }
10330 }
10331
10332 function drainQueue() {
10333 if (draining) {
10334 return;
10335 }
10336 var timeout = runTimeout(cleanUpNextTick);
10337 draining = true;
10338
10339 var len = queue.length;
10340 while(len) {
10341 currentQueue = queue;
10342 queue = [];
10343 while (++queueIndex < len) {
10344 if (currentQueue) {
10345 currentQueue[queueIndex].run();
10346 }
10347 }
10348 queueIndex = -1;
10349 len = queue.length;
10350 }
10351 currentQueue = null;
10352 draining = false;
10353 runClearTimeout(timeout);
10354 }
10355
10356 process.nextTick = function (fun) {
10357 var args = new Array(arguments.length - 1);
10358 if (arguments.length > 1) {
10359 for (var i = 1; i < arguments.length; i++) {
10360 args[i - 1] = arguments[i];
10361 }
10362 }
10363 queue.push(new Item(fun, args));
10364 if (queue.length === 1 && !draining) {
10365 runTimeout(drainQueue);
10366 }
10367 };
10368
10369 // v8 likes predictible objects
10370 function Item(fun, array) {
10371 this.fun = fun;
10372 this.array = array;
10373 }
10374 Item.prototype.run = function () {
10375 this.fun.apply(null, this.array);
10376 };
10377 process.title = 'browser';
10378 process.browser = true;
10379 process.env = {};
10380 process.argv = [];
10381 process.version = ''; // empty string to avoid regexp issues
10382 process.versions = {};
10383
10384 function noop() {}
10385
10386 process.on = noop;
10387 process.addListener = noop;
10388 process.once = noop;
10389 process.off = noop;
10390 process.removeListener = noop;
10391 process.removeAllListeners = noop;
10392 process.emit = noop;
10393 process.prependListener = noop;
10394 process.prependOnceListener = noop;
10395
10396 process.listeners = function (name) { return [] }
10397
10398 process.binding = function (name) {
10399 throw new Error('process.binding is not supported');
10400 };
10401
10402 process.cwd = function () { return '/' };
10403 process.chdir = function (dir) {
10404 throw new Error('process.chdir is not supported');
10405 };
10406 process.umask = function() { return 0; };
10407
10408 },{}],13:[function(require,module,exports){
10409 module.exports = require('./lib/_stream_duplex.js');
10410
10411 },{"./lib/_stream_duplex.js":14}],14:[function(require,module,exports){
10412 // Copyright Joyent, Inc. and other Node contributors.
10413 //
10414 // Permission is hereby granted, free of charge, to any person obtaining a
10415 // copy of this software and associated documentation files (the
10416 // "Software"), to deal in the Software without restriction, including
10417 // without limitation the rights to use, copy, modify, merge, publish,
10418 // distribute, sublicense, and/or sell copies of the Software, and to permit
10419 // persons to whom the Software is furnished to do so, subject to the
10420 // following conditions:
10421 //
10422 // The above copyright notice and this permission notice shall be included
10423 // in all copies or substantial portions of the Software.
10424 //
10425 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10426 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10427 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10428 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10429 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10430 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10431 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10432
10433 // a duplex stream is just a stream that is both readable and writable.
10434 // Since JS doesn't have multiple prototypal inheritance, this class
10435 // prototypally inherits from Readable, and then parasitically from
10436 // Writable.
10437
10438 'use strict';
10439
10440 /*<replacement>*/
10441
10442 var processNextTick = require('process-nextick-args');
10443 /*</replacement>*/
10444
10445 /*<replacement>*/
10446 var objectKeys = Object.keys || function (obj) {
10447 var keys = [];
10448 for (var key in obj) {
10449 keys.push(key);
10450 }return keys;
10451 };
10452 /*</replacement>*/
10453
10454 module.exports = Duplex;
10455
10456 /*<replacement>*/
10457 var util = require('core-util-is');
10458 util.inherits = require('inherits');
10459 /*</replacement>*/
10460
10461 var Readable = require('./_stream_readable');
10462 var Writable = require('./_stream_writable');
10463
10464 util.inherits(Duplex, Readable);
10465
10466 var keys = objectKeys(Writable.prototype);
10467 for (var v = 0; v < keys.length; v++) {
10468 var method = keys[v];
10469 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
10470 }
10471
10472 function Duplex(options) {
10473 if (!(this instanceof Duplex)) return new Duplex(options);
10474
10475 Readable.call(this, options);
10476 Writable.call(this, options);
10477
10478 if (options && options.readable === false) this.readable = false;
10479
10480 if (options && options.writable === false) this.writable = false;
10481
10482 this.allowHalfOpen = true;
10483 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
10484
10485 this.once('end', onend);
10486 }
10487
10488 // the no-half-open enforcer
10489 function onend() {
10490 // if we allow half-open state, or if the writable side ended,
10491 // then we're ok.
10492 if (this.allowHalfOpen || this._writableState.ended) return;
10493
10494 // no more data can be written.
10495 // But allow more writes to happen in this tick.
10496 processNextTick(onEndNT, this);
10497 }
10498
10499 function onEndNT(self) {
10500 self.end();
10501 }
10502
10503 Object.defineProperty(Duplex.prototype, 'destroyed', {
10504 get: function () {
10505 if (this._readableState === undefined || this._writableState === undefined) {
10506 return false;
10507 }
10508 return this._readableState.destroyed && this._writableState.destroyed;
10509 },
10510 set: function (value) {
10511 // we ignore the value if the stream
10512 // has not been initialized yet
10513 if (this._readableState === undefined || this._writableState === undefined) {
10514 return;
10515 }
10516
10517 // backward compatibility, the user is explicitly
10518 // managing destroyed
10519 this._readableState.destroyed = value;
10520 this._writableState.destroyed = value;
10521 }
10522 });
10523
10524 Duplex.prototype._destroy = function (err, cb) {
10525 this.push(null);
10526 this.end();
10527
10528 processNextTick(cb, err);
10529 };
10530
10531 function forEach(xs, f) {
10532 for (var i = 0, l = xs.length; i < l; i++) {
10533 f(xs[i], i);
10534 }
10535 }
10536 },{"./_stream_readable":16,"./_stream_writable":18,"core-util-is":5,"inherits":8,"process-nextick-args":11}],15:[function(require,module,exports){
10537 // Copyright Joyent, Inc. and other Node contributors.
10538 //
10539 // Permission is hereby granted, free of charge, to any person obtaining a
10540 // copy of this software and associated documentation files (the
10541 // "Software"), to deal in the Software without restriction, including
10542 // without limitation the rights to use, copy, modify, merge, publish,
10543 // distribute, sublicense, and/or sell copies of the Software, and to permit
10544 // persons to whom the Software is furnished to do so, subject to the
10545 // following conditions:
10546 //
10547 // The above copyright notice and this permission notice shall be included
10548 // in all copies or substantial portions of the Software.
10549 //
10550 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10551 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10552 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10553 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10554 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10555 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10556 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10557
10558 // a passthrough stream.
10559 // basically just the most minimal sort of Transform stream.
10560 // Every written chunk gets output as-is.
10561
10562 'use strict';
10563
10564 module.exports = PassThrough;
10565
10566 var Transform = require('./_stream_transform');
10567
10568 /*<replacement>*/
10569 var util = require('core-util-is');
10570 util.inherits = require('inherits');
10571 /*</replacement>*/
10572
10573 util.inherits(PassThrough, Transform);
10574
10575 function PassThrough(options) {
10576 if (!(this instanceof PassThrough)) return new PassThrough(options);
10577
10578 Transform.call(this, options);
10579 }
10580
10581 PassThrough.prototype._transform = function (chunk, encoding, cb) {
10582 cb(null, chunk);
10583 };
10584 },{"./_stream_transform":17,"core-util-is":5,"inherits":8}],16:[function(require,module,exports){
10585 (function (process,global){
10586 // Copyright Joyent, Inc. and other Node contributors.
10587 //
10588 // Permission is hereby granted, free of charge, to any person obtaining a
10589 // copy of this software and associated documentation files (the
10590 // "Software"), to deal in the Software without restriction, including
10591 // without limitation the rights to use, copy, modify, merge, publish,
10592 // distribute, sublicense, and/or sell copies of the Software, and to permit
10593 // persons to whom the Software is furnished to do so, subject to the
10594 // following conditions:
10595 //
10596 // The above copyright notice and this permission notice shall be included
10597 // in all copies or substantial portions of the Software.
10598 //
10599 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10600 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10601 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10602 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10603 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10604 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10605 // USE OR OTHER DEALINGS IN THE SOFTWARE.
10606
10607 'use strict';
10608
10609 /*<replacement>*/
10610
10611 var processNextTick = require('process-nextick-args');
10612 /*</replacement>*/
10613
10614 module.exports = Readable;
10615
10616 /*<replacement>*/
10617 var isArray = require('isarray');
10618 /*</replacement>*/
10619
10620 /*<replacement>*/
10621 var Duplex;
10622 /*</replacement>*/
10623
10624 Readable.ReadableState = ReadableState;
10625
10626 /*<replacement>*/
10627 var EE = require('events').EventEmitter;
10628
10629 var EElistenerCount = function (emitter, type) {
10630 return emitter.listeners(type).length;
10631 };
10632 /*</replacement>*/
10633
10634 /*<replacement>*/
10635 var Stream = require('./internal/streams/stream');
10636 /*</replacement>*/
10637
10638 // TODO(bmeurer): Change this back to const once hole checks are
10639 // properly optimized away early in Ignition+TurboFan.
10640 /*<replacement>*/
10641 var Buffer = require('safe-buffer').Buffer;
10642 var OurUint8Array = global.Uint8Array || function () {};
10643 function _uint8ArrayToBuffer(chunk) {
10644 return Buffer.from(chunk);
10645 }
10646 function _isUint8Array(obj) {
10647 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10648 }
10649 /*</replacement>*/
10650
10651 /*<replacement>*/
10652 var util = require('core-util-is');
10653 util.inherits = require('inherits');
10654 /*</replacement>*/
10655
10656 /*<replacement>*/
10657 var debugUtil = require('util');
10658 var debug = void 0;
10659 if (debugUtil && debugUtil.debuglog) {
10660 debug = debugUtil.debuglog('stream');
10661 } else {
10662 debug = function () {};
10663 }
10664 /*</replacement>*/
10665
10666 var BufferList = require('./internal/streams/BufferList');
10667 var destroyImpl = require('./internal/streams/destroy');
10668 var StringDecoder;
10669
10670 util.inherits(Readable, Stream);
10671
10672 var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10673
10674 function prependListener(emitter, event, fn) {
10675 // Sadly this is not cacheable as some libraries bundle their own
10676 // event emitter implementation with them.
10677 if (typeof emitter.prependListener === 'function') {
10678 return emitter.prependListener(event, fn);
10679 } else {
10680 // This is a hack to make sure that our error handler is attached before any
10681 // userland ones. NEVER DO THIS. This is here only because this code needs
10682 // to continue to work with older versions of Node.js that do not include
10683 // the prependListener() method. The goal is to eventually remove this hack.
10684 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
10685 }
10686 }
10687
10688 function ReadableState(options, stream) {
10689 Duplex = Duplex || require('./_stream_duplex');
10690
10691 options = options || {};
10692
10693 // object stream flag. Used to make read(n) ignore n and to
10694 // make all the buffer merging and length checks go away
10695 this.objectMode = !!options.objectMode;
10696
10697 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
10698
10699 // the point at which it stops calling _read() to fill the buffer
10700 // Note: 0 is a valid value, means "don't call _read preemptively ever"
10701 var hwm = options.highWaterMark;
10702 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
10703 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
10704
10705 // cast to ints.
10706 this.highWaterMark = Math.floor(this.highWaterMark);
10707
10708 // A linked list is used to store data chunks instead of an array because the
10709 // linked list can remove elements from the beginning faster than
10710 // array.shift()
10711 this.buffer = new BufferList();
10712 this.length = 0;
10713 this.pipes = null;
10714 this.pipesCount = 0;
10715 this.flowing = null;
10716 this.ended = false;
10717 this.endEmitted = false;
10718 this.reading = false;
10719
10720 // a flag to be able to tell if the event 'readable'/'data' is emitted
10721 // immediately, or on a later tick. We set this to true at first, because
10722 // any actions that shouldn't happen until "later" should generally also
10723 // not happen before the first read call.
10724 this.sync = true;
10725
10726 // whenever we return null, then we set a flag to say
10727 // that we're awaiting a 'readable' event emission.
10728 this.needReadable = false;
10729 this.emittedReadable = false;
10730 this.readableListening = false;
10731 this.resumeScheduled = false;
10732
10733 // has it been destroyed
10734 this.destroyed = false;
10735
10736 // Crypto is kind of old and crusty. Historically, its default string
10737 // encoding is 'binary' so we have to make this configurable.
10738 // Everything else in the universe uses 'utf8', though.
10739 this.defaultEncoding = options.defaultEncoding || 'utf8';
10740
10741 // the number of writers that are awaiting a drain event in .pipe()s
10742 this.awaitDrain = 0;
10743
10744 // if true, a maybeReadMore has been scheduled
10745 this.readingMore = false;
10746
10747 this.decoder = null;
10748 this.encoding = null;
10749 if (options.encoding) {
10750 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10751 this.decoder = new StringDecoder(options.encoding);
10752 this.encoding = options.encoding;
10753 }
10754 }
10755
10756 function Readable(options) {
10757 Duplex = Duplex || require('./_stream_duplex');
10758
10759 if (!(this instanceof Readable)) return new Readable(options);
10760
10761 this._readableState = new ReadableState(options, this);
10762
10763 // legacy
10764 this.readable = true;
10765
10766 if (options) {
10767 if (typeof options.read === 'function') this._read = options.read;
10768
10769 if (typeof options.destroy === 'function') this._destroy = options.destroy;
10770 }
10771
10772 Stream.call(this);
10773 }
10774
10775 Object.defineProperty(Readable.prototype, 'destroyed', {
10776 get: function () {
10777 if (this._readableState === undefined) {
10778 return false;
10779 }
10780 return this._readableState.destroyed;
10781 },
10782 set: function (value) {
10783 // we ignore the value if the stream
10784 // has not been initialized yet
10785 if (!this._readableState) {
10786 return;
10787 }
10788
10789 // backward compatibility, the user is explicitly
10790 // managing destroyed
10791 this._readableState.destroyed = value;
10792 }
10793 });
10794
10795 Readable.prototype.destroy = destroyImpl.destroy;
10796 Readable.prototype._undestroy = destroyImpl.undestroy;
10797 Readable.prototype._destroy = function (err, cb) {
10798 this.push(null);
10799 cb(err);
10800 };
10801
10802 // Manually shove something into the read() buffer.
10803 // This returns true if the highWaterMark has not been hit yet,
10804 // similar to how Writable.write() returns true if you should
10805 // write() some more.
10806 Readable.prototype.push = function (chunk, encoding) {
10807 var state = this._readableState;
10808 var skipChunkCheck;
10809
10810 if (!state.objectMode) {
10811 if (typeof chunk === 'string') {
10812 encoding = encoding || state.defaultEncoding;
10813 if (encoding !== state.encoding) {
10814 chunk = Buffer.from(chunk, encoding);
10815 encoding = '';
10816 }
10817 skipChunkCheck = true;
10818 }
10819 } else {
10820 skipChunkCheck = true;
10821 }
10822
10823 return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
10824 };
10825
10826 // Unshift should *always* be something directly out of read()
10827 Readable.prototype.unshift = function (chunk) {
10828 return readableAddChunk(this, chunk, null, true, false);
10829 };
10830
10831 function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
10832 var state = stream._readableState;
10833 if (chunk === null) {
10834 state.reading = false;
10835 onEofChunk(stream, state);
10836 } else {
10837 var er;
10838 if (!skipChunkCheck) er = chunkInvalid(state, chunk);
10839 if (er) {
10840 stream.emit('error', er);
10841 } else if (state.objectMode || chunk && chunk.length > 0) {
10842 if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
10843 chunk = _uint8ArrayToBuffer(chunk);
10844 }
10845
10846 if (addToFront) {
10847 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
10848 } else if (state.ended) {
10849 stream.emit('error', new Error('stream.push() after EOF'));
10850 } else {
10851 state.reading = false;
10852 if (state.decoder && !encoding) {
10853 chunk = state.decoder.write(chunk);
10854 if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
10855 } else {
10856 addChunk(stream, state, chunk, false);
10857 }
10858 }
10859 } else if (!addToFront) {
10860 state.reading = false;
10861 }
10862 }
10863
10864 return needMoreData(state);
10865 }
10866
10867 function addChunk(stream, state, chunk, addToFront) {
10868 if (state.flowing && state.length === 0 && !state.sync) {
10869 stream.emit('data', chunk);
10870 stream.read(0);
10871 } else {
10872 // update the buffer info.
10873 state.length += state.objectMode ? 1 : chunk.length;
10874 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
10875
10876 if (state.needReadable) emitReadable(stream);
10877 }
10878 maybeReadMore(stream, state);
10879 }
10880
10881 function chunkInvalid(state, chunk) {
10882 var er;
10883 if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
10884 er = new TypeError('Invalid non-string/buffer chunk');
10885 }
10886 return er;
10887 }
10888
10889 // if it's past the high water mark, we can push in some more.
10890 // Also, if we have no data yet, we can stand some
10891 // more bytes. This is to work around cases where hwm=0,
10892 // such as the repl. Also, if the push() triggered a
10893 // readable event, and the user called read(largeNumber) such that
10894 // needReadable was set, then we ought to push more, so that another
10895 // 'readable' event will be triggered.
10896 function needMoreData(state) {
10897 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
10898 }
10899
10900 Readable.prototype.isPaused = function () {
10901 return this._readableState.flowing === false;
10902 };
10903
10904 // backwards compatibility.
10905 Readable.prototype.setEncoding = function (enc) {
10906 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10907 this._readableState.decoder = new StringDecoder(enc);
10908 this._readableState.encoding = enc;
10909 return this;
10910 };
10911
10912 // Don't raise the hwm > 8MB
10913 var MAX_HWM = 0x800000;
10914 function computeNewHighWaterMark(n) {
10915 if (n >= MAX_HWM) {
10916 n = MAX_HWM;
10917 } else {
10918 // Get the next highest power of 2 to prevent increasing hwm excessively in
10919 // tiny amounts
10920 n--;
10921 n |= n >>> 1;
10922 n |= n >>> 2;
10923 n |= n >>> 4;
10924 n |= n >>> 8;
10925 n |= n >>> 16;
10926 n++;
10927 }
10928 return n;
10929 }
10930
10931 // This function is designed to be inlinable, so please take care when making
10932 // changes to the function body.
10933 function howMuchToRead(n, state) {
10934 if (n <= 0 || state.length === 0 && state.ended) return 0;
10935 if (state.objectMode) return 1;
10936 if (n !== n) {
10937 // Only flow one buffer at a time
10938 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10939 }
10940 // If we're asking for more than the current hwm, then raise the hwm.
10941 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10942 if (n <= state.length) return n;
10943 // Don't have enough
10944 if (!state.ended) {
10945 state.needReadable = true;
10946 return 0;
10947 }
10948 return state.length;
10949 }
10950
10951 // you can override either this method, or the async _read(n) below.
10952 Readable.prototype.read = function (n) {
10953 debug('read', n);
10954 n = parseInt(n, 10);
10955 var state = this._readableState;
10956 var nOrig = n;
10957
10958 if (n !== 0) state.emittedReadable = false;
10959
10960 // if we're doing read(0) to trigger a readable event, but we
10961 // already have a bunch of data in the buffer, then just trigger
10962 // the 'readable' event and move on.
10963 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
10964 debug('read: emitReadable', state.length, state.ended);
10965 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
10966 return null;
10967 }
10968
10969 n = howMuchToRead(n, state);
10970
10971 // if we've ended, and we're now clear, then finish it up.
10972 if (n === 0 && state.ended) {
10973 if (state.length === 0) endReadable(this);
10974 return null;
10975 }
10976
10977 // All the actual chunk generation logic needs to be
10978 // *below* the call to _read. The reason is that in certain
10979 // synthetic stream cases, such as passthrough streams, _read
10980 // may be a completely synchronous operation which may change
10981 // the state of the read buffer, providing enough data when
10982 // before there was *not* enough.
10983 //
10984 // So, the steps are:
10985 // 1. Figure out what the state of things will be after we do
10986 // a read from the buffer.
10987 //
10988 // 2. If that resulting state will trigger a _read, then call _read.
10989 // Note that this may be asynchronous, or synchronous. Yes, it is
10990 // deeply ugly to write APIs this way, but that still doesn't mean
10991 // that the Readable class should behave improperly, as streams are
10992 // designed to be sync/async agnostic.
10993 // Take note if the _read call is sync or async (ie, if the read call
10994 // has returned yet), so that we know whether or not it's safe to emit
10995 // 'readable' etc.
10996 //
10997 // 3. Actually pull the requested chunks out of the buffer and return.
10998
10999 // if we need a readable event, then we need to do some reading.
11000 var doRead = state.needReadable;
11001 debug('need readable', doRead);
11002
11003 // if we currently have less than the highWaterMark, then also read some
11004 if (state.length === 0 || state.length - n < state.highWaterMark) {
11005 doRead = true;
11006 debug('length less than watermark', doRead);
11007 }
11008
11009 // however, if we've ended, then there's no point, and if we're already
11010 // reading, then it's unnecessary.
11011 if (state.ended || state.reading) {
11012 doRead = false;
11013 debug('reading or ended', doRead);
11014 } else if (doRead) {
11015 debug('do read');
11016 state.reading = true;
11017 state.sync = true;
11018 // if the length is currently zero, then we *need* a readable event.
11019 if (state.length === 0) state.needReadable = true;
11020 // call internal read method
11021 this._read(state.highWaterMark);
11022 state.sync = false;
11023 // If _read pushed data synchronously, then `reading` will be false,
11024 // and we need to re-evaluate how much data we can return to the user.
11025 if (!state.reading) n = howMuchToRead(nOrig, state);
11026 }
11027
11028 var ret;
11029 if (n > 0) ret = fromList(n, state);else ret = null;
11030
11031 if (ret === null) {
11032 state.needReadable = true;
11033 n = 0;
11034 } else {
11035 state.length -= n;
11036 }
11037
11038 if (state.length === 0) {
11039 // If we have nothing in the buffer, then we want to know
11040 // as soon as we *do* get something into the buffer.
11041 if (!state.ended) state.needReadable = true;
11042
11043 // If we tried to read() past the EOF, then emit end on the next tick.
11044 if (nOrig !== n && state.ended) endReadable(this);
11045 }
11046
11047 if (ret !== null) this.emit('data', ret);
11048
11049 return ret;
11050 };
11051
11052 function onEofChunk(stream, state) {
11053 if (state.ended) return;
11054 if (state.decoder) {
11055 var chunk = state.decoder.end();
11056 if (chunk && chunk.length) {
11057 state.buffer.push(chunk);
11058 state.length += state.objectMode ? 1 : chunk.length;
11059 }
11060 }
11061 state.ended = true;
11062
11063 // emit 'readable' now to make sure it gets picked up.
11064 emitReadable(stream);
11065 }
11066
11067 // Don't emit readable right away in sync mode, because this can trigger
11068 // another read() call => stack overflow. This way, it might trigger
11069 // a nextTick recursion warning, but that's not so bad.
11070 function emitReadable(stream) {
11071 var state = stream._readableState;
11072 state.needReadable = false;
11073 if (!state.emittedReadable) {
11074 debug('emitReadable', state.flowing);
11075 state.emittedReadable = true;
11076 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11077 }
11078 }
11079
11080 function emitReadable_(stream) {
11081 debug('emit readable');
11082 stream.emit('readable');
11083 flow(stream);
11084 }
11085
11086 // at this point, the user has presumably seen the 'readable' event,
11087 // and called read() to consume some data. that may have triggered
11088 // in turn another _read(n) call, in which case reading = true if
11089 // it's in progress.
11090 // However, if we're not ended, or reading, and the length < hwm,
11091 // then go ahead and try to read some more preemptively.
11092 function maybeReadMore(stream, state) {
11093 if (!state.readingMore) {
11094 state.readingMore = true;
11095 processNextTick(maybeReadMore_, stream, state);
11096 }
11097 }
11098
11099 function maybeReadMore_(stream, state) {
11100 var len = state.length;
11101 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11102 debug('maybeReadMore read 0');
11103 stream.read(0);
11104 if (len === state.length)
11105 // didn't get any data, stop spinning.
11106 break;else len = state.length;
11107 }
11108 state.readingMore = false;
11109 }
11110
11111 // abstract method. to be overridden in specific implementation classes.
11112 // call cb(er, data) where data is <= n in length.
11113 // for virtual (non-string, non-buffer) streams, "length" is somewhat
11114 // arbitrary, and perhaps not very meaningful.
11115 Readable.prototype._read = function (n) {
11116 this.emit('error', new Error('_read() is not implemented'));
11117 };
11118
11119 Readable.prototype.pipe = function (dest, pipeOpts) {
11120 var src = this;
11121 var state = this._readableState;
11122
11123 switch (state.pipesCount) {
11124 case 0:
11125 state.pipes = dest;
11126 break;
11127 case 1:
11128 state.pipes = [state.pipes, dest];
11129 break;
11130 default:
11131 state.pipes.push(dest);
11132 break;
11133 }
11134 state.pipesCount += 1;
11135 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
11136
11137 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
11138
11139 var endFn = doEnd ? onend : unpipe;
11140 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
11141
11142 dest.on('unpipe', onunpipe);
11143 function onunpipe(readable, unpipeInfo) {
11144 debug('onunpipe');
11145 if (readable === src) {
11146 if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
11147 unpipeInfo.hasUnpiped = true;
11148 cleanup();
11149 }
11150 }
11151 }
11152
11153 function onend() {
11154 debug('onend');
11155 dest.end();
11156 }
11157
11158 // when the dest drains, it reduces the awaitDrain counter
11159 // on the source. This would be more elegant with a .once()
11160 // handler in flow(), but adding and removing repeatedly is
11161 // too slow.
11162 var ondrain = pipeOnDrain(src);
11163 dest.on('drain', ondrain);
11164
11165 var cleanedUp = false;
11166 function cleanup() {
11167 debug('cleanup');
11168 // cleanup event handlers once the pipe is broken
11169 dest.removeListener('close', onclose);
11170 dest.removeListener('finish', onfinish);
11171 dest.removeListener('drain', ondrain);
11172 dest.removeListener('error', onerror);
11173 dest.removeListener('unpipe', onunpipe);
11174 src.removeListener('end', onend);
11175 src.removeListener('end', unpipe);
11176 src.removeListener('data', ondata);
11177
11178 cleanedUp = true;
11179
11180 // if the reader is waiting for a drain event from this
11181 // specific writer, then it would cause it to never start
11182 // flowing again.
11183 // So, if this is awaiting a drain, then we just call it now.
11184 // If we don't know, then assume that we are waiting for one.
11185 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
11186 }
11187
11188 // If the user pushes more data while we're writing to dest then we'll end up
11189 // in ondata again. However, we only want to increase awaitDrain once because
11190 // dest will only emit one 'drain' event for the multiple writes.
11191 // => Introduce a guard on increasing awaitDrain.
11192 var increasedAwaitDrain = false;
11193 src.on('data', ondata);
11194 function ondata(chunk) {
11195 debug('ondata');
11196 increasedAwaitDrain = false;
11197 var ret = dest.write(chunk);
11198 if (false === ret && !increasedAwaitDrain) {
11199 // If the user unpiped during `dest.write()`, it is possible
11200 // to get stuck in a permanently paused state if that write
11201 // also returned false.
11202 // => Check whether `dest` is still a piping destination.
11203 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
11204 debug('false write response, pause', src._readableState.awaitDrain);
11205 src._readableState.awaitDrain++;
11206 increasedAwaitDrain = true;
11207 }
11208 src.pause();
11209 }
11210 }
11211
11212 // if the dest has an error, then stop piping into it.
11213 // however, don't suppress the throwing behavior for this.
11214 function onerror(er) {
11215 debug('onerror', er);
11216 unpipe();
11217 dest.removeListener('error', onerror);
11218 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
11219 }
11220
11221 // Make sure our error handler is attached before userland ones.
11222 prependListener(dest, 'error', onerror);
11223
11224 // Both close and finish should trigger unpipe, but only once.
11225 function onclose() {
11226 dest.removeListener('finish', onfinish);
11227 unpipe();
11228 }
11229 dest.once('close', onclose);
11230 function onfinish() {
11231 debug('onfinish');
11232 dest.removeListener('close', onclose);
11233 unpipe();
11234 }
11235 dest.once('finish', onfinish);
11236
11237 function unpipe() {
11238 debug('unpipe');
11239 src.unpipe(dest);
11240 }
11241
11242 // tell the dest that it's being piped to
11243 dest.emit('pipe', src);
11244
11245 // start the flow if it hasn't been started already.
11246 if (!state.flowing) {
11247 debug('pipe resume');
11248 src.resume();
11249 }
11250
11251 return dest;
11252 };
11253
11254 function pipeOnDrain(src) {
11255 return function () {
11256 var state = src._readableState;
11257 debug('pipeOnDrain', state.awaitDrain);
11258 if (state.awaitDrain) state.awaitDrain--;
11259 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
11260 state.flowing = true;
11261 flow(src);
11262 }
11263 };
11264 }
11265
11266 Readable.prototype.unpipe = function (dest) {
11267 var state = this._readableState;
11268 var unpipeInfo = { hasUnpiped: false };
11269
11270 // if we're not piping anywhere, then do nothing.
11271 if (state.pipesCount === 0) return this;
11272
11273 // just one destination. most common case.
11274 if (state.pipesCount === 1) {
11275 // passed in one, but it's not the right one.
11276 if (dest && dest !== state.pipes) return this;
11277
11278 if (!dest) dest = state.pipes;
11279
11280 // got a match.
11281 state.pipes = null;
11282 state.pipesCount = 0;
11283 state.flowing = false;
11284 if (dest) dest.emit('unpipe', this, unpipeInfo);
11285 return this;
11286 }
11287
11288 // slow case. multiple pipe destinations.
11289
11290 if (!dest) {
11291 // remove all.
11292 var dests = state.pipes;
11293 var len = state.pipesCount;
11294 state.pipes = null;
11295 state.pipesCount = 0;
11296 state.flowing = false;
11297
11298 for (var i = 0; i < len; i++) {
11299 dests[i].emit('unpipe', this, unpipeInfo);
11300 }return this;
11301 }
11302
11303 // try to find the right one.
11304 var index = indexOf(state.pipes, dest);
11305 if (index === -1) return this;
11306
11307 state.pipes.splice(index, 1);
11308 state.pipesCount -= 1;
11309 if (state.pipesCount === 1) state.pipes = state.pipes[0];
11310
11311 dest.emit('unpipe', this, unpipeInfo);
11312
11313 return this;
11314 };
11315
11316 // set up data events if they are asked for
11317 // Ensure readable listeners eventually get something
11318 Readable.prototype.on = function (ev, fn) {
11319 var res = Stream.prototype.on.call(this, ev, fn);
11320
11321 if (ev === 'data') {
11322 // Start flowing on next tick if stream isn't explicitly paused
11323 if (this._readableState.flowing !== false) this.resume();
11324 } else if (ev === 'readable') {
11325 var state = this._readableState;
11326 if (!state.endEmitted && !state.readableListening) {
11327 state.readableListening = state.needReadable = true;
11328 state.emittedReadable = false;
11329 if (!state.reading) {
11330 processNextTick(nReadingNextTick, this);
11331 } else if (state.length) {
11332 emitReadable(this);
11333 }
11334 }
11335 }
11336
11337 return res;
11338 };
11339 Readable.prototype.addListener = Readable.prototype.on;
11340
11341 function nReadingNextTick(self) {
11342 debug('readable nexttick read 0');
11343 self.read(0);
11344 }
11345
11346 // pause() and resume() are remnants of the legacy readable stream API
11347 // If the user uses them, then switch into old mode.
11348 Readable.prototype.resume = function () {
11349 var state = this._readableState;
11350 if (!state.flowing) {
11351 debug('resume');
11352 state.flowing = true;
11353 resume(this, state);
11354 }
11355 return this;
11356 };
11357
11358 function resume(stream, state) {
11359 if (!state.resumeScheduled) {
11360 state.resumeScheduled = true;
11361 processNextTick(resume_, stream, state);
11362 }
11363 }
11364
11365 function resume_(stream, state) {
11366 if (!state.reading) {
11367 debug('resume read 0');
11368 stream.read(0);
11369 }
11370
11371 state.resumeScheduled = false;
11372 state.awaitDrain = 0;
11373 stream.emit('resume');
11374 flow(stream);
11375 if (state.flowing && !state.reading) stream.read(0);
11376 }
11377
11378 Readable.prototype.pause = function () {
11379 debug('call pause flowing=%j', this._readableState.flowing);
11380 if (false !== this._readableState.flowing) {
11381 debug('pause');
11382 this._readableState.flowing = false;
11383 this.emit('pause');
11384 }
11385 return this;
11386 };
11387
11388 function flow(stream) {
11389 var state = stream._readableState;
11390 debug('flow', state.flowing);
11391 while (state.flowing && stream.read() !== null) {}
11392 }
11393
11394 // wrap an old-style stream as the async data source.
11395 // This is *not* part of the readable stream interface.
11396 // It is an ugly unfortunate mess of history.
11397 Readable.prototype.wrap = function (stream) {
11398 var state = this._readableState;
11399 var paused = false;
11400
11401 var self = this;
11402 stream.on('end', function () {
11403 debug('wrapped end');
11404 if (state.decoder && !state.ended) {
11405 var chunk = state.decoder.end();
11406 if (chunk && chunk.length) self.push(chunk);
11407 }
11408
11409 self.push(null);
11410 });
11411
11412 stream.on('data', function (chunk) {
11413 debug('wrapped data');
11414 if (state.decoder) chunk = state.decoder.write(chunk);
11415
11416 // don't skip over falsy values in objectMode
11417 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
11418
11419 var ret = self.push(chunk);
11420 if (!ret) {
11421 paused = true;
11422 stream.pause();
11423 }
11424 });
11425
11426 // proxy all the other methods.
11427 // important when wrapping filters and duplexes.
11428 for (var i in stream) {
11429 if (this[i] === undefined && typeof stream[i] === 'function') {
11430 this[i] = function (method) {
11431 return function () {
11432 return stream[method].apply(stream, arguments);
11433 };
11434 }(i);
11435 }
11436 }
11437
11438 // proxy certain important events.
11439 for (var n = 0; n < kProxyEvents.length; n++) {
11440 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11441 }
11442
11443 // when we try to consume some more bytes, simply unpause the
11444 // underlying stream.
11445 self._read = function (n) {
11446 debug('wrapped _read', n);
11447 if (paused) {
11448 paused = false;
11449 stream.resume();
11450 }
11451 };
11452
11453 return self;
11454 };
11455
11456 // exposed for testing purposes only.
11457 Readable._fromList = fromList;
11458
11459 // Pluck off n bytes from an array of buffers.
11460 // Length is the combined lengths of all the buffers in the list.
11461 // This function is designed to be inlinable, so please take care when making
11462 // changes to the function body.
11463 function fromList(n, state) {
11464 // nothing buffered
11465 if (state.length === 0) return null;
11466
11467 var ret;
11468 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
11469 // read it all, truncate the list
11470 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
11471 state.buffer.clear();
11472 } else {
11473 // read part of list
11474 ret = fromListPartial(n, state.buffer, state.decoder);
11475 }
11476
11477 return ret;
11478 }
11479
11480 // Extracts only enough buffered data to satisfy the amount requested.
11481 // This function is designed to be inlinable, so please take care when making
11482 // changes to the function body.
11483 function fromListPartial(n, list, hasStrings) {
11484 var ret;
11485 if (n < list.head.data.length) {
11486 // slice is the same for buffers and strings
11487 ret = list.head.data.slice(0, n);
11488 list.head.data = list.head.data.slice(n);
11489 } else if (n === list.head.data.length) {
11490 // first chunk is a perfect match
11491 ret = list.shift();
11492 } else {
11493 // result spans more than one buffer
11494 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
11495 }
11496 return ret;
11497 }
11498
11499 // Copies a specified amount of characters from the list of buffered data
11500 // chunks.
11501 // This function is designed to be inlinable, so please take care when making
11502 // changes to the function body.
11503 function copyFromBufferString(n, list) {
11504 var p = list.head;
11505 var c = 1;
11506 var ret = p.data;
11507 n -= ret.length;
11508 while (p = p.next) {
11509 var str = p.data;
11510 var nb = n > str.length ? str.length : n;
11511 if (nb === str.length) ret += str;else ret += str.slice(0, n);
11512 n -= nb;
11513 if (n === 0) {
11514 if (nb === str.length) {
11515 ++c;
11516 if (p.next) list.head = p.next;else list.head = list.tail = null;
11517 } else {
11518 list.head = p;
11519 p.data = str.slice(nb);
11520 }
11521 break;
11522 }
11523 ++c;
11524 }
11525 list.length -= c;
11526 return ret;
11527 }
11528
11529 // Copies a specified amount of bytes from the list of buffered data chunks.
11530 // This function is designed to be inlinable, so please take care when making
11531 // changes to the function body.
11532 function copyFromBuffer(n, list) {
11533 var ret = Buffer.allocUnsafe(n);
11534 var p = list.head;
11535 var c = 1;
11536 p.data.copy(ret);
11537 n -= p.data.length;
11538 while (p = p.next) {
11539 var buf = p.data;
11540 var nb = n > buf.length ? buf.length : n;
11541 buf.copy(ret, ret.length - n, 0, nb);
11542 n -= nb;
11543 if (n === 0) {
11544 if (nb === buf.length) {
11545 ++c;
11546 if (p.next) list.head = p.next;else list.head = list.tail = null;
11547 } else {
11548 list.head = p;
11549 p.data = buf.slice(nb);
11550 }
11551 break;
11552 }
11553 ++c;
11554 }
11555 list.length -= c;
11556 return ret;
11557 }
11558
11559 function endReadable(stream) {
11560 var state = stream._readableState;
11561
11562 // If we get here before consuming all the bytes, then that is a
11563 // bug in node. Should never happen.
11564 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
11565
11566 if (!state.endEmitted) {
11567 state.ended = true;
11568 processNextTick(endReadableNT, state, stream);
11569 }
11570 }
11571
11572 function endReadableNT(state, stream) {
11573 // Check that we didn't get one last unshift.
11574 if (!state.endEmitted && state.length === 0) {
11575 state.endEmitted = true;
11576 stream.readable = false;
11577 stream.emit('end');
11578 }
11579 }
11580
11581 function forEach(xs, f) {
11582 for (var i = 0, l = xs.length; i < l; i++) {
11583 f(xs[i], i);
11584 }
11585 }
11586
11587 function indexOf(xs, x) {
11588 for (var i = 0, l = xs.length; i < l; i++) {
11589 if (xs[i] === x) return i;
11590 }
11591 return -1;
11592 }
11593 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11594 },{"./_stream_duplex":14,"./internal/streams/BufferList":19,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"events":6,"inherits":8,"isarray":10,"process-nextick-args":11,"safe-buffer":26,"string_decoder/":28,"util":3}],17:[function(require,module,exports){
11595 // Copyright Joyent, Inc. and other Node contributors.
11596 //
11597 // Permission is hereby granted, free of charge, to any person obtaining a
11598 // copy of this software and associated documentation files (the
11599 // "Software"), to deal in the Software without restriction, including
11600 // without limitation the rights to use, copy, modify, merge, publish,
11601 // distribute, sublicense, and/or sell copies of the Software, and to permit
11602 // persons to whom the Software is furnished to do so, subject to the
11603 // following conditions:
11604 //
11605 // The above copyright notice and this permission notice shall be included
11606 // in all copies or substantial portions of the Software.
11607 //
11608 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11609 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11610 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11611 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11612 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11613 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11614 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11615
11616 // a transform stream is a readable/writable stream where you do
11617 // something with the data. Sometimes it's called a "filter",
11618 // but that's not a great name for it, since that implies a thing where
11619 // some bits pass through, and others are simply ignored. (That would
11620 // be a valid example of a transform, of course.)
11621 //
11622 // While the output is causally related to the input, it's not a
11623 // necessarily symmetric or synchronous transformation. For example,
11624 // a zlib stream might take multiple plain-text writes(), and then
11625 // emit a single compressed chunk some time in the future.
11626 //
11627 // Here's how this works:
11628 //
11629 // The Transform stream has all the aspects of the readable and writable
11630 // stream classes. When you write(chunk), that calls _write(chunk,cb)
11631 // internally, and returns false if there's a lot of pending writes
11632 // buffered up. When you call read(), that calls _read(n) until
11633 // there's enough pending readable data buffered up.
11634 //
11635 // In a transform stream, the written data is placed in a buffer. When
11636 // _read(n) is called, it transforms the queued up data, calling the
11637 // buffered _write cb's as it consumes chunks. If consuming a single
11638 // written chunk would result in multiple output chunks, then the first
11639 // outputted bit calls the readcb, and subsequent chunks just go into
11640 // the read buffer, and will cause it to emit 'readable' if necessary.
11641 //
11642 // This way, back-pressure is actually determined by the reading side,
11643 // since _read has to be called to start processing a new chunk. However,
11644 // a pathological inflate type of transform can cause excessive buffering
11645 // here. For example, imagine a stream where every byte of input is
11646 // interpreted as an integer from 0-255, and then results in that many
11647 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
11648 // 1kb of data being output. In this case, you could write a very small
11649 // amount of input, and end up with a very large amount of output. In
11650 // such a pathological inflating mechanism, there'd be no way to tell
11651 // the system to stop doing the transform. A single 4MB write could
11652 // cause the system to run out of memory.
11653 //
11654 // However, even in such a pathological case, only a single written chunk
11655 // would be consumed, and then the rest would wait (un-transformed) until
11656 // the results of the previous transformed chunk were consumed.
11657
11658 'use strict';
11659
11660 module.exports = Transform;
11661
11662 var Duplex = require('./_stream_duplex');
11663
11664 /*<replacement>*/
11665 var util = require('core-util-is');
11666 util.inherits = require('inherits');
11667 /*</replacement>*/
11668
11669 util.inherits(Transform, Duplex);
11670
11671 function TransformState(stream) {
11672 this.afterTransform = function (er, data) {
11673 return afterTransform(stream, er, data);
11674 };
11675
11676 this.needTransform = false;
11677 this.transforming = false;
11678 this.writecb = null;
11679 this.writechunk = null;
11680 this.writeencoding = null;
11681 }
11682
11683 function afterTransform(stream, er, data) {
11684 var ts = stream._transformState;
11685 ts.transforming = false;
11686
11687 var cb = ts.writecb;
11688
11689 if (!cb) {
11690 return stream.emit('error', new Error('write callback called multiple times'));
11691 }
11692
11693 ts.writechunk = null;
11694 ts.writecb = null;
11695
11696 if (data !== null && data !== undefined) stream.push(data);
11697
11698 cb(er);
11699
11700 var rs = stream._readableState;
11701 rs.reading = false;
11702 if (rs.needReadable || rs.length < rs.highWaterMark) {
11703 stream._read(rs.highWaterMark);
11704 }
11705 }
11706
11707 function Transform(options) {
11708 if (!(this instanceof Transform)) return new Transform(options);
11709
11710 Duplex.call(this, options);
11711
11712 this._transformState = new TransformState(this);
11713
11714 var stream = this;
11715
11716 // start out asking for a readable event once data is transformed.
11717 this._readableState.needReadable = true;
11718
11719 // we have implemented the _read method, and done the other things
11720 // that Readable wants before the first _read call, so unset the
11721 // sync guard flag.
11722 this._readableState.sync = false;
11723
11724 if (options) {
11725 if (typeof options.transform === 'function') this._transform = options.transform;
11726
11727 if (typeof options.flush === 'function') this._flush = options.flush;
11728 }
11729
11730 // When the writable side finishes, then flush out anything remaining.
11731 this.once('prefinish', function () {
11732 if (typeof this._flush === 'function') this._flush(function (er, data) {
11733 done(stream, er, data);
11734 });else done(stream);
11735 });
11736 }
11737
11738 Transform.prototype.push = function (chunk, encoding) {
11739 this._transformState.needTransform = false;
11740 return Duplex.prototype.push.call(this, chunk, encoding);
11741 };
11742
11743 // This is the part where you do stuff!
11744 // override this function in implementation classes.
11745 // 'chunk' is an input chunk.
11746 //
11747 // Call `push(newChunk)` to pass along transformed output
11748 // to the readable side. You may call 'push' zero or more times.
11749 //
11750 // Call `cb(err)` when you are done with this chunk. If you pass
11751 // an error, then that'll put the hurt on the whole operation. If you
11752 // never call cb(), then you'll never get another chunk.
11753 Transform.prototype._transform = function (chunk, encoding, cb) {
11754 throw new Error('_transform() is not implemented');
11755 };
11756
11757 Transform.prototype._write = function (chunk, encoding, cb) {
11758 var ts = this._transformState;
11759 ts.writecb = cb;
11760 ts.writechunk = chunk;
11761 ts.writeencoding = encoding;
11762 if (!ts.transforming) {
11763 var rs = this._readableState;
11764 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
11765 }
11766 };
11767
11768 // Doesn't matter what the args are here.
11769 // _transform does all the work.
11770 // That we got here means that the readable side wants more data.
11771 Transform.prototype._read = function (n) {
11772 var ts = this._transformState;
11773
11774 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11775 ts.transforming = true;
11776 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11777 } else {
11778 // mark that we need a transform, so that any data that comes in
11779 // will get processed, now that we've asked for it.
11780 ts.needTransform = true;
11781 }
11782 };
11783
11784 Transform.prototype._destroy = function (err, cb) {
11785 var _this = this;
11786
11787 Duplex.prototype._destroy.call(this, err, function (err2) {
11788 cb(err2);
11789 _this.emit('close');
11790 });
11791 };
11792
11793 function done(stream, er, data) {
11794 if (er) return stream.emit('error', er);
11795
11796 if (data !== null && data !== undefined) stream.push(data);
11797
11798 // if there's nothing in the write buffer, then that means
11799 // that nothing more will ever be provided
11800 var ws = stream._writableState;
11801 var ts = stream._transformState;
11802
11803 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
11804
11805 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11806
11807 return stream.push(null);
11808 }
11809 },{"./_stream_duplex":14,"core-util-is":5,"inherits":8}],18:[function(require,module,exports){
11810 (function (process,global){
11811 // Copyright Joyent, Inc. and other Node contributors.
11812 //
11813 // Permission is hereby granted, free of charge, to any person obtaining a
11814 // copy of this software and associated documentation files (the
11815 // "Software"), to deal in the Software without restriction, including
11816 // without limitation the rights to use, copy, modify, merge, publish,
11817 // distribute, sublicense, and/or sell copies of the Software, and to permit
11818 // persons to whom the Software is furnished to do so, subject to the
11819 // following conditions:
11820 //
11821 // The above copyright notice and this permission notice shall be included
11822 // in all copies or substantial portions of the Software.
11823 //
11824 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11825 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11826 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11827 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11828 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11829 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11830 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11831
11832 // A bit simpler than readable streams.
11833 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
11834 // the drain event emission and buffering.
11835
11836 'use strict';
11837
11838 /*<replacement>*/
11839
11840 var processNextTick = require('process-nextick-args');
11841 /*</replacement>*/
11842
11843 module.exports = Writable;
11844
11845 /* <replacement> */
11846 function WriteReq(chunk, encoding, cb) {
11847 this.chunk = chunk;
11848 this.encoding = encoding;
11849 this.callback = cb;
11850 this.next = null;
11851 }
11852
11853 // It seems a linked list but it is not
11854 // there will be only 2 of these for each stream
11855 function CorkedRequest(state) {
11856 var _this = this;
11857
11858 this.next = null;
11859 this.entry = null;
11860 this.finish = function () {
11861 onCorkedFinish(_this, state);
11862 };
11863 }
11864 /* </replacement> */
11865
11866 /*<replacement>*/
11867 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
11868 /*</replacement>*/
11869
11870 /*<replacement>*/
11871 var Duplex;
11872 /*</replacement>*/
11873
11874 Writable.WritableState = WritableState;
11875
11876 /*<replacement>*/
11877 var util = require('core-util-is');
11878 util.inherits = require('inherits');
11879 /*</replacement>*/
11880
11881 /*<replacement>*/
11882 var internalUtil = {
11883 deprecate: require('util-deprecate')
11884 };
11885 /*</replacement>*/
11886
11887 /*<replacement>*/
11888 var Stream = require('./internal/streams/stream');
11889 /*</replacement>*/
11890
11891 /*<replacement>*/
11892 var Buffer = require('safe-buffer').Buffer;
11893 var OurUint8Array = global.Uint8Array || function () {};
11894 function _uint8ArrayToBuffer(chunk) {
11895 return Buffer.from(chunk);
11896 }
11897 function _isUint8Array(obj) {
11898 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
11899 }
11900 /*</replacement>*/
11901
11902 var destroyImpl = require('./internal/streams/destroy');
11903
11904 util.inherits(Writable, Stream);
11905
11906 function nop() {}
11907
11908 function WritableState(options, stream) {
11909 Duplex = Duplex || require('./_stream_duplex');
11910
11911 options = options || {};
11912
11913 // object stream flag to indicate whether or not this stream
11914 // contains buffers or objects.
11915 this.objectMode = !!options.objectMode;
11916
11917 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
11918
11919 // the point at which write() starts returning false
11920 // Note: 0 is a valid value, means that we always return false if
11921 // the entire buffer is not flushed immediately on write()
11922 var hwm = options.highWaterMark;
11923 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
11924 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
11925
11926 // cast to ints.
11927 this.highWaterMark = Math.floor(this.highWaterMark);
11928
11929 // if _final has been called
11930 this.finalCalled = false;
11931
11932 // drain event flag.
11933 this.needDrain = false;
11934 // at the start of calling end()
11935 this.ending = false;
11936 // when end() has been called, and returned
11937 this.ended = false;
11938 // when 'finish' is emitted
11939 this.finished = false;
11940
11941 // has it been destroyed
11942 this.destroyed = false;
11943
11944 // should we decode strings into buffers before passing to _write?
11945 // this is here so that some node-core streams can optimize string
11946 // handling at a lower level.
11947 var noDecode = options.decodeStrings === false;
11948 this.decodeStrings = !noDecode;
11949
11950 // Crypto is kind of old and crusty. Historically, its default string
11951 // encoding is 'binary' so we have to make this configurable.
11952 // Everything else in the universe uses 'utf8', though.
11953 this.defaultEncoding = options.defaultEncoding || 'utf8';
11954
11955 // not an actual buffer we keep track of, but a measurement
11956 // of how much we're waiting to get pushed to some underlying
11957 // socket or file.
11958 this.length = 0;
11959
11960 // a flag to see when we're in the middle of a write.
11961 this.writing = false;
11962
11963 // when true all writes will be buffered until .uncork() call
11964 this.corked = 0;
11965
11966 // a flag to be able to tell if the onwrite cb is called immediately,
11967 // or on a later tick. We set this to true at first, because any
11968 // actions that shouldn't happen until "later" should generally also
11969 // not happen before the first write call.
11970 this.sync = true;
11971
11972 // a flag to know if we're processing previously buffered items, which
11973 // may call the _write() callback in the same tick, so that we don't
11974 // end up in an overlapped onwrite situation.
11975 this.bufferProcessing = false;
11976
11977 // the callback that's passed to _write(chunk,cb)
11978 this.onwrite = function (er) {
11979 onwrite(stream, er);
11980 };
11981
11982 // the callback that the user supplies to write(chunk,encoding,cb)
11983 this.writecb = null;
11984
11985 // the amount that is being written when _write is called.
11986 this.writelen = 0;
11987
11988 this.bufferedRequest = null;
11989 this.lastBufferedRequest = null;
11990
11991 // number of pending user-supplied write callbacks
11992 // this must be 0 before 'finish' can be emitted
11993 this.pendingcb = 0;
11994
11995 // emit prefinish if the only thing we're waiting for is _write cbs
11996 // This is relevant for synchronous Transform streams
11997 this.prefinished = false;
11998
11999 // True if the error was already emitted and should not be thrown again
12000 this.errorEmitted = false;
12001
12002 // count buffered requests
12003 this.bufferedRequestCount = 0;
12004
12005 // allocate the first CorkedRequest, there is always
12006 // one allocated and free to use, and we maintain at most two
12007 this.corkedRequestsFree = new CorkedRequest(this);
12008 }
12009
12010 WritableState.prototype.getBuffer = function getBuffer() {
12011 var current = this.bufferedRequest;
12012 var out = [];
12013 while (current) {
12014 out.push(current);
12015 current = current.next;
12016 }
12017 return out;
12018 };
12019
12020 (function () {
12021 try {
12022 Object.defineProperty(WritableState.prototype, 'buffer', {
12023 get: internalUtil.deprecate(function () {
12024 return this.getBuffer();
12025 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
12026 });
12027 } catch (_) {}
12028 })();
12029
12030 // Test _writableState for inheritance to account for Duplex streams,
12031 // whose prototype chain only points to Readable.
12032 var realHasInstance;
12033 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
12034 realHasInstance = Function.prototype[Symbol.hasInstance];
12035 Object.defineProperty(Writable, Symbol.hasInstance, {
12036 value: function (object) {
12037 if (realHasInstance.call(this, object)) return true;
12038
12039 return object && object._writableState instanceof WritableState;
12040 }
12041 });
12042 } else {
12043 realHasInstance = function (object) {
12044 return object instanceof this;
12045 };
12046 }
12047
12048 function Writable(options) {
12049 Duplex = Duplex || require('./_stream_duplex');
12050
12051 // Writable ctor is applied to Duplexes, too.
12052 // `realHasInstance` is necessary because using plain `instanceof`
12053 // would return false, as no `_writableState` property is attached.
12054
12055 // Trying to use the custom `instanceof` for Writable here will also break the
12056 // Node.js LazyTransform implementation, which has a non-trivial getter for
12057 // `_writableState` that would lead to infinite recursion.
12058 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12059 return new Writable(options);
12060 }
12061
12062 this._writableState = new WritableState(options, this);
12063
12064 // legacy.
12065 this.writable = true;
12066
12067 if (options) {
12068 if (typeof options.write === 'function') this._write = options.write;
12069
12070 if (typeof options.writev === 'function') this._writev = options.writev;
12071
12072 if (typeof options.destroy === 'function') this._destroy = options.destroy;
12073
12074 if (typeof options.final === 'function') this._final = options.final;
12075 }
12076
12077 Stream.call(this);
12078 }
12079
12080 // Otherwise people can pipe Writable streams, which is just wrong.
12081 Writable.prototype.pipe = function () {
12082 this.emit('error', new Error('Cannot pipe, not readable'));
12083 };
12084
12085 function writeAfterEnd(stream, cb) {
12086 var er = new Error('write after end');
12087 // TODO: defer error events consistently everywhere, not just the cb
12088 stream.emit('error', er);
12089 processNextTick(cb, er);
12090 }
12091
12092 // Checks that a user-supplied chunk is valid, especially for the particular
12093 // mode the stream is in. Currently this means that `null` is never accepted
12094 // and undefined/non-string values are only allowed in object mode.
12095 function validChunk(stream, state, chunk, cb) {
12096 var valid = true;
12097 var er = false;
12098
12099 if (chunk === null) {
12100 er = new TypeError('May not write null values to stream');
12101 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12102 er = new TypeError('Invalid non-string/buffer chunk');
12103 }
12104 if (er) {
12105 stream.emit('error', er);
12106 processNextTick(cb, er);
12107 valid = false;
12108 }
12109 return valid;
12110 }
12111
12112 Writable.prototype.write = function (chunk, encoding, cb) {
12113 var state = this._writableState;
12114 var ret = false;
12115 var isBuf = _isUint8Array(chunk) && !state.objectMode;
12116
12117 if (isBuf && !Buffer.isBuffer(chunk)) {
12118 chunk = _uint8ArrayToBuffer(chunk);
12119 }
12120
12121 if (typeof encoding === 'function') {
12122 cb = encoding;
12123 encoding = null;
12124 }
12125
12126 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12127
12128 if (typeof cb !== 'function') cb = nop;
12129
12130 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12131 state.pendingcb++;
12132 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
12133 }
12134
12135 return ret;
12136 };
12137
12138 Writable.prototype.cork = function () {
12139 var state = this._writableState;
12140
12141 state.corked++;
12142 };
12143
12144 Writable.prototype.uncork = function () {
12145 var state = this._writableState;
12146
12147 if (state.corked) {
12148 state.corked--;
12149
12150 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12151 }
12152 };
12153
12154 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12155 // node::ParseEncoding() requires lower case.
12156 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12157 if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
12158 this._writableState.defaultEncoding = encoding;
12159 return this;
12160 };
12161
12162 function decodeChunk(state, chunk, encoding) {
12163 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12164 chunk = Buffer.from(chunk, encoding);
12165 }
12166 return chunk;
12167 }
12168
12169 // if we're already writing something, then just put this
12170 // in the queue, and wait our turn. Otherwise, call _write
12171 // If we return false, then we need a drain event, so set that flag.
12172 function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12173 if (!isBuf) {
12174 var newChunk = decodeChunk(state, chunk, encoding);
12175 if (chunk !== newChunk) {
12176 isBuf = true;
12177 encoding = 'buffer';
12178 chunk = newChunk;
12179 }
12180 }
12181 var len = state.objectMode ? 1 : chunk.length;
12182
12183 state.length += len;
12184
12185 var ret = state.length < state.highWaterMark;
12186 // we must ensure that previous needDrain will not be reset to false.
12187 if (!ret) state.needDrain = true;
12188
12189 if (state.writing || state.corked) {
12190 var last = state.lastBufferedRequest;
12191 state.lastBufferedRequest = {
12192 chunk: chunk,
12193 encoding: encoding,
12194 isBuf: isBuf,
12195 callback: cb,
12196 next: null
12197 };
12198 if (last) {
12199 last.next = state.lastBufferedRequest;
12200 } else {
12201 state.bufferedRequest = state.lastBufferedRequest;
12202 }
12203 state.bufferedRequestCount += 1;
12204 } else {
12205 doWrite(stream, state, false, len, chunk, encoding, cb);
12206 }
12207
12208 return ret;
12209 }
12210
12211 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12212 state.writelen = len;
12213 state.writecb = cb;
12214 state.writing = true;
12215 state.sync = true;
12216 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12217 state.sync = false;
12218 }
12219
12220 function onwriteError(stream, state, sync, er, cb) {
12221 --state.pendingcb;
12222
12223 if (sync) {
12224 // defer the callback if we are being called synchronously
12225 // to avoid piling up things on the stack
12226 processNextTick(cb, er);
12227 // this can emit finish, and it will always happen
12228 // after error
12229 processNextTick(finishMaybe, stream, state);
12230 stream._writableState.errorEmitted = true;
12231 stream.emit('error', er);
12232 } else {
12233 // the caller expect this to happen before if
12234 // it is async
12235 cb(er);
12236 stream._writableState.errorEmitted = true;
12237 stream.emit('error', er);
12238 // this can emit finish, but finish must
12239 // always follow error
12240 finishMaybe(stream, state);
12241 }
12242 }
12243
12244 function onwriteStateUpdate(state) {
12245 state.writing = false;
12246 state.writecb = null;
12247 state.length -= state.writelen;
12248 state.writelen = 0;
12249 }
12250
12251 function onwrite(stream, er) {
12252 var state = stream._writableState;
12253 var sync = state.sync;
12254 var cb = state.writecb;
12255
12256 onwriteStateUpdate(state);
12257
12258 if (er) onwriteError(stream, state, sync, er, cb);else {
12259 // Check if we're actually ready to finish, but don't emit yet
12260 var finished = needFinish(state);
12261
12262 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12263 clearBuffer(stream, state);
12264 }
12265
12266 if (sync) {
12267 /*<replacement>*/
12268 asyncWrite(afterWrite, stream, state, finished, cb);
12269 /*</replacement>*/
12270 } else {
12271 afterWrite(stream, state, finished, cb);
12272 }
12273 }
12274 }
12275
12276 function afterWrite(stream, state, finished, cb) {
12277 if (!finished) onwriteDrain(stream, state);
12278 state.pendingcb--;
12279 cb();
12280 finishMaybe(stream, state);
12281 }
12282
12283 // Must force callback to be called on nextTick, so that we don't
12284 // emit 'drain' before the write() consumer gets the 'false' return
12285 // value, and has a chance to attach a 'drain' listener.
12286 function onwriteDrain(stream, state) {
12287 if (state.length === 0 && state.needDrain) {
12288 state.needDrain = false;
12289 stream.emit('drain');
12290 }
12291 }
12292
12293 // if there's something in the buffer waiting, then process it
12294 function clearBuffer(stream, state) {
12295 state.bufferProcessing = true;
12296 var entry = state.bufferedRequest;
12297
12298 if (stream._writev && entry && entry.next) {
12299 // Fast case, write everything using _writev()
12300 var l = state.bufferedRequestCount;
12301 var buffer = new Array(l);
12302 var holder = state.corkedRequestsFree;
12303 holder.entry = entry;
12304
12305 var count = 0;
12306 var allBuffers = true;
12307 while (entry) {
12308 buffer[count] = entry;
12309 if (!entry.isBuf) allBuffers = false;
12310 entry = entry.next;
12311 count += 1;
12312 }
12313 buffer.allBuffers = allBuffers;
12314
12315 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
12316
12317 // doWrite is almost always async, defer these to save a bit of time
12318 // as the hot path ends with doWrite
12319 state.pendingcb++;
12320 state.lastBufferedRequest = null;
12321 if (holder.next) {
12322 state.corkedRequestsFree = holder.next;
12323 holder.next = null;
12324 } else {
12325 state.corkedRequestsFree = new CorkedRequest(state);
12326 }
12327 } else {
12328 // Slow case, write chunks one-by-one
12329 while (entry) {
12330 var chunk = entry.chunk;
12331 var encoding = entry.encoding;
12332 var cb = entry.callback;
12333 var len = state.objectMode ? 1 : chunk.length;
12334
12335 doWrite(stream, state, false, len, chunk, encoding, cb);
12336 entry = entry.next;
12337 // if we didn't call the onwrite immediately, then
12338 // it means that we need to wait until it does.
12339 // also, that means that the chunk and cb are currently
12340 // being processed, so move the buffer counter past them.
12341 if (state.writing) {
12342 break;
12343 }
12344 }
12345
12346 if (entry === null) state.lastBufferedRequest = null;
12347 }
12348
12349 state.bufferedRequestCount = 0;
12350 state.bufferedRequest = entry;
12351 state.bufferProcessing = false;
12352 }
12353
12354 Writable.prototype._write = function (chunk, encoding, cb) {
12355 cb(new Error('_write() is not implemented'));
12356 };
12357
12358 Writable.prototype._writev = null;
12359
12360 Writable.prototype.end = function (chunk, encoding, cb) {
12361 var state = this._writableState;
12362
12363 if (typeof chunk === 'function') {
12364 cb = chunk;
12365 chunk = null;
12366 encoding = null;
12367 } else if (typeof encoding === 'function') {
12368 cb = encoding;
12369 encoding = null;
12370 }
12371
12372 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
12373
12374 // .end() fully uncorks
12375 if (state.corked) {
12376 state.corked = 1;
12377 this.uncork();
12378 }
12379
12380 // ignore unnecessary end() calls.
12381 if (!state.ending && !state.finished) endWritable(this, state, cb);
12382 };
12383
12384 function needFinish(state) {
12385 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
12386 }
12387 function callFinal(stream, state) {
12388 stream._final(function (err) {
12389 state.pendingcb--;
12390 if (err) {
12391 stream.emit('error', err);
12392 }
12393 state.prefinished = true;
12394 stream.emit('prefinish');
12395 finishMaybe(stream, state);
12396 });
12397 }
12398 function prefinish(stream, state) {
12399 if (!state.prefinished && !state.finalCalled) {
12400 if (typeof stream._final === 'function') {
12401 state.pendingcb++;
12402 state.finalCalled = true;
12403 processNextTick(callFinal, stream, state);
12404 } else {
12405 state.prefinished = true;
12406 stream.emit('prefinish');
12407 }
12408 }
12409 }
12410
12411 function finishMaybe(stream, state) {
12412 var need = needFinish(state);
12413 if (need) {
12414 prefinish(stream, state);
12415 if (state.pendingcb === 0) {
12416 state.finished = true;
12417 stream.emit('finish');
12418 }
12419 }
12420 return need;
12421 }
12422
12423 function endWritable(stream, state, cb) {
12424 state.ending = true;
12425 finishMaybe(stream, state);
12426 if (cb) {
12427 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
12428 }
12429 state.ended = true;
12430 stream.writable = false;
12431 }
12432
12433 function onCorkedFinish(corkReq, state, err) {
12434 var entry = corkReq.entry;
12435 corkReq.entry = null;
12436 while (entry) {
12437 var cb = entry.callback;
12438 state.pendingcb--;
12439 cb(err);
12440 entry = entry.next;
12441 }
12442 if (state.corkedRequestsFree) {
12443 state.corkedRequestsFree.next = corkReq;
12444 } else {
12445 state.corkedRequestsFree = corkReq;
12446 }
12447 }
12448
12449 Object.defineProperty(Writable.prototype, 'destroyed', {
12450 get: function () {
12451 if (this._writableState === undefined) {
12452 return false;
12453 }
12454 return this._writableState.destroyed;
12455 },
12456 set: function (value) {
12457 // we ignore the value if the stream
12458 // has not been initialized yet
12459 if (!this._writableState) {
12460 return;
12461 }
12462
12463 // backward compatibility, the user is explicitly
12464 // managing destroyed
12465 this._writableState.destroyed = value;
12466 }
12467 });
12468
12469 Writable.prototype.destroy = destroyImpl.destroy;
12470 Writable.prototype._undestroy = destroyImpl.undestroy;
12471 Writable.prototype._destroy = function (err, cb) {
12472 this.end();
12473 cb(err);
12474 };
12475 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12476 },{"./_stream_duplex":14,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"inherits":8,"process-nextick-args":11,"safe-buffer":26,"util-deprecate":29}],19:[function(require,module,exports){
12477 'use strict';
12478
12479 /*<replacement>*/
12480
12481 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12482
12483 var Buffer = require('safe-buffer').Buffer;
12484 /*</replacement>*/
12485
12486 function copyBuffer(src, target, offset) {
12487 src.copy(target, offset);
12488 }
12489
12490 module.exports = function () {
12491 function BufferList() {
12492 _classCallCheck(this, BufferList);
12493
12494 this.head = null;
12495 this.tail = null;
12496 this.length = 0;
12497 }
12498
12499 BufferList.prototype.push = function push(v) {
12500 var entry = { data: v, next: null };
12501 if (this.length > 0) this.tail.next = entry;else this.head = entry;
12502 this.tail = entry;
12503 ++this.length;
12504 };
12505
12506 BufferList.prototype.unshift = function unshift(v) {
12507 var entry = { data: v, next: this.head };
12508 if (this.length === 0) this.tail = entry;
12509 this.head = entry;
12510 ++this.length;
12511 };
12512
12513 BufferList.prototype.shift = function shift() {
12514 if (this.length === 0) return;
12515 var ret = this.head.data;
12516 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
12517 --this.length;
12518 return ret;
12519 };
12520
12521 BufferList.prototype.clear = function clear() {
12522 this.head = this.tail = null;
12523 this.length = 0;
12524 };
12525
12526 BufferList.prototype.join = function join(s) {
12527 if (this.length === 0) return '';
12528 var p = this.head;
12529 var ret = '' + p.data;
12530 while (p = p.next) {
12531 ret += s + p.data;
12532 }return ret;
12533 };
12534
12535 BufferList.prototype.concat = function concat(n) {
12536 if (this.length === 0) return Buffer.alloc(0);
12537 if (this.length === 1) return this.head.data;
12538 var ret = Buffer.allocUnsafe(n >>> 0);
12539 var p = this.head;
12540 var i = 0;
12541 while (p) {
12542 copyBuffer(p.data, ret, i);
12543 i += p.data.length;
12544 p = p.next;
12545 }
12546 return ret;
12547 };
12548
12549 return BufferList;
12550 }();
12551 },{"safe-buffer":26}],20:[function(require,module,exports){
12552 'use strict';
12553
12554 /*<replacement>*/
12555
12556 var processNextTick = require('process-nextick-args');
12557 /*</replacement>*/
12558
12559 // undocumented cb() API, needed for core, not for public API
12560 function destroy(err, cb) {
12561 var _this = this;
12562
12563 var readableDestroyed = this._readableState && this._readableState.destroyed;
12564 var writableDestroyed = this._writableState && this._writableState.destroyed;
12565
12566 if (readableDestroyed || writableDestroyed) {
12567 if (cb) {
12568 cb(err);
12569 } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
12570 processNextTick(emitErrorNT, this, err);
12571 }
12572 return;
12573 }
12574
12575 // we set destroyed to true before firing error callbacks in order
12576 // to make it re-entrance safe in case destroy() is called within callbacks
12577
12578 if (this._readableState) {
12579 this._readableState.destroyed = true;
12580 }
12581
12582 // if this is a duplex stream mark the writable part as destroyed as well
12583 if (this._writableState) {
12584 this._writableState.destroyed = true;
12585 }
12586
12587 this._destroy(err || null, function (err) {
12588 if (!cb && err) {
12589 processNextTick(emitErrorNT, _this, err);
12590 if (_this._writableState) {
12591 _this._writableState.errorEmitted = true;
12592 }
12593 } else if (cb) {
12594 cb(err);
12595 }
12596 });
12597 }
12598
12599 function undestroy() {
12600 if (this._readableState) {
12601 this._readableState.destroyed = false;
12602 this._readableState.reading = false;
12603 this._readableState.ended = false;
12604 this._readableState.endEmitted = false;
12605 }
12606
12607 if (this._writableState) {
12608 this._writableState.destroyed = false;
12609 this._writableState.ended = false;
12610 this._writableState.ending = false;
12611 this._writableState.finished = false;
12612 this._writableState.errorEmitted = false;
12613 }
12614 }
12615
12616 function emitErrorNT(self, err) {
12617 self.emit('error', err);
12618 }
12619
12620 module.exports = {
12621 destroy: destroy,
12622 undestroy: undestroy
12623 };
12624 },{"process-nextick-args":11}],21:[function(require,module,exports){
12625 module.exports = require('events').EventEmitter;
12626
12627 },{"events":6}],22:[function(require,module,exports){
12628 module.exports = require('./readable').PassThrough
12629
12630 },{"./readable":23}],23:[function(require,module,exports){
12631 exports = module.exports = require('./lib/_stream_readable.js');
12632 exports.Stream = exports;
12633 exports.Readable = exports;
12634 exports.Writable = require('./lib/_stream_writable.js');
12635 exports.Duplex = require('./lib/_stream_duplex.js');
12636 exports.Transform = require('./lib/_stream_transform.js');
12637 exports.PassThrough = require('./lib/_stream_passthrough.js');
12638
12639 },{"./lib/_stream_duplex.js":14,"./lib/_stream_passthrough.js":15,"./lib/_stream_readable.js":16,"./lib/_stream_transform.js":17,"./lib/_stream_writable.js":18}],24:[function(require,module,exports){
12640 module.exports = require('./readable').Transform
12641
12642 },{"./readable":23}],25:[function(require,module,exports){
12643 module.exports = require('./lib/_stream_writable.js');
12644
12645 },{"./lib/_stream_writable.js":18}],26:[function(require,module,exports){
12646 /* eslint-disable node/no-deprecated-api */
12647 var buffer = require('buffer')
12648 var Buffer = buffer.Buffer
12649
12650 // alternative to using Object.keys for old browsers
12651 function copyProps (src, dst) {
12652 for (var key in src) {
12653 dst[key] = src[key]
12654 }
12655 }
12656 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12657 module.exports = buffer
12658 } else {
12659 // Copy properties from require('buffer')
12660 copyProps(buffer, exports)
12661 exports.Buffer = SafeBuffer
12662 }
12663
12664 function SafeBuffer (arg, encodingOrOffset, length) {
12665 return Buffer(arg, encodingOrOffset, length)
12666 }
12667
12668 // Copy static methods from Buffer
12669 copyProps(Buffer, SafeBuffer)
12670
12671 SafeBuffer.from = function (arg, encodingOrOffset, length) {
12672 if (typeof arg === 'number') {
12673 throw new TypeError('Argument must not be a number')
12674 }
12675 return Buffer(arg, encodingOrOffset, length)
12676 }
12677
12678 SafeBuffer.alloc = function (size, fill, encoding) {
12679 if (typeof size !== 'number') {
12680 throw new TypeError('Argument must be a number')
12681 }
12682 var buf = Buffer(size)
12683 if (fill !== undefined) {
12684 if (typeof encoding === 'string') {
12685 buf.fill(fill, encoding)
12686 } else {
12687 buf.fill(fill)
12688 }
12689 } else {
12690 buf.fill(0)
12691 }
12692 return buf
12693 }
12694
12695 SafeBuffer.allocUnsafe = function (size) {
12696 if (typeof size !== 'number') {
12697 throw new TypeError('Argument must be a number')
12698 }
12699 return Buffer(size)
12700 }
12701
12702 SafeBuffer.allocUnsafeSlow = function (size) {
12703 if (typeof size !== 'number') {
12704 throw new TypeError('Argument must be a number')
12705 }
12706 return buffer.SlowBuffer(size)
12707 }
12708
12709 },{"buffer":4}],27:[function(require,module,exports){
12710 // Copyright Joyent, Inc. and other Node contributors.
12711 //
12712 // Permission is hereby granted, free of charge, to any person obtaining a
12713 // copy of this software and associated documentation files (the
12714 // "Software"), to deal in the Software without restriction, including
12715 // without limitation the rights to use, copy, modify, merge, publish,
12716 // distribute, sublicense, and/or sell copies of the Software, and to permit
12717 // persons to whom the Software is furnished to do so, subject to the
12718 // following conditions:
12719 //
12720 // The above copyright notice and this permission notice shall be included
12721 // in all copies or substantial portions of the Software.
12722 //
12723 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12724 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12725 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12726 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12727 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12728 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12729 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12730
12731 module.exports = Stream;
12732
12733 var EE = require('events').EventEmitter;
12734 var inherits = require('inherits');
12735
12736 inherits(Stream, EE);
12737 Stream.Readable = require('readable-stream/readable.js');
12738 Stream.Writable = require('readable-stream/writable.js');
12739 Stream.Duplex = require('readable-stream/duplex.js');
12740 Stream.Transform = require('readable-stream/transform.js');
12741 Stream.PassThrough = require('readable-stream/passthrough.js');
12742
12743 // Backwards-compat with node 0.4.x
12744 Stream.Stream = Stream;
12745
12746
12747
12748 // old-style streams. Note that the pipe method (the only relevant
12749 // part of this class) is overridden in the Readable class.
12750
12751 function Stream() {
12752 EE.call(this);
12753 }
12754
12755 Stream.prototype.pipe = function(dest, options) {
12756 var source = this;
12757
12758 function ondata(chunk) {
12759 if (dest.writable) {
12760 if (false === dest.write(chunk) && source.pause) {
12761 source.pause();
12762 }
12763 }
12764 }
12765
12766 source.on('data', ondata);
12767
12768 function ondrain() {
12769 if (source.readable && source.resume) {
12770 source.resume();
12771 }
12772 }
12773
12774 dest.on('drain', ondrain);
12775
12776 // If the 'end' option is not supplied, dest.end() will be called when
12777 // source gets the 'end' or 'close' events. Only dest.end() once.
12778 if (!dest._isStdio && (!options || options.end !== false)) {
12779 source.on('end', onend);
12780 source.on('close', onclose);
12781 }
12782
12783 var didOnEnd = false;
12784 function onend() {
12785 if (didOnEnd) return;
12786 didOnEnd = true;
12787
12788 dest.end();
12789 }
12790
12791
12792 function onclose() {
12793 if (didOnEnd) return;
12794 didOnEnd = true;
12795
12796 if (typeof dest.destroy === 'function') dest.destroy();
12797 }
12798
12799 // don't leave dangling pipes when there are errors.
12800 function onerror(er) {
12801 cleanup();
12802 if (EE.listenerCount(this, 'error') === 0) {
12803 throw er; // Unhandled stream error in pipe.
12804 }
12805 }
12806
12807 source.on('error', onerror);
12808 dest.on('error', onerror);
12809
12810 // remove all the event listeners that were added.
12811 function cleanup() {
12812 source.removeListener('data', ondata);
12813 dest.removeListener('drain', ondrain);
12814
12815 source.removeListener('end', onend);
12816 source.removeListener('close', onclose);
12817
12818 source.removeListener('error', onerror);
12819 dest.removeListener('error', onerror);
12820
12821 source.removeListener('end', cleanup);
12822 source.removeListener('close', cleanup);
12823
12824 dest.removeListener('close', cleanup);
12825 }
12826
12827 source.on('end', cleanup);
12828 source.on('close', cleanup);
12829
12830 dest.on('close', cleanup);
12831
12832 dest.emit('pipe', source);
12833
12834 // Allow for unix-like usage: A.pipe(B).pipe(C)
12835 return dest;
12836 };
12837
12838 },{"events":6,"inherits":8,"readable-stream/duplex.js":13,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],28:[function(require,module,exports){
12839 'use strict';
12840
12841 var Buffer = require('safe-buffer').Buffer;
12842
12843 var isEncoding = Buffer.isEncoding || function (encoding) {
12844 encoding = '' + encoding;
12845 switch (encoding && encoding.toLowerCase()) {
12846 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':
12847 return true;
12848 default:
12849 return false;
12850 }
12851 };
12852
12853 function _normalizeEncoding(enc) {
12854 if (!enc) return 'utf8';
12855 var retried;
12856 while (true) {
12857 switch (enc) {
12858 case 'utf8':
12859 case 'utf-8':
12860 return 'utf8';
12861 case 'ucs2':
12862 case 'ucs-2':
12863 case 'utf16le':
12864 case 'utf-16le':
12865 return 'utf16le';
12866 case 'latin1':
12867 case 'binary':
12868 return 'latin1';
12869 case 'base64':
12870 case 'ascii':
12871 case 'hex':
12872 return enc;
12873 default:
12874 if (retried) return; // undefined
12875 enc = ('' + enc).toLowerCase();
12876 retried = true;
12877 }
12878 }
12879 };
12880
12881 // Do not cache `Buffer.isEncoding` when checking encoding names as some
12882 // modules monkey-patch it to support additional encodings
12883 function normalizeEncoding(enc) {
12884 var nenc = _normalizeEncoding(enc);
12885 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12886 return nenc || enc;
12887 }
12888
12889 // StringDecoder provides an interface for efficiently splitting a series of
12890 // buffers into a series of JS strings without breaking apart multi-byte
12891 // characters.
12892 exports.StringDecoder = StringDecoder;
12893 function StringDecoder(encoding) {
12894 this.encoding = normalizeEncoding(encoding);
12895 var nb;
12896 switch (this.encoding) {
12897 case 'utf16le':
12898 this.text = utf16Text;
12899 this.end = utf16End;
12900 nb = 4;
12901 break;
12902 case 'utf8':
12903 this.fillLast = utf8FillLast;
12904 nb = 4;
12905 break;
12906 case 'base64':
12907 this.text = base64Text;
12908 this.end = base64End;
12909 nb = 3;
12910 break;
12911 default:
12912 this.write = simpleWrite;
12913 this.end = simpleEnd;
12914 return;
12915 }
12916 this.lastNeed = 0;
12917 this.lastTotal = 0;
12918 this.lastChar = Buffer.allocUnsafe(nb);
12919 }
12920
12921 StringDecoder.prototype.write = function (buf) {
12922 if (buf.length === 0) return '';
12923 var r;
12924 var i;
12925 if (this.lastNeed) {
12926 r = this.fillLast(buf);
12927 if (r === undefined) return '';
12928 i = this.lastNeed;
12929 this.lastNeed = 0;
12930 } else {
12931 i = 0;
12932 }
12933 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12934 return r || '';
12935 };
12936
12937 StringDecoder.prototype.end = utf8End;
12938
12939 // Returns only complete characters in a Buffer
12940 StringDecoder.prototype.text = utf8Text;
12941
12942 // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
12943 StringDecoder.prototype.fillLast = function (buf) {
12944 if (this.lastNeed <= buf.length) {
12945 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
12946 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
12947 }
12948 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
12949 this.lastNeed -= buf.length;
12950 };
12951
12952 // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
12953 // continuation byte.
12954 function utf8CheckByte(byte) {
12955 if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
12956 return -1;
12957 }
12958
12959 // Checks at most 3 bytes at the end of a Buffer in order to detect an
12960 // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
12961 // needed to complete the UTF-8 character (if applicable) are returned.
12962 function utf8CheckIncomplete(self, buf, i) {
12963 var j = buf.length - 1;
12964 if (j < i) return 0;
12965 var nb = utf8CheckByte(buf[j]);
12966 if (nb >= 0) {
12967 if (nb > 0) self.lastNeed = nb - 1;
12968 return nb;
12969 }
12970 if (--j < i) return 0;
12971 nb = utf8CheckByte(buf[j]);
12972 if (nb >= 0) {
12973 if (nb > 0) self.lastNeed = nb - 2;
12974 return nb;
12975 }
12976 if (--j < i) return 0;
12977 nb = utf8CheckByte(buf[j]);
12978 if (nb >= 0) {
12979 if (nb > 0) {
12980 if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
12981 }
12982 return nb;
12983 }
12984 return 0;
12985 }
12986
12987 // Validates as many continuation bytes for a multi-byte UTF-8 character as
12988 // needed or are available. If we see a non-continuation byte where we expect
12989 // one, we "replace" the validated continuation bytes we've seen so far with
12990 // UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
12991 // behavior. The continuation byte check is included three times in the case
12992 // where all of the continuation bytes for a character exist in the same buffer.
12993 // It is also done this way as a slight performance increase instead of using a
12994 // loop.
12995 function utf8CheckExtraBytes(self, buf, p) {
12996 if ((buf[0] & 0xC0) !== 0x80) {
12997 self.lastNeed = 0;
12998 return '\ufffd'.repeat(p);
12999 }
13000 if (self.lastNeed > 1 && buf.length > 1) {
13001 if ((buf[1] & 0xC0) !== 0x80) {
13002 self.lastNeed = 1;
13003 return '\ufffd'.repeat(p + 1);
13004 }
13005 if (self.lastNeed > 2 && buf.length > 2) {
13006 if ((buf[2] & 0xC0) !== 0x80) {
13007 self.lastNeed = 2;
13008 return '\ufffd'.repeat(p + 2);
13009 }
13010 }
13011 }
13012 }
13013
13014 // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
13015 function utf8FillLast(buf) {
13016 var p = this.lastTotal - this.lastNeed;
13017 var r = utf8CheckExtraBytes(this, buf, p);
13018 if (r !== undefined) return r;
13019 if (this.lastNeed <= buf.length) {
13020 buf.copy(this.lastChar, p, 0, this.lastNeed);
13021 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
13022 }
13023 buf.copy(this.lastChar, p, 0, buf.length);
13024 this.lastNeed -= buf.length;
13025 }
13026
13027 // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
13028 // partial character, the character's bytes are buffered until the required
13029 // number of bytes are available.
13030 function utf8Text(buf, i) {
13031 var total = utf8CheckIncomplete(this, buf, i);
13032 if (!this.lastNeed) return buf.toString('utf8', i);
13033 this.lastTotal = total;
13034 var end = buf.length - (total - this.lastNeed);
13035 buf.copy(this.lastChar, 0, end);
13036 return buf.toString('utf8', i, end);
13037 }
13038
13039 // For UTF-8, a replacement character for each buffered byte of a (partial)
13040 // character needs to be added to the output.
13041 function utf8End(buf) {
13042 var r = buf && buf.length ? this.write(buf) : '';
13043 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
13044 return r;
13045 }
13046
13047 // UTF-16LE typically needs two bytes per character, but even if we have an even
13048 // number of bytes available, we need to check if we end on a leading/high
13049 // surrogate. In that case, we need to wait for the next two bytes in order to
13050 // decode the last character properly.
13051 function utf16Text(buf, i) {
13052 if ((buf.length - i) % 2 === 0) {
13053 var r = buf.toString('utf16le', i);
13054 if (r) {
13055 var c = r.charCodeAt(r.length - 1);
13056 if (c >= 0xD800 && c <= 0xDBFF) {
13057 this.lastNeed = 2;
13058 this.lastTotal = 4;
13059 this.lastChar[0] = buf[buf.length - 2];
13060 this.lastChar[1] = buf[buf.length - 1];
13061 return r.slice(0, -1);
13062 }
13063 }
13064 return r;
13065 }
13066 this.lastNeed = 1;
13067 this.lastTotal = 2;
13068 this.lastChar[0] = buf[buf.length - 1];
13069 return buf.toString('utf16le', i, buf.length - 1);
13070 }
13071
13072 // For UTF-16LE we do not explicitly append special replacement characters if we
13073 // end on a partial character, we simply let v8 handle that.
13074 function utf16End(buf) {
13075 var r = buf && buf.length ? this.write(buf) : '';
13076 if (this.lastNeed) {
13077 var end = this.lastTotal - this.lastNeed;
13078 return r + this.lastChar.toString('utf16le', 0, end);
13079 }
13080 return r;
13081 }
13082
13083 function base64Text(buf, i) {
13084 var n = (buf.length - i) % 3;
13085 if (n === 0) return buf.toString('base64', i);
13086 this.lastNeed = 3 - n;
13087 this.lastTotal = 3;
13088 if (n === 1) {
13089 this.lastChar[0] = buf[buf.length - 1];
13090 } else {
13091 this.lastChar[0] = buf[buf.length - 2];
13092 this.lastChar[1] = buf[buf.length - 1];
13093 }
13094 return buf.toString('base64', i, buf.length - n);
13095 }
13096
13097 function base64End(buf) {
13098 var r = buf && buf.length ? this.write(buf) : '';
13099 if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
13100 return r;
13101 }
13102
13103 // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
13104 function simpleWrite(buf) {
13105 return buf.toString(this.encoding);
13106 }
13107
13108 function simpleEnd(buf) {
13109 return buf && buf.length ? this.write(buf) : '';
13110 }
13111 },{"safe-buffer":26}],29:[function(require,module,exports){
13112 (function (global){
13113
13114 /**
13115 * Module exports.
13116 */
13117
13118 module.exports = deprecate;
13119
13120 /**
13121 * Mark that a method should not be used.
13122 * Returns a modified function which warns once by default.
13123 *
13124 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13125 *
13126 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13127 * will throw an Error when invoked.
13128 *
13129 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13130 * will invoke `console.trace()` instead of `console.error()`.
13131 *
13132 * @param {Function} fn - the function to deprecate
13133 * @param {String} msg - the string to print to the console when `fn` is invoked
13134 * @returns {Function} a new "deprecated" version of `fn`
13135 * @api public
13136 */
13137
13138 function deprecate (fn, msg) {
13139 if (config('noDeprecation')) {
13140 return fn;
13141 }
13142
13143 var warned = false;
13144 function deprecated() {
13145 if (!warned) {
13146 if (config('throwDeprecation')) {
13147 throw new Error(msg);
13148 } else if (config('traceDeprecation')) {
13149 console.trace(msg);
13150 } else {
13151 console.warn(msg);
13152 }
13153 warned = true;
13154 }
13155 return fn.apply(this, arguments);
13156 }
13157
13158 return deprecated;
13159 }
13160
13161 /**
13162 * Checks `localStorage` for boolean values for the given `name`.
13163 *
13164 * @param {String} name
13165 * @returns {Boolean}
13166 * @api private
13167 */
13168
13169 function config (name) {
13170 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13171 try {
13172 if (!global.localStorage) return false;
13173 } catch (_) {
13174 return false;
13175 }
13176 var val = global.localStorage[name];
13177 if (null == val) return false;
13178 return String(val).toLowerCase() === 'true';
13179 }
13180
13181 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13182 },{}],30:[function(require,module,exports){
13183 arguments[4][8][0].apply(exports,arguments)
13184 },{"dup":8}],31:[function(require,module,exports){
13185 module.exports = function isBuffer(arg) {
13186 return arg && typeof arg === 'object'
13187 && typeof arg.copy === 'function'
13188 && typeof arg.fill === 'function'
13189 && typeof arg.readUInt8 === 'function';
13190 }
13191 },{}],32:[function(require,module,exports){
13192 (function (process,global){
13193 // Copyright Joyent, Inc. and other Node contributors.
13194 //
13195 // Permission is hereby granted, free of charge, to any person obtaining a
13196 // copy of this software and associated documentation files (the
13197 // "Software"), to deal in the Software without restriction, including
13198 // without limitation the rights to use, copy, modify, merge, publish,
13199 // distribute, sublicense, and/or sell copies of the Software, and to permit
13200 // persons to whom the Software is furnished to do so, subject to the
13201 // following conditions:
13202 //
13203 // The above copyright notice and this permission notice shall be included
13204 // in all copies or substantial portions of the Software.
13205 //
13206 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13207 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13208 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13209 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13210 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13211 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13212 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13213
13214 var formatRegExp = /%[sdj%]/g;
13215 exports.format = function(f) {
13216 if (!isString(f)) {
13217 var objects = [];
13218 for (var i = 0; i < arguments.length; i++) {
13219 objects.push(inspect(arguments[i]));
13220 }
13221 return objects.join(' ');
13222 }
13223
13224 var i = 1;
13225 var args = arguments;
13226 var len = args.length;
13227 var str = String(f).replace(formatRegExp, function(x) {
13228 if (x === '%%') return '%';
13229 if (i >= len) return x;
13230 switch (x) {
13231 case '%s': return String(args[i++]);
13232 case '%d': return Number(args[i++]);
13233 case '%j':
13234 try {
13235 return JSON.stringify(args[i++]);
13236 } catch (_) {
13237 return '[Circular]';
13238 }
13239 default:
13240 return x;
13241 }
13242 });
13243 for (var x = args[i]; i < len; x = args[++i]) {
13244 if (isNull(x) || !isObject(x)) {
13245 str += ' ' + x;
13246 } else {
13247 str += ' ' + inspect(x);
13248 }
13249 }
13250 return str;
13251 };
13252
13253
13254 // Mark that a method should not be used.
13255 // Returns a modified function which warns once by default.
13256 // If --no-deprecation is set, then it is a no-op.
13257 exports.deprecate = function(fn, msg) {
13258 // Allow for deprecating things in the process of starting up.
13259 if (isUndefined(global.process)) {
13260 return function() {
13261 return exports.deprecate(fn, msg).apply(this, arguments);
13262 };
13263 }
13264
13265 if (process.noDeprecation === true) {
13266 return fn;
13267 }
13268
13269 var warned = false;
13270 function deprecated() {
13271 if (!warned) {
13272 if (process.throwDeprecation) {
13273 throw new Error(msg);
13274 } else if (process.traceDeprecation) {
13275 console.trace(msg);
13276 } else {
13277 console.error(msg);
13278 }
13279 warned = true;
13280 }
13281 return fn.apply(this, arguments);
13282 }
13283
13284 return deprecated;
13285 };
13286
13287
13288 var debugs = {};
13289 var debugEnviron;
13290 exports.debuglog = function(set) {
13291 if (isUndefined(debugEnviron))
13292 debugEnviron = process.env.NODE_DEBUG || '';
13293 set = set.toUpperCase();
13294 if (!debugs[set]) {
13295 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13296 var pid = process.pid;
13297 debugs[set] = function() {
13298 var msg = exports.format.apply(exports, arguments);
13299 console.error('%s %d: %s', set, pid, msg);
13300 };
13301 } else {
13302 debugs[set] = function() {};
13303 }
13304 }
13305 return debugs[set];
13306 };
13307
13308
13309 /**
13310 * Echos the value of a value. Trys to print the value out
13311 * in the best way possible given the different types.
13312 *
13313 * @param {Object} obj The object to print out.
13314 * @param {Object} opts Optional options object that alters the output.
13315 */
13316 /* legacy: obj, showHidden, depth, colors*/
13317 function inspect(obj, opts) {
13318 // default options
13319 var ctx = {
13320 seen: [],
13321 stylize: stylizeNoColor
13322 };
13323 // legacy...
13324 if (arguments.length >= 3) ctx.depth = arguments[2];
13325 if (arguments.length >= 4) ctx.colors = arguments[3];
13326 if (isBoolean(opts)) {
13327 // legacy...
13328 ctx.showHidden = opts;
13329 } else if (opts) {
13330 // got an "options" object
13331 exports._extend(ctx, opts);
13332 }
13333 // set default options
13334 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13335 if (isUndefined(ctx.depth)) ctx.depth = 2;
13336 if (isUndefined(ctx.colors)) ctx.colors = false;
13337 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13338 if (ctx.colors) ctx.stylize = stylizeWithColor;
13339 return formatValue(ctx, obj, ctx.depth);
13340 }
13341 exports.inspect = inspect;
13342
13343
13344 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13345 inspect.colors = {
13346 'bold' : [1, 22],
13347 'italic' : [3, 23],
13348 'underline' : [4, 24],
13349 'inverse' : [7, 27],
13350 'white' : [37, 39],
13351 'grey' : [90, 39],
13352 'black' : [30, 39],
13353 'blue' : [34, 39],
13354 'cyan' : [36, 39],
13355 'green' : [32, 39],
13356 'magenta' : [35, 39],
13357 'red' : [31, 39],
13358 'yellow' : [33, 39]
13359 };
13360
13361 // Don't use 'blue' not visible on cmd.exe
13362 inspect.styles = {
13363 'special': 'cyan',
13364 'number': 'yellow',
13365 'boolean': 'yellow',
13366 'undefined': 'grey',
13367 'null': 'bold',
13368 'string': 'green',
13369 'date': 'magenta',
13370 // "name": intentionally not styling
13371 'regexp': 'red'
13372 };
13373
13374
13375 function stylizeWithColor(str, styleType) {
13376 var style = inspect.styles[styleType];
13377
13378 if (style) {
13379 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13380 '\u001b[' + inspect.colors[style][1] + 'm';
13381 } else {
13382 return str;
13383 }
13384 }
13385
13386
13387 function stylizeNoColor(str, styleType) {
13388 return str;
13389 }
13390
13391
13392 function arrayToHash(array) {
13393 var hash = {};
13394
13395 array.forEach(function(val, idx) {
13396 hash[val] = true;
13397 });
13398
13399 return hash;
13400 }
13401
13402
13403 function formatValue(ctx, value, recurseTimes) {
13404 // Provide a hook for user-specified inspect functions.
13405 // Check that value is an object with an inspect function on it
13406 if (ctx.customInspect &&
13407 value &&
13408 isFunction(value.inspect) &&
13409 // Filter out the util module, it's inspect function is special
13410 value.inspect !== exports.inspect &&
13411 // Also filter out any prototype objects using the circular check.
13412 !(value.constructor && value.constructor.prototype === value)) {
13413 var ret = value.inspect(recurseTimes, ctx);
13414 if (!isString(ret)) {
13415 ret = formatValue(ctx, ret, recurseTimes);
13416 }
13417 return ret;
13418 }
13419
13420 // Primitive types cannot have properties
13421 var primitive = formatPrimitive(ctx, value);
13422 if (primitive) {
13423 return primitive;
13424 }
13425
13426 // Look up the keys of the object.
13427 var keys = Object.keys(value);
13428 var visibleKeys = arrayToHash(keys);
13429
13430 if (ctx.showHidden) {
13431 keys = Object.getOwnPropertyNames(value);
13432 }
13433
13434 // IE doesn't make error fields non-enumerable
13435 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13436 if (isError(value)
13437 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13438 return formatError(value);
13439 }
13440
13441 // Some type of object without properties can be shortcutted.
13442 if (keys.length === 0) {
13443 if (isFunction(value)) {
13444 var name = value.name ? ': ' + value.name : '';
13445 return ctx.stylize('[Function' + name + ']', 'special');
13446 }
13447 if (isRegExp(value)) {
13448 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13449 }
13450 if (isDate(value)) {
13451 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13452 }
13453 if (isError(value)) {
13454 return formatError(value);
13455 }
13456 }
13457
13458 var base = '', array = false, braces = ['{', '}'];
13459
13460 // Make Array say that they are Array
13461 if (isArray(value)) {
13462 array = true;
13463 braces = ['[', ']'];
13464 }
13465
13466 // Make functions say that they are functions
13467 if (isFunction(value)) {
13468 var n = value.name ? ': ' + value.name : '';
13469 base = ' [Function' + n + ']';
13470 }
13471
13472 // Make RegExps say that they are RegExps
13473 if (isRegExp(value)) {
13474 base = ' ' + RegExp.prototype.toString.call(value);
13475 }
13476
13477 // Make dates with properties first say the date
13478 if (isDate(value)) {
13479 base = ' ' + Date.prototype.toUTCString.call(value);
13480 }
13481
13482 // Make error with message first say the error
13483 if (isError(value)) {
13484 base = ' ' + formatError(value);
13485 }
13486
13487 if (keys.length === 0 && (!array || value.length == 0)) {
13488 return braces[0] + base + braces[1];
13489 }
13490
13491 if (recurseTimes < 0) {
13492 if (isRegExp(value)) {
13493 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13494 } else {
13495 return ctx.stylize('[Object]', 'special');
13496 }
13497 }
13498
13499 ctx.seen.push(value);
13500
13501 var output;
13502 if (array) {
13503 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13504 } else {
13505 output = keys.map(function(key) {
13506 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13507 });
13508 }
13509
13510 ctx.seen.pop();
13511
13512 return reduceToSingleString(output, base, braces);
13513 }
13514
13515
13516 function formatPrimitive(ctx, value) {
13517 if (isUndefined(value))
13518 return ctx.stylize('undefined', 'undefined');
13519 if (isString(value)) {
13520 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13521 .replace(/'/g, "\\'")
13522 .replace(/\\"/g, '"') + '\'';
13523 return ctx.stylize(simple, 'string');
13524 }
13525 if (isNumber(value))
13526 return ctx.stylize('' + value, 'number');
13527 if (isBoolean(value))
13528 return ctx.stylize('' + value, 'boolean');
13529 // For some reason typeof null is "object", so special case here.
13530 if (isNull(value))
13531 return ctx.stylize('null', 'null');
13532 }
13533
13534
13535 function formatError(value) {
13536 return '[' + Error.prototype.toString.call(value) + ']';
13537 }
13538
13539
13540 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13541 var output = [];
13542 for (var i = 0, l = value.length; i < l; ++i) {
13543 if (hasOwnProperty(value, String(i))) {
13544 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13545 String(i), true));
13546 } else {
13547 output.push('');
13548 }
13549 }
13550 keys.forEach(function(key) {
13551 if (!key.match(/^\d+$/)) {
13552 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13553 key, true));
13554 }
13555 });
13556 return output;
13557 }
13558
13559
13560 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13561 var name, str, desc;
13562 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13563 if (desc.get) {
13564 if (desc.set) {
13565 str = ctx.stylize('[Getter/Setter]', 'special');
13566 } else {
13567 str = ctx.stylize('[Getter]', 'special');
13568 }
13569 } else {
13570 if (desc.set) {
13571 str = ctx.stylize('[Setter]', 'special');
13572 }
13573 }
13574 if (!hasOwnProperty(visibleKeys, key)) {
13575 name = '[' + key + ']';
13576 }
13577 if (!str) {
13578 if (ctx.seen.indexOf(desc.value) < 0) {
13579 if (isNull(recurseTimes)) {
13580 str = formatValue(ctx, desc.value, null);
13581 } else {
13582 str = formatValue(ctx, desc.value, recurseTimes - 1);
13583 }
13584 if (str.indexOf('\n') > -1) {
13585 if (array) {
13586 str = str.split('\n').map(function(line) {
13587 return ' ' + line;
13588 }).join('\n').substr(2);
13589 } else {
13590 str = '\n' + str.split('\n').map(function(line) {
13591 return ' ' + line;
13592 }).join('\n');
13593 }
13594 }
13595 } else {
13596 str = ctx.stylize('[Circular]', 'special');
13597 }
13598 }
13599 if (isUndefined(name)) {
13600 if (array && key.match(/^\d+$/)) {
13601 return str;
13602 }
13603 name = JSON.stringify('' + key);
13604 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
13605 name = name.substr(1, name.length - 2);
13606 name = ctx.stylize(name, 'name');
13607 } else {
13608 name = name.replace(/'/g, "\\'")
13609 .replace(/\\"/g, '"')
13610 .replace(/(^"|"$)/g, "'");
13611 name = ctx.stylize(name, 'string');
13612 }
13613 }
13614
13615 return name + ': ' + str;
13616 }
13617
13618
13619 function reduceToSingleString(output, base, braces) {
13620 var numLinesEst = 0;
13621 var length = output.reduce(function(prev, cur) {
13622 numLinesEst++;
13623 if (cur.indexOf('\n') >= 0) numLinesEst++;
13624 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
13625 }, 0);
13626
13627 if (length > 60) {
13628 return braces[0] +
13629 (base === '' ? '' : base + '\n ') +
13630 ' ' +
13631 output.join(',\n ') +
13632 ' ' +
13633 braces[1];
13634 }
13635
13636 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
13637 }
13638
13639
13640 // NOTE: These type checking functions intentionally don't use `instanceof`
13641 // because it is fragile and can be easily faked with `Object.create()`.
13642 function isArray(ar) {
13643 return Array.isArray(ar);
13644 }
13645 exports.isArray = isArray;
13646
13647 function isBoolean(arg) {
13648 return typeof arg === 'boolean';
13649 }
13650 exports.isBoolean = isBoolean;
13651
13652 function isNull(arg) {
13653 return arg === null;
13654 }
13655 exports.isNull = isNull;
13656
13657 function isNullOrUndefined(arg) {
13658 return arg == null;
13659 }
13660 exports.isNullOrUndefined = isNullOrUndefined;
13661
13662 function isNumber(arg) {
13663 return typeof arg === 'number';
13664 }
13665 exports.isNumber = isNumber;
13666
13667 function isString(arg) {
13668 return typeof arg === 'string';
13669 }
13670 exports.isString = isString;
13671
13672 function isSymbol(arg) {
13673 return typeof arg === 'symbol';
13674 }
13675 exports.isSymbol = isSymbol;
13676
13677 function isUndefined(arg) {
13678 return arg === void 0;
13679 }
13680 exports.isUndefined = isUndefined;
13681
13682 function isRegExp(re) {
13683 return isObject(re) && objectToString(re) === '[object RegExp]';
13684 }
13685 exports.isRegExp = isRegExp;
13686
13687 function isObject(arg) {
13688 return typeof arg === 'object' && arg !== null;
13689 }
13690 exports.isObject = isObject;
13691
13692 function isDate(d) {
13693 return isObject(d) && objectToString(d) === '[object Date]';
13694 }
13695 exports.isDate = isDate;
13696
13697 function isError(e) {
13698 return isObject(e) &&
13699 (objectToString(e) === '[object Error]' || e instanceof Error);
13700 }
13701 exports.isError = isError;
13702
13703 function isFunction(arg) {
13704 return typeof arg === 'function';
13705 }
13706 exports.isFunction = isFunction;
13707
13708 function isPrimitive(arg) {
13709 return arg === null ||
13710 typeof arg === 'boolean' ||
13711 typeof arg === 'number' ||
13712 typeof arg === 'string' ||
13713 typeof arg === 'symbol' || // ES6 symbol
13714 typeof arg === 'undefined';
13715 }
13716 exports.isPrimitive = isPrimitive;
13717
13718 exports.isBuffer = require('./support/isBuffer');
13719
13720 function objectToString(o) {
13721 return Object.prototype.toString.call(o);
13722 }
13723
13724
13725 function pad(n) {
13726 return n < 10 ? '0' + n.toString(10) : n.toString(10);
13727 }
13728
13729
13730 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13731 'Oct', 'Nov', 'Dec'];
13732
13733 // 26 Feb 16:19:34
13734 function timestamp() {
13735 var d = new Date();
13736 var time = [pad(d.getHours()),
13737 pad(d.getMinutes()),
13738 pad(d.getSeconds())].join(':');
13739 return [d.getDate(), months[d.getMonth()], time].join(' ');
13740 }
13741
13742
13743 // log is just a thin wrapper to console.log that prepends a timestamp
13744 exports.log = function() {
13745 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
13746 };
13747
13748
13749 /**
13750 * Inherit the prototype methods from one constructor into another.
13751 *
13752 * The Function.prototype.inherits from lang.js rewritten as a standalone
13753 * function (not on Function.prototype). NOTE: If this file is to be loaded
13754 * during bootstrapping this function needs to be rewritten using some native
13755 * functions as prototype setup using normal JavaScript does not work as
13756 * expected during bootstrapping (see mirror.js in r114903).
13757 *
13758 * @param {function} ctor Constructor function which needs to inherit the
13759 * prototype.
13760 * @param {function} superCtor Constructor function to inherit prototype from.
13761 */
13762 exports.inherits = require('inherits');
13763
13764 exports._extend = function(origin, add) {
13765 // Don't do anything if add isn't an object
13766 if (!add || !isObject(add)) return origin;
13767
13768 var keys = Object.keys(add);
13769 var i = keys.length;
13770 while (i--) {
13771 origin[keys[i]] = add[keys[i]];
13772 }
13773 return origin;
13774 };
13775
13776 function hasOwnProperty(obj, prop) {
13777 return Object.prototype.hasOwnProperty.call(obj, prop);
13778 }
13779
13780 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13781 },{"./support/isBuffer":31,"_process":12,"inherits":30}],33:[function(require,module,exports){
13782 module.exports = {
13783 base58: require('bs58'),
13784 bitcoin: require('bitcoinjs-lib'),
13785 ecurve: require('ecurve'),
13786 BigInteger: require('bigi')
13787 }
13788
13789 },{"bigi":37,"bitcoinjs-lib":50,"bs58":79,"ecurve":89}],34:[function(require,module,exports){
13790 // base-x encoding
13791 // Forked from https://github.com/cryptocoinjs/bs58
13792 // Originally written by Mike Hearn for BitcoinJ
13793 // Copyright (c) 2011 Google Inc
13794 // Ported to JavaScript by Stefan Thomas
13795 // Merged Buffer refactorings from base58-native by Stephen Pair
13796 // Copyright (c) 2013 BitPay Inc
13797
13798 var Buffer = require('safe-buffer').Buffer
13799
13800 module.exports = function base (ALPHABET) {
13801 var ALPHABET_MAP = {}
13802 var BASE = ALPHABET.length
13803 var LEADER = ALPHABET.charAt(0)
13804
13805 // pre-compute lookup table
13806 for (var z = 0; z < ALPHABET.length; z++) {
13807 var x = ALPHABET.charAt(z)
13808
13809 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13810 ALPHABET_MAP[x] = z
13811 }
13812
13813 function encode (source) {
13814 if (source.length === 0) return ''
13815
13816 var digits = [0]
13817 for (var i = 0; i < source.length; ++i) {
13818 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
13819 carry += digits[j] << 8
13820 digits[j] = carry % BASE
13821 carry = (carry / BASE) | 0
13822 }
13823
13824 while (carry > 0) {
13825 digits.push(carry % BASE)
13826 carry = (carry / BASE) | 0
13827 }
13828 }
13829
13830 var string = ''
13831
13832 // deal with leading zeros
13833 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
13834 // convert digits to a string
13835 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
13836
13837 return string
13838 }
13839
13840 function decodeUnsafe (string) {
13841 if (string.length === 0) return Buffer.allocUnsafe(0)
13842
13843 var bytes = [0]
13844 for (var i = 0; i < string.length; i++) {
13845 var value = ALPHABET_MAP[string[i]]
13846 if (value === undefined) return
13847
13848 for (var j = 0, carry = value; j < bytes.length; ++j) {
13849 carry += bytes[j] * BASE
13850 bytes[j] = carry & 0xff
13851 carry >>= 8
13852 }
13853
13854 while (carry > 0) {
13855 bytes.push(carry & 0xff)
13856 carry >>= 8
13857 }
13858 }
13859
13860 // deal with leading zeros
13861 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
13862 bytes.push(0)
13863 }
13864
13865 return Buffer.from(bytes.reverse())
13866 }
13867
13868 function decode (string) {
13869 var buffer = decodeUnsafe(string)
13870 if (buffer) return buffer
13871
13872 throw new Error('Non-base' + BASE + ' character')
13873 }
13874
13875 return {
13876 encode: encode,
13877 decodeUnsafe: decodeUnsafe,
13878 decode: decode
13879 }
13880 }
13881
13882 },{"safe-buffer":98}],35:[function(require,module,exports){
13883 // (public) Constructor
13884 function BigInteger(a, b, c) {
13885 if (!(this instanceof BigInteger))
13886 return new BigInteger(a, b, c)
13887
13888 if (a != null) {
13889 if ("number" == typeof a) this.fromNumber(a, b, c)
13890 else if (b == null && "string" != typeof a) this.fromString(a, 256)
13891 else this.fromString(a, b)
13892 }
13893 }
13894
13895 var proto = BigInteger.prototype
13896
13897 // duck-typed isBigInteger
13898 proto.__bigi = require('../package.json').version
13899 BigInteger.isBigInteger = function (obj, check_ver) {
13900 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
13901 }
13902
13903 // Bits per digit
13904 var dbits
13905
13906 // am: Compute w_j += (x*this_i), propagate carries,
13907 // c is initial carry, returns final carry.
13908 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
13909 // We need to select the fastest one that works in this environment.
13910
13911 // am1: use a single mult and divide to get the high bits,
13912 // max digit bits should be 26 because
13913 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
13914 function am1(i, x, w, j, c, n) {
13915 while (--n >= 0) {
13916 var v = x * this[i++] + w[j] + c
13917 c = Math.floor(v / 0x4000000)
13918 w[j++] = v & 0x3ffffff
13919 }
13920 return c
13921 }
13922 // am2 avoids a big mult-and-extract completely.
13923 // Max digit bits should be <= 30 because we do bitwise ops
13924 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
13925 function am2(i, x, w, j, c, n) {
13926 var xl = x & 0x7fff,
13927 xh = x >> 15
13928 while (--n >= 0) {
13929 var l = this[i] & 0x7fff
13930 var h = this[i++] >> 15
13931 var m = xh * l + h * xl
13932 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
13933 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
13934 w[j++] = l & 0x3fffffff
13935 }
13936 return c
13937 }
13938 // Alternately, set max digit bits to 28 since some
13939 // browsers slow down when dealing with 32-bit numbers.
13940 function am3(i, x, w, j, c, n) {
13941 var xl = x & 0x3fff,
13942 xh = x >> 14
13943 while (--n >= 0) {
13944 var l = this[i] & 0x3fff
13945 var h = this[i++] >> 14
13946 var m = xh * l + h * xl
13947 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
13948 c = (l >> 28) + (m >> 14) + xh * h
13949 w[j++] = l & 0xfffffff
13950 }
13951 return c
13952 }
13953
13954 // wtf?
13955 BigInteger.prototype.am = am1
13956 dbits = 26
13957
13958 BigInteger.prototype.DB = dbits
13959 BigInteger.prototype.DM = ((1 << dbits) - 1)
13960 var DV = BigInteger.prototype.DV = (1 << dbits)
13961
13962 var BI_FP = 52
13963 BigInteger.prototype.FV = Math.pow(2, BI_FP)
13964 BigInteger.prototype.F1 = BI_FP - dbits
13965 BigInteger.prototype.F2 = 2 * dbits - BI_FP
13966
13967 // Digit conversions
13968 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
13969 var BI_RC = new Array()
13970 var rr, vv
13971 rr = "0".charCodeAt(0)
13972 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
13973 rr = "a".charCodeAt(0)
13974 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13975 rr = "A".charCodeAt(0)
13976 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13977
13978 function int2char(n) {
13979 return BI_RM.charAt(n)
13980 }
13981
13982 function intAt(s, i) {
13983 var c = BI_RC[s.charCodeAt(i)]
13984 return (c == null) ? -1 : c
13985 }
13986
13987 // (protected) copy this to r
13988 function bnpCopyTo(r) {
13989 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
13990 r.t = this.t
13991 r.s = this.s
13992 }
13993
13994 // (protected) set from integer value x, -DV <= x < DV
13995 function bnpFromInt(x) {
13996 this.t = 1
13997 this.s = (x < 0) ? -1 : 0
13998 if (x > 0) this[0] = x
13999 else if (x < -1) this[0] = x + DV
14000 else this.t = 0
14001 }
14002
14003 // return bigint initialized to value
14004 function nbv(i) {
14005 var r = new BigInteger()
14006 r.fromInt(i)
14007 return r
14008 }
14009
14010 // (protected) set from string and radix
14011 function bnpFromString(s, b) {
14012 var self = this
14013
14014 var k
14015 if (b == 16) k = 4
14016 else if (b == 8) k = 3
14017 else if (b == 256) k = 8; // byte array
14018 else if (b == 2) k = 1
14019 else if (b == 32) k = 5
14020 else if (b == 4) k = 2
14021 else {
14022 self.fromRadix(s, b)
14023 return
14024 }
14025 self.t = 0
14026 self.s = 0
14027 var i = s.length,
14028 mi = false,
14029 sh = 0
14030 while (--i >= 0) {
14031 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
14032 if (x < 0) {
14033 if (s.charAt(i) == "-") mi = true
14034 continue
14035 }
14036 mi = false
14037 if (sh == 0)
14038 self[self.t++] = x
14039 else if (sh + k > self.DB) {
14040 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
14041 self[self.t++] = (x >> (self.DB - sh))
14042 } else
14043 self[self.t - 1] |= x << sh
14044 sh += k
14045 if (sh >= self.DB) sh -= self.DB
14046 }
14047 if (k == 8 && (s[0] & 0x80) != 0) {
14048 self.s = -1
14049 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
14050 }
14051 self.clamp()
14052 if (mi) BigInteger.ZERO.subTo(self, self)
14053 }
14054
14055 // (protected) clamp off excess high words
14056 function bnpClamp() {
14057 var c = this.s & this.DM
14058 while (this.t > 0 && this[this.t - 1] == c)--this.t
14059 }
14060
14061 // (public) return string representation in given radix
14062 function bnToString(b) {
14063 var self = this
14064 if (self.s < 0) return "-" + self.negate()
14065 .toString(b)
14066 var k
14067 if (b == 16) k = 4
14068 else if (b == 8) k = 3
14069 else if (b == 2) k = 1
14070 else if (b == 32) k = 5
14071 else if (b == 4) k = 2
14072 else return self.toRadix(b)
14073 var km = (1 << k) - 1,
14074 d, m = false,
14075 r = "",
14076 i = self.t
14077 var p = self.DB - (i * self.DB) % k
14078 if (i-- > 0) {
14079 if (p < self.DB && (d = self[i] >> p) > 0) {
14080 m = true
14081 r = int2char(d)
14082 }
14083 while (i >= 0) {
14084 if (p < k) {
14085 d = (self[i] & ((1 << p) - 1)) << (k - p)
14086 d |= self[--i] >> (p += self.DB - k)
14087 } else {
14088 d = (self[i] >> (p -= k)) & km
14089 if (p <= 0) {
14090 p += self.DB
14091 --i
14092 }
14093 }
14094 if (d > 0) m = true
14095 if (m) r += int2char(d)
14096 }
14097 }
14098 return m ? r : "0"
14099 }
14100
14101 // (public) -this
14102 function bnNegate() {
14103 var r = new BigInteger()
14104 BigInteger.ZERO.subTo(this, r)
14105 return r
14106 }
14107
14108 // (public) |this|
14109 function bnAbs() {
14110 return (this.s < 0) ? this.negate() : this
14111 }
14112
14113 // (public) return + if this > a, - if this < a, 0 if equal
14114 function bnCompareTo(a) {
14115 var r = this.s - a.s
14116 if (r != 0) return r
14117 var i = this.t
14118 r = i - a.t
14119 if (r != 0) return (this.s < 0) ? -r : r
14120 while (--i >= 0)
14121 if ((r = this[i] - a[i]) != 0) return r
14122 return 0
14123 }
14124
14125 // returns bit length of the integer x
14126 function nbits(x) {
14127 var r = 1,
14128 t
14129 if ((t = x >>> 16) != 0) {
14130 x = t
14131 r += 16
14132 }
14133 if ((t = x >> 8) != 0) {
14134 x = t
14135 r += 8
14136 }
14137 if ((t = x >> 4) != 0) {
14138 x = t
14139 r += 4
14140 }
14141 if ((t = x >> 2) != 0) {
14142 x = t
14143 r += 2
14144 }
14145 if ((t = x >> 1) != 0) {
14146 x = t
14147 r += 1
14148 }
14149 return r
14150 }
14151
14152 // (public) return the number of bits in "this"
14153 function bnBitLength() {
14154 if (this.t <= 0) return 0
14155 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
14156 }
14157
14158 // (public) return the number of bytes in "this"
14159 function bnByteLength() {
14160 return this.bitLength() >> 3
14161 }
14162
14163 // (protected) r = this << n*DB
14164 function bnpDLShiftTo(n, r) {
14165 var i
14166 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
14167 for (i = n - 1; i >= 0; --i) r[i] = 0
14168 r.t = this.t + n
14169 r.s = this.s
14170 }
14171
14172 // (protected) r = this >> n*DB
14173 function bnpDRShiftTo(n, r) {
14174 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14175 r.t = Math.max(this.t - n, 0)
14176 r.s = this.s
14177 }
14178
14179 // (protected) r = this << n
14180 function bnpLShiftTo(n, r) {
14181 var self = this
14182 var bs = n % self.DB
14183 var cbs = self.DB - bs
14184 var bm = (1 << cbs) - 1
14185 var ds = Math.floor(n / self.DB),
14186 c = (self.s << bs) & self.DM,
14187 i
14188 for (i = self.t - 1; i >= 0; --i) {
14189 r[i + ds + 1] = (self[i] >> cbs) | c
14190 c = (self[i] & bm) << bs
14191 }
14192 for (i = ds - 1; i >= 0; --i) r[i] = 0
14193 r[ds] = c
14194 r.t = self.t + ds + 1
14195 r.s = self.s
14196 r.clamp()
14197 }
14198
14199 // (protected) r = this >> n
14200 function bnpRShiftTo(n, r) {
14201 var self = this
14202 r.s = self.s
14203 var ds = Math.floor(n / self.DB)
14204 if (ds >= self.t) {
14205 r.t = 0
14206 return
14207 }
14208 var bs = n % self.DB
14209 var cbs = self.DB - bs
14210 var bm = (1 << bs) - 1
14211 r[0] = self[ds] >> bs
14212 for (var i = ds + 1; i < self.t; ++i) {
14213 r[i - ds - 1] |= (self[i] & bm) << cbs
14214 r[i - ds] = self[i] >> bs
14215 }
14216 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
14217 r.t = self.t - ds
14218 r.clamp()
14219 }
14220
14221 // (protected) r = this - a
14222 function bnpSubTo(a, r) {
14223 var self = this
14224 var i = 0,
14225 c = 0,
14226 m = Math.min(a.t, self.t)
14227 while (i < m) {
14228 c += self[i] - a[i]
14229 r[i++] = c & self.DM
14230 c >>= self.DB
14231 }
14232 if (a.t < self.t) {
14233 c -= a.s
14234 while (i < self.t) {
14235 c += self[i]
14236 r[i++] = c & self.DM
14237 c >>= self.DB
14238 }
14239 c += self.s
14240 } else {
14241 c += self.s
14242 while (i < a.t) {
14243 c -= a[i]
14244 r[i++] = c & self.DM
14245 c >>= self.DB
14246 }
14247 c -= a.s
14248 }
14249 r.s = (c < 0) ? -1 : 0
14250 if (c < -1) r[i++] = self.DV + c
14251 else if (c > 0) r[i++] = c
14252 r.t = i
14253 r.clamp()
14254 }
14255
14256 // (protected) r = this * a, r != this,a (HAC 14.12)
14257 // "this" should be the larger one if appropriate.
14258 function bnpMultiplyTo(a, r) {
14259 var x = this.abs(),
14260 y = a.abs()
14261 var i = x.t
14262 r.t = i + y.t
14263 while (--i >= 0) r[i] = 0
14264 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
14265 r.s = 0
14266 r.clamp()
14267 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14268 }
14269
14270 // (protected) r = this^2, r != this (HAC 14.16)
14271 function bnpSquareTo(r) {
14272 var x = this.abs()
14273 var i = r.t = 2 * x.t
14274 while (--i >= 0) r[i] = 0
14275 for (i = 0; i < x.t - 1; ++i) {
14276 var c = x.am(i, x[i], r, 2 * i, 0, 1)
14277 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
14278 r[i + x.t] -= x.DV
14279 r[i + x.t + 1] = 1
14280 }
14281 }
14282 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
14283 r.s = 0
14284 r.clamp()
14285 }
14286
14287 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
14288 // r != q, this != m. q or r may be null.
14289 function bnpDivRemTo(m, q, r) {
14290 var self = this
14291 var pm = m.abs()
14292 if (pm.t <= 0) return
14293 var pt = self.abs()
14294 if (pt.t < pm.t) {
14295 if (q != null) q.fromInt(0)
14296 if (r != null) self.copyTo(r)
14297 return
14298 }
14299 if (r == null) r = new BigInteger()
14300 var y = new BigInteger(),
14301 ts = self.s,
14302 ms = m.s
14303 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
14304 if (nsh > 0) {
14305 pm.lShiftTo(nsh, y)
14306 pt.lShiftTo(nsh, r)
14307 } else {
14308 pm.copyTo(y)
14309 pt.copyTo(r)
14310 }
14311 var ys = y.t
14312 var y0 = y[ys - 1]
14313 if (y0 == 0) return
14314 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
14315 var d1 = self.FV / yt,
14316 d2 = (1 << self.F1) / yt,
14317 e = 1 << self.F2
14318 var i = r.t,
14319 j = i - ys,
14320 t = (q == null) ? new BigInteger() : q
14321 y.dlShiftTo(j, t)
14322 if (r.compareTo(t) >= 0) {
14323 r[r.t++] = 1
14324 r.subTo(t, r)
14325 }
14326 BigInteger.ONE.dlShiftTo(ys, t)
14327 t.subTo(y, y); // "negative" y so we can replace sub with am later
14328 while (y.t < ys) y[y.t++] = 0
14329 while (--j >= 0) {
14330 // Estimate quotient digit
14331 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
14332 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
14333 y.dlShiftTo(j, t)
14334 r.subTo(t, r)
14335 while (r[i] < --qd) r.subTo(t, r)
14336 }
14337 }
14338 if (q != null) {
14339 r.drShiftTo(ys, q)
14340 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14341 }
14342 r.t = ys
14343 r.clamp()
14344 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
14345 if (ts < 0) BigInteger.ZERO.subTo(r, r)
14346 }
14347
14348 // (public) this mod a
14349 function bnMod(a) {
14350 var r = new BigInteger()
14351 this.abs()
14352 .divRemTo(a, null, r)
14353 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
14354 return r
14355 }
14356
14357 // Modular reduction using "classic" algorithm
14358 function Classic(m) {
14359 this.m = m
14360 }
14361
14362 function cConvert(x) {
14363 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
14364 else return x
14365 }
14366
14367 function cRevert(x) {
14368 return x
14369 }
14370
14371 function cReduce(x) {
14372 x.divRemTo(this.m, null, x)
14373 }
14374
14375 function cMulTo(x, y, r) {
14376 x.multiplyTo(y, r)
14377 this.reduce(r)
14378 }
14379
14380 function cSqrTo(x, r) {
14381 x.squareTo(r)
14382 this.reduce(r)
14383 }
14384
14385 Classic.prototype.convert = cConvert
14386 Classic.prototype.revert = cRevert
14387 Classic.prototype.reduce = cReduce
14388 Classic.prototype.mulTo = cMulTo
14389 Classic.prototype.sqrTo = cSqrTo
14390
14391 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
14392 // justification:
14393 // xy == 1 (mod m)
14394 // xy = 1+km
14395 // xy(2-xy) = (1+km)(1-km)
14396 // x[y(2-xy)] = 1-k^2m^2
14397 // x[y(2-xy)] == 1 (mod m^2)
14398 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
14399 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
14400 // JS multiply "overflows" differently from C/C++, so care is needed here.
14401 function bnpInvDigit() {
14402 if (this.t < 1) return 0
14403 var x = this[0]
14404 if ((x & 1) == 0) return 0
14405 var y = x & 3; // y == 1/x mod 2^2
14406 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
14407 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
14408 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
14409 // last step - calculate inverse mod DV directly
14410 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
14411 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
14412 // we really want the negative inverse, and -DV < y < DV
14413 return (y > 0) ? this.DV - y : -y
14414 }
14415
14416 // Montgomery reduction
14417 function Montgomery(m) {
14418 this.m = m
14419 this.mp = m.invDigit()
14420 this.mpl = this.mp & 0x7fff
14421 this.mph = this.mp >> 15
14422 this.um = (1 << (m.DB - 15)) - 1
14423 this.mt2 = 2 * m.t
14424 }
14425
14426 // xR mod m
14427 function montConvert(x) {
14428 var r = new BigInteger()
14429 x.abs()
14430 .dlShiftTo(this.m.t, r)
14431 r.divRemTo(this.m, null, r)
14432 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
14433 return r
14434 }
14435
14436 // x/R mod m
14437 function montRevert(x) {
14438 var r = new BigInteger()
14439 x.copyTo(r)
14440 this.reduce(r)
14441 return r
14442 }
14443
14444 // x = x/R mod m (HAC 14.32)
14445 function montReduce(x) {
14446 while (x.t <= this.mt2) // pad x so am has enough room later
14447 x[x.t++] = 0
14448 for (var i = 0; i < this.m.t; ++i) {
14449 // faster way of calculating u0 = x[i]*mp mod DV
14450 var j = x[i] & 0x7fff
14451 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
14452 // use am to combine the multiply-shift-add into one call
14453 j = i + this.m.t
14454 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
14455 // propagate carry
14456 while (x[j] >= x.DV) {
14457 x[j] -= x.DV
14458 x[++j]++
14459 }
14460 }
14461 x.clamp()
14462 x.drShiftTo(this.m.t, x)
14463 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
14464 }
14465
14466 // r = "x^2/R mod m"; x != r
14467 function montSqrTo(x, r) {
14468 x.squareTo(r)
14469 this.reduce(r)
14470 }
14471
14472 // r = "xy/R mod m"; x,y != r
14473 function montMulTo(x, y, r) {
14474 x.multiplyTo(y, r)
14475 this.reduce(r)
14476 }
14477
14478 Montgomery.prototype.convert = montConvert
14479 Montgomery.prototype.revert = montRevert
14480 Montgomery.prototype.reduce = montReduce
14481 Montgomery.prototype.mulTo = montMulTo
14482 Montgomery.prototype.sqrTo = montSqrTo
14483
14484 // (protected) true iff this is even
14485 function bnpIsEven() {
14486 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
14487 }
14488
14489 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
14490 function bnpExp(e, z) {
14491 if (e > 0xffffffff || e < 1) return BigInteger.ONE
14492 var r = new BigInteger(),
14493 r2 = new BigInteger(),
14494 g = z.convert(this),
14495 i = nbits(e) - 1
14496 g.copyTo(r)
14497 while (--i >= 0) {
14498 z.sqrTo(r, r2)
14499 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
14500 else {
14501 var t = r
14502 r = r2
14503 r2 = t
14504 }
14505 }
14506 return z.revert(r)
14507 }
14508
14509 // (public) this^e % m, 0 <= e < 2^32
14510 function bnModPowInt(e, m) {
14511 var z
14512 if (e < 256 || m.isEven()) z = new Classic(m)
14513 else z = new Montgomery(m)
14514 return this.exp(e, z)
14515 }
14516
14517 // protected
14518 proto.copyTo = bnpCopyTo
14519 proto.fromInt = bnpFromInt
14520 proto.fromString = bnpFromString
14521 proto.clamp = bnpClamp
14522 proto.dlShiftTo = bnpDLShiftTo
14523 proto.drShiftTo = bnpDRShiftTo
14524 proto.lShiftTo = bnpLShiftTo
14525 proto.rShiftTo = bnpRShiftTo
14526 proto.subTo = bnpSubTo
14527 proto.multiplyTo = bnpMultiplyTo
14528 proto.squareTo = bnpSquareTo
14529 proto.divRemTo = bnpDivRemTo
14530 proto.invDigit = bnpInvDigit
14531 proto.isEven = bnpIsEven
14532 proto.exp = bnpExp
14533
14534 // public
14535 proto.toString = bnToString
14536 proto.negate = bnNegate
14537 proto.abs = bnAbs
14538 proto.compareTo = bnCompareTo
14539 proto.bitLength = bnBitLength
14540 proto.byteLength = bnByteLength
14541 proto.mod = bnMod
14542 proto.modPowInt = bnModPowInt
14543
14544 // (public)
14545 function bnClone() {
14546 var r = new BigInteger()
14547 this.copyTo(r)
14548 return r
14549 }
14550
14551 // (public) return value as integer
14552 function bnIntValue() {
14553 if (this.s < 0) {
14554 if (this.t == 1) return this[0] - this.DV
14555 else if (this.t == 0) return -1
14556 } else if (this.t == 1) return this[0]
14557 else if (this.t == 0) return 0
14558 // assumes 16 < DB < 32
14559 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
14560 }
14561
14562 // (public) return value as byte
14563 function bnByteValue() {
14564 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
14565 }
14566
14567 // (public) return value as short (assumes DB>=16)
14568 function bnShortValue() {
14569 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
14570 }
14571
14572 // (protected) return x s.t. r^x < DV
14573 function bnpChunkSize(r) {
14574 return Math.floor(Math.LN2 * this.DB / Math.log(r))
14575 }
14576
14577 // (public) 0 if this == 0, 1 if this > 0
14578 function bnSigNum() {
14579 if (this.s < 0) return -1
14580 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
14581 else return 1
14582 }
14583
14584 // (protected) convert to radix string
14585 function bnpToRadix(b) {
14586 if (b == null) b = 10
14587 if (this.signum() == 0 || b < 2 || b > 36) return "0"
14588 var cs = this.chunkSize(b)
14589 var a = Math.pow(b, cs)
14590 var d = nbv(a),
14591 y = new BigInteger(),
14592 z = new BigInteger(),
14593 r = ""
14594 this.divRemTo(d, y, z)
14595 while (y.signum() > 0) {
14596 r = (a + z.intValue())
14597 .toString(b)
14598 .substr(1) + r
14599 y.divRemTo(d, y, z)
14600 }
14601 return z.intValue()
14602 .toString(b) + r
14603 }
14604
14605 // (protected) convert from radix string
14606 function bnpFromRadix(s, b) {
14607 var self = this
14608 self.fromInt(0)
14609 if (b == null) b = 10
14610 var cs = self.chunkSize(b)
14611 var d = Math.pow(b, cs),
14612 mi = false,
14613 j = 0,
14614 w = 0
14615 for (var i = 0; i < s.length; ++i) {
14616 var x = intAt(s, i)
14617 if (x < 0) {
14618 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
14619 continue
14620 }
14621 w = b * w + x
14622 if (++j >= cs) {
14623 self.dMultiply(d)
14624 self.dAddOffset(w, 0)
14625 j = 0
14626 w = 0
14627 }
14628 }
14629 if (j > 0) {
14630 self.dMultiply(Math.pow(b, j))
14631 self.dAddOffset(w, 0)
14632 }
14633 if (mi) BigInteger.ZERO.subTo(self, self)
14634 }
14635
14636 // (protected) alternate constructor
14637 function bnpFromNumber(a, b, c) {
14638 var self = this
14639 if ("number" == typeof b) {
14640 // new BigInteger(int,int,RNG)
14641 if (a < 2) self.fromInt(1)
14642 else {
14643 self.fromNumber(a, c)
14644 if (!self.testBit(a - 1)) // force MSB set
14645 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
14646 if (self.isEven()) self.dAddOffset(1, 0); // force odd
14647 while (!self.isProbablePrime(b)) {
14648 self.dAddOffset(2, 0)
14649 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
14650 }
14651 }
14652 } else {
14653 // new BigInteger(int,RNG)
14654 var x = new Array(),
14655 t = a & 7
14656 x.length = (a >> 3) + 1
14657 b.nextBytes(x)
14658 if (t > 0) x[0] &= ((1 << t) - 1)
14659 else x[0] = 0
14660 self.fromString(x, 256)
14661 }
14662 }
14663
14664 // (public) convert to bigendian byte array
14665 function bnToByteArray() {
14666 var self = this
14667 var i = self.t,
14668 r = new Array()
14669 r[0] = self.s
14670 var p = self.DB - (i * self.DB) % 8,
14671 d, k = 0
14672 if (i-- > 0) {
14673 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
14674 r[k++] = d | (self.s << (self.DB - p))
14675 while (i >= 0) {
14676 if (p < 8) {
14677 d = (self[i] & ((1 << p) - 1)) << (8 - p)
14678 d |= self[--i] >> (p += self.DB - 8)
14679 } else {
14680 d = (self[i] >> (p -= 8)) & 0xff
14681 if (p <= 0) {
14682 p += self.DB
14683 --i
14684 }
14685 }
14686 if ((d & 0x80) != 0) d |= -256
14687 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
14688 if (k > 0 || d != self.s) r[k++] = d
14689 }
14690 }
14691 return r
14692 }
14693
14694 function bnEquals(a) {
14695 return (this.compareTo(a) == 0)
14696 }
14697
14698 function bnMin(a) {
14699 return (this.compareTo(a) < 0) ? this : a
14700 }
14701
14702 function bnMax(a) {
14703 return (this.compareTo(a) > 0) ? this : a
14704 }
14705
14706 // (protected) r = this op a (bitwise)
14707 function bnpBitwiseTo(a, op, r) {
14708 var self = this
14709 var i, f, m = Math.min(a.t, self.t)
14710 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
14711 if (a.t < self.t) {
14712 f = a.s & self.DM
14713 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14714 r.t = self.t
14715 } else {
14716 f = self.s & self.DM
14717 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14718 r.t = a.t
14719 }
14720 r.s = op(self.s, a.s)
14721 r.clamp()
14722 }
14723
14724 // (public) this & a
14725 function op_and(x, y) {
14726 return x & y
14727 }
14728
14729 function bnAnd(a) {
14730 var r = new BigInteger()
14731 this.bitwiseTo(a, op_and, r)
14732 return r
14733 }
14734
14735 // (public) this | a
14736 function op_or(x, y) {
14737 return x | y
14738 }
14739
14740 function bnOr(a) {
14741 var r = new BigInteger()
14742 this.bitwiseTo(a, op_or, r)
14743 return r
14744 }
14745
14746 // (public) this ^ a
14747 function op_xor(x, y) {
14748 return x ^ y
14749 }
14750
14751 function bnXor(a) {
14752 var r = new BigInteger()
14753 this.bitwiseTo(a, op_xor, r)
14754 return r
14755 }
14756
14757 // (public) this & ~a
14758 function op_andnot(x, y) {
14759 return x & ~y
14760 }
14761
14762 function bnAndNot(a) {
14763 var r = new BigInteger()
14764 this.bitwiseTo(a, op_andnot, r)
14765 return r
14766 }
14767
14768 // (public) ~this
14769 function bnNot() {
14770 var r = new BigInteger()
14771 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14772 r.t = this.t
14773 r.s = ~this.s
14774 return r
14775 }
14776
14777 // (public) this << n
14778 function bnShiftLeft(n) {
14779 var r = new BigInteger()
14780 if (n < 0) this.rShiftTo(-n, r)
14781 else this.lShiftTo(n, r)
14782 return r
14783 }
14784
14785 // (public) this >> n
14786 function bnShiftRight(n) {
14787 var r = new BigInteger()
14788 if (n < 0) this.lShiftTo(-n, r)
14789 else this.rShiftTo(n, r)
14790 return r
14791 }
14792
14793 // return index of lowest 1-bit in x, x < 2^31
14794 function lbit(x) {
14795 if (x == 0) return -1
14796 var r = 0
14797 if ((x & 0xffff) == 0) {
14798 x >>= 16
14799 r += 16
14800 }
14801 if ((x & 0xff) == 0) {
14802 x >>= 8
14803 r += 8
14804 }
14805 if ((x & 0xf) == 0) {
14806 x >>= 4
14807 r += 4
14808 }
14809 if ((x & 3) == 0) {
14810 x >>= 2
14811 r += 2
14812 }
14813 if ((x & 1) == 0)++r
14814 return r
14815 }
14816
14817 // (public) returns index of lowest 1-bit (or -1 if none)
14818 function bnGetLowestSetBit() {
14819 for (var i = 0; i < this.t; ++i)
14820 if (this[i] != 0) return i * this.DB + lbit(this[i])
14821 if (this.s < 0) return this.t * this.DB
14822 return -1
14823 }
14824
14825 // return number of 1 bits in x
14826 function cbit(x) {
14827 var r = 0
14828 while (x != 0) {
14829 x &= x - 1
14830 ++r
14831 }
14832 return r
14833 }
14834
14835 // (public) return number of set bits
14836 function bnBitCount() {
14837 var r = 0,
14838 x = this.s & this.DM
14839 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
14840 return r
14841 }
14842
14843 // (public) true iff nth bit is set
14844 function bnTestBit(n) {
14845 var j = Math.floor(n / this.DB)
14846 if (j >= this.t) return (this.s != 0)
14847 return ((this[j] & (1 << (n % this.DB))) != 0)
14848 }
14849
14850 // (protected) this op (1<<n)
14851 function bnpChangeBit(n, op) {
14852 var r = BigInteger.ONE.shiftLeft(n)
14853 this.bitwiseTo(r, op, r)
14854 return r
14855 }
14856
14857 // (public) this | (1<<n)
14858 function bnSetBit(n) {
14859 return this.changeBit(n, op_or)
14860 }
14861
14862 // (public) this & ~(1<<n)
14863 function bnClearBit(n) {
14864 return this.changeBit(n, op_andnot)
14865 }
14866
14867 // (public) this ^ (1<<n)
14868 function bnFlipBit(n) {
14869 return this.changeBit(n, op_xor)
14870 }
14871
14872 // (protected) r = this + a
14873 function bnpAddTo(a, r) {
14874 var self = this
14875
14876 var i = 0,
14877 c = 0,
14878 m = Math.min(a.t, self.t)
14879 while (i < m) {
14880 c += self[i] + a[i]
14881 r[i++] = c & self.DM
14882 c >>= self.DB
14883 }
14884 if (a.t < self.t) {
14885 c += a.s
14886 while (i < self.t) {
14887 c += self[i]
14888 r[i++] = c & self.DM
14889 c >>= self.DB
14890 }
14891 c += self.s
14892 } else {
14893 c += self.s
14894 while (i < a.t) {
14895 c += a[i]
14896 r[i++] = c & self.DM
14897 c >>= self.DB
14898 }
14899 c += a.s
14900 }
14901 r.s = (c < 0) ? -1 : 0
14902 if (c > 0) r[i++] = c
14903 else if (c < -1) r[i++] = self.DV + c
14904 r.t = i
14905 r.clamp()
14906 }
14907
14908 // (public) this + a
14909 function bnAdd(a) {
14910 var r = new BigInteger()
14911 this.addTo(a, r)
14912 return r
14913 }
14914
14915 // (public) this - a
14916 function bnSubtract(a) {
14917 var r = new BigInteger()
14918 this.subTo(a, r)
14919 return r
14920 }
14921
14922 // (public) this * a
14923 function bnMultiply(a) {
14924 var r = new BigInteger()
14925 this.multiplyTo(a, r)
14926 return r
14927 }
14928
14929 // (public) this^2
14930 function bnSquare() {
14931 var r = new BigInteger()
14932 this.squareTo(r)
14933 return r
14934 }
14935
14936 // (public) this / a
14937 function bnDivide(a) {
14938 var r = new BigInteger()
14939 this.divRemTo(a, r, null)
14940 return r
14941 }
14942
14943 // (public) this % a
14944 function bnRemainder(a) {
14945 var r = new BigInteger()
14946 this.divRemTo(a, null, r)
14947 return r
14948 }
14949
14950 // (public) [this/a,this%a]
14951 function bnDivideAndRemainder(a) {
14952 var q = new BigInteger(),
14953 r = new BigInteger()
14954 this.divRemTo(a, q, r)
14955 return new Array(q, r)
14956 }
14957
14958 // (protected) this *= n, this >= 0, 1 < n < DV
14959 function bnpDMultiply(n) {
14960 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
14961 ++this.t
14962 this.clamp()
14963 }
14964
14965 // (protected) this += n << w words, this >= 0
14966 function bnpDAddOffset(n, w) {
14967 if (n == 0) return
14968 while (this.t <= w) this[this.t++] = 0
14969 this[w] += n
14970 while (this[w] >= this.DV) {
14971 this[w] -= this.DV
14972 if (++w >= this.t) this[this.t++] = 0
14973 ++this[w]
14974 }
14975 }
14976
14977 // A "null" reducer
14978 function NullExp() {}
14979
14980 function nNop(x) {
14981 return x
14982 }
14983
14984 function nMulTo(x, y, r) {
14985 x.multiplyTo(y, r)
14986 }
14987
14988 function nSqrTo(x, r) {
14989 x.squareTo(r)
14990 }
14991
14992 NullExp.prototype.convert = nNop
14993 NullExp.prototype.revert = nNop
14994 NullExp.prototype.mulTo = nMulTo
14995 NullExp.prototype.sqrTo = nSqrTo
14996
14997 // (public) this^e
14998 function bnPow(e) {
14999 return this.exp(e, new NullExp())
15000 }
15001
15002 // (protected) r = lower n words of "this * a", a.t <= n
15003 // "this" should be the larger one if appropriate.
15004 function bnpMultiplyLowerTo(a, n, r) {
15005 var i = Math.min(this.t + a.t, n)
15006 r.s = 0; // assumes a,this >= 0
15007 r.t = i
15008 while (i > 0) r[--i] = 0
15009 var j
15010 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
15011 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
15012 r.clamp()
15013 }
15014
15015 // (protected) r = "this * a" without lower n words, n > 0
15016 // "this" should be the larger one if appropriate.
15017 function bnpMultiplyUpperTo(a, n, r) {
15018 --n
15019 var i = r.t = this.t + a.t - n
15020 r.s = 0; // assumes a,this >= 0
15021 while (--i >= 0) r[i] = 0
15022 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
15023 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
15024 r.clamp()
15025 r.drShiftTo(1, r)
15026 }
15027
15028 // Barrett modular reduction
15029 function Barrett(m) {
15030 // setup Barrett
15031 this.r2 = new BigInteger()
15032 this.q3 = new BigInteger()
15033 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
15034 this.mu = this.r2.divide(m)
15035 this.m = m
15036 }
15037
15038 function barrettConvert(x) {
15039 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
15040 else if (x.compareTo(this.m) < 0) return x
15041 else {
15042 var r = new BigInteger()
15043 x.copyTo(r)
15044 this.reduce(r)
15045 return r
15046 }
15047 }
15048
15049 function barrettRevert(x) {
15050 return x
15051 }
15052
15053 // x = x mod m (HAC 14.42)
15054 function barrettReduce(x) {
15055 var self = this
15056 x.drShiftTo(self.m.t - 1, self.r2)
15057 if (x.t > self.m.t + 1) {
15058 x.t = self.m.t + 1
15059 x.clamp()
15060 }
15061 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
15062 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
15063 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
15064 x.subTo(self.r2, x)
15065 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
15066 }
15067
15068 // r = x^2 mod m; x != r
15069 function barrettSqrTo(x, r) {
15070 x.squareTo(r)
15071 this.reduce(r)
15072 }
15073
15074 // r = x*y mod m; x,y != r
15075 function barrettMulTo(x, y, r) {
15076 x.multiplyTo(y, r)
15077 this.reduce(r)
15078 }
15079
15080 Barrett.prototype.convert = barrettConvert
15081 Barrett.prototype.revert = barrettRevert
15082 Barrett.prototype.reduce = barrettReduce
15083 Barrett.prototype.mulTo = barrettMulTo
15084 Barrett.prototype.sqrTo = barrettSqrTo
15085
15086 // (public) this^e % m (HAC 14.85)
15087 function bnModPow(e, m) {
15088 var i = e.bitLength(),
15089 k, r = nbv(1),
15090 z
15091 if (i <= 0) return r
15092 else if (i < 18) k = 1
15093 else if (i < 48) k = 3
15094 else if (i < 144) k = 4
15095 else if (i < 768) k = 5
15096 else k = 6
15097 if (i < 8)
15098 z = new Classic(m)
15099 else if (m.isEven())
15100 z = new Barrett(m)
15101 else
15102 z = new Montgomery(m)
15103
15104 // precomputation
15105 var g = new Array(),
15106 n = 3,
15107 k1 = k - 1,
15108 km = (1 << k) - 1
15109 g[1] = z.convert(this)
15110 if (k > 1) {
15111 var g2 = new BigInteger()
15112 z.sqrTo(g[1], g2)
15113 while (n <= km) {
15114 g[n] = new BigInteger()
15115 z.mulTo(g2, g[n - 2], g[n])
15116 n += 2
15117 }
15118 }
15119
15120 var j = e.t - 1,
15121 w, is1 = true,
15122 r2 = new BigInteger(),
15123 t
15124 i = nbits(e[j]) - 1
15125 while (j >= 0) {
15126 if (i >= k1) w = (e[j] >> (i - k1)) & km
15127 else {
15128 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
15129 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
15130 }
15131
15132 n = k
15133 while ((w & 1) == 0) {
15134 w >>= 1
15135 --n
15136 }
15137 if ((i -= n) < 0) {
15138 i += this.DB
15139 --j
15140 }
15141 if (is1) { // ret == 1, don't bother squaring or multiplying it
15142 g[w].copyTo(r)
15143 is1 = false
15144 } else {
15145 while (n > 1) {
15146 z.sqrTo(r, r2)
15147 z.sqrTo(r2, r)
15148 n -= 2
15149 }
15150 if (n > 0) z.sqrTo(r, r2)
15151 else {
15152 t = r
15153 r = r2
15154 r2 = t
15155 }
15156 z.mulTo(r2, g[w], r)
15157 }
15158
15159 while (j >= 0 && (e[j] & (1 << i)) == 0) {
15160 z.sqrTo(r, r2)
15161 t = r
15162 r = r2
15163 r2 = t
15164 if (--i < 0) {
15165 i = this.DB - 1
15166 --j
15167 }
15168 }
15169 }
15170 return z.revert(r)
15171 }
15172
15173 // (public) gcd(this,a) (HAC 14.54)
15174 function bnGCD(a) {
15175 var x = (this.s < 0) ? this.negate() : this.clone()
15176 var y = (a.s < 0) ? a.negate() : a.clone()
15177 if (x.compareTo(y) < 0) {
15178 var t = x
15179 x = y
15180 y = t
15181 }
15182 var i = x.getLowestSetBit(),
15183 g = y.getLowestSetBit()
15184 if (g < 0) return x
15185 if (i < g) g = i
15186 if (g > 0) {
15187 x.rShiftTo(g, x)
15188 y.rShiftTo(g, y)
15189 }
15190 while (x.signum() > 0) {
15191 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
15192 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
15193 if (x.compareTo(y) >= 0) {
15194 x.subTo(y, x)
15195 x.rShiftTo(1, x)
15196 } else {
15197 y.subTo(x, y)
15198 y.rShiftTo(1, y)
15199 }
15200 }
15201 if (g > 0) y.lShiftTo(g, y)
15202 return y
15203 }
15204
15205 // (protected) this % n, n < 2^26
15206 function bnpModInt(n) {
15207 if (n <= 0) return 0
15208 var d = this.DV % n,
15209 r = (this.s < 0) ? n - 1 : 0
15210 if (this.t > 0)
15211 if (d == 0) r = this[0] % n
15212 else
15213 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
15214 return r
15215 }
15216
15217 // (public) 1/this % m (HAC 14.61)
15218 function bnModInverse(m) {
15219 var ac = m.isEven()
15220 if (this.signum() === 0) throw new Error('division by zero')
15221 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
15222 var u = m.clone(),
15223 v = this.clone()
15224 var a = nbv(1),
15225 b = nbv(0),
15226 c = nbv(0),
15227 d = nbv(1)
15228 while (u.signum() != 0) {
15229 while (u.isEven()) {
15230 u.rShiftTo(1, u)
15231 if (ac) {
15232 if (!a.isEven() || !b.isEven()) {
15233 a.addTo(this, a)
15234 b.subTo(m, b)
15235 }
15236 a.rShiftTo(1, a)
15237 } else if (!b.isEven()) b.subTo(m, b)
15238 b.rShiftTo(1, b)
15239 }
15240 while (v.isEven()) {
15241 v.rShiftTo(1, v)
15242 if (ac) {
15243 if (!c.isEven() || !d.isEven()) {
15244 c.addTo(this, c)
15245 d.subTo(m, d)
15246 }
15247 c.rShiftTo(1, c)
15248 } else if (!d.isEven()) d.subTo(m, d)
15249 d.rShiftTo(1, d)
15250 }
15251 if (u.compareTo(v) >= 0) {
15252 u.subTo(v, u)
15253 if (ac) a.subTo(c, a)
15254 b.subTo(d, b)
15255 } else {
15256 v.subTo(u, v)
15257 if (ac) c.subTo(a, c)
15258 d.subTo(b, d)
15259 }
15260 }
15261 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
15262 while (d.compareTo(m) >= 0) d.subTo(m, d)
15263 while (d.signum() < 0) d.addTo(m, d)
15264 return d
15265 }
15266
15267 var lowprimes = [
15268 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
15269 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
15270 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
15271 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
15272 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
15273 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
15274 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
15275 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
15276 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
15277 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
15278 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
15279 ]
15280
15281 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
15282
15283 // (public) test primality with certainty >= 1-.5^t
15284 function bnIsProbablePrime(t) {
15285 var i, x = this.abs()
15286 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
15287 for (i = 0; i < lowprimes.length; ++i)
15288 if (x[0] == lowprimes[i]) return true
15289 return false
15290 }
15291 if (x.isEven()) return false
15292 i = 1
15293 while (i < lowprimes.length) {
15294 var m = lowprimes[i],
15295 j = i + 1
15296 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15297 m = x.modInt(m)
15298 while (i < j) if (m % lowprimes[i++] == 0) return false
15299 }
15300 return x.millerRabin(t)
15301 }
15302
15303 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
15304 function bnpMillerRabin(t) {
15305 var n1 = this.subtract(BigInteger.ONE)
15306 var k = n1.getLowestSetBit()
15307 if (k <= 0) return false
15308 var r = n1.shiftRight(k)
15309 t = (t + 1) >> 1
15310 if (t > lowprimes.length) t = lowprimes.length
15311 var a = new BigInteger(null)
15312 var j, bases = []
15313 for (var i = 0; i < t; ++i) {
15314 for (;;) {
15315 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15316 if (bases.indexOf(j) == -1) break
15317 }
15318 bases.push(j)
15319 a.fromInt(j)
15320 var y = a.modPow(r, this)
15321 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
15322 var j = 1
15323 while (j++ < k && y.compareTo(n1) != 0) {
15324 y = y.modPowInt(2, this)
15325 if (y.compareTo(BigInteger.ONE) == 0) return false
15326 }
15327 if (y.compareTo(n1) != 0) return false
15328 }
15329 }
15330 return true
15331 }
15332
15333 // protected
15334 proto.chunkSize = bnpChunkSize
15335 proto.toRadix = bnpToRadix
15336 proto.fromRadix = bnpFromRadix
15337 proto.fromNumber = bnpFromNumber
15338 proto.bitwiseTo = bnpBitwiseTo
15339 proto.changeBit = bnpChangeBit
15340 proto.addTo = bnpAddTo
15341 proto.dMultiply = bnpDMultiply
15342 proto.dAddOffset = bnpDAddOffset
15343 proto.multiplyLowerTo = bnpMultiplyLowerTo
15344 proto.multiplyUpperTo = bnpMultiplyUpperTo
15345 proto.modInt = bnpModInt
15346 proto.millerRabin = bnpMillerRabin
15347
15348 // public
15349 proto.clone = bnClone
15350 proto.intValue = bnIntValue
15351 proto.byteValue = bnByteValue
15352 proto.shortValue = bnShortValue
15353 proto.signum = bnSigNum
15354 proto.toByteArray = bnToByteArray
15355 proto.equals = bnEquals
15356 proto.min = bnMin
15357 proto.max = bnMax
15358 proto.and = bnAnd
15359 proto.or = bnOr
15360 proto.xor = bnXor
15361 proto.andNot = bnAndNot
15362 proto.not = bnNot
15363 proto.shiftLeft = bnShiftLeft
15364 proto.shiftRight = bnShiftRight
15365 proto.getLowestSetBit = bnGetLowestSetBit
15366 proto.bitCount = bnBitCount
15367 proto.testBit = bnTestBit
15368 proto.setBit = bnSetBit
15369 proto.clearBit = bnClearBit
15370 proto.flipBit = bnFlipBit
15371 proto.add = bnAdd
15372 proto.subtract = bnSubtract
15373 proto.multiply = bnMultiply
15374 proto.divide = bnDivide
15375 proto.remainder = bnRemainder
15376 proto.divideAndRemainder = bnDivideAndRemainder
15377 proto.modPow = bnModPow
15378 proto.modInverse = bnModInverse
15379 proto.pow = bnPow
15380 proto.gcd = bnGCD
15381 proto.isProbablePrime = bnIsProbablePrime
15382
15383 // JSBN-specific extension
15384 proto.square = bnSquare
15385
15386 // constants
15387 BigInteger.ZERO = nbv(0)
15388 BigInteger.ONE = nbv(1)
15389 BigInteger.valueOf = nbv
15390
15391 module.exports = BigInteger
15392
15393 },{"../package.json":38}],36:[function(require,module,exports){
15394 (function (Buffer){
15395 // FIXME: Kind of a weird way to throw exceptions, consider removing
15396 var assert = require('assert')
15397 var BigInteger = require('./bigi')
15398
15399 /**
15400 * Turns a byte array into a big integer.
15401 *
15402 * This function will interpret a byte array as a big integer in big
15403 * endian notation.
15404 */
15405 BigInteger.fromByteArrayUnsigned = function(byteArray) {
15406 // BigInteger expects a DER integer conformant byte array
15407 if (byteArray[0] & 0x80) {
15408 return new BigInteger([0].concat(byteArray))
15409 }
15410
15411 return new BigInteger(byteArray)
15412 }
15413
15414 /**
15415 * Returns a byte array representation of the big integer.
15416 *
15417 * This returns the absolute of the contained value in big endian
15418 * form. A value of zero results in an empty array.
15419 */
15420 BigInteger.prototype.toByteArrayUnsigned = function() {
15421 var byteArray = this.toByteArray()
15422 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
15423 }
15424
15425 BigInteger.fromDERInteger = function(byteArray) {
15426 return new BigInteger(byteArray)
15427 }
15428
15429 /*
15430 * Converts BigInteger to a DER integer representation.
15431 *
15432 * The format for this value uses the most significant bit as a sign
15433 * bit. If the most significant bit is already set and the integer is
15434 * positive, a 0x00 is prepended.
15435 *
15436 * Examples:
15437 *
15438 * 0 => 0x00
15439 * 1 => 0x01
15440 * -1 => 0xff
15441 * 127 => 0x7f
15442 * -127 => 0x81
15443 * 128 => 0x0080
15444 * -128 => 0x80
15445 * 255 => 0x00ff
15446 * -255 => 0xff01
15447 * 16300 => 0x3fac
15448 * -16300 => 0xc054
15449 * 62300 => 0x00f35c
15450 * -62300 => 0xff0ca4
15451 */
15452 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
15453
15454 BigInteger.fromBuffer = function(buffer) {
15455 // BigInteger expects a DER integer conformant byte array
15456 if (buffer[0] & 0x80) {
15457 var byteArray = Array.prototype.slice.call(buffer)
15458
15459 return new BigInteger([0].concat(byteArray))
15460 }
15461
15462 return new BigInteger(buffer)
15463 }
15464
15465 BigInteger.fromHex = function(hex) {
15466 if (hex === '') return BigInteger.ZERO
15467
15468 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
15469 assert.equal(hex.length % 2, 0, 'Incomplete hex')
15470 return new BigInteger(hex, 16)
15471 }
15472
15473 BigInteger.prototype.toBuffer = function(size) {
15474 var byteArray = this.toByteArrayUnsigned()
15475 var zeros = []
15476
15477 var padding = size - byteArray.length
15478 while (zeros.length < padding) zeros.push(0)
15479
15480 return new Buffer(zeros.concat(byteArray))
15481 }
15482
15483 BigInteger.prototype.toHex = function(size) {
15484 return this.toBuffer(size).toString('hex')
15485 }
15486
15487 }).call(this,require("buffer").Buffer)
15488 },{"./bigi":35,"assert":1,"buffer":4}],37:[function(require,module,exports){
15489 var BigInteger = require('./bigi')
15490
15491 //addons
15492 require('./convert')
15493
15494 module.exports = BigInteger
15495 },{"./bigi":35,"./convert":36}],38:[function(require,module,exports){
15496 module.exports={
15497 "_args": [
15498 [
15499 "bigi",
15500 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15501 ]
15502 ],
15503 "_from": "bigi@latest",
15504 "_id": "bigi@1.4.2",
15505 "_inCache": true,
15506 "_installable": true,
15507 "_location": "/bigi",
15508 "_nodeVersion": "6.1.0",
15509 "_npmOperationalInternal": {
15510 "host": "packages-12-west.internal.npmjs.com",
15511 "tmp": "tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15512 },
15513 "_npmUser": {
15514 "email": "jprichardson@gmail.com",
15515 "name": "jprichardson"
15516 },
15517 "_npmVersion": "3.8.6",
15518 "_phantomChildren": {},
15519 "_requested": {
15520 "name": "bigi",
15521 "raw": "bigi",
15522 "rawSpec": "",
15523 "scope": null,
15524 "spec": "latest",
15525 "type": "tag"
15526 },
15527 "_requiredBy": [
15528 "#USER",
15529 "/bitcoinjs-lib",
15530 "/ecurve"
15531 ],
15532 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15533 "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15534 "_shrinkwrap": null,
15535 "_spec": "bigi",
15536 "_where": "/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15537 "bugs": {
15538 "url": "https://github.com/cryptocoinjs/bigi/issues"
15539 },
15540 "dependencies": {},
15541 "description": "Big integers.",
15542 "devDependencies": {
15543 "coveralls": "^2.11.2",
15544 "istanbul": "^0.3.5",
15545 "jshint": "^2.5.1",
15546 "mocha": "^2.1.0",
15547 "mochify": "^2.1.0"
15548 },
15549 "directories": {},
15550 "dist": {
15551 "shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15552 "tarball": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15553 },
15554 "gitHead": "c25308081c896ff84702303722bf5ecd8b3f78e3",
15555 "homepage": "https://github.com/cryptocoinjs/bigi#readme",
15556 "keywords": [
15557 "cryptography",
15558 "math",
15559 "bitcoin",
15560 "arbitrary",
15561 "precision",
15562 "arithmetic",
15563 "big",
15564 "integer",
15565 "int",
15566 "number",
15567 "biginteger",
15568 "bigint",
15569 "bignumber",
15570 "decimal",
15571 "float"
15572 ],
15573 "main": "./lib/index.js",
15574 "maintainers": [
15575 {
15576 "email": "boydb@midnightdesign.ws",
15577 "name": "midnightlightning"
15578 },
15579 {
15580 "email": "sidazhang89@gmail.com",
15581 "name": "sidazhang"
15582 },
15583 {
15584 "email": "npm@shesek.info",
15585 "name": "nadav"
15586 },
15587 {
15588 "email": "jprichardson@gmail.com",
15589 "name": "jprichardson"
15590 }
15591 ],
15592 "name": "bigi",
15593 "optionalDependencies": {},
15594 "readme": "ERROR: No README data found!",
15595 "repository": {
15596 "type": "git",
15597 "url": "git+https://github.com/cryptocoinjs/bigi.git"
15598 },
15599 "scripts": {
15600 "browser-test": "mochify --wd -R spec",
15601 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15602 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15603 "jshint": "jshint --config jshint.json lib/*.js ; true",
15604 "test": "_mocha -- test/*.js",
15605 "unit": "mocha"
15606 },
15607 "testling": {
15608 "browsers": [
15609 "ie/9..latest",
15610 "firefox/latest",
15611 "chrome/latest",
15612 "safari/6.0..latest",
15613 "iphone/6.0..latest",
15614 "android-browser/4.2..latest"
15615 ],
15616 "files": "test/*.js",
15617 "harness": "mocha"
15618 },
15619 "version": "1.4.2"
15620 }
15621
15622 },{}],39:[function(require,module,exports){
15623 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
15624 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15625 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
15626
15627 var Buffer = require('safe-buffer').Buffer
15628
15629 function check (buffer) {
15630 if (buffer.length < 8) return false
15631 if (buffer.length > 72) return false
15632 if (buffer[0] !== 0x30) return false
15633 if (buffer[1] !== buffer.length - 2) return false
15634 if (buffer[2] !== 0x02) return false
15635
15636 var lenR = buffer[3]
15637 if (lenR === 0) return false
15638 if (5 + lenR >= buffer.length) return false
15639 if (buffer[4 + lenR] !== 0x02) return false
15640
15641 var lenS = buffer[5 + lenR]
15642 if (lenS === 0) return false
15643 if ((6 + lenR + lenS) !== buffer.length) return false
15644
15645 if (buffer[4] & 0x80) return false
15646 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
15647
15648 if (buffer[lenR + 6] & 0x80) return false
15649 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
15650 return true
15651 }
15652
15653 function decode (buffer) {
15654 if (buffer.length < 8) throw new Error('DER sequence length is too short')
15655 if (buffer.length > 72) throw new Error('DER sequence length is too long')
15656 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
15657 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
15658 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
15659
15660 var lenR = buffer[3]
15661 if (lenR === 0) throw new Error('R length is zero')
15662 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
15663 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
15664
15665 var lenS = buffer[5 + lenR]
15666 if (lenS === 0) throw new Error('S length is zero')
15667 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
15668
15669 if (buffer[4] & 0x80) throw new Error('R value is negative')
15670 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
15671
15672 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
15673 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
15674
15675 // non-BIP66 - extract R, S values
15676 return {
15677 r: buffer.slice(4, 4 + lenR),
15678 s: buffer.slice(6 + lenR)
15679 }
15680 }
15681
15682 /*
15683 * Expects r and s to be positive DER integers.
15684 *
15685 * The DER format uses the most significant bit as a sign bit (& 0x80).
15686 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
15687 *
15688 * Examples:
15689 *
15690 * 0 => 0x00
15691 * 1 => 0x01
15692 * -1 => 0xff
15693 * 127 => 0x7f
15694 * -127 => 0x81
15695 * 128 => 0x0080
15696 * -128 => 0x80
15697 * 255 => 0x00ff
15698 * -255 => 0xff01
15699 * 16300 => 0x3fac
15700 * -16300 => 0xc054
15701 * 62300 => 0x00f35c
15702 * -62300 => 0xff0ca4
15703 */
15704 function encode (r, s) {
15705 var lenR = r.length
15706 var lenS = s.length
15707 if (lenR === 0) throw new Error('R length is zero')
15708 if (lenS === 0) throw new Error('S length is zero')
15709 if (lenR > 33) throw new Error('R length is too long')
15710 if (lenS > 33) throw new Error('S length is too long')
15711 if (r[0] & 0x80) throw new Error('R value is negative')
15712 if (s[0] & 0x80) throw new Error('S value is negative')
15713 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
15714 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
15715
15716 var signature = Buffer.allocUnsafe(6 + lenR + lenS)
15717
15718 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15719 signature[0] = 0x30
15720 signature[1] = signature.length - 2
15721 signature[2] = 0x02
15722 signature[3] = r.length
15723 r.copy(signature, 4)
15724 signature[4 + lenR] = 0x02
15725 signature[5 + lenR] = s.length
15726 s.copy(signature, 6 + lenR)
15727
15728 return signature
15729 }
15730
15731 module.exports = {
15732 check: check,
15733 decode: decode,
15734 encode: encode
15735 }
15736
15737 },{"safe-buffer":98}],40:[function(require,module,exports){
15738 module.exports={
15739 "OP_FALSE": 0,
15740 "OP_0": 0,
15741 "OP_PUSHDATA1": 76,
15742 "OP_PUSHDATA2": 77,
15743 "OP_PUSHDATA4": 78,
15744 "OP_1NEGATE": 79,
15745 "OP_RESERVED": 80,
15746 "OP_1": 81,
15747 "OP_TRUE": 81,
15748 "OP_2": 82,
15749 "OP_3": 83,
15750 "OP_4": 84,
15751 "OP_5": 85,
15752 "OP_6": 86,
15753 "OP_7": 87,
15754 "OP_8": 88,
15755 "OP_9": 89,
15756 "OP_10": 90,
15757 "OP_11": 91,
15758 "OP_12": 92,
15759 "OP_13": 93,
15760 "OP_14": 94,
15761 "OP_15": 95,
15762 "OP_16": 96,
15763
15764 "OP_NOP": 97,
15765 "OP_VER": 98,
15766 "OP_IF": 99,
15767 "OP_NOTIF": 100,
15768 "OP_VERIF": 101,
15769 "OP_VERNOTIF": 102,
15770 "OP_ELSE": 103,
15771 "OP_ENDIF": 104,
15772 "OP_VERIFY": 105,
15773 "OP_RETURN": 106,
15774
15775 "OP_TOALTSTACK": 107,
15776 "OP_FROMALTSTACK": 108,
15777 "OP_2DROP": 109,
15778 "OP_2DUP": 110,
15779 "OP_3DUP": 111,
15780 "OP_2OVER": 112,
15781 "OP_2ROT": 113,
15782 "OP_2SWAP": 114,
15783 "OP_IFDUP": 115,
15784 "OP_DEPTH": 116,
15785 "OP_DROP": 117,
15786 "OP_DUP": 118,
15787 "OP_NIP": 119,
15788 "OP_OVER": 120,
15789 "OP_PICK": 121,
15790 "OP_ROLL": 122,
15791 "OP_ROT": 123,
15792 "OP_SWAP": 124,
15793 "OP_TUCK": 125,
15794
15795 "OP_CAT": 126,
15796 "OP_SUBSTR": 127,
15797 "OP_LEFT": 128,
15798 "OP_RIGHT": 129,
15799 "OP_SIZE": 130,
15800
15801 "OP_INVERT": 131,
15802 "OP_AND": 132,
15803 "OP_OR": 133,
15804 "OP_XOR": 134,
15805 "OP_EQUAL": 135,
15806 "OP_EQUALVERIFY": 136,
15807 "OP_RESERVED1": 137,
15808 "OP_RESERVED2": 138,
15809
15810 "OP_1ADD": 139,
15811 "OP_1SUB": 140,
15812 "OP_2MUL": 141,
15813 "OP_2DIV": 142,
15814 "OP_NEGATE": 143,
15815 "OP_ABS": 144,
15816 "OP_NOT": 145,
15817 "OP_0NOTEQUAL": 146,
15818 "OP_ADD": 147,
15819 "OP_SUB": 148,
15820 "OP_MUL": 149,
15821 "OP_DIV": 150,
15822 "OP_MOD": 151,
15823 "OP_LSHIFT": 152,
15824 "OP_RSHIFT": 153,
15825
15826 "OP_BOOLAND": 154,
15827 "OP_BOOLOR": 155,
15828 "OP_NUMEQUAL": 156,
15829 "OP_NUMEQUALVERIFY": 157,
15830 "OP_NUMNOTEQUAL": 158,
15831 "OP_LESSTHAN": 159,
15832 "OP_GREATERTHAN": 160,
15833 "OP_LESSTHANOREQUAL": 161,
15834 "OP_GREATERTHANOREQUAL": 162,
15835 "OP_MIN": 163,
15836 "OP_MAX": 164,
15837
15838 "OP_WITHIN": 165,
15839
15840 "OP_RIPEMD160": 166,
15841 "OP_SHA1": 167,
15842 "OP_SHA256": 168,
15843 "OP_HASH160": 169,
15844 "OP_HASH256": 170,
15845 "OP_CODESEPARATOR": 171,
15846 "OP_CHECKSIG": 172,
15847 "OP_CHECKSIGVERIFY": 173,
15848 "OP_CHECKMULTISIG": 174,
15849 "OP_CHECKMULTISIGVERIFY": 175,
15850
15851 "OP_NOP1": 176,
15852 "OP_NOP2": 177,
15853 "OP_CHECKLOCKTIMEVERIFY": 177,
15854
15855 "OP_NOP3": 178,
15856 "OP_NOP4": 179,
15857 "OP_NOP5": 180,
15858 "OP_NOP6": 181,
15859 "OP_NOP7": 182,
15860 "OP_NOP8": 183,
15861 "OP_NOP9": 184,
15862 "OP_NOP10": 185,
15863
15864 "OP_PUBKEYHASH": 253,
15865 "OP_PUBKEY": 254,
15866 "OP_INVALIDOPCODE": 255
15867 }
15868
15869 },{}],41:[function(require,module,exports){
15870 var OPS = require('./index.json')
15871
15872 var map = {}
15873 for (var op in OPS) {
15874 var code = OPS[op]
15875 map[code] = op
15876 }
15877
15878 module.exports = map
15879
15880 },{"./index.json":40}],42:[function(require,module,exports){
15881 var Buffer = require('safe-buffer').Buffer
15882 var bs58check = require('bs58check')
15883 var bscript = require('./script')
15884 var networks = require('./networks')
15885 var typeforce = require('typeforce')
15886 var types = require('./types')
15887
15888 function fromBase58Check (address) {
15889 var payload = bs58check.decode(address)
15890 if (payload.length < 21) throw new TypeError(address + ' is too short')
15891 if (payload.length > 21) throw new TypeError(address + ' is too long')
15892
15893 var version = payload.readUInt8(0)
15894 var hash = payload.slice(1)
15895
15896 return { hash: hash, version: version }
15897 }
15898
15899 function toBase58Check (hash, version) {
15900 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
15901
15902 var payload = Buffer.allocUnsafe(21)
15903 payload.writeUInt8(version, 0)
15904 hash.copy(payload, 1)
15905
15906 return bs58check.encode(payload)
15907 }
15908
15909 function fromOutputScript (outputScript, network) {
15910 network = network || networks.bitcoin
15911
15912 if (bscript.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash)
15913 if (bscript.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash)
15914
15915 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
15916 }
15917
15918 function toOutputScript (address, network) {
15919 network = network || networks.bitcoin
15920
15921 var decode = fromBase58Check(address)
15922 if (decode.version === network.pubKeyHash) return bscript.pubKeyHash.output.encode(decode.hash)
15923 if (decode.version === network.scriptHash) return bscript.scriptHash.output.encode(decode.hash)
15924
15925 throw new Error(address + ' has no matching Script')
15926 }
15927
15928 module.exports = {
15929 fromBase58Check: fromBase58Check,
15930 fromOutputScript: fromOutputScript,
15931 toBase58Check: toBase58Check,
15932 toOutputScript: toOutputScript
15933 }
15934
15935 },{"./networks":51,"./script":52,"./types":78,"bs58check":80,"safe-buffer":98,"typeforce":109}],43:[function(require,module,exports){
15936 var Buffer = require('safe-buffer').Buffer
15937 var bcrypto = require('./crypto')
15938 var fastMerkleRoot = require('merkle-lib/fastRoot')
15939 var typeforce = require('typeforce')
15940 var types = require('./types')
15941 var varuint = require('varuint-bitcoin')
15942
15943 var Transaction = require('./transaction')
15944
15945 function Block () {
15946 this.version = 1
15947 this.prevHash = null
15948 this.merkleRoot = null
15949 this.timestamp = 0
15950 this.bits = 0
15951 this.nonce = 0
15952 }
15953
15954 Block.fromBuffer = function (buffer) {
15955 if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)')
15956
15957 var offset = 0
15958 function readSlice (n) {
15959 offset += n
15960 return buffer.slice(offset - n, offset)
15961 }
15962
15963 function readUInt32 () {
15964 var i = buffer.readUInt32LE(offset)
15965 offset += 4
15966 return i
15967 }
15968
15969 function readInt32 () {
15970 var i = buffer.readInt32LE(offset)
15971 offset += 4
15972 return i
15973 }
15974
15975 var block = new Block()
15976 block.version = readInt32()
15977 block.prevHash = readSlice(32)
15978 block.merkleRoot = readSlice(32)
15979 block.timestamp = readUInt32()
15980 block.bits = readUInt32()
15981 block.nonce = readUInt32()
15982
15983 if (buffer.length === 80) return block
15984
15985 function readVarInt () {
15986 var vi = varuint.decode(buffer, offset)
15987 offset += varuint.decode.bytes
15988 return vi
15989 }
15990
15991 function readTransaction () {
15992 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
15993 offset += tx.byteLength()
15994 return tx
15995 }
15996
15997 var nTransactions = readVarInt()
15998 block.transactions = []
15999
16000 for (var i = 0; i < nTransactions; ++i) {
16001 var tx = readTransaction()
16002 block.transactions.push(tx)
16003 }
16004
16005 return block
16006 }
16007
16008 Block.prototype.byteLength = function (headersOnly) {
16009 if (headersOnly || !this.transactions) return 80
16010
16011 return 80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
16012 return a + x.byteLength()
16013 }, 0)
16014 }
16015
16016 Block.fromHex = function (hex) {
16017 return Block.fromBuffer(Buffer.from(hex, 'hex'))
16018 }
16019
16020 Block.prototype.getHash = function () {
16021 return bcrypto.hash256(this.toBuffer(true))
16022 }
16023
16024 Block.prototype.getId = function () {
16025 return this.getHash().reverse().toString('hex')
16026 }
16027
16028 Block.prototype.getUTCDate = function () {
16029 var date = new Date(0) // epoch
16030 date.setUTCSeconds(this.timestamp)
16031
16032 return date
16033 }
16034
16035 // TODO: buffer, offset compatibility
16036 Block.prototype.toBuffer = function (headersOnly) {
16037 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16038
16039 var offset = 0
16040 function writeSlice (slice) {
16041 slice.copy(buffer, offset)
16042 offset += slice.length
16043 }
16044
16045 function writeInt32 (i) {
16046 buffer.writeInt32LE(i, offset)
16047 offset += 4
16048 }
16049 function writeUInt32 (i) {
16050 buffer.writeUInt32LE(i, offset)
16051 offset += 4
16052 }
16053
16054 writeInt32(this.version)
16055 writeSlice(this.prevHash)
16056 writeSlice(this.merkleRoot)
16057 writeUInt32(this.timestamp)
16058 writeUInt32(this.bits)
16059 writeUInt32(this.nonce)
16060
16061 if (headersOnly || !this.transactions) return buffer
16062
16063 varuint.encode(this.transactions.length, buffer, offset)
16064 offset += varuint.encode.bytes
16065
16066 this.transactions.forEach(function (tx) {
16067 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16068 tx.toBuffer(buffer, offset)
16069 offset += txSize
16070 })
16071
16072 return buffer
16073 }
16074
16075 Block.prototype.toHex = function (headersOnly) {
16076 return this.toBuffer(headersOnly).toString('hex')
16077 }
16078
16079 Block.calculateTarget = function (bits) {
16080 var exponent = ((bits & 0xff000000) >> 24) - 3
16081 var mantissa = bits & 0x007fffff
16082 var target = Buffer.alloc(32, 0)
16083 target.writeUInt32BE(mantissa, 28 - exponent)
16084 return target
16085 }
16086
16087 Block.calculateMerkleRoot = function (transactions) {
16088 typeforce([{ getHash: types.Function }], transactions)
16089 if (transactions.length === 0) throw TypeError('Cannot compute merkle root for zero transactions')
16090
16091 var hashes = transactions.map(function (transaction) {
16092 return transaction.getHash()
16093 })
16094
16095 return fastMerkleRoot(hashes, bcrypto.hash256)
16096 }
16097
16098 Block.prototype.checkMerkleRoot = function () {
16099 if (!this.transactions) return false
16100
16101 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16102 return this.merkleRoot.compare(actualMerkleRoot) === 0
16103 }
16104
16105 Block.prototype.checkProofOfWork = function () {
16106 var hash = this.getHash().reverse()
16107 var target = Block.calculateTarget(this.bits)
16108
16109 return hash.compare(target) <= 0
16110 }
16111
16112 module.exports = Block
16113
16114 },{"./crypto":45,"./transaction":76,"./types":78,"merkle-lib/fastRoot":94,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],44:[function(require,module,exports){
16115 var pushdata = require('pushdata-bitcoin')
16116 var varuint = require('varuint-bitcoin')
16117
16118 // https://github.com/feross/buffer/blob/master/index.js#L1127
16119 function verifuint (value, max) {
16120 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16121 if (value < 0) throw new Error('specified a negative value for writing an unsigned value')
16122 if (value > max) throw new Error('RangeError: value out of range')
16123 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
16124 }
16125
16126 function readUInt64LE (buffer, offset) {
16127 var a = buffer.readUInt32LE(offset)
16128 var b = buffer.readUInt32LE(offset + 4)
16129 b *= 0x100000000
16130
16131 verifuint(b + a, 0x001fffffffffffff)
16132
16133 return b + a
16134 }
16135
16136 function writeUInt64LE (buffer, value, offset) {
16137 verifuint(value, 0x001fffffffffffff)
16138
16139 buffer.writeInt32LE(value & -1, offset)
16140 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16141 return offset + 8
16142 }
16143
16144 // TODO: remove in 4.0.0?
16145 function readVarInt (buffer, offset) {
16146 var result = varuint.decode(buffer, offset)
16147
16148 return {
16149 number: result,
16150 size: varuint.decode.bytes
16151 }
16152 }
16153
16154 // TODO: remove in 4.0.0?
16155 function writeVarInt (buffer, number, offset) {
16156 varuint.encode(number, buffer, offset)
16157 return varuint.encode.bytes
16158 }
16159
16160 module.exports = {
16161 pushDataSize: pushdata.encodingLength,
16162 readPushDataInt: pushdata.decode,
16163 readUInt64LE: readUInt64LE,
16164 readVarInt: readVarInt,
16165 varIntBuffer: varuint.encode,
16166 varIntSize: varuint.encodingLength,
16167 writePushDataInt: pushdata.encode,
16168 writeUInt64LE: writeUInt64LE,
16169 writeVarInt: writeVarInt
16170 }
16171
16172 },{"pushdata-bitcoin":95,"varuint-bitcoin":111}],45:[function(require,module,exports){
16173 var createHash = require('create-hash')
16174
16175 function ripemd160 (buffer) {
16176 return createHash('rmd160').update(buffer).digest()
16177 }
16178
16179 function sha1 (buffer) {
16180 return createHash('sha1').update(buffer).digest()
16181 }
16182
16183 function sha256 (buffer) {
16184 return createHash('sha256').update(buffer).digest()
16185 }
16186
16187 function hash160 (buffer) {
16188 return ripemd160(sha256(buffer))
16189 }
16190
16191 function hash256 (buffer) {
16192 return sha256(sha256(buffer))
16193 }
16194
16195 module.exports = {
16196 hash160: hash160,
16197 hash256: hash256,
16198 ripemd160: ripemd160,
16199 sha1: sha1,
16200 sha256: sha256
16201 }
16202
16203 },{"create-hash":82}],46:[function(require,module,exports){
16204 var Buffer = require('safe-buffer').Buffer
16205 var createHmac = require('create-hmac')
16206 var typeforce = require('typeforce')
16207 var types = require('./types')
16208
16209 var BigInteger = require('bigi')
16210 var ECSignature = require('./ecsignature')
16211
16212 var ZERO = Buffer.alloc(1, 0)
16213 var ONE = Buffer.alloc(1, 1)
16214
16215 var ecurve = require('ecurve')
16216 var secp256k1 = ecurve.getCurveByName('secp256k1')
16217
16218 // https://tools.ietf.org/html/rfc6979#section-3.2
16219 function deterministicGenerateK (hash, x, checkSig) {
16220 typeforce(types.tuple(
16221 types.Hash256bit,
16222 types.Buffer256bit,
16223 types.Function
16224 ), arguments)
16225
16226 // Step A, ignored as hash already provided
16227 // Step B
16228 // Step C
16229 var k = Buffer.alloc(32, 0)
16230 var v = Buffer.alloc(32, 1)
16231
16232 // Step D
16233 k = createHmac('sha256', k)
16234 .update(v)
16235 .update(ZERO)
16236 .update(x)
16237 .update(hash)
16238 .digest()
16239
16240 // Step E
16241 v = createHmac('sha256', k).update(v).digest()
16242
16243 // Step F
16244 k = createHmac('sha256', k)
16245 .update(v)
16246 .update(ONE)
16247 .update(x)
16248 .update(hash)
16249 .digest()
16250
16251 // Step G
16252 v = createHmac('sha256', k).update(v).digest()
16253
16254 // Step H1/H2a, ignored as tlen === qlen (256 bit)
16255 // Step H2b
16256 v = createHmac('sha256', k).update(v).digest()
16257
16258 var T = BigInteger.fromBuffer(v)
16259
16260 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
16261 while (T.signum() <= 0 || T.compareTo(secp256k1.n) >= 0 || !checkSig(T)) {
16262 k = createHmac('sha256', k)
16263 .update(v)
16264 .update(ZERO)
16265 .digest()
16266
16267 v = createHmac('sha256', k).update(v).digest()
16268
16269 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
16270 // Step H2b again
16271 v = createHmac('sha256', k).update(v).digest()
16272 T = BigInteger.fromBuffer(v)
16273 }
16274
16275 return T
16276 }
16277
16278 var N_OVER_TWO = secp256k1.n.shiftRight(1)
16279
16280 function sign (hash, d) {
16281 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
16282
16283 var x = d.toBuffer(32)
16284 var e = BigInteger.fromBuffer(hash)
16285 var n = secp256k1.n
16286 var G = secp256k1.G
16287
16288 var r, s
16289 deterministicGenerateK(hash, x, function (k) {
16290 var Q = G.multiply(k)
16291
16292 if (secp256k1.isInfinity(Q)) return false
16293
16294 r = Q.affineX.mod(n)
16295 if (r.signum() === 0) return false
16296
16297 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16298 if (s.signum() === 0) return false
16299
16300 return true
16301 })
16302
16303 // enforce low S values, see bip62: 'low s values in signatures'
16304 if (s.compareTo(N_OVER_TWO) > 0) {
16305 s = n.subtract(s)
16306 }
16307
16308 return new ECSignature(r, s)
16309 }
16310
16311 function verify (hash, signature, Q) {
16312 typeforce(types.tuple(
16313 types.Hash256bit,
16314 types.ECSignature,
16315 types.ECPoint
16316 ), arguments)
16317
16318 var n = secp256k1.n
16319 var G = secp256k1.G
16320
16321 var r = signature.r
16322 var s = signature.s
16323
16324 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
16325 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
16326 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
16327
16328 // 1.4.2 H = Hash(M), already done by the user
16329 // 1.4.3 e = H
16330 var e = BigInteger.fromBuffer(hash)
16331
16332 // Compute s^-1
16333 var sInv = s.modInverse(n)
16334
16335 // 1.4.4 Compute u1 = es^−1 mod n
16336 // u2 = rs^−1 mod n
16337 var u1 = e.multiply(sInv).mod(n)
16338 var u2 = r.multiply(sInv).mod(n)
16339
16340 // 1.4.5 Compute R = (xR, yR)
16341 // R = u1G + u2Q
16342 var R = G.multiplyTwo(u1, Q, u2)
16343
16344 // 1.4.5 (cont.) Enforce R is not at infinity
16345 if (secp256k1.isInfinity(R)) return false
16346
16347 // 1.4.6 Convert the field element R.x to an integer
16348 var xR = R.affineX
16349
16350 // 1.4.7 Set v = xR mod n
16351 var v = xR.mod(n)
16352
16353 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16354 return v.equals(r)
16355 }
16356
16357 module.exports = {
16358 deterministicGenerateK: deterministicGenerateK,
16359 sign: sign,
16360 verify: verify,
16361
16362 // TODO: remove
16363 __curve: secp256k1
16364 }
16365
16366 },{"./ecsignature":48,"./types":78,"bigi":37,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],47:[function(require,module,exports){
16367 var baddress = require('./address')
16368 var bcrypto = require('./crypto')
16369 var ecdsa = require('./ecdsa')
16370 var randomBytes = require('randombytes')
16371 var typeforce = require('typeforce')
16372 var types = require('./types')
16373 var wif = require('wif')
16374
16375 var NETWORKS = require('./networks')
16376 var BigInteger = require('bigi')
16377
16378 var ecurve = require('ecurve')
16379 var secp256k1 = ecdsa.__curve
16380
16381 function ECPair (d, Q, options) {
16382 if (options) {
16383 typeforce({
16384 compressed: types.maybe(types.Boolean),
16385 network: types.maybe(types.Network)
16386 }, options)
16387 }
16388
16389 options = options || {}
16390
16391 if (d) {
16392 if (d.signum() <= 0) throw new Error('Private key must be greater than 0')
16393 if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order')
16394 if (Q) throw new TypeError('Unexpected publicKey parameter')
16395
16396 this.d = d
16397 } else {
16398 typeforce(types.ECPoint, Q)
16399
16400 this.__Q = Q
16401 }
16402
16403 this.compressed = options.compressed === undefined ? true : options.compressed
16404 this.network = options.network || NETWORKS.bitcoin
16405 }
16406
16407 Object.defineProperty(ECPair.prototype, 'Q', {
16408 get: function () {
16409 if (!this.__Q && this.d) {
16410 this.__Q = secp256k1.G.multiply(this.d)
16411 }
16412
16413 return this.__Q
16414 }
16415 })
16416
16417 ECPair.fromPublicKeyBuffer = function (buffer, network) {
16418 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
16419
16420 return new ECPair(null, Q, {
16421 compressed: Q.compressed,
16422 network: network
16423 })
16424 }
16425
16426 ECPair.fromWIF = function (string, network) {
16427 var decoded = wif.decode(string)
16428 var version = decoded.version
16429
16430 // list of networks?
16431 if (types.Array(network)) {
16432 network = network.filter(function (x) {
16433 return version === x.wif
16434 }).pop()
16435
16436 if (!network) throw new Error('Unknown network version')
16437
16438 // otherwise, assume a network object (or default to bitcoin)
16439 } else {
16440 network = network || NETWORKS.bitcoin
16441
16442 if (version !== network.wif) throw new Error('Invalid network version')
16443 }
16444
16445 var d = BigInteger.fromBuffer(decoded.privateKey)
16446
16447 return new ECPair(d, null, {
16448 compressed: decoded.compressed,
16449 network: network
16450 })
16451 }
16452
16453 ECPair.makeRandom = function (options) {
16454 options = options || {}
16455
16456 var rng = options.rng || randomBytes
16457
16458 var d
16459 do {
16460 var buffer = rng(32)
16461 typeforce(types.Buffer256bit, buffer)
16462
16463 d = BigInteger.fromBuffer(buffer)
16464 } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0)
16465
16466 return new ECPair(d, null, options)
16467 }
16468
16469 ECPair.prototype.getAddress = function () {
16470 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
16471 }
16472
16473 ECPair.prototype.getNetwork = function () {
16474 return this.network
16475 }
16476
16477 ECPair.prototype.getPublicKeyBuffer = function () {
16478 return this.Q.getEncoded(this.compressed)
16479 }
16480
16481 ECPair.prototype.sign = function (hash) {
16482 if (!this.d) throw new Error('Missing private key')
16483
16484 return ecdsa.sign(hash, this.d)
16485 }
16486
16487 ECPair.prototype.toWIF = function () {
16488 if (!this.d) throw new Error('Missing private key')
16489
16490 return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed)
16491 }
16492
16493 ECPair.prototype.verify = function (hash, signature) {
16494 return ecdsa.verify(hash, signature, this.Q)
16495 }
16496
16497 module.exports = ECPair
16498
16499 },{"./address":42,"./crypto":45,"./ecdsa":46,"./networks":51,"./types":78,"bigi":37,"ecurve":89,"randombytes":96,"typeforce":109,"wif":112}],48:[function(require,module,exports){
16500 (function (Buffer){
16501 var bip66 = require('bip66')
16502 var typeforce = require('typeforce')
16503 var types = require('./types')
16504
16505 var BigInteger = require('bigi')
16506
16507 function ECSignature (r, s) {
16508 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
16509
16510 this.r = r
16511 this.s = s
16512 }
16513
16514 ECSignature.parseCompact = function (buffer) {
16515 if (buffer.length !== 65) throw new Error('Invalid signature length')
16516
16517 var flagByte = buffer.readUInt8(0) - 27
16518 if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter')
16519
16520 var compressed = !!(flagByte & 4)
16521 var recoveryParam = flagByte & 3
16522
16523 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
16524 var s = BigInteger.fromBuffer(buffer.slice(33))
16525
16526 return {
16527 compressed: compressed,
16528 i: recoveryParam,
16529 signature: new ECSignature(r, s)
16530 }
16531 }
16532
16533 ECSignature.fromDER = function (buffer) {
16534 var decode = bip66.decode(buffer)
16535 var r = BigInteger.fromDERInteger(decode.r)
16536 var s = BigInteger.fromDERInteger(decode.s)
16537
16538 return new ECSignature(r, s)
16539 }
16540
16541 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
16542 ECSignature.parseScriptSignature = function (buffer) {
16543 var hashType = buffer.readUInt8(buffer.length - 1)
16544 var hashTypeMod = hashType & ~0x80
16545
16546 if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType)
16547
16548 return {
16549 signature: ECSignature.fromDER(buffer.slice(0, -1)),
16550 hashType: hashType
16551 }
16552 }
16553
16554 ECSignature.prototype.toCompact = function (i, compressed) {
16555 if (compressed) {
16556 i += 4
16557 }
16558
16559 i += 27
16560
16561 var buffer = Buffer.alloc(65)
16562 buffer.writeUInt8(i, 0)
16563 this.r.toBuffer(32).copy(buffer, 1)
16564 this.s.toBuffer(32).copy(buffer, 33)
16565
16566 return buffer
16567 }
16568
16569 ECSignature.prototype.toDER = function () {
16570 var r = Buffer.from(this.r.toDERInteger())
16571 var s = Buffer.from(this.s.toDERInteger())
16572
16573 return bip66.encode(r, s)
16574 }
16575
16576 ECSignature.prototype.toScriptSignature = function (hashType) {
16577 var hashTypeMod = hashType & ~0x80
16578 if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType)
16579
16580 var hashTypeBuffer = Buffer.alloc(1)
16581 hashTypeBuffer.writeUInt8(hashType, 0)
16582
16583 return Buffer.concat([this.toDER(), hashTypeBuffer])
16584 }
16585
16586 module.exports = ECSignature
16587
16588 }).call(this,require("buffer").Buffer)
16589 },{"./types":78,"bigi":37,"bip66":39,"buffer":4,"typeforce":109}],49:[function(require,module,exports){
16590 var Buffer = require('safe-buffer').Buffer
16591 var base58check = require('bs58check')
16592 var bcrypto = require('./crypto')
16593 var createHmac = require('create-hmac')
16594 var typeforce = require('typeforce')
16595 var types = require('./types')
16596 var NETWORKS = require('./networks')
16597
16598 var BigInteger = require('bigi')
16599 var ECPair = require('./ecpair')
16600
16601 var ecurve = require('ecurve')
16602 var curve = ecurve.getCurveByName('secp256k1')
16603
16604 function HDNode (keyPair, chainCode) {
16605 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16606
16607 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16608
16609 this.keyPair = keyPair
16610 this.chainCode = chainCode
16611 this.depth = 0
16612 this.index = 0
16613 this.parentFingerprint = 0x00000000
16614 }
16615
16616 HDNode.HIGHEST_BIT = 0x80000000
16617 HDNode.LENGTH = 78
16618 HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
16619
16620 HDNode.fromSeedBuffer = function (seed, network) {
16621 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
16622
16623 if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits')
16624 if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits')
16625
16626 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16627 var IL = I.slice(0, 32)
16628 var IR = I.slice(32)
16629
16630 // In case IL is 0 or >= n, the master key is invalid
16631 // This is handled by the ECPair constructor
16632 var pIL = BigInteger.fromBuffer(IL)
16633 var keyPair = new ECPair(pIL, null, {
16634 network: network
16635 })
16636
16637 return new HDNode(keyPair, IR)
16638 }
16639
16640 HDNode.fromSeedHex = function (hex, network) {
16641 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
16642 }
16643
16644 HDNode.fromBase58 = function (string, networks) {
16645 var buffer = base58check.decode(string)
16646 if (buffer.length !== 78) throw new Error('Invalid buffer length')
16647
16648 // 4 bytes: version bytes
16649 var version = buffer.readUInt32BE(0)
16650 var network
16651
16652 // list of networks?
16653 if (Array.isArray(networks)) {
16654 network = networks.filter(function (x) {
16655 return version === x.bip32.private ||
16656 version === x.bip32.public
16657 }).pop()
16658
16659 if (!network) throw new Error('Unknown network version')
16660
16661 // otherwise, assume a network object (or default to bitcoin)
16662 } else {
16663 network = networks || NETWORKS.bitcoin
16664 }
16665
16666 if (version !== network.bip32.private &&
16667 version !== network.bip32.public) throw new Error('Invalid network version')
16668
16669 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
16670 var depth = buffer[4]
16671
16672 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16673 var parentFingerprint = buffer.readUInt32BE(5)
16674 if (depth === 0) {
16675 if (parentFingerprint !== 0x00000000) throw new Error('Invalid parent fingerprint')
16676 }
16677
16678 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16679 // This is encoded in MSB order. (0x00000000 if master key)
16680 var index = buffer.readUInt32BE(9)
16681 if (depth === 0 && index !== 0) throw new Error('Invalid index')
16682
16683 // 32 bytes: the chain code
16684 var chainCode = buffer.slice(13, 45)
16685 var keyPair
16686
16687 // 33 bytes: private key data (0x00 + k)
16688 if (version === network.bip32.private) {
16689 if (buffer.readUInt8(45) !== 0x00) throw new Error('Invalid private key')
16690
16691 var d = BigInteger.fromBuffer(buffer.slice(46, 78))
16692 keyPair = new ECPair(d, null, { network: network })
16693
16694 // 33 bytes: public key data (0x02 + X or 0x03 + X)
16695 } else {
16696 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(45, 78))
16697 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16698
16699 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16700 // If not, the extended public key is invalid.
16701 curve.validate(Q)
16702
16703 keyPair = new ECPair(null, Q, { network: network })
16704 }
16705
16706 var hd = new HDNode(keyPair, chainCode)
16707 hd.depth = depth
16708 hd.index = index
16709 hd.parentFingerprint = parentFingerprint
16710
16711 return hd
16712 }
16713
16714 HDNode.prototype.getAddress = function () {
16715 return this.keyPair.getAddress()
16716 }
16717
16718 HDNode.prototype.getIdentifier = function () {
16719 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16720 }
16721
16722 HDNode.prototype.getFingerprint = function () {
16723 return this.getIdentifier().slice(0, 4)
16724 }
16725
16726 HDNode.prototype.getNetwork = function () {
16727 return this.keyPair.getNetwork()
16728 }
16729
16730 HDNode.prototype.getPublicKeyBuffer = function () {
16731 return this.keyPair.getPublicKeyBuffer()
16732 }
16733
16734 HDNode.prototype.neutered = function () {
16735 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16736 network: this.keyPair.network
16737 })
16738
16739 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16740 neutered.depth = this.depth
16741 neutered.index = this.index
16742 neutered.parentFingerprint = this.parentFingerprint
16743
16744 return neutered
16745 }
16746
16747 HDNode.prototype.sign = function (hash) {
16748 return this.keyPair.sign(hash)
16749 }
16750
16751 HDNode.prototype.verify = function (hash, signature) {
16752 return this.keyPair.verify(hash, signature)
16753 }
16754
16755 HDNode.prototype.toBase58 = function (__isPrivate) {
16756 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in 2.0.0')
16757
16758 // Version
16759 var network = this.keyPair.network
16760 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16761 var buffer = Buffer.allocUnsafe(78)
16762
16763 // 4 bytes: version bytes
16764 buffer.writeUInt32BE(version, 0)
16765
16766 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
16767 buffer.writeUInt8(this.depth, 4)
16768
16769 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16770 buffer.writeUInt32BE(this.parentFingerprint, 5)
16771
16772 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16773 // This is encoded in big endian. (0x00000000 if master key)
16774 buffer.writeUInt32BE(this.index, 9)
16775
16776 // 32 bytes: the chain code
16777 this.chainCode.copy(buffer, 13)
16778
16779 // 33 bytes: the public key or private key data
16780 if (!this.isNeutered()) {
16781 // 0x00 + k for private keys
16782 buffer.writeUInt8(0, 45)
16783 this.keyPair.d.toBuffer(32).copy(buffer, 46)
16784
16785 // 33 bytes: the public key
16786 } else {
16787 // X9.62 encoding for public keys
16788 this.keyPair.getPublicKeyBuffer().copy(buffer, 45)
16789 }
16790
16791 return base58check.encode(buffer)
16792 }
16793
16794 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
16795 HDNode.prototype.derive = function (index) {
16796 typeforce(types.UInt32, index)
16797
16798 var isHardened = index >= HDNode.HIGHEST_BIT
16799 var data = Buffer.allocUnsafe(37)
16800
16801 // Hardened child
16802 if (isHardened) {
16803 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
16804
16805 // data = 0x00 || ser256(kpar) || ser32(index)
16806 data[0] = 0x00
16807 this.keyPair.d.toBuffer(32).copy(data, 1)
16808 data.writeUInt32BE(index, 33)
16809
16810 // Normal child
16811 } else {
16812 // data = serP(point(kpar)) || ser32(index)
16813 // = serP(Kpar) || ser32(index)
16814 this.keyPair.getPublicKeyBuffer().copy(data, 0)
16815 data.writeUInt32BE(index, 33)
16816 }
16817
16818 var I = createHmac('sha512', this.chainCode).update(data).digest()
16819 var IL = I.slice(0, 32)
16820 var IR = I.slice(32)
16821
16822 var pIL = BigInteger.fromBuffer(IL)
16823
16824 // In case parse256(IL) >= n, proceed with the next value for i
16825 if (pIL.compareTo(curve.n) >= 0) {
16826 return this.derive(index + 1)
16827 }
16828
16829 // Private parent key -> private child key
16830 var derivedKeyPair
16831 if (!this.isNeutered()) {
16832 // ki = parse256(IL) + kpar (mod n)
16833 var ki = pIL.add(this.keyPair.d).mod(curve.n)
16834
16835 // In case ki == 0, proceed with the next value for i
16836 if (ki.signum() === 0) {
16837 return this.derive(index + 1)
16838 }
16839
16840 derivedKeyPair = new ECPair(ki, null, {
16841 network: this.keyPair.network
16842 })
16843
16844 // Public parent key -> public child key
16845 } else {
16846 // Ki = point(parse256(IL)) + Kpar
16847 // = G*IL + Kpar
16848 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
16849
16850 // In case Ki is the point at infinity, proceed with the next value for i
16851 if (curve.isInfinity(Ki)) {
16852 return this.derive(index + 1)
16853 }
16854
16855 derivedKeyPair = new ECPair(null, Ki, {
16856 network: this.keyPair.network
16857 })
16858 }
16859
16860 var hd = new HDNode(derivedKeyPair, IR)
16861 hd.depth = this.depth + 1
16862 hd.index = index
16863 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
16864
16865 return hd
16866 }
16867
16868 HDNode.prototype.deriveHardened = function (index) {
16869 typeforce(types.UInt31, index)
16870
16871 // Only derives hardened private keys by default
16872 return this.derive(index + HDNode.HIGHEST_BIT)
16873 }
16874
16875 // Private === not neutered
16876 // Public === neutered
16877 HDNode.prototype.isNeutered = function () {
16878 return !(this.keyPair.d)
16879 }
16880
16881 HDNode.prototype.derivePath = function (path) {
16882 typeforce(types.BIP32Path, path)
16883
16884 var splitPath = path.split('/')
16885 if (splitPath[0] === 'm') {
16886 if (this.parentFingerprint) {
16887 throw new Error('Not a master node')
16888 }
16889
16890 splitPath = splitPath.slice(1)
16891 }
16892
16893 return splitPath.reduce(function (prevHd, indexStr) {
16894 var index
16895 if (indexStr.slice(-1) === "'") {
16896 index = parseInt(indexStr.slice(0, -1), 10)
16897 return prevHd.deriveHardened(index)
16898 } else {
16899 index = parseInt(indexStr, 10)
16900 return prevHd.derive(index)
16901 }
16902 }, this)
16903 }
16904
16905 module.exports = HDNode
16906
16907 },{"./crypto":45,"./ecpair":47,"./networks":51,"./types":78,"bigi":37,"bs58check":80,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],50:[function(require,module,exports){
16908 module.exports = {
16909 Block: require('./block'),
16910 ECPair: require('./ecpair'),
16911 ECSignature: require('./ecsignature'),
16912 HDNode: require('./hdnode'),
16913 Transaction: require('./transaction'),
16914 TransactionBuilder: require('./transaction_builder'),
16915
16916 address: require('./address'),
16917 bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
16918 crypto: require('./crypto'),
16919 networks: require('./networks'),
16920 opcodes: require('bitcoin-ops'),
16921 script: require('./script')
16922 }
16923
16924 },{"./address":42,"./block":43,"./bufferutils":44,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./hdnode":49,"./networks":51,"./script":52,"./transaction":76,"./transaction_builder":77,"bitcoin-ops":40}],51:[function(require,module,exports){
16925 // https://en.bitcoin.it/wiki/List_of_address_prefixes
16926 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
16927
16928 module.exports = {
16929 bitcoin: {
16930 messagePrefix: '\x18Bitcoin Signed Message:\n',
16931 bip32: {
16932 public: 0x0488b21e,
16933 private: 0x0488ade4
16934 },
16935 pubKeyHash: 0x00,
16936 scriptHash: 0x05,
16937 wif: 0x80
16938 },
16939 testnet: {
16940 messagePrefix: '\x18Bitcoin Signed Message:\n',
16941 bip32: {
16942 public: 0x043587cf,
16943 private: 0x04358394
16944 },
16945 pubKeyHash: 0x6f,
16946 scriptHash: 0xc4,
16947 wif: 0xef
16948 },
16949 litecoin: {
16950 messagePrefix: '\x19Litecoin Signed Message:\n',
16951 bip32: {
16952 public: 0x0488b21e,
16953 private: 0x0488ade4,
16954 },
16955 pubKeyHash: 0x30,
16956 scriptHash: 0x32,
16957 wif: 0xb0
16958 },
16959 litecoinLtub: {
16960 messagePrefix: '\x19Litecoin Signed Message:\n',
16961 bip32: {
16962 public: 0x019da462,
16963 private: 0x019d9cfe
16964 },
16965 pubKeyHash: 0x30,
16966 scriptHash: 0x32,
16967 wif: 0xb0
16968 }
16969 }
16970
16971 },{}],52:[function(require,module,exports){
16972 var Buffer = require('safe-buffer').Buffer
16973 var bip66 = require('bip66')
16974 var pushdata = require('pushdata-bitcoin')
16975 var typeforce = require('typeforce')
16976 var types = require('./types')
16977 var scriptNumber = require('./script_number')
16978
16979 var OPS = require('bitcoin-ops')
16980 var REVERSE_OPS = require('bitcoin-ops/map')
16981 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
16982
16983 function isOPInt (value) {
16984 return types.Number(value) &&
16985 ((value === OPS.OP_0) ||
16986 (value >= OPS.OP_1 && value <= OPS.OP_16) ||
16987 (value === OPS.OP_1NEGATE))
16988 }
16989
16990 function isPushOnlyChunk (value) {
16991 return types.Buffer(value) || isOPInt(value)
16992 }
16993
16994 function isPushOnly (value) {
16995 return types.Array(value) && value.every(isPushOnlyChunk)
16996 }
16997
16998 function compile (chunks) {
16999 // TODO: remove me
17000 if (Buffer.isBuffer(chunks)) return chunks
17001
17002 typeforce(types.Array, chunks)
17003
17004 var bufferSize = chunks.reduce(function (accum, chunk) {
17005 // data chunk
17006 if (Buffer.isBuffer(chunk)) {
17007 // adhere to BIP62.3, minimal push policy
17008 if (chunk.length === 1 && (chunk[0] === 0x81 || (chunk[0] >= 1 && chunk[0] <= 16))) {
17009 return accum + 1
17010 }
17011
17012 return accum + pushdata.encodingLength(chunk.length) + chunk.length
17013 }
17014
17015 // opcode
17016 return accum + 1
17017 }, 0.0)
17018
17019 var buffer = Buffer.allocUnsafe(bufferSize)
17020 var offset = 0
17021
17022 chunks.forEach(function (chunk) {
17023 // data chunk
17024 if (Buffer.isBuffer(chunk)) {
17025 // adhere to BIP62.3, minimal push policy
17026 if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) {
17027 var opcode = OP_INT_BASE + chunk[0]
17028 buffer.writeUInt8(opcode, offset)
17029 offset += 1
17030 return
17031 }
17032
17033 if (chunk.length === 1 && chunk[0] === 0x81) {
17034 buffer.writeUInt8(OPS.OP_1NEGATE, offset)
17035 offset += 1
17036 return
17037 }
17038
17039 offset += pushdata.encode(buffer, chunk.length, offset)
17040
17041 chunk.copy(buffer, offset)
17042 offset += chunk.length
17043
17044 // opcode
17045 } else {
17046 buffer.writeUInt8(chunk, offset)
17047 offset += 1
17048 }
17049 })
17050
17051 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17052 return buffer
17053 }
17054
17055 function decompile (buffer) {
17056 // TODO: remove me
17057 if (types.Array(buffer)) return buffer
17058
17059 typeforce(types.Buffer, buffer)
17060
17061 var chunks = []
17062 var i = 0
17063
17064 while (i < buffer.length) {
17065 var opcode = buffer[i]
17066
17067 // data chunk
17068 if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17069 var d = pushdata.decode(buffer, i)
17070
17071 // did reading a pushDataInt fail? empty script
17072 if (d === null) return []
17073 i += d.size
17074
17075 // attempt to read too much data? empty script
17076 if (i + d.number > buffer.length) return []
17077
17078 var data = buffer.slice(i, i + d.number)
17079 i += d.number
17080
17081 chunks.push(data)
17082
17083 // opcode
17084 } else {
17085 chunks.push(opcode)
17086
17087 i += 1
17088 }
17089 }
17090
17091 return chunks
17092 }
17093
17094 function toASM (chunks) {
17095 if (Buffer.isBuffer(chunks)) {
17096 chunks = decompile(chunks)
17097 }
17098
17099 return chunks.map(function (chunk) {
17100 // data?
17101 if (Buffer.isBuffer(chunk)) return chunk.toString('hex')
17102
17103 // opcode!
17104 return REVERSE_OPS[chunk]
17105 }).join(' ')
17106 }
17107
17108 function fromASM (asm) {
17109 typeforce(types.String, asm)
17110
17111 return compile(asm.split(' ').map(function (chunkStr) {
17112 // opcode?
17113 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17114 typeforce(types.Hex, chunkStr)
17115
17116 // data!
17117 return Buffer.from(chunkStr, 'hex')
17118 }))
17119 }
17120
17121 function toStack (chunks) {
17122 chunks = decompile(chunks)
17123 typeforce(isPushOnly, chunks)
17124
17125 return chunks.map(function (op) {
17126 if (Buffer.isBuffer(op)) return op
17127 if (op === OPS.OP_0) return Buffer.allocUnsafe(0)
17128
17129 return scriptNumber.encode(op - OP_INT_BASE)
17130 })
17131 }
17132
17133 function isCanonicalPubKey (buffer) {
17134 if (!Buffer.isBuffer(buffer)) return false
17135 if (buffer.length < 33) return false
17136
17137 switch (buffer[0]) {
17138 case 0x02:
17139 case 0x03:
17140 return buffer.length === 33
17141 case 0x04:
17142 return buffer.length === 65
17143 }
17144
17145 return false
17146 }
17147
17148 function isDefinedHashType (hashType) {
17149 var hashTypeMod = hashType & ~0x80
17150
17151 // return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17152 return hashTypeMod > 0x00 && hashTypeMod < 0x04
17153 }
17154
17155 function isCanonicalSignature (buffer) {
17156 if (!Buffer.isBuffer(buffer)) return false
17157 if (!isDefinedHashType(buffer[buffer.length - 1])) return false
17158
17159 return bip66.check(buffer.slice(0, -1))
17160 }
17161
17162 module.exports = {
17163 compile: compile,
17164 decompile: decompile,
17165 fromASM: fromASM,
17166 toASM: toASM,
17167 toStack: toStack,
17168
17169 number: require('./script_number'),
17170
17171 isCanonicalPubKey: isCanonicalPubKey,
17172 isCanonicalSignature: isCanonicalSignature,
17173 isPushOnly: isPushOnly,
17174 isDefinedHashType: isDefinedHashType
17175 }
17176
17177 var templates = require('./templates')
17178 for (var key in templates) {
17179 module.exports[key] = templates[key]
17180 }
17181
17182 },{"./script_number":53,"./templates":54,"./types":78,"bip66":39,"bitcoin-ops":40,"bitcoin-ops/map":41,"pushdata-bitcoin":95,"safe-buffer":98,"typeforce":109}],53:[function(require,module,exports){
17183 var Buffer = require('safe-buffer').Buffer
17184
17185 function decode (buffer, maxLength, minimal) {
17186 maxLength = maxLength || 4
17187 minimal = minimal === undefined ? true : minimal
17188
17189 var length = buffer.length
17190 if (length === 0) return 0
17191 if (length > maxLength) throw new TypeError('Script number overflow')
17192 if (minimal) {
17193 if ((buffer[length - 1] & 0x7f) === 0) {
17194 if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number')
17195 }
17196 }
17197
17198 // 40-bit
17199 if (length === 5) {
17200 var a = buffer.readUInt32LE(0)
17201 var b = buffer.readUInt8(4)
17202
17203 if (b & 0x80) return -(((b & ~0x80) * 0x100000000) + a)
17204 return (b * 0x100000000) + a
17205 }
17206
17207 var result = 0
17208
17209 // 32-bit / 24-bit / 16-bit / 8-bit
17210 for (var i = 0; i < length; ++i) {
17211 result |= buffer[i] << (8 * i)
17212 }
17213
17214 if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
17215 return result
17216 }
17217
17218 function scriptNumSize (i) {
17219 return i > 0x7fffffff ? 5
17220 : i > 0x7fffff ? 4
17221 : i > 0x7fff ? 3
17222 : i > 0x7f ? 2
17223 : i > 0x00 ? 1
17224 : 0
17225 }
17226
17227 function encode (number) {
17228 var value = Math.abs(number)
17229 var size = scriptNumSize(value)
17230 var buffer = Buffer.allocUnsafe(size)
17231 var negative = number < 0
17232
17233 for (var i = 0; i < size; ++i) {
17234 buffer.writeUInt8(value & 0xff, i)
17235 value >>= 8
17236 }
17237
17238 if (buffer[size - 1] & 0x80) {
17239 buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1)
17240 } else if (negative) {
17241 buffer[size - 1] |= 0x80
17242 }
17243
17244 return buffer
17245 }
17246
17247 module.exports = {
17248 decode: decode,
17249 encode: encode
17250 }
17251
17252 },{"safe-buffer":98}],54:[function(require,module,exports){
17253 var decompile = require('../script').decompile
17254 var multisig = require('./multisig')
17255 var nullData = require('./nulldata')
17256 var pubKey = require('./pubkey')
17257 var pubKeyHash = require('./pubkeyhash')
17258 var scriptHash = require('./scripthash')
17259 var witnessPubKeyHash = require('./witnesspubkeyhash')
17260 var witnessScriptHash = require('./witnessscripthash')
17261 var witnessCommitment = require('./witnesscommitment')
17262
17263 var types = {
17264 MULTISIG: 'multisig',
17265 NONSTANDARD: 'nonstandard',
17266 NULLDATA: 'nulldata',
17267 P2PK: 'pubkey',
17268 P2PKH: 'pubkeyhash',
17269 P2SH: 'scripthash',
17270 P2WPKH: 'witnesspubkeyhash',
17271 P2WSH: 'witnessscripthash',
17272 WITNESS_COMMITMENT: 'witnesscommitment'
17273 }
17274
17275 function classifyOutput (script) {
17276 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17277 if (witnessScriptHash.output.check(script)) return types.P2WSH
17278 if (pubKeyHash.output.check(script)) return types.P2PKH
17279 if (scriptHash.output.check(script)) return types.P2SH
17280
17281 // XXX: optimization, below functions .decompile before use
17282 var chunks = decompile(script)
17283 if (multisig.output.check(chunks)) return types.MULTISIG
17284 if (pubKey.output.check(chunks)) return types.P2PK
17285 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17286 if (nullData.output.check(chunks)) return types.NULLDATA
17287
17288 return types.NONSTANDARD
17289 }
17290
17291 function classifyInput (script, allowIncomplete) {
17292 // XXX: optimization, below functions .decompile before use
17293 var chunks = decompile(script)
17294
17295 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17296 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17297 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17298 if (pubKey.input.check(chunks)) return types.P2PK
17299
17300 return types.NONSTANDARD
17301 }
17302
17303 function classifyWitness (script, allowIncomplete) {
17304 // XXX: optimization, below functions .decompile before use
17305 var chunks = decompile(script)
17306
17307 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17308 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
17309
17310 return types.NONSTANDARD
17311 }
17312
17313 module.exports = {
17314 classifyInput: classifyInput,
17315 classifyOutput: classifyOutput,
17316 classifyWitness: classifyWitness,
17317 multisig: multisig,
17318 nullData: nullData,
17319 pubKey: pubKey,
17320 pubKeyHash: pubKeyHash,
17321 scriptHash: scriptHash,
17322 witnessPubKeyHash: witnessPubKeyHash,
17323 witnessScriptHash: witnessScriptHash,
17324 witnessCommitment: witnessCommitment,
17325 types: types
17326 }
17327
17328 },{"../script":52,"./multisig":55,"./nulldata":58,"./pubkey":59,"./pubkeyhash":62,"./scripthash":65,"./witnesscommitment":68,"./witnesspubkeyhash":70,"./witnessscripthash":73}],55:[function(require,module,exports){
17329 module.exports = {
17330 input: require('./input'),
17331 output: require('./output')
17332 }
17333
17334 },{"./input":56,"./output":57}],56:[function(require,module,exports){
17335 // OP_0 [signatures ...]
17336
17337 var Buffer = require('safe-buffer').Buffer
17338 var bscript = require('../../script')
17339 var typeforce = require('typeforce')
17340 var OPS = require('bitcoin-ops')
17341
17342 function partialSignature (value) {
17343 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17344 }
17345
17346 function check (script, allowIncomplete) {
17347 var chunks = bscript.decompile(script)
17348 if (chunks.length < 2) return false
17349 if (chunks[0] !== OPS.OP_0) return false
17350
17351 if (allowIncomplete) {
17352 return chunks.slice(1).every(partialSignature)
17353 }
17354
17355 return chunks.slice(1).every(bscript.isCanonicalSignature)
17356 }
17357 check.toJSON = function () { return 'multisig input' }
17358
17359 var EMPTY_BUFFER = Buffer.allocUnsafe(0)
17360
17361 function encodeStack (signatures, scriptPubKey) {
17362 typeforce([partialSignature], signatures)
17363
17364 if (scriptPubKey) {
17365 var scriptData = bscript.multisig.output.decode(scriptPubKey)
17366
17367 if (signatures.length < scriptData.m) {
17368 throw new TypeError('Not enough signatures provided')
17369 }
17370
17371 if (signatures.length > scriptData.pubKeys.length) {
17372 throw new TypeError('Too many signatures provided')
17373 }
17374 }
17375
17376 return [].concat(EMPTY_BUFFER, signatures)
17377 }
17378
17379 function encode (signatures, scriptPubKey) {
17380 return bscript.compile(encodeStack(signatures, scriptPubKey))
17381 }
17382
17383 function decodeStack (stack, allowIncomplete) {
17384 typeforce(check, stack, allowIncomplete)
17385 return stack.slice(1)
17386 }
17387
17388 function decode (buffer, allowIncomplete) {
17389 var stack = bscript.decompile(buffer)
17390 return decodeStack(stack, allowIncomplete)
17391 }
17392
17393 module.exports = {
17394 check: check,
17395 decode: decode,
17396 decodeStack: decodeStack,
17397 encode: encode,
17398 encodeStack: encodeStack
17399 }
17400
17401 },{"../../script":52,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],57:[function(require,module,exports){
17402 // m [pubKeys ...] n OP_CHECKMULTISIG
17403
17404 var bscript = require('../../script')
17405 var types = require('../../types')
17406 var typeforce = require('typeforce')
17407 var OPS = require('bitcoin-ops')
17408 var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17409
17410 function check (script, allowIncomplete) {
17411 var chunks = bscript.decompile(script)
17412
17413 if (chunks.length < 4) return false
17414 if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
17415 if (!types.Number(chunks[0])) return false
17416 if (!types.Number(chunks[chunks.length - 2])) return false
17417 var m = chunks[0] - OP_INT_BASE
17418 var n = chunks[chunks.length - 2] - OP_INT_BASE
17419
17420 if (m <= 0) return false
17421 if (n > 16) return false
17422 if (m > n) return false
17423 if (n !== chunks.length - 3) return false
17424 if (allowIncomplete) return true
17425
17426 var keys = chunks.slice(1, -2)
17427 return keys.every(bscript.isCanonicalPubKey)
17428 }
17429 check.toJSON = function () { return 'multi-sig output' }
17430
17431 function encode (m, pubKeys) {
17432 typeforce({
17433 m: types.Number,
17434 pubKeys: [bscript.isCanonicalPubKey]
17435 }, {
17436 m: m,
17437 pubKeys: pubKeys
17438 })
17439
17440 var n = pubKeys.length
17441 if (n < m) throw new TypeError('Not enough pubKeys provided')
17442
17443 return bscript.compile([].concat(
17444 OP_INT_BASE + m,
17445 pubKeys,
17446 OP_INT_BASE + n,
17447 OPS.OP_CHECKMULTISIG
17448 ))
17449 }
17450
17451 function decode (buffer, allowIncomplete) {
17452 var chunks = bscript.decompile(buffer)
17453 typeforce(check, chunks, allowIncomplete)
17454
17455 return {
17456 m: chunks[0] - OP_INT_BASE,
17457 pubKeys: chunks.slice(1, -2)
17458 }
17459 }
17460
17461 module.exports = {
17462 check: check,
17463 decode: decode,
17464 encode: encode
17465 }
17466
17467 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],58:[function(require,module,exports){
17468 // OP_RETURN {data}
17469
17470 var bscript = require('../script')
17471 var types = require('../types')
17472 var typeforce = require('typeforce')
17473 var OPS = require('bitcoin-ops')
17474
17475 function check (script) {
17476 var buffer = bscript.compile(script)
17477
17478 return buffer.length > 1 &&
17479 buffer[0] === OPS.OP_RETURN
17480 }
17481 check.toJSON = function () { return 'null data output' }
17482
17483 function encode (data) {
17484 typeforce(types.Buffer, data)
17485
17486 return bscript.compile([OPS.OP_RETURN, data])
17487 }
17488
17489 function decode (buffer) {
17490 typeforce(check, buffer)
17491
17492 return buffer.slice(2)
17493 }
17494
17495 module.exports = {
17496 output: {
17497 check: check,
17498 decode: decode,
17499 encode: encode
17500 }
17501 }
17502
17503 },{"../script":52,"../types":78,"bitcoin-ops":40,"typeforce":109}],59:[function(require,module,exports){
17504 arguments[4][55][0].apply(exports,arguments)
17505 },{"./input":60,"./output":61,"dup":55}],60:[function(require,module,exports){
17506 // {signature}
17507
17508 var bscript = require('../../script')
17509 var types = require('../../types')
17510 var typeforce = require('typeforce')
17511
17512 function check (script) {
17513 var chunks = bscript.decompile(script)
17514
17515 return chunks.length === 1 &&
17516 bscript.isCanonicalSignature(chunks[0])
17517 }
17518 check.toJSON = function () { return 'pubKey input' }
17519
17520 function encodeStack (signature) {
17521 typeforce(types.Buffer, signature)
17522 return [signature]
17523 }
17524
17525 function encode (signature) {
17526 return bscript.compile(encodeStack(signature))
17527 }
17528
17529 function decodeStack (stack) {
17530 typeforce(check, stack)
17531 return stack[0]
17532 }
17533
17534 function decode (buffer) {
17535 var stack = bscript.decompile(buffer)
17536 return decodeStack(stack)
17537 }
17538
17539 module.exports = {
17540 check: check,
17541 decode: decode,
17542 decodeStack: decodeStack,
17543 encode: encode,
17544 encodeStack: encodeStack
17545 }
17546
17547 },{"../../script":52,"../../types":78,"typeforce":109}],61:[function(require,module,exports){
17548 // {pubKey} OP_CHECKSIG
17549
17550 var bscript = require('../../script')
17551 var typeforce = require('typeforce')
17552 var OPS = require('bitcoin-ops')
17553
17554 function check (script) {
17555 var chunks = bscript.decompile(script)
17556
17557 return chunks.length === 2 &&
17558 bscript.isCanonicalPubKey(chunks[0]) &&
17559 chunks[1] === OPS.OP_CHECKSIG
17560 }
17561 check.toJSON = function () { return 'pubKey output' }
17562
17563 function encode (pubKey) {
17564 typeforce(bscript.isCanonicalPubKey, pubKey)
17565
17566 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17567 }
17568
17569 function decode (buffer) {
17570 var chunks = bscript.decompile(buffer)
17571 typeforce(check, chunks)
17572
17573 return chunks[0]
17574 }
17575
17576 module.exports = {
17577 check: check,
17578 decode: decode,
17579 encode: encode
17580 }
17581
17582 },{"../../script":52,"bitcoin-ops":40,"typeforce":109}],62:[function(require,module,exports){
17583 arguments[4][55][0].apply(exports,arguments)
17584 },{"./input":63,"./output":64,"dup":55}],63:[function(require,module,exports){
17585 // {signature} {pubKey}
17586
17587 var bscript = require('../../script')
17588 var types = require('../../types')
17589 var typeforce = require('typeforce')
17590
17591 function check (script) {
17592 var chunks = bscript.decompile(script)
17593
17594 return chunks.length === 2 &&
17595 bscript.isCanonicalSignature(chunks[0]) &&
17596 bscript.isCanonicalPubKey(chunks[1])
17597 }
17598 check.toJSON = function () { return 'pubKeyHash input' }
17599
17600 function encodeStack (signature, pubKey) {
17601 typeforce({
17602 signature: types.Buffer, pubKey: types.Buffer
17603 }, {
17604 signature: signature, pubKey: pubKey
17605 })
17606
17607 return [signature, pubKey]
17608 }
17609
17610 function encode (signature, pubKey) {
17611 return bscript.compile(encodeStack(signature, pubKey))
17612 }
17613
17614 function decodeStack (stack) {
17615 typeforce(check, stack)
17616
17617 return {
17618 signature: stack[0],
17619 pubKey: stack[1]
17620 }
17621 }
17622
17623 function decode (buffer) {
17624 var stack = bscript.decompile(buffer)
17625 return decodeStack(stack)
17626 }
17627
17628 module.exports = {
17629 check: check,
17630 decode: decode,
17631 decodeStack: decodeStack,
17632 encode: encode,
17633 encodeStack: encodeStack
17634 }
17635
17636 },{"../../script":52,"../../types":78,"typeforce":109}],64:[function(require,module,exports){
17637 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
17638
17639 var bscript = require('../../script')
17640 var types = require('../../types')
17641 var typeforce = require('typeforce')
17642 var OPS = require('bitcoin-ops')
17643
17644 function check (script) {
17645 var buffer = bscript.compile(script)
17646
17647 return buffer.length === 25 &&
17648 buffer[0] === OPS.OP_DUP &&
17649 buffer[1] === OPS.OP_HASH160 &&
17650 buffer[2] === 0x14 &&
17651 buffer[23] === OPS.OP_EQUALVERIFY &&
17652 buffer[24] === OPS.OP_CHECKSIG
17653 }
17654 check.toJSON = function () { return 'pubKeyHash output' }
17655
17656 function encode (pubKeyHash) {
17657 typeforce(types.Hash160bit, pubKeyHash)
17658
17659 return bscript.compile([
17660 OPS.OP_DUP,
17661 OPS.OP_HASH160,
17662 pubKeyHash,
17663 OPS.OP_EQUALVERIFY,
17664 OPS.OP_CHECKSIG
17665 ])
17666 }
17667
17668 function decode (buffer) {
17669 typeforce(check, buffer)
17670
17671 return buffer.slice(3, 23)
17672 }
17673
17674 module.exports = {
17675 check: check,
17676 decode: decode,
17677 encode: encode
17678 }
17679
17680 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],65:[function(require,module,exports){
17681 arguments[4][55][0].apply(exports,arguments)
17682 },{"./input":66,"./output":67,"dup":55}],66:[function(require,module,exports){
17683 // <scriptSig> {serialized scriptPubKey script}
17684
17685 var Buffer = require('safe-buffer').Buffer
17686 var bscript = require('../../script')
17687 var typeforce = require('typeforce')
17688
17689 function check (script, allowIncomplete) {
17690 var chunks = bscript.decompile(script)
17691 if (chunks.length < 1) return false
17692
17693 var lastChunk = chunks[chunks.length - 1]
17694 if (!Buffer.isBuffer(lastChunk)) return false
17695
17696 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(0, -1)))
17697 var redeemScriptChunks = bscript.decompile(lastChunk)
17698
17699 // is redeemScript a valid script?
17700 if (redeemScriptChunks.length === 0) return false
17701
17702 // is redeemScriptSig push only?
17703 if (!bscript.isPushOnly(scriptSigChunks)) return false
17704
17705 var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete)
17706 var outputType = bscript.classifyOutput(redeemScriptChunks)
17707 if (chunks.length === 1) {
17708 return outputType === bscript.types.P2WSH || outputType === bscript.types.P2WPKH
17709 }
17710 return inputType === outputType
17711 }
17712 check.toJSON = function () { return 'scriptHash input' }
17713
17714 function encodeStack (redeemScriptStack, redeemScript) {
17715 var serializedScriptPubKey = bscript.compile(redeemScript)
17716
17717 return [].concat(redeemScriptStack, serializedScriptPubKey)
17718 }
17719
17720 function encode (redeemScriptSig, redeemScript) {
17721 var redeemScriptStack = bscript.decompile(redeemScriptSig)
17722
17723 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17724 }
17725
17726 function decodeStack (stack) {
17727 typeforce(check, stack)
17728
17729 return {
17730 redeemScriptStack: stack.slice(0, -1),
17731 redeemScript: stack[stack.length - 1]
17732 }
17733 }
17734
17735 function decode (buffer) {
17736 var stack = bscript.decompile(buffer)
17737 var result = decodeStack(stack)
17738 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17739 delete result.redeemScriptStack
17740 return result
17741 }
17742
17743 module.exports = {
17744 check: check,
17745 decode: decode,
17746 decodeStack: decodeStack,
17747 encode: encode,
17748 encodeStack: encodeStack
17749 }
17750
17751 },{"../../script":52,"safe-buffer":98,"typeforce":109}],67:[function(require,module,exports){
17752 // OP_HASH160 {scriptHash} OP_EQUAL
17753
17754 var bscript = require('../../script')
17755 var types = require('../../types')
17756 var typeforce = require('typeforce')
17757 var OPS = require('bitcoin-ops')
17758
17759 function check (script) {
17760 var buffer = bscript.compile(script)
17761
17762 return buffer.length === 23 &&
17763 buffer[0] === OPS.OP_HASH160 &&
17764 buffer[1] === 0x14 &&
17765 buffer[22] === OPS.OP_EQUAL
17766 }
17767 check.toJSON = function () { return 'scriptHash output' }
17768
17769 function encode (scriptHash) {
17770 typeforce(types.Hash160bit, scriptHash)
17771
17772 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17773 }
17774
17775 function decode (buffer) {
17776 typeforce(check, buffer)
17777
17778 return buffer.slice(2, 22)
17779 }
17780
17781 module.exports = {
17782 check: check,
17783 decode: decode,
17784 encode: encode
17785 }
17786
17787 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],68:[function(require,module,exports){
17788 module.exports = {
17789 output: require('./output')
17790 }
17791
17792 },{"./output":69}],69:[function(require,module,exports){
17793 // OP_RETURN {aa21a9ed} {commitment}
17794
17795 var Buffer = require('safe-buffer').Buffer
17796 var bscript = require('../../script')
17797 var types = require('../../types')
17798 var typeforce = require('typeforce')
17799 var OPS = require('bitcoin-ops')
17800
17801 var HEADER = Buffer.from('aa21a9ed', 'hex')
17802
17803 function check (script) {
17804 var buffer = bscript.compile(script)
17805
17806 return buffer.length > 37 &&
17807 buffer[0] === OPS.OP_RETURN &&
17808 buffer[1] === 0x24 &&
17809 buffer.slice(2, 6).equals(HEADER)
17810 }
17811
17812 check.toJSON = function () { return 'Witness commitment output' }
17813
17814 function encode (commitment) {
17815 typeforce(types.Hash256bit, commitment)
17816
17817 var buffer = Buffer.allocUnsafe(36)
17818 HEADER.copy(buffer, 0)
17819 commitment.copy(buffer, 4)
17820
17821 return bscript.compile([OPS.OP_RETURN, buffer])
17822 }
17823
17824 function decode (buffer) {
17825 typeforce(check, buffer)
17826
17827 return bscript.decompile(buffer)[1].slice(4, 36)
17828 }
17829
17830 module.exports = {
17831 check: check,
17832 decode: decode,
17833 encode: encode
17834 }
17835
17836 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],70:[function(require,module,exports){
17837 arguments[4][55][0].apply(exports,arguments)
17838 },{"./input":71,"./output":72,"dup":55}],71:[function(require,module,exports){
17839 // {signature} {pubKey}
17840
17841 var pkh = require('../pubkeyhash/input')
17842
17843 module.exports = {
17844 check: pkh.check,
17845 decodeStack: pkh.decodeStack,
17846 encodeStack: pkh.encodeStack
17847 }
17848
17849 },{"../pubkeyhash/input":63}],72:[function(require,module,exports){
17850 // OP_0 {pubKeyHash}
17851
17852 var bscript = require('../../script')
17853 var types = require('../../types')
17854 var typeforce = require('typeforce')
17855 var OPS = require('bitcoin-ops')
17856
17857 function check (script) {
17858 var buffer = bscript.compile(script)
17859
17860 return buffer.length === 22 &&
17861 buffer[0] === OPS.OP_0 &&
17862 buffer[1] === 0x14
17863 }
17864 check.toJSON = function () { return 'Witness pubKeyHash output' }
17865
17866 function encode (pubKeyHash) {
17867 typeforce(types.Hash160bit, pubKeyHash)
17868
17869 return bscript.compile([OPS.OP_0, pubKeyHash])
17870 }
17871
17872 function decode (buffer) {
17873 typeforce(check, buffer)
17874
17875 return buffer.slice(2)
17876 }
17877
17878 module.exports = {
17879 check: check,
17880 decode: decode,
17881 encode: encode
17882 }
17883
17884 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],73:[function(require,module,exports){
17885 arguments[4][55][0].apply(exports,arguments)
17886 },{"./input":74,"./output":75,"dup":55}],74:[function(require,module,exports){
17887 // {signature} {pubKey}
17888
17889 var p2sh = require('../scripthash/input')
17890
17891 module.exports = {
17892 check: p2sh.check,
17893 decodeStack: p2sh.decodeStack,
17894 encodeStack: p2sh.encodeStack
17895 }
17896
17897 },{"../scripthash/input":66}],75:[function(require,module,exports){
17898 // OP_0 {scriptHash}
17899
17900 var bscript = require('../../script')
17901 var types = require('../../types')
17902 var typeforce = require('typeforce')
17903 var OPS = require('bitcoin-ops')
17904
17905 function check (script) {
17906 var buffer = bscript.compile(script)
17907
17908 return buffer.length === 34 &&
17909 buffer[0] === OPS.OP_0 &&
17910 buffer[1] === 0x20
17911 }
17912 check.toJSON = function () { return 'Witness scriptHash output' }
17913
17914 function encode (scriptHash) {
17915 typeforce(types.Hash256bit, scriptHash)
17916
17917 return bscript.compile([OPS.OP_0, scriptHash])
17918 }
17919
17920 function decode (buffer) {
17921 typeforce(check, buffer)
17922
17923 return buffer.slice(2)
17924 }
17925
17926 module.exports = {
17927 check: check,
17928 decode: decode,
17929 encode: encode
17930 }
17931
17932 },{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],76:[function(require,module,exports){
17933 var Buffer = require('safe-buffer').Buffer
17934 var bcrypto = require('./crypto')
17935 var bscript = require('./script')
17936 var bufferutils = require('./bufferutils')
17937 var opcodes = require('bitcoin-ops')
17938 var typeforce = require('typeforce')
17939 var types = require('./types')
17940 var varuint = require('varuint-bitcoin')
17941
17942 function varSliceSize (someScript) {
17943 var length = someScript.length
17944
17945 return varuint.encodingLength(length) + length
17946 }
17947
17948 function vectorSize (someVector) {
17949 var length = someVector.length
17950
17951 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
17952 return sum + varSliceSize(witness)
17953 }, 0)
17954 }
17955
17956 function Transaction () {
17957 this.version = 1
17958 this.locktime = 0
17959 this.ins = []
17960 this.outs = []
17961 }
17962
17963 Transaction.DEFAULT_SEQUENCE = 0xffffffff
17964 Transaction.SIGHASH_ALL = 0x01
17965 Transaction.SIGHASH_NONE = 0x02
17966 Transaction.SIGHASH_SINGLE = 0x03
17967 Transaction.SIGHASH_ANYONECANPAY = 0x80
17968 Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
17969 Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
17970
17971 var EMPTY_SCRIPT = Buffer.allocUnsafe(0)
17972 var EMPTY_WITNESS = []
17973 var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex')
17974 var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex')
17975 var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
17976 var BLANK_OUTPUT = {
17977 script: EMPTY_SCRIPT,
17978 valueBuffer: VALUE_UINT64_MAX
17979 }
17980
17981 Transaction.fromBuffer = function (buffer, __noStrict) {
17982 var offset = 0
17983 function readSlice (n) {
17984 offset += n
17985 return buffer.slice(offset - n, offset)
17986 }
17987
17988 function readUInt32 () {
17989 var i = buffer.readUInt32LE(offset)
17990 offset += 4
17991 return i
17992 }
17993
17994 function readInt32 () {
17995 var i = buffer.readInt32LE(offset)
17996 offset += 4
17997 return i
17998 }
17999
18000 function readUInt64 () {
18001 var i = bufferutils.readUInt64LE(buffer, offset)
18002 offset += 8
18003 return i
18004 }
18005
18006 function readVarInt () {
18007 var vi = varuint.decode(buffer, offset)
18008 offset += varuint.decode.bytes
18009 return vi
18010 }
18011
18012 function readVarSlice () {
18013 return readSlice(readVarInt())
18014 }
18015
18016 function readVector () {
18017 var count = readVarInt()
18018 var vector = []
18019 for (var i = 0; i < count; i++) vector.push(readVarSlice())
18020 return vector
18021 }
18022
18023 var tx = new Transaction()
18024 tx.version = readInt32()
18025
18026 var marker = buffer.readUInt8(offset)
18027 var flag = buffer.readUInt8(offset + 1)
18028
18029 var hasWitnesses = false
18030 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18031 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18032 offset += 2
18033 hasWitnesses = true
18034 }
18035
18036 var vinLen = readVarInt()
18037 for (var i = 0; i < vinLen; ++i) {
18038 tx.ins.push({
18039 hash: readSlice(32),
18040 index: readUInt32(),
18041 script: readVarSlice(),
18042 sequence: readUInt32(),
18043 witness: EMPTY_WITNESS
18044 })
18045 }
18046
18047 var voutLen = readVarInt()
18048 for (i = 0; i < voutLen; ++i) {
18049 tx.outs.push({
18050 value: readUInt64(),
18051 script: readVarSlice()
18052 })
18053 }
18054
18055 if (hasWitnesses) {
18056 for (i = 0; i < vinLen; ++i) {
18057 tx.ins[i].witness = readVector()
18058 }
18059
18060 // was this pointless?
18061 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18062 }
18063
18064 tx.locktime = readUInt32()
18065
18066 if (__noStrict) return tx
18067 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
18068
18069 return tx
18070 }
18071
18072 Transaction.fromHex = function (hex) {
18073 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
18074 }
18075
18076 Transaction.isCoinbaseHash = function (buffer) {
18077 typeforce(types.Hash256bit, buffer)
18078 for (var i = 0; i < 32; ++i) {
18079 if (buffer[i] !== 0) return false
18080 }
18081 return true
18082 }
18083
18084 Transaction.prototype.isCoinbase = function () {
18085 return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)
18086 }
18087
18088 Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18089 typeforce(types.tuple(
18090 types.Hash256bit,
18091 types.UInt32,
18092 types.maybe(types.UInt32),
18093 types.maybe(types.Buffer)
18094 ), arguments)
18095
18096 if (types.Null(sequence)) {
18097 sequence = Transaction.DEFAULT_SEQUENCE
18098 }
18099
18100 // Add the input and return the input's index
18101 return (this.ins.push({
18102 hash: hash,
18103 index: index,
18104 script: scriptSig || EMPTY_SCRIPT,
18105 sequence: sequence,
18106 witness: EMPTY_WITNESS
18107 }) - 1)
18108 }
18109
18110 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18111 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
18112
18113 // Add the output and return the output's index
18114 return (this.outs.push({
18115 script: scriptPubKey,
18116 value: value
18117 }) - 1)
18118 }
18119
18120 Transaction.prototype.hasWitnesses = function () {
18121 return this.ins.some(function (x) {
18122 return x.witness.length !== 0
18123 })
18124 }
18125
18126 Transaction.prototype.weight = function () {
18127 var base = this.__byteLength(false)
18128 var total = this.__byteLength(true)
18129 return base * 3 + total
18130 }
18131
18132 Transaction.prototype.virtualSize = function () {
18133 return Math.ceil(this.weight() / 4)
18134 }
18135
18136 Transaction.prototype.byteLength = function () {
18137 return this.__byteLength(true)
18138 }
18139
18140 Transaction.prototype.__byteLength = function (__allowWitness) {
18141 var hasWitnesses = __allowWitness && this.hasWitnesses()
18142
18143 return (
18144 (hasWitnesses ? 10 : 8) +
18145 varuint.encodingLength(this.ins.length) +
18146 varuint.encodingLength(this.outs.length) +
18147 this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
18148 this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
18149 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
18150 )
18151 }
18152
18153 Transaction.prototype.clone = function () {
18154 var newTx = new Transaction()
18155 newTx.version = this.version
18156 newTx.locktime = this.locktime
18157
18158 newTx.ins = this.ins.map(function (txIn) {
18159 return {
18160 hash: txIn.hash,
18161 index: txIn.index,
18162 script: txIn.script,
18163 sequence: txIn.sequence,
18164 witness: txIn.witness
18165 }
18166 })
18167
18168 newTx.outs = this.outs.map(function (txOut) {
18169 return {
18170 script: txOut.script,
18171 value: txOut.value
18172 }
18173 })
18174
18175 return newTx
18176 }
18177
18178 /**
18179 * Hash transaction for signing a specific input.
18180 *
18181 * Bitcoin uses a different hash for each signed transaction input.
18182 * This method copies the transaction, makes the necessary changes based on the
18183 * hashType, and then hashes the result.
18184 * This hash can then be used to sign the provided transaction input.
18185 */
18186 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18187 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18188
18189 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18190 if (inIndex >= this.ins.length) return ONE
18191
18192 // ignore OP_CODESEPARATOR
18193 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18194 return x !== opcodes.OP_CODESEPARATOR
18195 }))
18196
18197 var txTmp = this.clone()
18198
18199 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18200 if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {
18201 txTmp.outs = []
18202
18203 // ignore sequence numbers (except at inIndex)
18204 txTmp.ins.forEach(function (input, i) {
18205 if (i === inIndex) return
18206
18207 input.sequence = 0
18208 })
18209
18210 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18211 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {
18212 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18213 if (inIndex >= this.outs.length) return ONE
18214
18215 // truncate outputs after
18216 txTmp.outs.length = inIndex + 1
18217
18218 // "blank" outputs before
18219 for (var i = 0; i < inIndex; i++) {
18220 txTmp.outs[i] = BLANK_OUTPUT
18221 }
18222
18223 // ignore sequence numbers (except at inIndex)
18224 txTmp.ins.forEach(function (input, y) {
18225 if (y === inIndex) return
18226
18227 input.sequence = 0
18228 })
18229 }
18230
18231 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18232 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18233 txTmp.ins = [txTmp.ins[inIndex]]
18234 txTmp.ins[0].script = ourScript
18235
18236 // SIGHASH_ALL: only ignore input scripts
18237 } else {
18238 // "blank" others input scripts
18239 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18240 txTmp.ins[inIndex].script = ourScript
18241 }
18242
18243 // serialize and hash
18244 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4)
18245 buffer.writeInt32LE(hashType, buffer.length - 4)
18246 txTmp.__toBuffer(buffer, 0, false)
18247
18248 return bcrypto.hash256(buffer)
18249 }
18250
18251 Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18252 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18253
18254 var tbuffer, toffset
18255 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18256 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18257 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18258 function writeVarInt (i) {
18259 varuint.encode(i, tbuffer, toffset)
18260 toffset += varuint.encode.bytes
18261 }
18262 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18263
18264 var hashOutputs = ZERO
18265 var hashPrevouts = ZERO
18266 var hashSequence = ZERO
18267
18268 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18269 tbuffer = Buffer.allocUnsafe(36 * this.ins.length)
18270 toffset = 0
18271
18272 this.ins.forEach(function (txIn) {
18273 writeSlice(txIn.hash)
18274 writeUInt32(txIn.index)
18275 })
18276
18277 hashPrevouts = bcrypto.hash256(tbuffer)
18278 }
18279
18280 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18281 (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18282 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18283 tbuffer = Buffer.allocUnsafe(4 * this.ins.length)
18284 toffset = 0
18285
18286 this.ins.forEach(function (txIn) {
18287 writeUInt32(txIn.sequence)
18288 })
18289
18290 hashSequence = bcrypto.hash256(tbuffer)
18291 }
18292
18293 if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18294 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18295 var txOutsSize = this.outs.reduce(function (sum, output) {
18296 return sum + 8 + varSliceSize(output.script)
18297 }, 0)
18298
18299 tbuffer = Buffer.allocUnsafe(txOutsSize)
18300 toffset = 0
18301
18302 this.outs.forEach(function (out) {
18303 writeUInt64(out.value)
18304 writeVarSlice(out.script)
18305 })
18306
18307 hashOutputs = bcrypto.hash256(tbuffer)
18308 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18309 var output = this.outs[inIndex]
18310
18311 tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script))
18312 toffset = 0
18313 writeUInt64(output.value)
18314 writeVarSlice(output.script)
18315
18316 hashOutputs = bcrypto.hash256(tbuffer)
18317 }
18318
18319 tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript))
18320 toffset = 0
18321
18322 var input = this.ins[inIndex]
18323 writeUInt32(this.version)
18324 writeSlice(hashPrevouts)
18325 writeSlice(hashSequence)
18326 writeSlice(input.hash)
18327 writeUInt32(input.index)
18328 writeVarSlice(prevOutScript)
18329 writeUInt64(value)
18330 writeUInt32(input.sequence)
18331 writeSlice(hashOutputs)
18332 writeUInt32(this.locktime)
18333 writeUInt32(hashType)
18334 return bcrypto.hash256(tbuffer)
18335 }
18336
18337 Transaction.prototype.getHash = function () {
18338 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18339 }
18340
18341 Transaction.prototype.getId = function () {
18342 // transaction hash's are displayed in reverse order
18343 return this.getHash().reverse().toString('hex')
18344 }
18345
18346 Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18347 return this.__toBuffer(buffer, initialOffset, true)
18348 }
18349
18350 Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18351 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
18352
18353 var offset = initialOffset || 0
18354 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18355 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18356 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18357 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18358 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18359 function writeVarInt (i) {
18360 varuint.encode(i, buffer, offset)
18361 offset += varuint.encode.bytes
18362 }
18363 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18364 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
18365
18366 writeInt32(this.version)
18367
18368 var hasWitnesses = __allowWitness && this.hasWitnesses()
18369
18370 if (hasWitnesses) {
18371 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18372 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18373 }
18374
18375 writeVarInt(this.ins.length)
18376
18377 this.ins.forEach(function (txIn) {
18378 writeSlice(txIn.hash)
18379 writeUInt32(txIn.index)
18380 writeVarSlice(txIn.script)
18381 writeUInt32(txIn.sequence)
18382 })
18383
18384 writeVarInt(this.outs.length)
18385 this.outs.forEach(function (txOut) {
18386 if (!txOut.valueBuffer) {
18387 writeUInt64(txOut.value)
18388 } else {
18389 writeSlice(txOut.valueBuffer)
18390 }
18391
18392 writeVarSlice(txOut.script)
18393 })
18394
18395 if (hasWitnesses) {
18396 this.ins.forEach(function (input) {
18397 writeVector(input.witness)
18398 })
18399 }
18400
18401 writeUInt32(this.locktime)
18402
18403 // avoid slicing unless necessary
18404 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18405 return buffer
18406 }
18407
18408 Transaction.prototype.toHex = function () {
18409 return this.toBuffer().toString('hex')
18410 }
18411
18412 Transaction.prototype.setInputScript = function (index, scriptSig) {
18413 typeforce(types.tuple(types.Number, types.Buffer), arguments)
18414
18415 this.ins[index].script = scriptSig
18416 }
18417
18418 Transaction.prototype.setWitness = function (index, witness) {
18419 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18420
18421 this.ins[index].witness = witness
18422 }
18423
18424 module.exports = Transaction
18425
18426 },{"./bufferutils":44,"./crypto":45,"./script":52,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],77:[function(require,module,exports){
18427 var Buffer = require('safe-buffer').Buffer
18428 var baddress = require('./address')
18429 var bcrypto = require('./crypto')
18430 var bscript = require('./script')
18431 var networks = require('./networks')
18432 var ops = require('bitcoin-ops')
18433 var typeforce = require('typeforce')
18434 var types = require('./types')
18435 var scriptTypes = bscript.types
18436 var SIGNABLE = [bscript.types.P2PKH, bscript.types.P2PK, bscript.types.MULTISIG]
18437 var P2SH = SIGNABLE.concat([bscript.types.P2WPKH, bscript.types.P2WSH])
18438
18439 var ECPair = require('./ecpair')
18440 var ECSignature = require('./ecsignature')
18441 var Transaction = require('./transaction')
18442
18443 function extractChunks (type, chunks, script) {
18444 var pubKeys = []
18445 var signatures = []
18446 switch (type) {
18447 case scriptTypes.P2PKH:
18448 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18449 pubKeys = chunks.slice(1)
18450 signatures = chunks.slice(0, 1)
18451 break
18452
18453 case scriptTypes.P2PK:
18454 pubKeys[0] = script ? bscript.pubKey.output.decode(script) : undefined
18455 signatures = chunks.slice(0, 1)
18456 break
18457
18458 case scriptTypes.MULTISIG:
18459 if (script) {
18460 var multisig = bscript.multisig.output.decode(script)
18461 pubKeys = multisig.pubKeys
18462 }
18463
18464 signatures = chunks.slice(1).map(function (chunk) {
18465 return chunk.length === 0 ? undefined : chunk
18466 })
18467 break
18468 }
18469
18470 return {
18471 pubKeys: pubKeys,
18472 signatures: signatures
18473 }
18474 }
18475 function expandInput (scriptSig, witnessStack) {
18476 if (scriptSig.length === 0 && witnessStack.length === 0) return {}
18477
18478 var prevOutScript
18479 var prevOutType
18480 var scriptType
18481 var script
18482 var redeemScript
18483 var witnessScript
18484 var witnessScriptType
18485 var redeemScriptType
18486 var witness = false
18487 var p2wsh = false
18488 var p2sh = false
18489 var witnessProgram
18490 var chunks
18491
18492 var scriptSigChunks = bscript.decompile(scriptSig)
18493 var sigType = bscript.classifyInput(scriptSigChunks, true)
18494 if (sigType === scriptTypes.P2SH) {
18495 p2sh = true
18496 redeemScript = scriptSigChunks[scriptSigChunks.length - 1]
18497 redeemScriptType = bscript.classifyOutput(redeemScript)
18498 prevOutScript = bscript.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18499 prevOutType = scriptTypes.P2SH
18500 script = redeemScript
18501 }
18502
18503 var classifyWitness = bscript.classifyWitness(witnessStack)
18504 if (classifyWitness === scriptTypes.P2WSH) {
18505 witnessScript = witnessStack[witnessStack.length - 1]
18506 witnessScriptType = bscript.classifyOutput(witnessScript)
18507 p2wsh = true
18508 if (scriptSig.length === 0) {
18509 prevOutScript = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18510 prevOutType = scriptTypes.P2WSH
18511 if (typeof redeemScript !== 'undefined') {
18512 throw new Error('Redeem script given when unnecessary')
18513 }
18514 // bare witness
18515 } else {
18516 if (!redeemScript) {
18517 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18518 }
18519 witnessProgram = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18520 if (!redeemScript.equals(witnessProgram)) {
18521 throw new Error('Redeem script didn\'t match witnessScript')
18522 }
18523 }
18524
18525 if (SIGNABLE.indexOf(bscript.classifyOutput(witnessScript)) === -1) {
18526 throw new Error('unsupported witness script')
18527 }
18528 script = witnessScript
18529 scriptType = witnessScriptType
18530 chunks = witnessStack.slice(0, -1)
18531 } else if (classifyWitness === scriptTypes.P2WPKH) {
18532 var key = witnessStack[witnessStack.length - 1]
18533 var keyHash = bcrypto.hash160(key)
18534 if (scriptSig.length === 0) {
18535 prevOutScript = bscript.witnessPubKeyHash.output.encode(keyHash)
18536 prevOutType = scriptTypes.P2WPKH
18537 if (typeof redeemScript !== 'undefined') {
18538 throw new Error('Redeem script given when unnecessary')
18539 }
18540 } else {
18541 if (!redeemScript) {
18542 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18543 }
18544 witnessProgram = bscript.witnessPubKeyHash.output.encode(keyHash)
18545 if (!redeemScript.equals(witnessProgram)) {
18546 throw new Error('Redeem script did not have the right witness program')
18547 }
18548 }
18549
18550 scriptType = scriptTypes.P2PKH
18551 chunks = witnessStack
18552 } else if (redeemScript) {
18553 if (P2SH.indexOf(redeemScriptType) === -1) {
18554 throw new Error('Bad redeemscript!')
18555 }
18556
18557 script = redeemScript
18558 scriptType = redeemScriptType
18559 chunks = scriptSigChunks.slice(0, -1)
18560 } else {
18561 prevOutType = scriptType = bscript.classifyInput(scriptSig)
18562 chunks = scriptSigChunks
18563 }
18564
18565 var expanded = extractChunks(scriptType, chunks, script)
18566
18567 var result = {
18568 pubKeys: expanded.pubKeys,
18569 signatures: expanded.signatures,
18570 prevOutScript: prevOutScript,
18571 prevOutType: prevOutType,
18572 signType: scriptType,
18573 signScript: script,
18574 witness: Boolean(witness)
18575 }
18576
18577 if (p2sh) {
18578 result.redeemScript = redeemScript
18579 result.redeemScriptType = redeemScriptType
18580 }
18581
18582 if (p2wsh) {
18583 result.witnessScript = witnessScript
18584 result.witnessScriptType = witnessScriptType
18585 }
18586
18587 return result
18588 }
18589
18590 // could be done in expandInput, but requires the original Transaction for hashForSignature
18591 function fixMultisigOrder (input, transaction, vin) {
18592 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18593 if (input.pubKeys.length === input.signatures.length) return
18594
18595 var unmatched = input.signatures.concat()
18596
18597 input.signatures = input.pubKeys.map(function (pubKey) {
18598 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18599 var match
18600
18601 // check for a signature
18602 unmatched.some(function (signature, i) {
18603 // skip if undefined || OP_0
18604 if (!signature) return false
18605
18606 // TODO: avoid O(n) hashForSignature
18607 var parsed = ECSignature.parseScriptSignature(signature)
18608 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
18609
18610 // skip if signature does not match pubKey
18611 if (!keyPair.verify(hash, parsed.signature)) return false
18612
18613 // remove matched signature from unmatched
18614 unmatched[i] = undefined
18615 match = signature
18616
18617 return true
18618 })
18619
18620 return match
18621 })
18622 }
18623
18624 function expandOutput (script, scriptType, ourPubKey) {
18625 typeforce(types.Buffer, script)
18626
18627 var scriptChunks = bscript.decompile(script)
18628 if (!scriptType) {
18629 scriptType = bscript.classifyOutput(script)
18630 }
18631
18632 var pubKeys = []
18633
18634 switch (scriptType) {
18635 // does our hash160(pubKey) match the output scripts?
18636 case scriptTypes.P2PKH:
18637 if (!ourPubKey) break
18638
18639 var pkh1 = scriptChunks[2]
18640 var pkh2 = bcrypto.hash160(ourPubKey)
18641 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18642 break
18643
18644 // does our hash160(pubKey) match the output scripts?
18645 case scriptTypes.P2WPKH:
18646 if (!ourPubKey) break
18647
18648 var wpkh1 = scriptChunks[1]
18649 var wpkh2 = bcrypto.hash160(ourPubKey)
18650 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18651 break
18652
18653 case scriptTypes.P2PK:
18654 pubKeys = scriptChunks.slice(0, 1)
18655 break
18656
18657 case scriptTypes.MULTISIG:
18658 pubKeys = scriptChunks.slice(1, -2)
18659 break
18660
18661 default: return { scriptType: scriptType }
18662 }
18663
18664 return {
18665 pubKeys: pubKeys,
18666 scriptType: scriptType,
18667 signatures: pubKeys.map(function () { return undefined })
18668 }
18669 }
18670
18671 function checkP2shInput (input, redeemScriptHash) {
18672 if (input.prevOutType) {
18673 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
18674
18675 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[1]
18676 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18677 }
18678 }
18679
18680 function checkP2WSHInput (input, witnessScriptHash) {
18681 if (input.prevOutType) {
18682 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
18683
18684 var scriptHash = bscript.decompile(input.prevOutScript)[1]
18685 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18686 }
18687 }
18688
18689 function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18690 var expanded
18691 var prevOutType
18692 var prevOutScript
18693
18694 var p2sh = false
18695 var p2shType
18696 var redeemScriptHash
18697
18698 var witness = false
18699 var p2wsh = false
18700 var witnessType
18701 var witnessScriptHash
18702
18703 var signType
18704 var signScript
18705
18706 if (redeemScript && witnessScript) {
18707 redeemScriptHash = bcrypto.hash160(redeemScript)
18708 witnessScriptHash = bcrypto.sha256(witnessScript)
18709 checkP2shInput(input, redeemScriptHash)
18710
18711 if (!redeemScript.equals(bscript.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
18712
18713 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18714 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18715 prevOutType = bscript.types.P2SH
18716 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18717 p2sh = witness = p2wsh = true
18718 p2shType = bscript.types.P2WSH
18719 signType = witnessType = expanded.scriptType
18720 signScript = witnessScript
18721 } else if (redeemScript) {
18722 redeemScriptHash = bcrypto.hash160(redeemScript)
18723 checkP2shInput(input, redeemScriptHash)
18724
18725 expanded = expandOutput(redeemScript, undefined, kpPubKey)
18726 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
18727
18728 prevOutType = bscript.types.P2SH
18729 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18730 p2sh = true
18731 signType = p2shType = expanded.scriptType
18732 signScript = redeemScript
18733 witness = signType === bscript.types.P2WPKH
18734 } else if (witnessScript) {
18735 witnessScriptHash = bcrypto.sha256(witnessScript)
18736 checkP2WSHInput(input, witnessScriptHash)
18737
18738 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18739 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18740
18741 prevOutType = bscript.types.P2WSH
18742 prevOutScript = bscript.witnessScriptHash.output.encode(witnessScriptHash)
18743 witness = p2wsh = true
18744 signType = witnessType = expanded.scriptType
18745 signScript = witnessScript
18746 } else if (input.prevOutType) {
18747 // embedded scripts are not possible without a redeemScript
18748 if (input.prevOutType === scriptTypes.P2SH ||
18749 input.prevOutType === scriptTypes.P2WSH) {
18750 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
18751 }
18752
18753 prevOutType = input.prevOutType
18754 prevOutScript = input.prevOutScript
18755 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
18756 if (!expanded.pubKeys) return
18757
18758 witness = (input.prevOutType === scriptTypes.P2WPKH)
18759 signType = prevOutType
18760 signScript = prevOutScript
18761 } else {
18762 prevOutScript = bscript.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
18763 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
18764 prevOutType = scriptTypes.P2PKH
18765 witness = false
18766 signType = prevOutType
18767 signScript = prevOutScript
18768 }
18769
18770 if (witness && !types.Satoshi(witnessValue)) {
18771 throw new Error('Input was witness but not given witness value')
18772 }
18773
18774 if (signType === scriptTypes.P2WPKH) {
18775 signScript = bscript.pubKeyHash.output.encode(bscript.witnessPubKeyHash.output.decode(signScript))
18776 }
18777
18778 if (p2sh) {
18779 input.redeemScript = redeemScript
18780 input.redeemScriptType = p2shType
18781 }
18782
18783 if (p2wsh) {
18784 input.witnessScript = witnessScript
18785 input.witnessScriptType = witnessType
18786 }
18787
18788 input.pubKeys = expanded.pubKeys
18789 input.signatures = expanded.signatures
18790 input.signScript = signScript
18791 input.signType = signType
18792 input.prevOutScript = prevOutScript
18793 input.prevOutType = prevOutType
18794 input.witness = witness
18795 }
18796
18797 function buildStack (type, signatures, pubKeys, allowIncomplete) {
18798 if (type === scriptTypes.P2PKH) {
18799 if (signatures.length === 1 && Buffer.isBuffer(signatures[0]) && pubKeys.length === 1) return bscript.pubKeyHash.input.encodeStack(signatures[0], pubKeys[0])
18800 } else if (type === scriptTypes.P2PK) {
18801 if (signatures.length === 1 && Buffer.isBuffer(signatures[0])) return bscript.pubKey.input.encodeStack(signatures[0])
18802 } else if (type === scriptTypes.MULTISIG) {
18803 if (signatures.length > 0) {
18804 signatures = signatures.map(function (signature) {
18805 return signature || ops.OP_0
18806 })
18807 if (!allowIncomplete) {
18808 // remove blank signatures
18809 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
18810 }
18811
18812 return bscript.multisig.input.encodeStack(signatures /* see if it's necessary first */)
18813 }
18814 } else {
18815 throw new Error('Not yet supported')
18816 }
18817
18818 if (!allowIncomplete) throw new Error('Not enough signatures provided')
18819
18820 return []
18821 }
18822
18823 function buildInput (input, allowIncomplete) {
18824 var scriptType = input.prevOutType
18825 var sig = []
18826 var witness = []
18827 if (SIGNABLE.indexOf(scriptType) !== -1) {
18828 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
18829 }
18830
18831 var p2sh = false
18832 if (scriptType === bscript.types.P2SH) {
18833 // We can remove this error later when we have a guarantee prepareInput
18834 // rejects unsignable scripts - it MUST be signable at this point.
18835 if (P2SH.indexOf(input.redeemScriptType) === -1) {
18836 throw new Error('Impossible to sign this type')
18837 }
18838 p2sh = true
18839 if (SIGNABLE.indexOf(input.redeemScriptType) !== -1) {
18840 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
18841 }
18842 // If it wasn't SIGNABLE, it's witness, defer to that
18843 scriptType = input.redeemScriptType
18844 }
18845
18846 if (scriptType === bscript.types.P2WPKH) {
18847 // P2WPKH is a special case of P2PKH
18848 witness = buildStack(bscript.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
18849 } else if (scriptType === bscript.types.P2WSH) {
18850 // We can remove this check later
18851 if (SIGNABLE.indexOf(input.witnessScriptType) !== -1) {
18852 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
18853 witness.push(input.witnessScript)
18854 } else {
18855 // We can remove this error later when we have a guarantee prepareInput
18856 // rejects unsignble scripts - it MUST be signable at this point.
18857 throw new Error()
18858 }
18859
18860 scriptType = input.witnessScriptType
18861 }
18862
18863 // append redeemScript if necessary
18864 if (p2sh) {
18865 sig.push(input.redeemScript)
18866 }
18867
18868 return {
18869 type: scriptType,
18870 script: bscript.compile(sig),
18871 witness: witness
18872 }
18873 }
18874
18875 function TransactionBuilder (network, maximumFeeRate) {
18876 this.prevTxMap = {}
18877 this.network = network || networks.bitcoin
18878
18879 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
18880 this.maximumFeeRate = maximumFeeRate || 1000
18881
18882 this.inputs = []
18883 this.tx = new Transaction()
18884 }
18885
18886 TransactionBuilder.prototype.setLockTime = function (locktime) {
18887 typeforce(types.UInt32, locktime)
18888
18889 // if any signatures exist, throw
18890 if (this.inputs.some(function (input) {
18891 if (!input.signatures) return false
18892
18893 return input.signatures.some(function (s) { return s })
18894 })) {
18895 throw new Error('No, this would invalidate signatures')
18896 }
18897
18898 this.tx.locktime = locktime
18899 }
18900
18901 TransactionBuilder.prototype.setVersion = function (version) {
18902 typeforce(types.UInt32, version)
18903
18904 // XXX: this might eventually become more complex depending on what the versions represent
18905 this.tx.version = version
18906 }
18907
18908 TransactionBuilder.fromTransaction = function (transaction, network) {
18909 var txb = new TransactionBuilder(network)
18910
18911 // Copy transaction fields
18912 txb.setVersion(transaction.version)
18913 txb.setLockTime(transaction.locktime)
18914
18915 // Copy outputs (done first to avoid signature invalidation)
18916 transaction.outs.forEach(function (txOut) {
18917 txb.addOutput(txOut.script, txOut.value)
18918 })
18919
18920 // Copy inputs
18921 transaction.ins.forEach(function (txIn) {
18922 txb.__addInputUnsafe(txIn.hash, txIn.index, {
18923 sequence: txIn.sequence,
18924 script: txIn.script,
18925 witness: txIn.witness
18926 })
18927 })
18928
18929 // fix some things not possible through the public API
18930 txb.inputs.forEach(function (input, i) {
18931 fixMultisigOrder(input, transaction, i)
18932 })
18933
18934 return txb
18935 }
18936
18937 TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
18938 if (!this.__canModifyInputs()) {
18939 throw new Error('No, this would invalidate signatures')
18940 }
18941
18942 var value
18943
18944 // is it a hex string?
18945 if (typeof txHash === 'string') {
18946 // transaction hashs's are displayed in reverse order, un-reverse it
18947 txHash = Buffer.from(txHash, 'hex').reverse()
18948
18949 // is it a Transaction object?
18950 } else if (txHash instanceof Transaction) {
18951 var txOut = txHash.outs[vout]
18952 prevOutScript = txOut.script
18953 value = txOut.value
18954
18955 txHash = txHash.getHash()
18956 }
18957
18958 return this.__addInputUnsafe(txHash, vout, {
18959 sequence: sequence,
18960 prevOutScript: prevOutScript,
18961 value: value
18962 })
18963 }
18964
18965 TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
18966 if (Transaction.isCoinbaseHash(txHash)) {
18967 throw new Error('coinbase inputs not supported')
18968 }
18969
18970 var prevTxOut = txHash.toString('hex') + ':' + vout
18971 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
18972
18973 var input = {}
18974
18975 // derive what we can from the scriptSig
18976 if (options.script !== undefined) {
18977 input = expandInput(options.script, options.witness || [])
18978 }
18979
18980 // if an input value was given, retain it
18981 if (options.value !== undefined) {
18982 input.value = options.value
18983 }
18984
18985 // derive what we can from the previous transactions output script
18986 if (!input.prevOutScript && options.prevOutScript) {
18987 var prevOutType
18988
18989 if (!input.pubKeys && !input.signatures) {
18990 var expanded = expandOutput(options.prevOutScript)
18991
18992 if (expanded.pubKeys) {
18993 input.pubKeys = expanded.pubKeys
18994 input.signatures = expanded.signatures
18995 }
18996
18997 prevOutType = expanded.scriptType
18998 }
18999
19000 input.prevOutScript = options.prevOutScript
19001 input.prevOutType = prevOutType || bscript.classifyOutput(options.prevOutScript)
19002 }
19003
19004 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
19005 this.inputs[vin] = input
19006 this.prevTxMap[prevTxOut] = vin
19007
19008 return vin
19009 }
19010
19011 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19012 if (!this.__canModifyOutputs()) {
19013 throw new Error('No, this would invalidate signatures')
19014 }
19015
19016 // Attempt to get a script if it's a base58 address string
19017 if (typeof scriptPubKey === 'string') {
19018 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
19019 }
19020
19021 return this.tx.addOutput(scriptPubKey, value)
19022 }
19023
19024 TransactionBuilder.prototype.build = function () {
19025 return this.__build(false)
19026 }
19027 TransactionBuilder.prototype.buildIncomplete = function () {
19028 return this.__build(true)
19029 }
19030
19031 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19032 if (!allowIncomplete) {
19033 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19034 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19035 }
19036
19037 var tx = this.tx.clone()
19038 // Create script signatures from inputs
19039 this.inputs.forEach(function (input, i) {
19040 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19041 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19042 var result = buildInput(input, allowIncomplete)
19043
19044 // skip if no result
19045 if (!allowIncomplete) {
19046 if (SIGNABLE.indexOf(result.type) === -1 && result.type !== bscript.types.P2WPKH) {
19047 throw new Error(result.type + ' not supported')
19048 }
19049 }
19050
19051 tx.setInputScript(i, result.script)
19052 tx.setWitness(i, result.witness)
19053 })
19054
19055 if (!allowIncomplete) {
19056 // do not rely on this, its merely a last resort
19057 if (this.__overMaximumFees(tx.byteLength())) {
19058 throw new Error('Transaction has absurd fees')
19059 }
19060 }
19061
19062 return tx
19063 }
19064
19065 function canSign (input) {
19066 return input.prevOutScript !== undefined &&
19067 input.signScript !== undefined &&
19068 input.pubKeys !== undefined &&
19069 input.signatures !== undefined &&
19070 input.signatures.length === input.pubKeys.length &&
19071 input.pubKeys.length > 0 &&
19072 input.witness !== undefined
19073 }
19074
19075 TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19076 if (keyPair.network !== this.network) throw new Error('Inconsistent network')
19077 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19078 hashType = hashType || Transaction.SIGHASH_ALL
19079
19080 var input = this.inputs[vin]
19081
19082 // if redeemScript was previously provided, enforce consistency
19083 if (input.redeemScript !== undefined &&
19084 redeemScript &&
19085 !input.redeemScript.equals(redeemScript)) {
19086 throw new Error('Inconsistent redeemScript')
19087 }
19088
19089 var kpPubKey = keyPair.getPublicKeyBuffer()
19090 if (!canSign(input)) {
19091 prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19092 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19093 }
19094
19095 // ready to sign
19096 var signatureHash
19097 if (input.witness) {
19098 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, witnessValue, hashType)
19099 } else {
19100 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
19101 }
19102 // enforce in order signing of public keys
19103 var signed = input.pubKeys.some(function (pubKey, i) {
19104 if (!kpPubKey.equals(pubKey)) return false
19105 if (input.signatures[i]) throw new Error('Signature already exists')
19106
19107 input.signatures[i] = keyPair.sign(signatureHash).toScriptSignature(hashType)
19108 return true
19109 })
19110
19111 if (!signed) throw new Error('Key pair cannot sign for this input')
19112 }
19113
19114 function signatureHashType (buffer) {
19115 return buffer.readUInt8(buffer.length - 1)
19116 }
19117
19118 TransactionBuilder.prototype.__canModifyInputs = function () {
19119 return this.inputs.every(function (input) {
19120 // any signatures?
19121 if (input.signatures === undefined) return true
19122
19123 return input.signatures.every(function (signature) {
19124 if (!signature) return true
19125 var hashType = signatureHashType(signature)
19126
19127 // if SIGHASH_ANYONECANPAY is set, signatures would not
19128 // be invalidated by more inputs
19129 return hashType & Transaction.SIGHASH_ANYONECANPAY
19130 })
19131 })
19132 }
19133
19134 TransactionBuilder.prototype.__canModifyOutputs = function () {
19135 var nInputs = this.tx.ins.length
19136 var nOutputs = this.tx.outs.length
19137
19138 return this.inputs.every(function (input) {
19139 if (input.signatures === undefined) return true
19140
19141 return input.signatures.every(function (signature) {
19142 if (!signature) return true
19143 var hashType = signatureHashType(signature)
19144
19145 var hashTypeMod = hashType & 0x1f
19146 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19147 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19148 // if SIGHASH_SINGLE is set, and nInputs > nOutputs
19149 // some signatures would be invalidated by the addition
19150 // of more outputs
19151 return nInputs <= nOutputs
19152 }
19153 })
19154 })
19155 }
19156
19157 TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19158 // not all inputs will have .value defined
19159 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value >>> 0) }, 0)
19160
19161 // but all outputs do, and if we have any input value
19162 // we can immediately determine if the outputs are too small
19163 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value }, 0)
19164 var fee = incoming - outgoing
19165 var feeRate = fee / bytes
19166
19167 return feeRate > this.maximumFeeRate
19168 }
19169
19170 module.exports = TransactionBuilder
19171
19172 },{"./address":42,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./networks":51,"./script":52,"./transaction":76,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],78:[function(require,module,exports){
19173 var typeforce = require('typeforce')
19174
19175 var UINT31_MAX = Math.pow(2, 31) - 1
19176 function UInt31 (value) {
19177 return typeforce.UInt32(value) && value <= UINT31_MAX
19178 }
19179
19180 function BIP32Path (value) {
19181 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19182 }
19183 BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
19184
19185 var SATOSHI_MAX = 21 * 1e14
19186 function Satoshi (value) {
19187 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19188 }
19189
19190 // external dependent types
19191 var BigInt = typeforce.quacksLike('BigInteger')
19192 var ECPoint = typeforce.quacksLike('Point')
19193
19194 // exposed, external API
19195 var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19196 var Network = typeforce.compile({
19197 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19198 bip32: {
19199 public: typeforce.UInt32,
19200 private: typeforce.UInt32
19201 },
19202 pubKeyHash: typeforce.UInt8,
19203 scriptHash: typeforce.UInt8,
19204 wif: typeforce.UInt8
19205 })
19206
19207 // extend typeforce types with ours
19208 var types = {
19209 BigInt: BigInt,
19210 BIP32Path: BIP32Path,
19211 Buffer256bit: typeforce.BufferN(32),
19212 ECPoint: ECPoint,
19213 ECSignature: ECSignature,
19214 Hash160bit: typeforce.BufferN(20),
19215 Hash256bit: typeforce.BufferN(32),
19216 Network: Network,
19217 Satoshi: Satoshi,
19218 UInt31: UInt31
19219 }
19220
19221 for (var typeName in typeforce) {
19222 types[typeName] = typeforce[typeName]
19223 }
19224
19225 module.exports = types
19226
19227 },{"typeforce":109}],79:[function(require,module,exports){
19228 var basex = require('base-x')
19229 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
19230
19231 module.exports = basex(ALPHABET)
19232
19233 },{"base-x":34}],80:[function(require,module,exports){
19234 (function (Buffer){
19235 'use strict'
19236
19237 var base58 = require('bs58')
19238 var createHash = require('create-hash')
19239
19240 // SHA256(SHA256(buffer))
19241 function sha256x2 (buffer) {
19242 var tmp = createHash('sha256').update(buffer).digest()
19243 return createHash('sha256').update(tmp).digest()
19244 }
19245
19246 // Encode a buffer as a base58-check encoded string
19247 function encode (payload) {
19248 var checksum = sha256x2(payload)
19249
19250 return base58.encode(Buffer.concat([
19251 payload,
19252 checksum
19253 ], payload.length + 4))
19254 }
19255
19256 function decodeRaw (buffer) {
19257 var payload = buffer.slice(0, -4)
19258 var checksum = buffer.slice(-4)
19259 var newChecksum = sha256x2(payload)
19260
19261 if (checksum[0] ^ newChecksum[0] |
19262 checksum[1] ^ newChecksum[1] |
19263 checksum[2] ^ newChecksum[2] |
19264 checksum[3] ^ newChecksum[3]) return
19265
19266 return payload
19267 }
19268
19269 // Decode a base58-check encoded string to a buffer, no result if checksum is wrong
19270 function decodeUnsafe (string) {
19271 var buffer = base58.decodeUnsafe(string)
19272 if (!buffer) return
19273
19274 return decodeRaw(buffer)
19275 }
19276
19277 function decode (string) {
19278 var buffer = base58.decode(string)
19279 var payload = decodeRaw(buffer)
19280 if (!payload) throw new Error('Invalid checksum')
19281 return payload
19282 }
19283
19284 module.exports = {
19285 encode: encode,
19286 decode: decode,
19287 decodeUnsafe: decodeUnsafe
19288 }
19289
19290 }).call(this,require("buffer").Buffer)
19291 },{"bs58":79,"buffer":4,"create-hash":82}],81:[function(require,module,exports){
19292 var Buffer = require('safe-buffer').Buffer
19293 var Transform = require('stream').Transform
19294 var StringDecoder = require('string_decoder').StringDecoder
19295 var inherits = require('inherits')
19296
19297 function CipherBase (hashMode) {
19298 Transform.call(this)
19299 this.hashMode = typeof hashMode === 'string'
19300 if (this.hashMode) {
19301 this[hashMode] = this._finalOrDigest
19302 } else {
19303 this.final = this._finalOrDigest
19304 }
19305 if (this._final) {
19306 this.__final = this._final
19307 this._final = null
19308 }
19309 this._decoder = null
19310 this._encoding = null
19311 }
19312 inherits(CipherBase, Transform)
19313
19314 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
19315 if (typeof data === 'string') {
19316 data = Buffer.from(data, inputEnc)
19317 }
19318
19319 var outData = this._update(data)
19320 if (this.hashMode) return this
19321
19322 if (outputEnc) {
19323 outData = this._toString(outData, outputEnc)
19324 }
19325
19326 return outData
19327 }
19328
19329 CipherBase.prototype.setAutoPadding = function () {}
19330 CipherBase.prototype.getAuthTag = function () {
19331 throw new Error('trying to get auth tag in unsupported state')
19332 }
19333
19334 CipherBase.prototype.setAuthTag = function () {
19335 throw new Error('trying to set auth tag in unsupported state')
19336 }
19337
19338 CipherBase.prototype.setAAD = function () {
19339 throw new Error('trying to set aad in unsupported state')
19340 }
19341
19342 CipherBase.prototype._transform = function (data, _, next) {
19343 var err
19344 try {
19345 if (this.hashMode) {
19346 this._update(data)
19347 } else {
19348 this.push(this._update(data))
19349 }
19350 } catch (e) {
19351 err = e
19352 } finally {
19353 next(err)
19354 }
19355 }
19356 CipherBase.prototype._flush = function (done) {
19357 var err
19358 try {
19359 this.push(this.__final())
19360 } catch (e) {
19361 err = e
19362 }
19363
19364 done(err)
19365 }
19366 CipherBase.prototype._finalOrDigest = function (outputEnc) {
19367 var outData = this.__final() || Buffer.alloc(0)
19368 if (outputEnc) {
19369 outData = this._toString(outData, outputEnc, true)
19370 }
19371 return outData
19372 }
19373
19374 CipherBase.prototype._toString = function (value, enc, fin) {
19375 if (!this._decoder) {
19376 this._decoder = new StringDecoder(enc)
19377 this._encoding = enc
19378 }
19379
19380 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
19381
19382 var out = this._decoder.write(value)
19383 if (fin) {
19384 out += this._decoder.end()
19385 }
19386
19387 return out
19388 }
19389
19390 module.exports = CipherBase
19391
19392 },{"inherits":93,"safe-buffer":98,"stream":27,"string_decoder":28}],82:[function(require,module,exports){
19393 (function (Buffer){
19394 'use strict'
19395 var inherits = require('inherits')
19396 var md5 = require('./md5')
19397 var RIPEMD160 = require('ripemd160')
19398 var sha = require('sha.js')
19399
19400 var Base = require('cipher-base')
19401
19402 function HashNoConstructor (hash) {
19403 Base.call(this, 'digest')
19404
19405 this._hash = hash
19406 this.buffers = []
19407 }
19408
19409 inherits(HashNoConstructor, Base)
19410
19411 HashNoConstructor.prototype._update = function (data) {
19412 this.buffers.push(data)
19413 }
19414
19415 HashNoConstructor.prototype._final = function () {
19416 var buf = Buffer.concat(this.buffers)
19417 var r = this._hash(buf)
19418 this.buffers = null
19419
19420 return r
19421 }
19422
19423 function Hash (hash) {
19424 Base.call(this, 'digest')
19425
19426 this._hash = hash
19427 }
19428
19429 inherits(Hash, Base)
19430
19431 Hash.prototype._update = function (data) {
19432 this._hash.update(data)
19433 }
19434
19435 Hash.prototype._final = function () {
19436 return this._hash.digest()
19437 }
19438
19439 module.exports = function createHash (alg) {
19440 alg = alg.toLowerCase()
19441 if (alg === 'md5') return new HashNoConstructor(md5)
19442 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
19443
19444 return new Hash(sha(alg))
19445 }
19446
19447 }).call(this,require("buffer").Buffer)
19448 },{"./md5":84,"buffer":4,"cipher-base":81,"inherits":93,"ripemd160":97,"sha.js":100}],83:[function(require,module,exports){
19449 (function (Buffer){
19450 'use strict'
19451 var intSize = 4
19452 var zeroBuffer = new Buffer(intSize)
19453 zeroBuffer.fill(0)
19454
19455 var charSize = 8
19456 var hashSize = 16
19457
19458 function toArray (buf) {
19459 if ((buf.length % intSize) !== 0) {
19460 var len = buf.length + (intSize - (buf.length % intSize))
19461 buf = Buffer.concat([buf, zeroBuffer], len)
19462 }
19463
19464 var arr = new Array(buf.length >>> 2)
19465 for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
19466 arr[j] = buf.readInt32LE(i)
19467 }
19468
19469 return arr
19470 }
19471
19472 module.exports = function hash (buf, fn) {
19473 var arr = fn(toArray(buf), buf.length * charSize)
19474 buf = new Buffer(hashSize)
19475 for (var i = 0; i < arr.length; i++) {
19476 buf.writeInt32LE(arr[i], i << 2, true)
19477 }
19478 return buf
19479 }
19480
19481 }).call(this,require("buffer").Buffer)
19482 },{"buffer":4}],84:[function(require,module,exports){
19483 'use strict'
19484 /*
19485 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
19486 * Digest Algorithm, as defined in RFC 1321.
19487 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
19488 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
19489 * Distributed under the BSD License
19490 * See http://pajhome.org.uk/crypt/md5 for more info.
19491 */
19492
19493 var makeHash = require('./make-hash')
19494
19495 /*
19496 * Calculate the MD5 of an array of little-endian words, and a bit length
19497 */
19498 function core_md5 (x, len) {
19499 /* append padding */
19500 x[len >> 5] |= 0x80 << ((len) % 32)
19501 x[(((len + 64) >>> 9) << 4) + 14] = len
19502
19503 var a = 1732584193
19504 var b = -271733879
19505 var c = -1732584194
19506 var d = 271733878
19507
19508 for (var i = 0; i < x.length; i += 16) {
19509 var olda = a
19510 var oldb = b
19511 var oldc = c
19512 var oldd = d
19513
19514 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
19515 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
19516 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
19517 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
19518 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
19519 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
19520 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
19521 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
19522 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
19523 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
19524 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
19525 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
19526 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
19527 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
19528 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
19529 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
19530
19531 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
19532 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
19533 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
19534 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
19535 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
19536 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
19537 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
19538 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
19539 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
19540 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
19541 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
19542 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
19543 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
19544 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
19545 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
19546 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
19547
19548 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
19549 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
19550 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
19551 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
19552 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
19553 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
19554 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
19555 b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
19556 a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
19557 d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
19558 c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
19559 b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
19560 a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
19561 d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
19562 c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
19563 b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
19564
19565 a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
19566 d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
19567 c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
19568 b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
19569 a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
19570 d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
19571 c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
19572 b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
19573 a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
19574 d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
19575 c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
19576 b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
19577 a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
19578 d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
19579 c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
19580 b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
19581
19582 a = safe_add(a, olda)
19583 b = safe_add(b, oldb)
19584 c = safe_add(c, oldc)
19585 d = safe_add(d, oldd)
19586 }
19587
19588 return [a, b, c, d]
19589 }
19590
19591 /*
19592 * These functions implement the four basic operations the algorithm uses.
19593 */
19594 function md5_cmn (q, a, b, x, s, t) {
19595 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
19596 }
19597
19598 function md5_ff (a, b, c, d, x, s, t) {
19599 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
19600 }
19601
19602 function md5_gg (a, b, c, d, x, s, t) {
19603 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
19604 }
19605
19606 function md5_hh (a, b, c, d, x, s, t) {
19607 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
19608 }
19609
19610 function md5_ii (a, b, c, d, x, s, t) {
19611 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
19612 }
19613
19614 /*
19615 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
19616 * to work around bugs in some JS interpreters.
19617 */
19618 function safe_add (x, y) {
19619 var lsw = (x & 0xFFFF) + (y & 0xFFFF)
19620 var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
19621 return (msw << 16) | (lsw & 0xFFFF)
19622 }
19623
19624 /*
19625 * Bitwise rotate a 32-bit number to the left.
19626 */
19627 function bit_rol (num, cnt) {
19628 return (num << cnt) | (num >>> (32 - cnt))
19629 }
19630
19631 module.exports = function md5 (buf) {
19632 return makeHash(buf, core_md5)
19633 }
19634
19635 },{"./make-hash":83}],85:[function(require,module,exports){
19636 'use strict'
19637 var inherits = require('inherits')
19638 var Legacy = require('./legacy')
19639 var Base = require('cipher-base')
19640 var Buffer = require('safe-buffer').Buffer
19641 var md5 = require('create-hash/md5')
19642 var RIPEMD160 = require('ripemd160')
19643
19644 var sha = require('sha.js')
19645
19646 var ZEROS = Buffer.alloc(128)
19647
19648 function Hmac (alg, key) {
19649 Base.call(this, 'digest')
19650 if (typeof key === 'string') {
19651 key = Buffer.from(key)
19652 }
19653
19654 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
19655
19656 this._alg = alg
19657 this._key = key
19658 if (key.length > blocksize) {
19659 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19660 key = hash.update(key).digest()
19661 } else if (key.length < blocksize) {
19662 key = Buffer.concat([key, ZEROS], blocksize)
19663 }
19664
19665 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19666 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19667
19668 for (var i = 0; i < blocksize; i++) {
19669 ipad[i] = key[i] ^ 0x36
19670 opad[i] = key[i] ^ 0x5C
19671 }
19672 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19673 this._hash.update(ipad)
19674 }
19675
19676 inherits(Hmac, Base)
19677
19678 Hmac.prototype._update = function (data) {
19679 this._hash.update(data)
19680 }
19681
19682 Hmac.prototype._final = function () {
19683 var h = this._hash.digest()
19684 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
19685 return hash.update(this._opad).update(h).digest()
19686 }
19687
19688 module.exports = function createHmac (alg, key) {
19689 alg = alg.toLowerCase()
19690 if (alg === 'rmd160' || alg === 'ripemd160') {
19691 return new Hmac('rmd160', key)
19692 }
19693 if (alg === 'md5') {
19694 return new Legacy(md5, key)
19695 }
19696 return new Hmac(alg, key)
19697 }
19698
19699 },{"./legacy":86,"cipher-base":81,"create-hash/md5":84,"inherits":93,"ripemd160":97,"safe-buffer":98,"sha.js":100}],86:[function(require,module,exports){
19700 'use strict'
19701 var inherits = require('inherits')
19702 var Buffer = require('safe-buffer').Buffer
19703
19704 var Base = require('cipher-base')
19705
19706 var ZEROS = Buffer.alloc(128)
19707 var blocksize = 64
19708
19709 function Hmac (alg, key) {
19710 Base.call(this, 'digest')
19711 if (typeof key === 'string') {
19712 key = Buffer.from(key)
19713 }
19714
19715 this._alg = alg
19716 this._key = key
19717
19718 if (key.length > blocksize) {
19719 key = alg(key)
19720 } else if (key.length < blocksize) {
19721 key = Buffer.concat([key, ZEROS], blocksize)
19722 }
19723
19724 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19725 var opad = this._opad = Buffer.allocUnsafe(blocksize)
19726
19727 for (var i = 0; i < blocksize; i++) {
19728 ipad[i] = key[i] ^ 0x36
19729 opad[i] = key[i] ^ 0x5C
19730 }
19731
19732 this._hash = [ipad]
19733 }
19734
19735 inherits(Hmac, Base)
19736
19737 Hmac.prototype._update = function (data) {
19738 this._hash.push(data)
19739 }
19740
19741 Hmac.prototype._final = function () {
19742 var h = this._alg(Buffer.concat(this._hash))
19743 return this._alg(Buffer.concat([this._opad, h]))
19744 }
19745 module.exports = Hmac
19746
19747 },{"cipher-base":81,"inherits":93,"safe-buffer":98}],87:[function(require,module,exports){
19748 var assert = require('assert')
19749 var BigInteger = require('bigi')
19750
19751 var Point = require('./point')
19752
19753 function Curve (p, a, b, Gx, Gy, n, h) {
19754 this.p = p
19755 this.a = a
19756 this.b = b
19757 this.G = Point.fromAffine(this, Gx, Gy)
19758 this.n = n
19759 this.h = h
19760
19761 this.infinity = new Point(this, null, null, BigInteger.ZERO)
19762
19763 // result caching
19764 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
19765
19766 // determine size of p in bytes
19767 this.pLength = Math.floor((this.p.bitLength() + 7) / 8)
19768 }
19769
19770 Curve.prototype.pointFromX = function (isOdd, x) {
19771 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
19772 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
19773
19774 var y = beta
19775 if (beta.isEven() ^ !isOdd) {
19776 y = this.p.subtract(y) // -y % p
19777 }
19778
19779 return Point.fromAffine(this, x, y)
19780 }
19781
19782 Curve.prototype.isInfinity = function (Q) {
19783 if (Q === this.infinity) return true
19784
19785 return Q.z.signum() === 0 && Q.y.signum() !== 0
19786 }
19787
19788 Curve.prototype.isOnCurve = function (Q) {
19789 if (this.isInfinity(Q)) return true
19790
19791 var x = Q.affineX
19792 var y = Q.affineY
19793 var a = this.a
19794 var b = this.b
19795 var p = this.p
19796
19797 // Check that xQ and yQ are integers in the interval [0, p - 1]
19798 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
19799 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
19800
19801 // and check that y^2 = x^3 + ax + b (mod p)
19802 var lhs = y.square().mod(p)
19803 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
19804 return lhs.equals(rhs)
19805 }
19806
19807 /**
19808 * Validate an elliptic curve point.
19809 *
19810 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
19811 */
19812 Curve.prototype.validate = function (Q) {
19813 // Check Q != O
19814 assert(!this.isInfinity(Q), 'Point is at infinity')
19815 assert(this.isOnCurve(Q), 'Point is not on the curve')
19816
19817 // Check nQ = O (where Q is a scalar multiple of G)
19818 var nQ = Q.multiply(this.n)
19819 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
19820
19821 return true
19822 }
19823
19824 module.exports = Curve
19825
19826 },{"./point":91,"assert":1,"bigi":37}],88:[function(require,module,exports){
19827 module.exports={
19828 "secp128r1": {
19829 "p": "fffffffdffffffffffffffffffffffff",
19830 "a": "fffffffdfffffffffffffffffffffffc",
19831 "b": "e87579c11079f43dd824993c2cee5ed3",
19832 "n": "fffffffe0000000075a30d1b9038a115",
19833 "h": "01",
19834 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
19835 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
19836 },
19837 "secp160k1": {
19838 "p": "fffffffffffffffffffffffffffffffeffffac73",
19839 "a": "00",
19840 "b": "07",
19841 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
19842 "h": "01",
19843 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
19844 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
19845 },
19846 "secp160r1": {
19847 "p": "ffffffffffffffffffffffffffffffff7fffffff",
19848 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
19849 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
19850 "n": "0100000000000000000001f4c8f927aed3ca752257",
19851 "h": "01",
19852 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
19853 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
19854 },
19855 "secp192k1": {
19856 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
19857 "a": "00",
19858 "b": "03",
19859 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
19860 "h": "01",
19861 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
19862 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
19863 },
19864 "secp192r1": {
19865 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
19866 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
19867 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
19868 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
19869 "h": "01",
19870 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
19871 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
19872 },
19873 "secp256k1": {
19874 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
19875 "a": "00",
19876 "b": "07",
19877 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
19878 "h": "01",
19879 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
19880 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
19881 },
19882 "secp256r1": {
19883 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
19884 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
19885 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
19886 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
19887 "h": "01",
19888 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
19889 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
19890 }
19891 }
19892
19893 },{}],89:[function(require,module,exports){
19894 var Point = require('./point')
19895 var Curve = require('./curve')
19896
19897 var getCurveByName = require('./names')
19898
19899 module.exports = {
19900 Curve: Curve,
19901 Point: Point,
19902 getCurveByName: getCurveByName
19903 }
19904
19905 },{"./curve":87,"./names":90,"./point":91}],90:[function(require,module,exports){
19906 var BigInteger = require('bigi')
19907
19908 var curves = require('./curves.json')
19909 var Curve = require('./curve')
19910
19911 function getCurveByName (name) {
19912 var curve = curves[name]
19913 if (!curve) return null
19914
19915 var p = new BigInteger(curve.p, 16)
19916 var a = new BigInteger(curve.a, 16)
19917 var b = new BigInteger(curve.b, 16)
19918 var n = new BigInteger(curve.n, 16)
19919 var h = new BigInteger(curve.h, 16)
19920 var Gx = new BigInteger(curve.Gx, 16)
19921 var Gy = new BigInteger(curve.Gy, 16)
19922
19923 return new Curve(p, a, b, Gx, Gy, n, h)
19924 }
19925
19926 module.exports = getCurveByName
19927
19928 },{"./curve":87,"./curves.json":88,"bigi":37}],91:[function(require,module,exports){
19929 (function (Buffer){
19930 var assert = require('assert')
19931 var BigInteger = require('bigi')
19932
19933 var THREE = BigInteger.valueOf(3)
19934
19935 function Point (curve, x, y, z) {
19936 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
19937
19938 this.curve = curve
19939 this.x = x
19940 this.y = y
19941 this.z = z
19942 this._zInv = null
19943
19944 this.compressed = true
19945 }
19946
19947 Object.defineProperty(Point.prototype, 'zInv', {
19948 get: function () {
19949 if (this._zInv === null) {
19950 this._zInv = this.z.modInverse(this.curve.p)
19951 }
19952
19953 return this._zInv
19954 }
19955 })
19956
19957 Object.defineProperty(Point.prototype, 'affineX', {
19958 get: function () {
19959 return this.x.multiply(this.zInv).mod(this.curve.p)
19960 }
19961 })
19962
19963 Object.defineProperty(Point.prototype, 'affineY', {
19964 get: function () {
19965 return this.y.multiply(this.zInv).mod(this.curve.p)
19966 }
19967 })
19968
19969 Point.fromAffine = function (curve, x, y) {
19970 return new Point(curve, x, y, BigInteger.ONE)
19971 }
19972
19973 Point.prototype.equals = function (other) {
19974 if (other === this) return true
19975 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
19976 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
19977
19978 // u = Y2 * Z1 - Y1 * Z2
19979 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
19980
19981 if (u.signum() !== 0) return false
19982
19983 // v = X2 * Z1 - X1 * Z2
19984 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
19985
19986 return v.signum() === 0
19987 }
19988
19989 Point.prototype.negate = function () {
19990 var y = this.curve.p.subtract(this.y)
19991
19992 return new Point(this.curve, this.x, y, this.z)
19993 }
19994
19995 Point.prototype.add = function (b) {
19996 if (this.curve.isInfinity(this)) return b
19997 if (this.curve.isInfinity(b)) return this
19998
19999 var x1 = this.x
20000 var y1 = this.y
20001 var x2 = b.x
20002 var y2 = b.y
20003
20004 // u = Y2 * Z1 - Y1 * Z2
20005 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
20006 // v = X2 * Z1 - X1 * Z2
20007 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
20008
20009 if (v.signum() === 0) {
20010 if (u.signum() === 0) {
20011 return this.twice() // this == b, so double
20012 }
20013
20014 return this.curve.infinity // this = -b, so infinity
20015 }
20016
20017 var v2 = v.square()
20018 var v3 = v2.multiply(v)
20019 var x1v2 = x1.multiply(v2)
20020 var zu2 = u.square().multiply(this.z)
20021
20022 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
20023 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
20024 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
20025 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)
20026 // z3 = v^3 * z1 * z2
20027 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
20028
20029 return new Point(this.curve, x3, y3, z3)
20030 }
20031
20032 Point.prototype.twice = function () {
20033 if (this.curve.isInfinity(this)) return this
20034 if (this.y.signum() === 0) return this.curve.infinity
20035
20036 var x1 = this.x
20037 var y1 = this.y
20038
20039 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
20040 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
20041 var a = this.curve.a
20042
20043 // w = 3 * x1^2 + a * z1^2
20044 var w = x1.square().multiply(THREE)
20045
20046 if (a.signum() !== 0) {
20047 w = w.add(this.z.square().multiply(a))
20048 }
20049
20050 w = w.mod(this.curve.p)
20051 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
20052 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
20053 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
20054 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
20055 // z3 = 8 * (y1 * z1)^3
20056 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
20057
20058 return new Point(this.curve, x3, y3, z3)
20059 }
20060
20061 // Simple NAF (Non-Adjacent Form) multiplication algorithm
20062 // TODO: modularize the multiplication algorithm
20063 Point.prototype.multiply = function (k) {
20064 if (this.curve.isInfinity(this)) return this
20065 if (k.signum() === 0) return this.curve.infinity
20066
20067 var e = k
20068 var h = e.multiply(THREE)
20069
20070 var neg = this.negate()
20071 var R = this
20072
20073 for (var i = h.bitLength() - 2; i > 0; --i) {
20074 var hBit = h.testBit(i)
20075 var eBit = e.testBit(i)
20076
20077 R = R.twice()
20078
20079 if (hBit !== eBit) {
20080 R = R.add(hBit ? this : neg)
20081 }
20082 }
20083
20084 return R
20085 }
20086
20087 // Compute this*j + x*k (simultaneous multiplication)
20088 Point.prototype.multiplyTwo = function (j, x, k) {
20089 var i = Math.max(j.bitLength(), k.bitLength()) - 1
20090 var R = this.curve.infinity
20091 var both = this.add(x)
20092
20093 while (i >= 0) {
20094 var jBit = j.testBit(i)
20095 var kBit = k.testBit(i)
20096
20097 R = R.twice()
20098
20099 if (jBit) {
20100 if (kBit) {
20101 R = R.add(both)
20102 } else {
20103 R = R.add(this)
20104 }
20105 } else if (kBit) {
20106 R = R.add(x)
20107 }
20108 --i
20109 }
20110
20111 return R
20112 }
20113
20114 Point.prototype.getEncoded = function (compressed) {
20115 if (compressed == null) compressed = this.compressed
20116 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
20117
20118 var x = this.affineX
20119 var y = this.affineY
20120 var byteLength = this.curve.pLength
20121 var buffer
20122
20123 // 0x02/0x03 | X
20124 if (compressed) {
20125 buffer = new Buffer(1 + byteLength)
20126 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
20127
20128 // 0x04 | X | Y
20129 } else {
20130 buffer = new Buffer(1 + byteLength + byteLength)
20131 buffer.writeUInt8(0x04, 0)
20132
20133 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
20134 }
20135
20136 x.toBuffer(byteLength).copy(buffer, 1)
20137
20138 return buffer
20139 }
20140
20141 Point.decodeFrom = function (curve, buffer) {
20142 var type = buffer.readUInt8(0)
20143 var compressed = (type !== 4)
20144
20145 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
20146 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
20147
20148 var Q
20149 if (compressed) {
20150 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
20151 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
20152
20153 var isOdd = (type === 0x03)
20154 Q = curve.pointFromX(isOdd, x)
20155 } else {
20156 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
20157
20158 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
20159 Q = Point.fromAffine(curve, x, y)
20160 }
20161
20162 Q.compressed = compressed
20163 return Q
20164 }
20165
20166 Point.prototype.toString = function () {
20167 if (this.curve.isInfinity(this)) return '(INFINITY)'
20168
20169 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
20170 }
20171
20172 module.exports = Point
20173
20174 }).call(this,require("buffer").Buffer)
20175 },{"assert":1,"bigi":37,"buffer":4}],92:[function(require,module,exports){
20176 (function (Buffer){
20177 'use strict'
20178 var Transform = require('stream').Transform
20179 var inherits = require('inherits')
20180
20181 function HashBase (blockSize) {
20182 Transform.call(this)
20183
20184 this._block = new Buffer(blockSize)
20185 this._blockSize = blockSize
20186 this._blockOffset = 0
20187 this._length = [0, 0, 0, 0]
20188
20189 this._finalized = false
20190 }
20191
20192 inherits(HashBase, Transform)
20193
20194 HashBase.prototype._transform = function (chunk, encoding, callback) {
20195 var error = null
20196 try {
20197 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
20198 this.update(chunk)
20199 } catch (err) {
20200 error = err
20201 }
20202
20203 callback(error)
20204 }
20205
20206 HashBase.prototype._flush = function (callback) {
20207 var error = null
20208 try {
20209 this.push(this._digest())
20210 } catch (err) {
20211 error = err
20212 }
20213
20214 callback(error)
20215 }
20216
20217 HashBase.prototype.update = function (data, encoding) {
20218 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
20219 if (this._finalized) throw new Error('Digest already called')
20220 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
20221
20222 // consume data
20223 var block = this._block
20224 var offset = 0
20225 while (this._blockOffset + data.length - offset >= this._blockSize) {
20226 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
20227 this._update()
20228 this._blockOffset = 0
20229 }
20230 while (offset < data.length) block[this._blockOffset++] = data[offset++]
20231
20232 // update length
20233 for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
20234 this._length[j] += carry
20235 carry = (this._length[j] / 0x0100000000) | 0
20236 if (carry > 0) this._length[j] -= 0x0100000000 * carry
20237 }
20238
20239 return this
20240 }
20241
20242 HashBase.prototype._update = function (data) {
20243 throw new Error('_update is not implemented')
20244 }
20245
20246 HashBase.prototype.digest = function (encoding) {
20247 if (this._finalized) throw new Error('Digest already called')
20248 this._finalized = true
20249
20250 var digest = this._digest()
20251 if (encoding !== undefined) digest = digest.toString(encoding)
20252 return digest
20253 }
20254
20255 HashBase.prototype._digest = function () {
20256 throw new Error('_digest is not implemented')
20257 }
20258
20259 module.exports = HashBase
20260
20261 }).call(this,require("buffer").Buffer)
20262 },{"buffer":4,"inherits":93,"stream":27}],93:[function(require,module,exports){
20263 arguments[4][8][0].apply(exports,arguments)
20264 },{"dup":8}],94:[function(require,module,exports){
20265 (function (Buffer){
20266 // constant-space merkle root calculation algorithm
20267 module.exports = function fastRoot (values, digestFn) {
20268 if (!Array.isArray(values)) throw TypeError('Expected values Array')
20269 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
20270
20271 var length = values.length
20272 var results = values.concat()
20273
20274 while (length > 1) {
20275 var j = 0
20276
20277 for (var i = 0; i < length; i += 2, ++j) {
20278 var left = results[i]
20279 var right = i + 1 === length ? left : results[i + 1]
20280 var data = Buffer.concat([left, right])
20281
20282 results[j] = digestFn(data)
20283 }
20284
20285 length = j
20286 }
20287
20288 return results[0]
20289 }
20290
20291 }).call(this,require("buffer").Buffer)
20292 },{"buffer":4}],95:[function(require,module,exports){
20293 var OPS = require('bitcoin-ops')
20294
20295 function encodingLength (i) {
20296 return i < OPS.OP_PUSHDATA1 ? 1
20297 : i <= 0xff ? 2
20298 : i <= 0xffff ? 3
20299 : 5
20300 }
20301
20302 function encode (buffer, number, offset) {
20303 var size = encodingLength(number)
20304
20305 // ~6 bit
20306 if (size === 1) {
20307 buffer.writeUInt8(number, offset)
20308
20309 // 8 bit
20310 } else if (size === 2) {
20311 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
20312 buffer.writeUInt8(number, offset + 1)
20313
20314 // 16 bit
20315 } else if (size === 3) {
20316 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
20317 buffer.writeUInt16LE(number, offset + 1)
20318
20319 // 32 bit
20320 } else {
20321 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
20322 buffer.writeUInt32LE(number, offset + 1)
20323 }
20324
20325 return size
20326 }
20327
20328 function decode (buffer, offset) {
20329 var opcode = buffer.readUInt8(offset)
20330 var number, size
20331
20332 // ~6 bit
20333 if (opcode < OPS.OP_PUSHDATA1) {
20334 number = opcode
20335 size = 1
20336
20337 // 8 bit
20338 } else if (opcode === OPS.OP_PUSHDATA1) {
20339 if (offset + 2 > buffer.length) return null
20340 number = buffer.readUInt8(offset + 1)
20341 size = 2
20342
20343 // 16 bit
20344 } else if (opcode === OPS.OP_PUSHDATA2) {
20345 if (offset + 3 > buffer.length) return null
20346 number = buffer.readUInt16LE(offset + 1)
20347 size = 3
20348
20349 // 32 bit
20350 } else {
20351 if (offset + 5 > buffer.length) return null
20352 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
20353
20354 number = buffer.readUInt32LE(offset + 1)
20355 size = 5
20356 }
20357
20358 return {
20359 opcode: opcode,
20360 number: number,
20361 size: size
20362 }
20363 }
20364
20365 module.exports = {
20366 encodingLength: encodingLength,
20367 encode: encode,
20368 decode: decode
20369 }
20370
20371 },{"bitcoin-ops":40}],96:[function(require,module,exports){
20372 (function (process,global){
20373 'use strict'
20374
20375 function oldBrowser () {
20376 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
20377 }
20378
20379 var Buffer = require('safe-buffer').Buffer
20380 var crypto = global.crypto || global.msCrypto
20381
20382 if (crypto && crypto.getRandomValues) {
20383 module.exports = randomBytes
20384 } else {
20385 module.exports = oldBrowser
20386 }
20387
20388 function randomBytes (size, cb) {
20389 // phantomjs needs to throw
20390 if (size > 65536) throw new Error('requested too many random bytes')
20391 // in case browserify isn't using the Uint8Array version
20392 var rawBytes = new global.Uint8Array(size)
20393
20394 // This will not work in older browsers.
20395 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
20396 if (size > 0) { // getRandomValues fails on IE if size == 0
20397 crypto.getRandomValues(rawBytes)
20398 }
20399
20400 // XXX: phantomjs doesn't like a buffer being passed here
20401 var bytes = Buffer.from(rawBytes.buffer)
20402
20403 if (typeof cb === 'function') {
20404 return process.nextTick(function () {
20405 cb(null, bytes)
20406 })
20407 }
20408
20409 return bytes
20410 }
20411
20412 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20413 },{"_process":12,"safe-buffer":98}],97:[function(require,module,exports){
20414 (function (Buffer){
20415 'use strict'
20416 var inherits = require('inherits')
20417 var HashBase = require('hash-base')
20418
20419 function RIPEMD160 () {
20420 HashBase.call(this, 64)
20421
20422 // state
20423 this._a = 0x67452301
20424 this._b = 0xefcdab89
20425 this._c = 0x98badcfe
20426 this._d = 0x10325476
20427 this._e = 0xc3d2e1f0
20428 }
20429
20430 inherits(RIPEMD160, HashBase)
20431
20432 RIPEMD160.prototype._update = function () {
20433 var m = new Array(16)
20434 for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
20435
20436 var al = this._a
20437 var bl = this._b
20438 var cl = this._c
20439 var dl = this._d
20440 var el = this._e
20441
20442 // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
20443 // K = 0x00000000
20444 // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
20445 al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
20446 el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
20447 dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
20448 cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
20449 bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
20450 al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
20451 el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
20452 dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
20453 cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
20454 bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
20455 al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
20456 el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
20457 dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
20458 cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
20459 bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
20460 al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
20461
20462 // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
20463 // K = 0x5a827999
20464 // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
20465 el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
20466 dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
20467 cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
20468 bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
20469 al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
20470 el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
20471 dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
20472 cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
20473 bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
20474 al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
20475 el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
20476 dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
20477 cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
20478 bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
20479 al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
20480 el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
20481
20482 // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
20483 // K = 0x6ed9eba1
20484 // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
20485 dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
20486 cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
20487 bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
20488 al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
20489 el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
20490 dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
20491 cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
20492 bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
20493 al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
20494 el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
20495 dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
20496 cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
20497 bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
20498 al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
20499 el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
20500 dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
20501
20502 // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
20503 // K = 0x8f1bbcdc
20504 // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
20505 cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
20506 bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
20507 al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
20508 el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
20509 dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
20510 cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
20511 bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
20512 al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20513 el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
20514 dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
20515 cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
20516 bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
20517 al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20518 el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
20519 dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
20520 cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
20521
20522 // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
20523 // K = 0xa953fd4e
20524 // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
20525 bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
20526 al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
20527 el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
20528 dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
20529 cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
20530 bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
20531 al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
20532 el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
20533 dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
20534 cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
20535 bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
20536 al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
20537 el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
20538 dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
20539 cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
20540 bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
20541
20542 var ar = this._a
20543 var br = this._b
20544 var cr = this._c
20545 var dr = this._d
20546 var er = this._e
20547
20548 // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
20549 // K' = 0x50a28be6
20550 // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
20551 ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
20552 er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
20553 dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
20554 cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
20555 br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
20556 ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
20557 er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
20558 dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
20559 cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
20560 br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
20561 ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
20562 er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
20563 dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
20564 cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
20565 br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
20566 ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
20567
20568 // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
20569 // K' = 0x5c4dd124
20570 // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
20571 er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
20572 dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
20573 cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
20574 br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
20575 ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
20576 er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
20577 dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
20578 cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
20579 br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
20580 ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
20581 er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
20582 dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
20583 cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
20584 br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
20585 ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
20586 er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
20587
20588 // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
20589 // K' = 0x6d703ef3
20590 // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
20591 dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
20592 cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
20593 br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
20594 ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
20595 er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
20596 dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
20597 cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
20598 br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
20599 ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
20600 er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
20601 dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
20602 cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
20603 br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
20604 ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
20605 er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
20606 dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
20607
20608 // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
20609 // K' = 0x7a6d76e9
20610 // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
20611 cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
20612 br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
20613 ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
20614 er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
20615 dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
20616 cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
20617 br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
20618 ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
20619 er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
20620 dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
20621 cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
20622 br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
20623 ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
20624 er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
20625 dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
20626 cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
20627
20628 // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
20629 // K' = 0x00000000
20630 // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
20631 br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
20632 ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
20633 er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
20634 dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
20635 cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
20636 br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
20637 ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
20638 er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
20639 dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
20640 cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
20641 br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
20642 ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
20643 er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
20644 dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
20645 cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
20646 br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
20647
20648 // change state
20649 var t = (this._b + cl + dr) | 0
20650 this._b = (this._c + dl + er) | 0
20651 this._c = (this._d + el + ar) | 0
20652 this._d = (this._e + al + br) | 0
20653 this._e = (this._a + bl + cr) | 0
20654 this._a = t
20655 }
20656
20657 RIPEMD160.prototype._digest = function () {
20658 // create padding and handle blocks
20659 this._block[this._blockOffset++] = 0x80
20660 if (this._blockOffset > 56) {
20661 this._block.fill(0, this._blockOffset, 64)
20662 this._update()
20663 this._blockOffset = 0
20664 }
20665
20666 this._block.fill(0, this._blockOffset, 56)
20667 this._block.writeUInt32LE(this._length[0], 56)
20668 this._block.writeUInt32LE(this._length[1], 60)
20669 this._update()
20670
20671 // produce result
20672 var buffer = new Buffer(20)
20673 buffer.writeInt32LE(this._a, 0)
20674 buffer.writeInt32LE(this._b, 4)
20675 buffer.writeInt32LE(this._c, 8)
20676 buffer.writeInt32LE(this._d, 12)
20677 buffer.writeInt32LE(this._e, 16)
20678 return buffer
20679 }
20680
20681 function rotl (x, n) {
20682 return (x << n) | (x >>> (32 - n))
20683 }
20684
20685 function fn1 (a, b, c, d, e, m, k, s) {
20686 return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
20687 }
20688
20689 function fn2 (a, b, c, d, e, m, k, s) {
20690 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
20691 }
20692
20693 function fn3 (a, b, c, d, e, m, k, s) {
20694 return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
20695 }
20696
20697 function fn4 (a, b, c, d, e, m, k, s) {
20698 return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
20699 }
20700
20701 function fn5 (a, b, c, d, e, m, k, s) {
20702 return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
20703 }
20704
20705 module.exports = RIPEMD160
20706
20707 }).call(this,require("buffer").Buffer)
20708 },{"buffer":4,"hash-base":92,"inherits":93}],98:[function(require,module,exports){
20709 arguments[4][26][0].apply(exports,arguments)
20710 },{"buffer":4,"dup":26}],99:[function(require,module,exports){
20711 (function (Buffer){
20712 // prototype class for hash functions
20713 function Hash (blockSize, finalSize) {
20714 this._block = new Buffer(blockSize)
20715 this._finalSize = finalSize
20716 this._blockSize = blockSize
20717 this._len = 0
20718 this._s = 0
20719 }
20720
20721 Hash.prototype.update = function (data, enc) {
20722 if (typeof data === 'string') {
20723 enc = enc || 'utf8'
20724 data = new Buffer(data, enc)
20725 }
20726
20727 var l = this._len += data.length
20728 var s = this._s || 0
20729 var f = 0
20730 var buffer = this._block
20731
20732 while (s < l) {
20733 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
20734 var ch = (t - f)
20735
20736 for (var i = 0; i < ch; i++) {
20737 buffer[(s % this._blockSize) + i] = data[i + f]
20738 }
20739
20740 s += ch
20741 f += ch
20742
20743 if ((s % this._blockSize) === 0) {
20744 this._update(buffer)
20745 }
20746 }
20747 this._s = s
20748
20749 return this
20750 }
20751
20752 Hash.prototype.digest = function (enc) {
20753 // Suppose the length of the message M, in bits, is l
20754 var l = this._len * 8
20755
20756 // Append the bit 1 to the end of the message
20757 this._block[this._len % this._blockSize] = 0x80
20758
20759 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
20760 this._block.fill(0, this._len % this._blockSize + 1)
20761
20762 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
20763 this._update(this._block)
20764 this._block.fill(0)
20765 }
20766
20767 // to this append the block which is equal to the number l written in binary
20768 // TODO: handle case where l is > Math.pow(2, 29)
20769 this._block.writeInt32BE(l, this._blockSize - 4)
20770
20771 var hash = this._update(this._block) || this._hash()
20772
20773 return enc ? hash.toString(enc) : hash
20774 }
20775
20776 Hash.prototype._update = function () {
20777 throw new Error('_update must be implemented by subclass')
20778 }
20779
20780 module.exports = Hash
20781
20782 }).call(this,require("buffer").Buffer)
20783 },{"buffer":4}],100:[function(require,module,exports){
20784 var exports = module.exports = function SHA (algorithm) {
20785 algorithm = algorithm.toLowerCase()
20786
20787 var Algorithm = exports[algorithm]
20788 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
20789
20790 return new Algorithm()
20791 }
20792
20793 exports.sha = require('./sha')
20794 exports.sha1 = require('./sha1')
20795 exports.sha224 = require('./sha224')
20796 exports.sha256 = require('./sha256')
20797 exports.sha384 = require('./sha384')
20798 exports.sha512 = require('./sha512')
20799
20800 },{"./sha":101,"./sha1":102,"./sha224":103,"./sha256":104,"./sha384":105,"./sha512":106}],101:[function(require,module,exports){
20801 (function (Buffer){
20802 /*
20803 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
20804 * in FIPS PUB 180-1
20805 * This source code is derived from sha1.js of the same repository.
20806 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
20807 * operation was added.
20808 */
20809
20810 var inherits = require('inherits')
20811 var Hash = require('./hash')
20812
20813 var K = [
20814 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20815 ]
20816
20817 var W = new Array(80)
20818
20819 function Sha () {
20820 this.init()
20821 this._w = W
20822
20823 Hash.call(this, 64, 56)
20824 }
20825
20826 inherits(Sha, Hash)
20827
20828 Sha.prototype.init = function () {
20829 this._a = 0x67452301
20830 this._b = 0xefcdab89
20831 this._c = 0x98badcfe
20832 this._d = 0x10325476
20833 this._e = 0xc3d2e1f0
20834
20835 return this
20836 }
20837
20838 function rotl5 (num) {
20839 return (num << 5) | (num >>> 27)
20840 }
20841
20842 function rotl30 (num) {
20843 return (num << 30) | (num >>> 2)
20844 }
20845
20846 function ft (s, b, c, d) {
20847 if (s === 0) return (b & c) | ((~b) & d)
20848 if (s === 2) return (b & c) | (b & d) | (c & d)
20849 return b ^ c ^ d
20850 }
20851
20852 Sha.prototype._update = function (M) {
20853 var W = this._w
20854
20855 var a = this._a | 0
20856 var b = this._b | 0
20857 var c = this._c | 0
20858 var d = this._d | 0
20859 var e = this._e | 0
20860
20861 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20862 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
20863
20864 for (var j = 0; j < 80; ++j) {
20865 var s = ~~(j / 20)
20866 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20867
20868 e = d
20869 d = c
20870 c = rotl30(b)
20871 b = a
20872 a = t
20873 }
20874
20875 this._a = (a + this._a) | 0
20876 this._b = (b + this._b) | 0
20877 this._c = (c + this._c) | 0
20878 this._d = (d + this._d) | 0
20879 this._e = (e + this._e) | 0
20880 }
20881
20882 Sha.prototype._hash = function () {
20883 var H = new Buffer(20)
20884
20885 H.writeInt32BE(this._a | 0, 0)
20886 H.writeInt32BE(this._b | 0, 4)
20887 H.writeInt32BE(this._c | 0, 8)
20888 H.writeInt32BE(this._d | 0, 12)
20889 H.writeInt32BE(this._e | 0, 16)
20890
20891 return H
20892 }
20893
20894 module.exports = Sha
20895
20896 }).call(this,require("buffer").Buffer)
20897 },{"./hash":99,"buffer":4,"inherits":93}],102:[function(require,module,exports){
20898 (function (Buffer){
20899 /*
20900 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
20901 * in FIPS PUB 180-1
20902 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
20903 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20904 * Distributed under the BSD License
20905 * See http://pajhome.org.uk/crypt/md5 for details.
20906 */
20907
20908 var inherits = require('inherits')
20909 var Hash = require('./hash')
20910
20911 var K = [
20912 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20913 ]
20914
20915 var W = new Array(80)
20916
20917 function Sha1 () {
20918 this.init()
20919 this._w = W
20920
20921 Hash.call(this, 64, 56)
20922 }
20923
20924 inherits(Sha1, Hash)
20925
20926 Sha1.prototype.init = function () {
20927 this._a = 0x67452301
20928 this._b = 0xefcdab89
20929 this._c = 0x98badcfe
20930 this._d = 0x10325476
20931 this._e = 0xc3d2e1f0
20932
20933 return this
20934 }
20935
20936 function rotl1 (num) {
20937 return (num << 1) | (num >>> 31)
20938 }
20939
20940 function rotl5 (num) {
20941 return (num << 5) | (num >>> 27)
20942 }
20943
20944 function rotl30 (num) {
20945 return (num << 30) | (num >>> 2)
20946 }
20947
20948 function ft (s, b, c, d) {
20949 if (s === 0) return (b & c) | ((~b) & d)
20950 if (s === 2) return (b & c) | (b & d) | (c & d)
20951 return b ^ c ^ d
20952 }
20953
20954 Sha1.prototype._update = function (M) {
20955 var W = this._w
20956
20957 var a = this._a | 0
20958 var b = this._b | 0
20959 var c = this._c | 0
20960 var d = this._d | 0
20961 var e = this._e | 0
20962
20963 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20964 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
20965
20966 for (var j = 0; j < 80; ++j) {
20967 var s = ~~(j / 20)
20968 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
20969
20970 e = d
20971 d = c
20972 c = rotl30(b)
20973 b = a
20974 a = t
20975 }
20976
20977 this._a = (a + this._a) | 0
20978 this._b = (b + this._b) | 0
20979 this._c = (c + this._c) | 0
20980 this._d = (d + this._d) | 0
20981 this._e = (e + this._e) | 0
20982 }
20983
20984 Sha1.prototype._hash = function () {
20985 var H = new Buffer(20)
20986
20987 H.writeInt32BE(this._a | 0, 0)
20988 H.writeInt32BE(this._b | 0, 4)
20989 H.writeInt32BE(this._c | 0, 8)
20990 H.writeInt32BE(this._d | 0, 12)
20991 H.writeInt32BE(this._e | 0, 16)
20992
20993 return H
20994 }
20995
20996 module.exports = Sha1
20997
20998 }).call(this,require("buffer").Buffer)
20999 },{"./hash":99,"buffer":4,"inherits":93}],103:[function(require,module,exports){
21000 (function (Buffer){
21001 /**
21002 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21003 * in FIPS 180-2
21004 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21005 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21006 *
21007 */
21008
21009 var inherits = require('inherits')
21010 var Sha256 = require('./sha256')
21011 var Hash = require('./hash')
21012
21013 var W = new Array(64)
21014
21015 function Sha224 () {
21016 this.init()
21017
21018 this._w = W // new Array(64)
21019
21020 Hash.call(this, 64, 56)
21021 }
21022
21023 inherits(Sha224, Sha256)
21024
21025 Sha224.prototype.init = function () {
21026 this._a = 0xc1059ed8
21027 this._b = 0x367cd507
21028 this._c = 0x3070dd17
21029 this._d = 0xf70e5939
21030 this._e = 0xffc00b31
21031 this._f = 0x68581511
21032 this._g = 0x64f98fa7
21033 this._h = 0xbefa4fa4
21034
21035 return this
21036 }
21037
21038 Sha224.prototype._hash = function () {
21039 var H = new Buffer(28)
21040
21041 H.writeInt32BE(this._a, 0)
21042 H.writeInt32BE(this._b, 4)
21043 H.writeInt32BE(this._c, 8)
21044 H.writeInt32BE(this._d, 12)
21045 H.writeInt32BE(this._e, 16)
21046 H.writeInt32BE(this._f, 20)
21047 H.writeInt32BE(this._g, 24)
21048
21049 return H
21050 }
21051
21052 module.exports = Sha224
21053
21054 }).call(this,require("buffer").Buffer)
21055 },{"./hash":99,"./sha256":104,"buffer":4,"inherits":93}],104:[function(require,module,exports){
21056 (function (Buffer){
21057 /**
21058 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21059 * in FIPS 180-2
21060 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21061 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21062 *
21063 */
21064
21065 var inherits = require('inherits')
21066 var Hash = require('./hash')
21067
21068 var K = [
21069 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
21070 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
21071 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
21072 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
21073 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
21074 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
21075 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
21076 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
21077 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
21078 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
21079 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
21080 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
21081 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
21082 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
21083 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
21084 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
21085 ]
21086
21087 var W = new Array(64)
21088
21089 function Sha256 () {
21090 this.init()
21091
21092 this._w = W // new Array(64)
21093
21094 Hash.call(this, 64, 56)
21095 }
21096
21097 inherits(Sha256, Hash)
21098
21099 Sha256.prototype.init = function () {
21100 this._a = 0x6a09e667
21101 this._b = 0xbb67ae85
21102 this._c = 0x3c6ef372
21103 this._d = 0xa54ff53a
21104 this._e = 0x510e527f
21105 this._f = 0x9b05688c
21106 this._g = 0x1f83d9ab
21107 this._h = 0x5be0cd19
21108
21109 return this
21110 }
21111
21112 function ch (x, y, z) {
21113 return z ^ (x & (y ^ z))
21114 }
21115
21116 function maj (x, y, z) {
21117 return (x & y) | (z & (x | y))
21118 }
21119
21120 function sigma0 (x) {
21121 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
21122 }
21123
21124 function sigma1 (x) {
21125 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
21126 }
21127
21128 function gamma0 (x) {
21129 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
21130 }
21131
21132 function gamma1 (x) {
21133 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
21134 }
21135
21136 Sha256.prototype._update = function (M) {
21137 var W = this._w
21138
21139 var a = this._a | 0
21140 var b = this._b | 0
21141 var c = this._c | 0
21142 var d = this._d | 0
21143 var e = this._e | 0
21144 var f = this._f | 0
21145 var g = this._g | 0
21146 var h = this._h | 0
21147
21148 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
21149 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
21150
21151 for (var j = 0; j < 64; ++j) {
21152 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
21153 var T2 = (sigma0(a) + maj(a, b, c)) | 0
21154
21155 h = g
21156 g = f
21157 f = e
21158 e = (d + T1) | 0
21159 d = c
21160 c = b
21161 b = a
21162 a = (T1 + T2) | 0
21163 }
21164
21165 this._a = (a + this._a) | 0
21166 this._b = (b + this._b) | 0
21167 this._c = (c + this._c) | 0
21168 this._d = (d + this._d) | 0
21169 this._e = (e + this._e) | 0
21170 this._f = (f + this._f) | 0
21171 this._g = (g + this._g) | 0
21172 this._h = (h + this._h) | 0
21173 }
21174
21175 Sha256.prototype._hash = function () {
21176 var H = new Buffer(32)
21177
21178 H.writeInt32BE(this._a, 0)
21179 H.writeInt32BE(this._b, 4)
21180 H.writeInt32BE(this._c, 8)
21181 H.writeInt32BE(this._d, 12)
21182 H.writeInt32BE(this._e, 16)
21183 H.writeInt32BE(this._f, 20)
21184 H.writeInt32BE(this._g, 24)
21185 H.writeInt32BE(this._h, 28)
21186
21187 return H
21188 }
21189
21190 module.exports = Sha256
21191
21192 }).call(this,require("buffer").Buffer)
21193 },{"./hash":99,"buffer":4,"inherits":93}],105:[function(require,module,exports){
21194 (function (Buffer){
21195 var inherits = require('inherits')
21196 var SHA512 = require('./sha512')
21197 var Hash = require('./hash')
21198
21199 var W = new Array(160)
21200
21201 function Sha384 () {
21202 this.init()
21203 this._w = W
21204
21205 Hash.call(this, 128, 112)
21206 }
21207
21208 inherits(Sha384, SHA512)
21209
21210 Sha384.prototype.init = function () {
21211 this._ah = 0xcbbb9d5d
21212 this._bh = 0x629a292a
21213 this._ch = 0x9159015a
21214 this._dh = 0x152fecd8
21215 this._eh = 0x67332667
21216 this._fh = 0x8eb44a87
21217 this._gh = 0xdb0c2e0d
21218 this._hh = 0x47b5481d
21219
21220 this._al = 0xc1059ed8
21221 this._bl = 0x367cd507
21222 this._cl = 0x3070dd17
21223 this._dl = 0xf70e5939
21224 this._el = 0xffc00b31
21225 this._fl = 0x68581511
21226 this._gl = 0x64f98fa7
21227 this._hl = 0xbefa4fa4
21228
21229 return this
21230 }
21231
21232 Sha384.prototype._hash = function () {
21233 var H = new Buffer(48)
21234
21235 function writeInt64BE (h, l, offset) {
21236 H.writeInt32BE(h, offset)
21237 H.writeInt32BE(l, offset + 4)
21238 }
21239
21240 writeInt64BE(this._ah, this._al, 0)
21241 writeInt64BE(this._bh, this._bl, 8)
21242 writeInt64BE(this._ch, this._cl, 16)
21243 writeInt64BE(this._dh, this._dl, 24)
21244 writeInt64BE(this._eh, this._el, 32)
21245 writeInt64BE(this._fh, this._fl, 40)
21246
21247 return H
21248 }
21249
21250 module.exports = Sha384
21251
21252 }).call(this,require("buffer").Buffer)
21253 },{"./hash":99,"./sha512":106,"buffer":4,"inherits":93}],106:[function(require,module,exports){
21254 (function (Buffer){
21255 var inherits = require('inherits')
21256 var Hash = require('./hash')
21257
21258 var K = [
21259 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
21260 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
21261 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
21262 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
21263 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
21264 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
21265 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
21266 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
21267 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
21268 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
21269 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
21270 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
21271 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
21272 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
21273 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
21274 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
21275 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
21276 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
21277 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
21278 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
21279 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
21280 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
21281 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
21282 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
21283 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
21284 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
21285 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
21286 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
21287 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
21288 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
21289 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
21290 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
21291 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
21292 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
21293 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
21294 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
21295 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
21296 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
21297 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
21298 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
21299 ]
21300
21301 var W = new Array(160)
21302
21303 function Sha512 () {
21304 this.init()
21305 this._w = W
21306
21307 Hash.call(this, 128, 112)
21308 }
21309
21310 inherits(Sha512, Hash)
21311
21312 Sha512.prototype.init = function () {
21313 this._ah = 0x6a09e667
21314 this._bh = 0xbb67ae85
21315 this._ch = 0x3c6ef372
21316 this._dh = 0xa54ff53a
21317 this._eh = 0x510e527f
21318 this._fh = 0x9b05688c
21319 this._gh = 0x1f83d9ab
21320 this._hh = 0x5be0cd19
21321
21322 this._al = 0xf3bcc908
21323 this._bl = 0x84caa73b
21324 this._cl = 0xfe94f82b
21325 this._dl = 0x5f1d36f1
21326 this._el = 0xade682d1
21327 this._fl = 0x2b3e6c1f
21328 this._gl = 0xfb41bd6b
21329 this._hl = 0x137e2179
21330
21331 return this
21332 }
21333
21334 function Ch (x, y, z) {
21335 return z ^ (x & (y ^ z))
21336 }
21337
21338 function maj (x, y, z) {
21339 return (x & y) | (z & (x | y))
21340 }
21341
21342 function sigma0 (x, xl) {
21343 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
21344 }
21345
21346 function sigma1 (x, xl) {
21347 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
21348 }
21349
21350 function Gamma0 (x, xl) {
21351 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
21352 }
21353
21354 function Gamma0l (x, xl) {
21355 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
21356 }
21357
21358 function Gamma1 (x, xl) {
21359 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
21360 }
21361
21362 function Gamma1l (x, xl) {
21363 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
21364 }
21365
21366 function getCarry (a, b) {
21367 return (a >>> 0) < (b >>> 0) ? 1 : 0
21368 }
21369
21370 Sha512.prototype._update = function (M) {
21371 var W = this._w
21372
21373 var ah = this._ah | 0
21374 var bh = this._bh | 0
21375 var ch = this._ch | 0
21376 var dh = this._dh | 0
21377 var eh = this._eh | 0
21378 var fh = this._fh | 0
21379 var gh = this._gh | 0
21380 var hh = this._hh | 0
21381
21382 var al = this._al | 0
21383 var bl = this._bl | 0
21384 var cl = this._cl | 0
21385 var dl = this._dl | 0
21386 var el = this._el | 0
21387 var fl = this._fl | 0
21388 var gl = this._gl | 0
21389 var hl = this._hl | 0
21390
21391 for (var i = 0; i < 32; i += 2) {
21392 W[i] = M.readInt32BE(i * 4)
21393 W[i + 1] = M.readInt32BE(i * 4 + 4)
21394 }
21395 for (; i < 160; i += 2) {
21396 var xh = W[i - 15 * 2]
21397 var xl = W[i - 15 * 2 + 1]
21398 var gamma0 = Gamma0(xh, xl)
21399 var gamma0l = Gamma0l(xl, xh)
21400
21401 xh = W[i - 2 * 2]
21402 xl = W[i - 2 * 2 + 1]
21403 var gamma1 = Gamma1(xh, xl)
21404 var gamma1l = Gamma1l(xl, xh)
21405
21406 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
21407 var Wi7h = W[i - 7 * 2]
21408 var Wi7l = W[i - 7 * 2 + 1]
21409
21410 var Wi16h = W[i - 16 * 2]
21411 var Wi16l = W[i - 16 * 2 + 1]
21412
21413 var Wil = (gamma0l + Wi7l) | 0
21414 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
21415 Wil = (Wil + gamma1l) | 0
21416 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
21417 Wil = (Wil + Wi16l) | 0
21418 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
21419
21420 W[i] = Wih
21421 W[i + 1] = Wil
21422 }
21423
21424 for (var j = 0; j < 160; j += 2) {
21425 Wih = W[j]
21426 Wil = W[j + 1]
21427
21428 var majh = maj(ah, bh, ch)
21429 var majl = maj(al, bl, cl)
21430
21431 var sigma0h = sigma0(ah, al)
21432 var sigma0l = sigma0(al, ah)
21433 var sigma1h = sigma1(eh, el)
21434 var sigma1l = sigma1(el, eh)
21435
21436 // t1 = h + sigma1 + ch + K[j] + W[j]
21437 var Kih = K[j]
21438 var Kil = K[j + 1]
21439
21440 var chh = Ch(eh, fh, gh)
21441 var chl = Ch(el, fl, gl)
21442
21443 var t1l = (hl + sigma1l) | 0
21444 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
21445 t1l = (t1l + chl) | 0
21446 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
21447 t1l = (t1l + Kil) | 0
21448 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
21449 t1l = (t1l + Wil) | 0
21450 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
21451
21452 // t2 = sigma0 + maj
21453 var t2l = (sigma0l + majl) | 0
21454 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
21455
21456 hh = gh
21457 hl = gl
21458 gh = fh
21459 gl = fl
21460 fh = eh
21461 fl = el
21462 el = (dl + t1l) | 0
21463 eh = (dh + t1h + getCarry(el, dl)) | 0
21464 dh = ch
21465 dl = cl
21466 ch = bh
21467 cl = bl
21468 bh = ah
21469 bl = al
21470 al = (t1l + t2l) | 0
21471 ah = (t1h + t2h + getCarry(al, t1l)) | 0
21472 }
21473
21474 this._al = (this._al + al) | 0
21475 this._bl = (this._bl + bl) | 0
21476 this._cl = (this._cl + cl) | 0
21477 this._dl = (this._dl + dl) | 0
21478 this._el = (this._el + el) | 0
21479 this._fl = (this._fl + fl) | 0
21480 this._gl = (this._gl + gl) | 0
21481 this._hl = (this._hl + hl) | 0
21482
21483 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
21484 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
21485 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
21486 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
21487 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
21488 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
21489 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
21490 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
21491 }
21492
21493 Sha512.prototype._hash = function () {
21494 var H = new Buffer(64)
21495
21496 function writeInt64BE (h, l, offset) {
21497 H.writeInt32BE(h, offset)
21498 H.writeInt32BE(l, offset + 4)
21499 }
21500
21501 writeInt64BE(this._ah, this._al, 0)
21502 writeInt64BE(this._bh, this._bl, 8)
21503 writeInt64BE(this._ch, this._cl, 16)
21504 writeInt64BE(this._dh, this._dl, 24)
21505 writeInt64BE(this._eh, this._el, 32)
21506 writeInt64BE(this._fh, this._fl, 40)
21507 writeInt64BE(this._gh, this._gl, 48)
21508 writeInt64BE(this._hh, this._hl, 56)
21509
21510 return H
21511 }
21512
21513 module.exports = Sha512
21514
21515 }).call(this,require("buffer").Buffer)
21516 },{"./hash":99,"buffer":4,"inherits":93}],107:[function(require,module,exports){
21517 var inherits = require('inherits')
21518 var native = require('./native')
21519
21520 function TfTypeError (type, value, valueTypeName) {
21521 this.__error = Error.call(this)
21522 this.__type = type
21523 this.__value = value
21524 this.__valueTypeName = valueTypeName
21525
21526 var message
21527 Object.defineProperty(this, 'message', {
21528 enumerable: true,
21529 get: function () {
21530 if (message) return message
21531
21532 valueTypeName = valueTypeName || getValueTypeName(value)
21533 message = tfErrorString(type, value, valueTypeName)
21534
21535 return message
21536 }
21537 })
21538 }
21539
21540 function TfPropertyTypeError (type, property, label, value, error, valueTypeName) {
21541 this.__error = error || Error.call(this)
21542 this.__label = label
21543 this.__property = property
21544 this.__type = type
21545 this.__value = value
21546 this.__valueTypeName = valueTypeName
21547
21548 var message
21549 Object.defineProperty(this, 'message', {
21550 enumerable: true,
21551 get: function () {
21552 if (message) return message
21553 if (type) {
21554 valueTypeName = valueTypeName || getValueTypeName(value)
21555 message = tfPropertyErrorString(type, label, property, value, valueTypeName)
21556 } else {
21557 message = 'Unexpected property "' + property + '"'
21558 }
21559
21560 return message
21561 }
21562 })
21563 }
21564
21565 // inherit from Error, assign stack
21566 [TfTypeError, TfPropertyTypeError].forEach(function (tfErrorType) {
21567 inherits(tfErrorType, Error)
21568 Object.defineProperty(tfErrorType, 'stack', {
21569 get: function () { return this.__error.stack }
21570 })
21571 })
21572
21573 function tfCustomError (expected, actual) {
21574 return new TfTypeError(expected, {}, actual)
21575 }
21576
21577 function tfSubError (e, property, label) {
21578 // sub child?
21579 if (e instanceof TfPropertyTypeError) {
21580 property = property + '.' + e.__property
21581 label = e.__label
21582
21583 return new TfPropertyTypeError(
21584 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21585 )
21586 }
21587
21588 // child?
21589 if (e instanceof TfTypeError) {
21590 return new TfPropertyTypeError(
21591 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21592 )
21593 }
21594
21595 return e
21596 }
21597
21598 function getTypeName (fn) {
21599 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]
21600 }
21601
21602 function getValueTypeName (value) {
21603 return native.Nil(value) ? '' : getTypeName(value.constructor)
21604 }
21605
21606 function getValue (value) {
21607 if (native.Function(value)) return ''
21608 if (native.String(value)) return JSON.stringify(value)
21609 if (value && native.Object(value)) return ''
21610 return value
21611 }
21612
21613 function tfJSON (type) {
21614 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
21615 if (native.Array(type)) return 'Array'
21616 if (type && native.Object(type)) return 'Object'
21617
21618 return type !== undefined ? type : ''
21619 }
21620
21621 function tfErrorString (type, value, valueTypeName) {
21622 var valueJson = getValue(value)
21623
21624 return 'Expected ' + tfJSON(type) + ', got' +
21625 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
21626 (valueJson !== '' ? ' ' + valueJson : '')
21627 }
21628
21629 function tfPropertyErrorString (type, label, name, value, valueTypeName) {
21630 var description = '" of type '
21631 if (label === 'key') description = '" with key type '
21632
21633 return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
21634 }
21635
21636 module.exports = {
21637 TfTypeError: TfTypeError,
21638 TfPropertyTypeError: TfPropertyTypeError,
21639 tfCustomError: tfCustomError,
21640 tfSubError: tfSubError,
21641 tfJSON: tfJSON,
21642 getValueTypeName: getValueTypeName
21643 }
21644
21645 },{"./native":110,"inherits":93}],108:[function(require,module,exports){
21646 (function (Buffer){
21647 var NATIVE = require('./native')
21648 var ERRORS = require('./errors')
21649
21650 function _Buffer (value) {
21651 return Buffer.isBuffer(value)
21652 }
21653
21654 function Hex (value) {
21655 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
21656 }
21657
21658 function _LengthN (type, length) {
21659 var name = type.toJSON()
21660
21661 function Length (value) {
21662 if (!type(value)) return false
21663 if (value.length === length) return true
21664
21665 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
21666 }
21667 Length.toJSON = function () { return name }
21668
21669 return Length
21670 }
21671
21672 var _ArrayN = _LengthN.bind(null, NATIVE.Array)
21673 var _BufferN = _LengthN.bind(null, _Buffer)
21674 var _HexN = _LengthN.bind(null, Hex)
21675
21676 var UINT53_MAX = Math.pow(2, 53) - 1
21677
21678 function Finite (value) {
21679 return typeof value === 'number' && isFinite(value)
21680 }
21681 function Int8 (value) { return ((value << 24) >> 24) === value }
21682 function Int16 (value) { return ((value << 16) >> 16) === value }
21683 function Int32 (value) { return (value | 0) === value }
21684 function UInt8 (value) { return (value & 0xff) === value }
21685 function UInt16 (value) { return (value & 0xffff) === value }
21686 function UInt32 (value) { return (value >>> 0) === value }
21687 function UInt53 (value) {
21688 return typeof value === 'number' &&
21689 value >= 0 &&
21690 value <= UINT53_MAX &&
21691 Math.floor(value) === value
21692 }
21693
21694 var types = {
21695 ArrayN: _ArrayN,
21696 Buffer: _Buffer,
21697 BufferN: _BufferN,
21698 Finite: Finite,
21699 Hex: Hex,
21700 HexN: _HexN,
21701 Int8: Int8,
21702 Int16: Int16,
21703 Int32: Int32,
21704 UInt8: UInt8,
21705 UInt16: UInt16,
21706 UInt32: UInt32,
21707 UInt53: UInt53
21708 }
21709
21710 for (var typeName in types) {
21711 types[typeName].toJSON = function (t) {
21712 return t
21713 }.bind(null, typeName)
21714 }
21715
21716 module.exports = types
21717
21718 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
21719 },{"../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":9,"./errors":107,"./native":110}],109:[function(require,module,exports){
21720 var ERRORS = require('./errors')
21721 var NATIVE = require('./native')
21722
21723 // short-hand
21724 var tfJSON = ERRORS.tfJSON
21725 var TfTypeError = ERRORS.TfTypeError
21726 var TfPropertyTypeError = ERRORS.TfPropertyTypeError
21727 var tfSubError = ERRORS.tfSubError
21728 var getValueTypeName = ERRORS.getValueTypeName
21729
21730 var TYPES = {
21731 arrayOf: function arrayOf (type) {
21732 type = compile(type)
21733
21734 function _arrayOf (array, strict) {
21735 if (!NATIVE.Array(array)) return false
21736
21737 return array.every(function (value, i) {
21738 try {
21739 return typeforce(type, value, strict)
21740 } catch (e) {
21741 throw tfSubError(e, i)
21742 }
21743 })
21744 }
21745 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
21746
21747 return _arrayOf
21748 },
21749
21750 maybe: function maybe (type) {
21751 type = compile(type)
21752
21753 function _maybe (value, strict) {
21754 return NATIVE.Nil(value) || type(value, strict, maybe)
21755 }
21756 _maybe.toJSON = function () { return '?' + tfJSON(type) }
21757
21758 return _maybe
21759 },
21760
21761 map: function map (propertyType, propertyKeyType) {
21762 propertyType = compile(propertyType)
21763 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
21764
21765 function _map (value, strict) {
21766 if (!NATIVE.Object(value, strict)) return false
21767 if (NATIVE.Nil(value, strict)) return false
21768
21769 for (var propertyName in value) {
21770 try {
21771 if (propertyKeyType) {
21772 typeforce(propertyKeyType, propertyName, strict)
21773 }
21774 } catch (e) {
21775 throw tfSubError(e, propertyName, 'key')
21776 }
21777
21778 try {
21779 var propertyValue = value[propertyName]
21780 typeforce(propertyType, propertyValue, strict)
21781 } catch (e) {
21782 throw tfSubError(e, propertyName)
21783 }
21784 }
21785
21786 return true
21787 }
21788
21789 if (propertyKeyType) {
21790 _map.toJSON = function () {
21791 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
21792 }
21793 } else {
21794 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
21795 }
21796
21797 return _map
21798 },
21799
21800 object: function object (uncompiled) {
21801 var type = {}
21802
21803 for (var typePropertyName in uncompiled) {
21804 type[typePropertyName] = compile(uncompiled[typePropertyName])
21805 }
21806
21807 function _object (value, strict) {
21808 if (!NATIVE.Object(value)) return false
21809 if (NATIVE.Nil(value)) return false
21810
21811 var propertyName
21812
21813 try {
21814 for (propertyName in type) {
21815 var propertyType = type[propertyName]
21816 var propertyValue = value[propertyName]
21817
21818 typeforce(propertyType, propertyValue, strict)
21819 }
21820 } catch (e) {
21821 throw tfSubError(e, propertyName)
21822 }
21823
21824 if (strict) {
21825 for (propertyName in value) {
21826 if (type[propertyName]) continue
21827
21828 throw new TfPropertyTypeError(undefined, propertyName)
21829 }
21830 }
21831
21832 return true
21833 }
21834 _object.toJSON = function () { return tfJSON(type) }
21835
21836 return _object
21837 },
21838
21839 oneOf: function oneOf () {
21840 var types = [].slice.call(arguments).map(compile)
21841
21842 function _oneOf (value, strict) {
21843 return types.some(function (type) {
21844 try {
21845 return typeforce(type, value, strict)
21846 } catch (e) {
21847 return false
21848 }
21849 })
21850 }
21851 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
21852
21853 return _oneOf
21854 },
21855
21856 quacksLike: function quacksLike (type) {
21857 function _quacksLike (value) {
21858 return type === getValueTypeName(value)
21859 }
21860 _quacksLike.toJSON = function () { return type }
21861
21862 return _quacksLike
21863 },
21864
21865 tuple: function tuple () {
21866 var types = [].slice.call(arguments).map(compile)
21867
21868 function _tuple (values, strict) {
21869 return types.every(function (type, i) {
21870 try {
21871 return typeforce(type, values[i], strict)
21872 } catch (e) {
21873 throw tfSubError(e, i)
21874 }
21875 }) && (!strict || values.length === arguments.length)
21876 }
21877 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
21878
21879 return _tuple
21880 },
21881
21882 value: function value (expected) {
21883 function _value (actual) {
21884 return actual === expected
21885 }
21886 _value.toJSON = function () { return expected }
21887
21888 return _value
21889 }
21890 }
21891
21892 function compile (type) {
21893 if (NATIVE.String(type)) {
21894 if (type[0] === '?') return TYPES.maybe(compile(type.slice(1)))
21895
21896 return NATIVE[type] || TYPES.quacksLike(type)
21897 } else if (type && NATIVE.Object(type)) {
21898 if (NATIVE.Array(type)) return TYPES.arrayOf(compile(type[0]))
21899
21900 return TYPES.object(type)
21901 } else if (NATIVE.Function(type)) {
21902 return type
21903 }
21904
21905 return TYPES.value(type)
21906 }
21907
21908 function typeforce (type, value, strict, surrogate) {
21909 if (NATIVE.Function(type)) {
21910 if (type(value, strict)) return true
21911
21912 throw new TfTypeError(surrogate || type, value)
21913 }
21914
21915 // JIT
21916 return typeforce(compile(type), value, strict)
21917 }
21918
21919 // assign types to typeforce function
21920 for (var typeName in NATIVE) {
21921 typeforce[typeName] = NATIVE[typeName]
21922 }
21923
21924 for (typeName in TYPES) {
21925 typeforce[typeName] = TYPES[typeName]
21926 }
21927
21928 var EXTRA = require('./extra')
21929 for (typeName in EXTRA) {
21930 typeforce[typeName] = EXTRA[typeName]
21931 }
21932
21933 // async wrapper
21934 function __async (type, value, strict, callback) {
21935 // default to falsy strict if using shorthand overload
21936 if (typeof strict === 'function') return __async(type, value, false, strict)
21937
21938 try {
21939 typeforce(type, value, strict)
21940 } catch (e) {
21941 return callback(e)
21942 }
21943
21944 callback()
21945 }
21946
21947 typeforce.async = __async
21948 typeforce.compile = compile
21949 typeforce.TfTypeError = TfTypeError
21950 typeforce.TfPropertyTypeError = TfPropertyTypeError
21951
21952 module.exports = typeforce
21953
21954 },{"./errors":107,"./extra":108,"./native":110}],110:[function(require,module,exports){
21955 var types = {
21956 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
21957 Boolean: function (value) { return typeof value === 'boolean' },
21958 Function: function (value) { return typeof value === 'function' },
21959 Nil: function (value) { return value === undefined || value === null },
21960 Number: function (value) { return typeof value === 'number' },
21961 Object: function (value) { return typeof value === 'object' },
21962 String: function (value) { return typeof value === 'string' },
21963 '': function () { return true }
21964 }
21965
21966 // TODO: deprecate
21967 types.Null = types.Nil
21968
21969 for (var typeName in types) {
21970 types[typeName].toJSON = function (t) {
21971 return t
21972 }.bind(null, typeName)
21973 }
21974
21975 module.exports = types
21976
21977 },{}],111:[function(require,module,exports){
21978 (function (Buffer){
21979 'use strict'
21980
21981 // Number.MAX_SAFE_INTEGER
21982 var MAX_SAFE_INTEGER = 9007199254740991
21983
21984 function checkUInt53 (n) {
21985 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
21986 }
21987
21988 function encode (number, buffer, offset) {
21989 checkUInt53(number)
21990
21991 if (!buffer) buffer = new Buffer(encodingLength(number))
21992 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
21993 if (!offset) offset = 0
21994
21995 // 8 bit
21996 if (number < 0xfd) {
21997 buffer.writeUInt8(number, offset)
21998 encode.bytes = 1
21999
22000 // 16 bit
22001 } else if (number <= 0xffff) {
22002 buffer.writeUInt8(0xfd, offset)
22003 buffer.writeUInt16LE(number, offset + 1)
22004 encode.bytes = 3
22005
22006 // 32 bit
22007 } else if (number <= 0xffffffff) {
22008 buffer.writeUInt8(0xfe, offset)
22009 buffer.writeUInt32LE(number, offset + 1)
22010 encode.bytes = 5
22011
22012 // 64 bit
22013 } else {
22014 buffer.writeUInt8(0xff, offset)
22015 buffer.writeUInt32LE(number >>> 0, offset + 1)
22016 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
22017 encode.bytes = 9
22018 }
22019
22020 return buffer
22021 }
22022
22023 function decode (buffer, offset) {
22024 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
22025 if (!offset) offset = 0
22026
22027 var first = buffer.readUInt8(offset)
22028
22029 // 8 bit
22030 if (first < 0xfd) {
22031 decode.bytes = 1
22032 return first
22033
22034 // 16 bit
22035 } else if (first === 0xfd) {
22036 decode.bytes = 3
22037 return buffer.readUInt16LE(offset + 1)
22038
22039 // 32 bit
22040 } else if (first === 0xfe) {
22041 decode.bytes = 5
22042 return buffer.readUInt32LE(offset + 1)
22043
22044 // 64 bit
22045 } else {
22046 decode.bytes = 9
22047 var lo = buffer.readUInt32LE(offset + 1)
22048 var hi = buffer.readUInt32LE(offset + 5)
22049 var number = hi * 0x0100000000 + lo
22050 checkUInt53(number)
22051
22052 return number
22053 }
22054 }
22055
22056 function encodingLength (number) {
22057 checkUInt53(number)
22058
22059 return (
22060 number < 0xfd ? 1
22061 : number <= 0xffff ? 3
22062 : number <= 0xffffffff ? 5
22063 : 9
22064 )
22065 }
22066
22067 module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
22068
22069 }).call(this,require("buffer").Buffer)
22070 },{"buffer":4}],112:[function(require,module,exports){
22071 (function (Buffer){
22072 var bs58check = require('bs58check')
22073
22074 function decodeRaw (buffer, version) {
22075 // check version only if defined
22076 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
22077
22078 // uncompressed
22079 if (buffer.length === 33) {
22080 return {
22081 version: buffer[0],
22082 privateKey: buffer.slice(1, 33),
22083 compressed: false
22084 }
22085 }
22086
22087 // invalid length
22088 if (buffer.length !== 34) throw new Error('Invalid WIF length')
22089
22090 // invalid compression flag
22091 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
22092
22093 return {
22094 version: buffer[0],
22095 privateKey: buffer.slice(1, 33),
22096 compressed: true
22097 }
22098 }
22099
22100 function encodeRaw (version, privateKey, compressed) {
22101 var result = new Buffer(compressed ? 34 : 33)
22102
22103 result.writeUInt8(version, 0)
22104 privateKey.copy(result, 1)
22105
22106 if (compressed) {
22107 result[33] = 0x01
22108 }
22109
22110 return result
22111 }
22112
22113 function decode (string, version) {
22114 return decodeRaw(bs58check.decode(string), version)
22115 }
22116
22117 function encode (version, privateKey, compressed) {
22118 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
22119
22120 return bs58check.encode(
22121 encodeRaw(
22122 version.version,
22123 version.privateKey,
22124 version.compressed
22125 )
22126 )
22127 }
22128
22129 module.exports = {
22130 decode: decode,
22131 decodeRaw: decodeRaw,
22132 encode: encode,
22133 encodeRaw: encodeRaw
22134 }
22135
22136 }).call(this,require("buffer").Buffer)
22137 },{"bs58check":80,"buffer":4}]},{},[33])(33)
22138 });
22139 </script>
22140 <script>bitcoinjs.bitcoin.networks.shadow = {
22141 messagePrefix: 'unused',
22142 bip32: {
22143 public: 0xEE80286A,
22144 private: 0xEE8031E8
22145 },
22146 pubKeyHash: 0x3f,
22147 scriptHash: 0x7d,
22148 wif: 0xbf
22149 };
22150
22151 bitcoinjs.bitcoin.networks.shadowtn = {
22152 messagePrefix: 'unused',
22153 bip32: {
22154 public: 0x76C0FDFB,
22155 private: 0x76C1077A
22156 },
22157 pubKeyHash: 0x7f,
22158 scriptHash: 0xc4,
22159 wif: 0xff
22160 };
22161
22162 bitcoinjs.bitcoin.networks.clam = {
22163 messagePrefix: 'unused',
22164 bip32: {
22165 public: 0xa8c26d64,
22166 private: 0xa8c17826
22167 },
22168 pubKeyHash: 0x89,
22169 scriptHash: 0x00, // TODO set this correctly
22170 wif: 0x85
22171 };
22172
22173 bitcoinjs.bitcoin.networks.crown = {
22174 messagePrefix: 'unused',
22175 bip32: {
22176 public: 0x0488b21e,
22177 private: 0x0488ade4
22178 },
22179 pubKeyHash: 0x00,
22180 scriptHash: 0x05,
22181 wif: 0x80
22182 };
22183
22184 bitcoinjs.bitcoin.networks.dash = {
22185 messagePrefix: 'unused',
22186 bip32: {
22187 public: 0x0488b21e,
22188 private: 0x0488ade4
22189 },
22190 pubKeyHash: 0x4c,
22191 scriptHash: 0x10,
22192 wif: 0xcc
22193 };
22194
22195 bitcoinjs.bitcoin.networks.maza = {
22196 messagePrefix: 'unused',
22197 bip32: {
22198 public: 0x0488b21e,
22199 private: 0x0488ade4
22200 },
22201 pubKeyHash: 0x32,
22202 scriptHash: 0x09,
22203 wif: 0xe0
22204 };
22205
22206 bitcoinjs.bitcoin.networks.dashtn = {
22207 messagePrefix: 'unused',
22208 bip32: {
22209 public: 0x043587cf,
22210 private: 0x04358394
22211 },
22212 pubKeyHash: 0x8c,
22213 scriptHash: 0x13,
22214 wif: 0xef
22215 };
22216
22217 bitcoinjs.bitcoin.networks.game = {
22218 messagePrefix: 'unused',
22219 bip32: {
22220 public: 0x0488b21e,
22221 private: 0x0488ade4
22222 },
22223 pubKeyHash: 0x26,
22224 scriptHash: 0x05,
22225 wif: 0xa6
22226 };
22227
22228 bitcoinjs.bitcoin.networks.namecoin = {
22229 messagePrefix: 'unused',
22230 bip32: {
22231 public: 0x0488b21e,
22232 private: 0x0488ade4
22233 },
22234 pubKeyHash: 0x34,
22235 scriptHash: 0x00, // TODO set this correctly
22236 wif: 0x80
22237 };
22238
22239 bitcoinjs.bitcoin.networks.peercoin = {
22240 messagePrefix: 'unused',
22241 bip32: {
22242 public: 0x0488b21e,
22243 private: 0x0488ade4
22244 },
22245 pubKeyHash: 0x37,
22246 scriptHash: 0x00, // TODO set this correctly
22247 wif: 0xb7
22248 };
22249
22250 bitcoinjs.bitcoin.networks.slimcoin = {
22251 messagePrefix: 'unused',
22252 bip32: {
22253 public: 0xef6adf10,
22254 private: 0xef69ea80
22255 },
22256 pubKeyHash: 0x3f,
22257 scriptHash: 0x7d,
22258 wif: 0x46
22259 };
22260
22261 bitcoinjs.bitcoin.networks.slimcointn = {
22262 messagePrefix: 'unused',
22263 bip32: {
22264 public: 0x043587CF,
22265 private: 0x04358394
22266 },
22267 pubKeyHash: 0x6f,
22268 scriptHash: 0xc4,
22269 wif: 0x57
22270 };
22271
22272 bitcoinjs.bitcoin.networks.dogecoin = {
22273 messagePrefix: '\x19Dogecoin Signed Message:\n',
22274 bip32: {
22275 public: 0x02facafd,
22276 private: 0x02fac398
22277 },
22278 pubKeyHash: 0x1e,
22279 scriptHash: 0x16,
22280 wif: 0x9e
22281 };
22282
22283 bitcoinjs.bitcoin.networks.viacoin = {
22284 messagePrefix: '\x18Viacoin Signed Message:\n',
22285 bip32: {
22286 public: 0x0488b21e,
22287 private: 0x0488ade4
22288 },
22289 pubKeyHash: 0x47,
22290 scriptHash: 0x21,
22291 wif: 0xc7
22292 };
22293
22294 bitcoinjs.bitcoin.networks.viacointestnet = {
22295 messagePrefix: '\x18Viacoin Signed Message:\n',
22296 bip32: {
22297 public: 0x043587cf,
22298 private: 0x04358394
22299 },
22300 pubKeyHash: 0x7f,
22301 scriptHash: 0xc4,
22302 wif: 0xff
22303 };
22304
22305 bitcoinjs.bitcoin.networks.gamerscoin = {
22306 messagePrefix: '\x19Gamerscoin Signed Message:\n',
22307 bip32: {
22308 public: 0x019da462,
22309 private: 0x019d9cfe
22310 },
22311 pubKeyHash: 0x26,
22312 scriptHash: 0x05,
22313 wif: 0xA6
22314 };
22315
22316 bitcoinjs.bitcoin.networks.jumbucks = {
22317 messagePrefix: '\x19Jumbucks Signed Message:\n',
22318 bip32: {
22319 public: 0x037a689a,
22320 private: 0x037a6460
22321 },
22322 pubKeyHash: 0x2b,
22323 scriptHash: 0x05,
22324 wif: 0xab
22325 };
22326
22327 bitcoinjs.bitcoin.networks.zetacoin = {
22328 messagePrefix: '\x18Zetacoin Signed Message:\n',
22329 bip32: {
22330 public: 0x0488b21e,
22331 private: 0x0488ade4
22332 },
22333 pubKeyHash: 0x50,
22334 scriptHash: 0x09,
22335 wif: 0xe0
22336 };
22337
22338 bitcoinjs.bitcoin.networks.myriadcoin = {
22339 messagePrefix: 'unused',
22340 bip32: {
22341 public: 0x0488b21e,
22342 private: 0x0488ade4
22343 },
22344 pubKeyHash: 0x32,
22345 scriptHash: 0x00, // TODO set this correctly
22346 wif: 0xb2
22347 };
22348
22349 bitcoinjs.bitcoin.networks.pivx = {
22350 messagePrefix: 'unused',
22351 bip32: {
22352 public: 0x022d2533,
22353 private: 0x0221312b
22354 },
22355 pubKeyHash: 0x1e,
22356 scriptHash: 0x0d,
22357 wif: 0xd4
22358 };
22359
22360 bitcoinjs.bitcoin.networks.pivxtestnet = {
22361 messagePrefix: 'unused',
22362 bip32: {
22363 public: 0x3a8061a0,
22364 private: 0x3a805837
22365 },
22366 pubKeyHash: 0x8b,
22367 scriptHash: 0x13,
22368 wif: 0xef
22369 };
22370 </script>
22371 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ethUtil = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
22372 (function (global){
22373 'use strict';
22374
22375 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
22376 // original notice:
22377
22378 /*!
22379 * The buffer module from node.js, for the browser.
22380 *
22381 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22382 * @license MIT
22383 */
22384 function compare(a, b) {
22385 if (a === b) {
22386 return 0;
22387 }
22388
22389 var x = a.length;
22390 var y = b.length;
22391
22392 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
22393 if (a[i] !== b[i]) {
22394 x = a[i];
22395 y = b[i];
22396 break;
22397 }
22398 }
22399
22400 if (x < y) {
22401 return -1;
22402 }
22403 if (y < x) {
22404 return 1;
22405 }
22406 return 0;
22407 }
22408 function isBuffer(b) {
22409 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
22410 return global.Buffer.isBuffer(b);
22411 }
22412 return !!(b != null && b._isBuffer);
22413 }
22414
22415 // based on node assert, original notice:
22416
22417 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
22418 //
22419 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
22420 //
22421 // Originally from narwhal.js (http://narwhaljs.org)
22422 // Copyright (c) 2009 Thomas Robinson <280north.com>
22423 //
22424 // Permission is hereby granted, free of charge, to any person obtaining a copy
22425 // of this software and associated documentation files (the 'Software'), to
22426 // deal in the Software without restriction, including without limitation the
22427 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22428 // sell copies of the Software, and to permit persons to whom the Software is
22429 // furnished to do so, subject to the following conditions:
22430 //
22431 // The above copyright notice and this permission notice shall be included in
22432 // all copies or substantial portions of the Software.
22433 //
22434 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22435 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22436 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22437 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22438 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22439 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22440
22441 var util = require('util/');
22442 var hasOwn = Object.prototype.hasOwnProperty;
22443 var pSlice = Array.prototype.slice;
22444 var functionsHaveNames = (function () {
22445 return function foo() {}.name === 'foo';
22446 }());
22447 function pToString (obj) {
22448 return Object.prototype.toString.call(obj);
22449 }
22450 function isView(arrbuf) {
22451 if (isBuffer(arrbuf)) {
22452 return false;
22453 }
22454 if (typeof global.ArrayBuffer !== 'function') {
22455 return false;
22456 }
22457 if (typeof ArrayBuffer.isView === 'function') {
22458 return ArrayBuffer.isView(arrbuf);
22459 }
22460 if (!arrbuf) {
22461 return false;
22462 }
22463 if (arrbuf instanceof DataView) {
22464 return true;
22465 }
22466 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
22467 return true;
22468 }
22469 return false;
22470 }
22471 // 1. The assert module provides functions that throw
22472 // AssertionError's when particular conditions are not met. The
22473 // assert module must conform to the following interface.
22474
22475 var assert = module.exports = ok;
22476
22477 // 2. The AssertionError is defined in assert.
22478 // new assert.AssertionError({ message: message,
22479 // actual: actual,
22480 // expected: expected })
22481
22482 var regex = /\s*function\s+([^\(\s]*)\s*/;
22483 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
22484 function getName(func) {
22485 if (!util.isFunction(func)) {
22486 return;
22487 }
22488 if (functionsHaveNames) {
22489 return func.name;
22490 }
22491 var str = func.toString();
22492 var match = str.match(regex);
22493 return match && match[1];
22494 }
22495 assert.AssertionError = function AssertionError(options) {
22496 this.name = 'AssertionError';
22497 this.actual = options.actual;
22498 this.expected = options.expected;
22499 this.operator = options.operator;
22500 if (options.message) {
22501 this.message = options.message;
22502 this.generatedMessage = false;
22503 } else {
22504 this.message = getMessage(this);
22505 this.generatedMessage = true;
22506 }
22507 var stackStartFunction = options.stackStartFunction || fail;
22508 if (Error.captureStackTrace) {
22509 Error.captureStackTrace(this, stackStartFunction);
22510 } else {
22511 // non v8 browsers so we can have a stacktrace
22512 var err = new Error();
22513 if (err.stack) {
22514 var out = err.stack;
22515
22516 // try to strip useless frames
22517 var fn_name = getName(stackStartFunction);
22518 var idx = out.indexOf('\n' + fn_name);
22519 if (idx >= 0) {
22520 // once we have located the function frame
22521 // we need to strip out everything before it (and its line)
22522 var next_line = out.indexOf('\n', idx + 1);
22523 out = out.substring(next_line + 1);
22524 }
22525
22526 this.stack = out;
22527 }
22528 }
22529 };
22530
22531 // assert.AssertionError instanceof Error
22532 util.inherits(assert.AssertionError, Error);
22533
22534 function truncate(s, n) {
22535 if (typeof s === 'string') {
22536 return s.length < n ? s : s.slice(0, n);
22537 } else {
22538 return s;
22539 }
22540 }
22541 function inspect(something) {
22542 if (functionsHaveNames || !util.isFunction(something)) {
22543 return util.inspect(something);
22544 }
22545 var rawname = getName(something);
22546 var name = rawname ? ': ' + rawname : '';
22547 return '[Function' + name + ']';
22548 }
22549 function getMessage(self) {
22550 return truncate(inspect(self.actual), 128) + ' ' +
22551 self.operator + ' ' +
22552 truncate(inspect(self.expected), 128);
22553 }
22554
22555 // At present only the three keys mentioned above are used and
22556 // understood by the spec. Implementations or sub modules can pass
22557 // other keys to the AssertionError's constructor - they will be
22558 // ignored.
22559
22560 // 3. All of the following functions must throw an AssertionError
22561 // when a corresponding condition is not met, with a message that
22562 // may be undefined if not provided. All assertion methods provide
22563 // both the actual and expected values to the assertion error for
22564 // display purposes.
22565
22566 function fail(actual, expected, message, operator, stackStartFunction) {
22567 throw new assert.AssertionError({
22568 message: message,
22569 actual: actual,
22570 expected: expected,
22571 operator: operator,
22572 stackStartFunction: stackStartFunction
22573 });
22574 }
22575
22576 // EXTENSION! allows for well behaved errors defined elsewhere.
22577 assert.fail = fail;
22578
22579 // 4. Pure assertion tests whether a value is truthy, as determined
22580 // by !!guard.
22581 // assert.ok(guard, message_opt);
22582 // This statement is equivalent to assert.equal(true, !!guard,
22583 // message_opt);. To test strictly for the value true, use
22584 // assert.strictEqual(true, guard, message_opt);.
22585
22586 function ok(value, message) {
22587 if (!value) fail(value, true, message, '==', assert.ok);
22588 }
22589 assert.ok = ok;
22590
22591 // 5. The equality assertion tests shallow, coercive equality with
22592 // ==.
22593 // assert.equal(actual, expected, message_opt);
22594
22595 assert.equal = function equal(actual, expected, message) {
22596 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
22597 };
22598
22599 // 6. The non-equality assertion tests for whether two objects are not equal
22600 // with != assert.notEqual(actual, expected, message_opt);
22601
22602 assert.notEqual = function notEqual(actual, expected, message) {
22603 if (actual == expected) {
22604 fail(actual, expected, message, '!=', assert.notEqual);
22605 }
22606 };
22607
22608 // 7. The equivalence assertion tests a deep equality relation.
22609 // assert.deepEqual(actual, expected, message_opt);
22610
22611 assert.deepEqual = function deepEqual(actual, expected, message) {
22612 if (!_deepEqual(actual, expected, false)) {
22613 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
22614 }
22615 };
22616
22617 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
22618 if (!_deepEqual(actual, expected, true)) {
22619 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
22620 }
22621 };
22622
22623 function _deepEqual(actual, expected, strict, memos) {
22624 // 7.1. All identical values are equivalent, as determined by ===.
22625 if (actual === expected) {
22626 return true;
22627 } else if (isBuffer(actual) && isBuffer(expected)) {
22628 return compare(actual, expected) === 0;
22629
22630 // 7.2. If the expected value is a Date object, the actual value is
22631 // equivalent if it is also a Date object that refers to the same time.
22632 } else if (util.isDate(actual) && util.isDate(expected)) {
22633 return actual.getTime() === expected.getTime();
22634
22635 // 7.3 If the expected value is a RegExp object, the actual value is
22636 // equivalent if it is also a RegExp object with the same source and
22637 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
22638 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
22639 return actual.source === expected.source &&
22640 actual.global === expected.global &&
22641 actual.multiline === expected.multiline &&
22642 actual.lastIndex === expected.lastIndex &&
22643 actual.ignoreCase === expected.ignoreCase;
22644
22645 // 7.4. Other pairs that do not both pass typeof value == 'object',
22646 // equivalence is determined by ==.
22647 } else if ((actual === null || typeof actual !== 'object') &&
22648 (expected === null || typeof expected !== 'object')) {
22649 return strict ? actual === expected : actual == expected;
22650
22651 // If both values are instances of typed arrays, wrap their underlying
22652 // ArrayBuffers in a Buffer each to increase performance
22653 // This optimization requires the arrays to have the same type as checked by
22654 // Object.prototype.toString (aka pToString). Never perform binary
22655 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
22656 // bit patterns are not identical.
22657 } else if (isView(actual) && isView(expected) &&
22658 pToString(actual) === pToString(expected) &&
22659 !(actual instanceof Float32Array ||
22660 actual instanceof Float64Array)) {
22661 return compare(new Uint8Array(actual.buffer),
22662 new Uint8Array(expected.buffer)) === 0;
22663
22664 // 7.5 For all other Object pairs, including Array objects, equivalence is
22665 // determined by having the same number of owned properties (as verified
22666 // with Object.prototype.hasOwnProperty.call), the same set of keys
22667 // (although not necessarily the same order), equivalent values for every
22668 // corresponding key, and an identical 'prototype' property. Note: this
22669 // accounts for both named and indexed properties on Arrays.
22670 } else if (isBuffer(actual) !== isBuffer(expected)) {
22671 return false;
22672 } else {
22673 memos = memos || {actual: [], expected: []};
22674
22675 var actualIndex = memos.actual.indexOf(actual);
22676 if (actualIndex !== -1) {
22677 if (actualIndex === memos.expected.indexOf(expected)) {
22678 return true;
22679 }
22680 }
22681
22682 memos.actual.push(actual);
22683 memos.expected.push(expected);
22684
22685 return objEquiv(actual, expected, strict, memos);
22686 }
22687 }
22688
22689 function isArguments(object) {
22690 return Object.prototype.toString.call(object) == '[object Arguments]';
22691 }
22692
22693 function objEquiv(a, b, strict, actualVisitedObjects) {
22694 if (a === null || a === undefined || b === null || b === undefined)
22695 return false;
22696 // if one is a primitive, the other must be same
22697 if (util.isPrimitive(a) || util.isPrimitive(b))
22698 return a === b;
22699 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
22700 return false;
22701 var aIsArgs = isArguments(a);
22702 var bIsArgs = isArguments(b);
22703 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
22704 return false;
22705 if (aIsArgs) {
22706 a = pSlice.call(a);
22707 b = pSlice.call(b);
22708 return _deepEqual(a, b, strict);
22709 }
22710 var ka = objectKeys(a);
22711 var kb = objectKeys(b);
22712 var key, i;
22713 // having the same number of owned properties (keys incorporates
22714 // hasOwnProperty)
22715 if (ka.length !== kb.length)
22716 return false;
22717 //the same set of keys (although not necessarily the same order),
22718 ka.sort();
22719 kb.sort();
22720 //~~~cheap key test
22721 for (i = ka.length - 1; i >= 0; i--) {
22722 if (ka[i] !== kb[i])
22723 return false;
22724 }
22725 //equivalent values for every corresponding key, and
22726 //~~~possibly expensive deep test
22727 for (i = ka.length - 1; i >= 0; i--) {
22728 key = ka[i];
22729 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
22730 return false;
22731 }
22732 return true;
22733 }
22734
22735 // 8. The non-equivalence assertion tests for any deep inequality.
22736 // assert.notDeepEqual(actual, expected, message_opt);
22737
22738 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
22739 if (_deepEqual(actual, expected, false)) {
22740 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
22741 }
22742 };
22743
22744 assert.notDeepStrictEqual = notDeepStrictEqual;
22745 function notDeepStrictEqual(actual, expected, message) {
22746 if (_deepEqual(actual, expected, true)) {
22747 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
22748 }
22749 }
22750
22751
22752 // 9. The strict equality assertion tests strict equality, as determined by ===.
22753 // assert.strictEqual(actual, expected, message_opt);
22754
22755 assert.strictEqual = function strictEqual(actual, expected, message) {
22756 if (actual !== expected) {
22757 fail(actual, expected, message, '===', assert.strictEqual);
22758 }
22759 };
22760
22761 // 10. The strict non-equality assertion tests for strict inequality, as
22762 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
22763
22764 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
22765 if (actual === expected) {
22766 fail(actual, expected, message, '!==', assert.notStrictEqual);
22767 }
22768 };
22769
22770 function expectedException(actual, expected) {
22771 if (!actual || !expected) {
22772 return false;
22773 }
22774
22775 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
22776 return expected.test(actual);
22777 }
22778
22779 try {
22780 if (actual instanceof expected) {
22781 return true;
22782 }
22783 } catch (e) {
22784 // Ignore. The instanceof check doesn't work for arrow functions.
22785 }
22786
22787 if (Error.isPrototypeOf(expected)) {
22788 return false;
22789 }
22790
22791 return expected.call({}, actual) === true;
22792 }
22793
22794 function _tryBlock(block) {
22795 var error;
22796 try {
22797 block();
22798 } catch (e) {
22799 error = e;
22800 }
22801 return error;
22802 }
22803
22804 function _throws(shouldThrow, block, expected, message) {
22805 var actual;
22806
22807 if (typeof block !== 'function') {
22808 throw new TypeError('"block" argument must be a function');
22809 }
22810
22811 if (typeof expected === 'string') {
22812 message = expected;
22813 expected = null;
22814 }
22815
22816 actual = _tryBlock(block);
22817
22818 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
22819 (message ? ' ' + message : '.');
22820
22821 if (shouldThrow && !actual) {
22822 fail(actual, expected, 'Missing expected exception' + message);
22823 }
22824
22825 var userProvidedMessage = typeof message === 'string';
22826 var isUnwantedException = !shouldThrow && util.isError(actual);
22827 var isUnexpectedException = !shouldThrow && actual && !expected;
22828
22829 if ((isUnwantedException &&
22830 userProvidedMessage &&
22831 expectedException(actual, expected)) ||
22832 isUnexpectedException) {
22833 fail(actual, expected, 'Got unwanted exception' + message);
22834 }
22835
22836 if ((shouldThrow && actual && expected &&
22837 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
22838 throw actual;
22839 }
22840 }
22841
22842 // 11. Expected to throw an error:
22843 // assert.throws(block, Error_opt, message_opt);
22844
22845 assert.throws = function(block, /*optional*/error, /*optional*/message) {
22846 _throws(true, block, error, message);
22847 };
22848
22849 // EXTENSION! This is annoying to write outside this module.
22850 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
22851 _throws(false, block, error, message);
22852 };
22853
22854 assert.ifError = function(err) { if (err) throw err; };
22855
22856 var objectKeys = Object.keys || function (obj) {
22857 var keys = [];
22858 for (var key in obj) {
22859 if (hasOwn.call(obj, key)) keys.push(key);
22860 }
22861 return keys;
22862 };
22863
22864 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22865 },{"util/":30}],2:[function(require,module,exports){
22866 'use strict'
22867
22868 exports.byteLength = byteLength
22869 exports.toByteArray = toByteArray
22870 exports.fromByteArray = fromByteArray
22871
22872 var lookup = []
22873 var revLookup = []
22874 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
22875
22876 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
22877 for (var i = 0, len = code.length; i < len; ++i) {
22878 lookup[i] = code[i]
22879 revLookup[code.charCodeAt(i)] = i
22880 }
22881
22882 revLookup['-'.charCodeAt(0)] = 62
22883 revLookup['_'.charCodeAt(0)] = 63
22884
22885 function placeHoldersCount (b64) {
22886 var len = b64.length
22887 if (len % 4 > 0) {
22888 throw new Error('Invalid string. Length must be a multiple of 4')
22889 }
22890
22891 // the number of equal signs (place holders)
22892 // if there are two placeholders, than the two characters before it
22893 // represent one byte
22894 // if there is only one, then the three characters before it represent 2 bytes
22895 // this is just a cheap hack to not do indexOf twice
22896 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
22897 }
22898
22899 function byteLength (b64) {
22900 // base64 is 4/3 + up to two characters of the original data
22901 return b64.length * 3 / 4 - placeHoldersCount(b64)
22902 }
22903
22904 function toByteArray (b64) {
22905 var i, j, l, tmp, placeHolders, arr
22906 var len = b64.length
22907 placeHolders = placeHoldersCount(b64)
22908
22909 arr = new Arr(len * 3 / 4 - placeHolders)
22910
22911 // if there are placeholders, only get up to the last complete 4 chars
22912 l = placeHolders > 0 ? len - 4 : len
22913
22914 var L = 0
22915
22916 for (i = 0, j = 0; i < l; i += 4, j += 3) {
22917 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
22918 arr[L++] = (tmp >> 16) & 0xFF
22919 arr[L++] = (tmp >> 8) & 0xFF
22920 arr[L++] = tmp & 0xFF
22921 }
22922
22923 if (placeHolders === 2) {
22924 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
22925 arr[L++] = tmp & 0xFF
22926 } else if (placeHolders === 1) {
22927 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
22928 arr[L++] = (tmp >> 8) & 0xFF
22929 arr[L++] = tmp & 0xFF
22930 }
22931
22932 return arr
22933 }
22934
22935 function tripletToBase64 (num) {
22936 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
22937 }
22938
22939 function encodeChunk (uint8, start, end) {
22940 var tmp
22941 var output = []
22942 for (var i = start; i < end; i += 3) {
22943 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
22944 output.push(tripletToBase64(tmp))
22945 }
22946 return output.join('')
22947 }
22948
22949 function fromByteArray (uint8) {
22950 var tmp
22951 var len = uint8.length
22952 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
22953 var output = ''
22954 var parts = []
22955 var maxChunkLength = 16383 // must be multiple of 3
22956
22957 // go through the array every three bytes, we'll deal with trailing stuff later
22958 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
22959 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
22960 }
22961
22962 // pad the end with zeros, but make sure to not forget the extra bytes
22963 if (extraBytes === 1) {
22964 tmp = uint8[len - 1]
22965 output += lookup[tmp >> 2]
22966 output += lookup[(tmp << 4) & 0x3F]
22967 output += '=='
22968 } else if (extraBytes === 2) {
22969 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
22970 output += lookup[tmp >> 10]
22971 output += lookup[(tmp >> 4) & 0x3F]
22972 output += lookup[(tmp << 2) & 0x3F]
22973 output += '='
22974 }
22975
22976 parts.push(output)
22977
22978 return parts.join('')
22979 }
22980
22981 },{}],3:[function(require,module,exports){
22982
22983 },{}],4:[function(require,module,exports){
22984 (function (global){
22985 'use strict';
22986
22987 var buffer = require('buffer');
22988 var Buffer = buffer.Buffer;
22989 var SlowBuffer = buffer.SlowBuffer;
22990 var MAX_LEN = buffer.kMaxLength || 2147483647;
22991 exports.alloc = function alloc(size, fill, encoding) {
22992 if (typeof Buffer.alloc === 'function') {
22993 return Buffer.alloc(size, fill, encoding);
22994 }
22995 if (typeof encoding === 'number') {
22996 throw new TypeError('encoding must not be number');
22997 }
22998 if (typeof size !== 'number') {
22999 throw new TypeError('size must be a number');
23000 }
23001 if (size > MAX_LEN) {
23002 throw new RangeError('size is too large');
23003 }
23004 var enc = encoding;
23005 var _fill = fill;
23006 if (_fill === undefined) {
23007 enc = undefined;
23008 _fill = 0;
23009 }
23010 var buf = new Buffer(size);
23011 if (typeof _fill === 'string') {
23012 var fillBuf = new Buffer(_fill, enc);
23013 var flen = fillBuf.length;
23014 var i = -1;
23015 while (++i < size) {
23016 buf[i] = fillBuf[i % flen];
23017 }
23018 } else {
23019 buf.fill(_fill);
23020 }
23021 return buf;
23022 }
23023 exports.allocUnsafe = function allocUnsafe(size) {
23024 if (typeof Buffer.allocUnsafe === 'function') {
23025 return Buffer.allocUnsafe(size);
23026 }
23027 if (typeof size !== 'number') {
23028 throw new TypeError('size must be a number');
23029 }
23030 if (size > MAX_LEN) {
23031 throw new RangeError('size is too large');
23032 }
23033 return new Buffer(size);
23034 }
23035 exports.from = function from(value, encodingOrOffset, length) {
23036 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
23037 return Buffer.from(value, encodingOrOffset, length);
23038 }
23039 if (typeof value === 'number') {
23040 throw new TypeError('"value" argument must not be a number');
23041 }
23042 if (typeof value === 'string') {
23043 return new Buffer(value, encodingOrOffset);
23044 }
23045 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
23046 var offset = encodingOrOffset;
23047 if (arguments.length === 1) {
23048 return new Buffer(value);
23049 }
23050 if (typeof offset === 'undefined') {
23051 offset = 0;
23052 }
23053 var len = length;
23054 if (typeof len === 'undefined') {
23055 len = value.byteLength - offset;
23056 }
23057 if (offset >= value.byteLength) {
23058 throw new RangeError('\'offset\' is out of bounds');
23059 }
23060 if (len > value.byteLength - offset) {
23061 throw new RangeError('\'length\' is out of bounds');
23062 }
23063 return new Buffer(value.slice(offset, offset + len));
23064 }
23065 if (Buffer.isBuffer(value)) {
23066 var out = new Buffer(value.length);
23067 value.copy(out, 0, 0, value.length);
23068 return out;
23069 }
23070 if (value) {
23071 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
23072 return new Buffer(value);
23073 }
23074 if (value.type === 'Buffer' && Array.isArray(value.data)) {
23075 return new Buffer(value.data);
23076 }
23077 }
23078
23079 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
23080 }
23081 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
23082 if (typeof Buffer.allocUnsafeSlow === 'function') {
23083 return Buffer.allocUnsafeSlow(size);
23084 }
23085 if (typeof size !== 'number') {
23086 throw new TypeError('size must be a number');
23087 }
23088 if (size >= MAX_LEN) {
23089 throw new RangeError('size is too large');
23090 }
23091 return new SlowBuffer(size);
23092 }
23093
23094 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23095 },{"buffer":5}],5:[function(require,module,exports){
23096 /*!
23097 * The buffer module from node.js, for the browser.
23098 *
23099 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
23100 * @license MIT
23101 */
23102 /* eslint-disable no-proto */
23103
23104 'use strict'
23105
23106 var base64 = require('base64-js')
23107 var ieee754 = require('ieee754')
23108
23109 exports.Buffer = Buffer
23110 exports.SlowBuffer = SlowBuffer
23111 exports.INSPECT_MAX_BYTES = 50
23112
23113 var K_MAX_LENGTH = 0x7fffffff
23114 exports.kMaxLength = K_MAX_LENGTH
23115
23116 /**
23117 * If `Buffer.TYPED_ARRAY_SUPPORT`:
23118 * === true Use Uint8Array implementation (fastest)
23119 * === false Print warning and recommend using `buffer` v4.x which has an Object
23120 * implementation (most compatible, even IE6)
23121 *
23122 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
23123 * Opera 11.6+, iOS 4.2+.
23124 *
23125 * We report that the browser does not support typed arrays if the are not subclassable
23126 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
23127 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
23128 * for __proto__ and has a buggy typed array implementation.
23129 */
23130 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
23131
23132 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
23133 typeof console.error === 'function') {
23134 console.error(
23135 'This browser lacks typed array (Uint8Array) support which is required by ' +
23136 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
23137 )
23138 }
23139
23140 function typedArraySupport () {
23141 // Can typed array instances can be augmented?
23142 try {
23143 var arr = new Uint8Array(1)
23144 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
23145 return arr.foo() === 42
23146 } catch (e) {
23147 return false
23148 }
23149 }
23150
23151 function createBuffer (length) {
23152 if (length > K_MAX_LENGTH) {
23153 throw new RangeError('Invalid typed array length')
23154 }
23155 // Return an augmented `Uint8Array` instance
23156 var buf = new Uint8Array(length)
23157 buf.__proto__ = Buffer.prototype
23158 return buf
23159 }
23160
23161 /**
23162 * The Buffer constructor returns instances of `Uint8Array` that have their
23163 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
23164 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
23165 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
23166 * returns a single octet.
23167 *
23168 * The `Uint8Array` prototype remains unmodified.
23169 */
23170
23171 function Buffer (arg, encodingOrOffset, length) {
23172 // Common case.
23173 if (typeof arg === 'number') {
23174 if (typeof encodingOrOffset === 'string') {
23175 throw new Error(
23176 'If encoding is specified then the first argument must be a string'
23177 )
23178 }
23179 return allocUnsafe(arg)
23180 }
23181 return from(arg, encodingOrOffset, length)
23182 }
23183
23184 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
23185 if (typeof Symbol !== 'undefined' && Symbol.species &&
23186 Buffer[Symbol.species] === Buffer) {
23187 Object.defineProperty(Buffer, Symbol.species, {
23188 value: null,
23189 configurable: true,
23190 enumerable: false,
23191 writable: false
23192 })
23193 }
23194
23195 Buffer.poolSize = 8192 // not used by this implementation
23196
23197 function from (value, encodingOrOffset, length) {
23198 if (typeof value === 'number') {
23199 throw new TypeError('"value" argument must not be a number')
23200 }
23201
23202 if (value instanceof ArrayBuffer) {
23203 return fromArrayBuffer(value, encodingOrOffset, length)
23204 }
23205
23206 if (typeof value === 'string') {
23207 return fromString(value, encodingOrOffset)
23208 }
23209
23210 return fromObject(value)
23211 }
23212
23213 /**
23214 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
23215 * if value is a number.
23216 * Buffer.from(str[, encoding])
23217 * Buffer.from(array)
23218 * Buffer.from(buffer)
23219 * Buffer.from(arrayBuffer[, byteOffset[, length]])
23220 **/
23221 Buffer.from = function (value, encodingOrOffset, length) {
23222 return from(value, encodingOrOffset, length)
23223 }
23224
23225 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
23226 // https://github.com/feross/buffer/pull/148
23227 Buffer.prototype.__proto__ = Uint8Array.prototype
23228 Buffer.__proto__ = Uint8Array
23229
23230 function assertSize (size) {
23231 if (typeof size !== 'number') {
23232 throw new TypeError('"size" argument must be a number')
23233 } else if (size < 0) {
23234 throw new RangeError('"size" argument must not be negative')
23235 }
23236 }
23237
23238 function alloc (size, fill, encoding) {
23239 assertSize(size)
23240 if (size <= 0) {
23241 return createBuffer(size)
23242 }
23243 if (fill !== undefined) {
23244 // Only pay attention to encoding if it's a string. This
23245 // prevents accidentally sending in a number that would
23246 // be interpretted as a start offset.
23247 return typeof encoding === 'string'
23248 ? createBuffer(size).fill(fill, encoding)
23249 : createBuffer(size).fill(fill)
23250 }
23251 return createBuffer(size)
23252 }
23253
23254 /**
23255 * Creates a new filled Buffer instance.
23256 * alloc(size[, fill[, encoding]])
23257 **/
23258 Buffer.alloc = function (size, fill, encoding) {
23259 return alloc(size, fill, encoding)
23260 }
23261
23262 function allocUnsafe (size) {
23263 assertSize(size)
23264 return createBuffer(size < 0 ? 0 : checked(size) | 0)
23265 }
23266
23267 /**
23268 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
23269 * */
23270 Buffer.allocUnsafe = function (size) {
23271 return allocUnsafe(size)
23272 }
23273 /**
23274 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
23275 */
23276 Buffer.allocUnsafeSlow = function (size) {
23277 return allocUnsafe(size)
23278 }
23279
23280 function fromString (string, encoding) {
23281 if (typeof encoding !== 'string' || encoding === '') {
23282 encoding = 'utf8'
23283 }
23284
23285 if (!Buffer.isEncoding(encoding)) {
23286 throw new TypeError('"encoding" must be a valid string encoding')
23287 }
23288
23289 var length = byteLength(string, encoding) | 0
23290 var buf = createBuffer(length)
23291
23292 var actual = buf.write(string, encoding)
23293
23294 if (actual !== length) {
23295 // Writing a hex string, for example, that contains invalid characters will
23296 // cause everything after the first invalid character to be ignored. (e.g.
23297 // 'abxxcd' will be treated as 'ab')
23298 buf = buf.slice(0, actual)
23299 }
23300
23301 return buf
23302 }
23303
23304 function fromArrayLike (array) {
23305 var length = array.length < 0 ? 0 : checked(array.length) | 0
23306 var buf = createBuffer(length)
23307 for (var i = 0; i < length; i += 1) {
23308 buf[i] = array[i] & 255
23309 }
23310 return buf
23311 }
23312
23313 function fromArrayBuffer (array, byteOffset, length) {
23314 if (byteOffset < 0 || array.byteLength < byteOffset) {
23315 throw new RangeError('\'offset\' is out of bounds')
23316 }
23317
23318 if (array.byteLength < byteOffset + (length || 0)) {
23319 throw new RangeError('\'length\' is out of bounds')
23320 }
23321
23322 var buf
23323 if (byteOffset === undefined && length === undefined) {
23324 buf = new Uint8Array(array)
23325 } else if (length === undefined) {
23326 buf = new Uint8Array(array, byteOffset)
23327 } else {
23328 buf = new Uint8Array(array, byteOffset, length)
23329 }
23330
23331 // Return an augmented `Uint8Array` instance
23332 buf.__proto__ = Buffer.prototype
23333 return buf
23334 }
23335
23336 function fromObject (obj) {
23337 if (Buffer.isBuffer(obj)) {
23338 var len = checked(obj.length) | 0
23339 var buf = createBuffer(len)
23340
23341 if (buf.length === 0) {
23342 return buf
23343 }
23344
23345 obj.copy(buf, 0, 0, len)
23346 return buf
23347 }
23348
23349 if (obj) {
23350 if (ArrayBuffer.isView(obj) || 'length' in obj) {
23351 if (typeof obj.length !== 'number' || isnan(obj.length)) {
23352 return createBuffer(0)
23353 }
23354 return fromArrayLike(obj)
23355 }
23356
23357 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
23358 return fromArrayLike(obj.data)
23359 }
23360 }
23361
23362 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
23363 }
23364
23365 function checked (length) {
23366 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
23367 // length is NaN (which is otherwise coerced to zero.)
23368 if (length >= K_MAX_LENGTH) {
23369 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
23370 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
23371 }
23372 return length | 0
23373 }
23374
23375 function SlowBuffer (length) {
23376 if (+length != length) { // eslint-disable-line eqeqeq
23377 length = 0
23378 }
23379 return Buffer.alloc(+length)
23380 }
23381
23382 Buffer.isBuffer = function isBuffer (b) {
23383 return b != null && b._isBuffer === true
23384 }
23385
23386 Buffer.compare = function compare (a, b) {
23387 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
23388 throw new TypeError('Arguments must be Buffers')
23389 }
23390
23391 if (a === b) return 0
23392
23393 var x = a.length
23394 var y = b.length
23395
23396 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
23397 if (a[i] !== b[i]) {
23398 x = a[i]
23399 y = b[i]
23400 break
23401 }
23402 }
23403
23404 if (x < y) return -1
23405 if (y < x) return 1
23406 return 0
23407 }
23408
23409 Buffer.isEncoding = function isEncoding (encoding) {
23410 switch (String(encoding).toLowerCase()) {
23411 case 'hex':
23412 case 'utf8':
23413 case 'utf-8':
23414 case 'ascii':
23415 case 'latin1':
23416 case 'binary':
23417 case 'base64':
23418 case 'ucs2':
23419 case 'ucs-2':
23420 case 'utf16le':
23421 case 'utf-16le':
23422 return true
23423 default:
23424 return false
23425 }
23426 }
23427
23428 Buffer.concat = function concat (list, length) {
23429 if (!Array.isArray(list)) {
23430 throw new TypeError('"list" argument must be an Array of Buffers')
23431 }
23432
23433 if (list.length === 0) {
23434 return Buffer.alloc(0)
23435 }
23436
23437 var i
23438 if (length === undefined) {
23439 length = 0
23440 for (i = 0; i < list.length; ++i) {
23441 length += list[i].length
23442 }
23443 }
23444
23445 var buffer = Buffer.allocUnsafe(length)
23446 var pos = 0
23447 for (i = 0; i < list.length; ++i) {
23448 var buf = list[i]
23449 if (!Buffer.isBuffer(buf)) {
23450 throw new TypeError('"list" argument must be an Array of Buffers')
23451 }
23452 buf.copy(buffer, pos)
23453 pos += buf.length
23454 }
23455 return buffer
23456 }
23457
23458 function byteLength (string, encoding) {
23459 if (Buffer.isBuffer(string)) {
23460 return string.length
23461 }
23462 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
23463 return string.byteLength
23464 }
23465 if (typeof string !== 'string') {
23466 string = '' + string
23467 }
23468
23469 var len = string.length
23470 if (len === 0) return 0
23471
23472 // Use a for loop to avoid recursion
23473 var loweredCase = false
23474 for (;;) {
23475 switch (encoding) {
23476 case 'ascii':
23477 case 'latin1':
23478 case 'binary':
23479 return len
23480 case 'utf8':
23481 case 'utf-8':
23482 case undefined:
23483 return utf8ToBytes(string).length
23484 case 'ucs2':
23485 case 'ucs-2':
23486 case 'utf16le':
23487 case 'utf-16le':
23488 return len * 2
23489 case 'hex':
23490 return len >>> 1
23491 case 'base64':
23492 return base64ToBytes(string).length
23493 default:
23494 if (loweredCase) return utf8ToBytes(string).length // assume utf8
23495 encoding = ('' + encoding).toLowerCase()
23496 loweredCase = true
23497 }
23498 }
23499 }
23500 Buffer.byteLength = byteLength
23501
23502 function slowToString (encoding, start, end) {
23503 var loweredCase = false
23504
23505 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
23506 // property of a typed array.
23507
23508 // This behaves neither like String nor Uint8Array in that we set start/end
23509 // to their upper/lower bounds if the value passed is out of range.
23510 // undefined is handled specially as per ECMA-262 6th Edition,
23511 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
23512 if (start === undefined || start < 0) {
23513 start = 0
23514 }
23515 // Return early if start > this.length. Done here to prevent potential uint32
23516 // coercion fail below.
23517 if (start > this.length) {
23518 return ''
23519 }
23520
23521 if (end === undefined || end > this.length) {
23522 end = this.length
23523 }
23524
23525 if (end <= 0) {
23526 return ''
23527 }
23528
23529 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
23530 end >>>= 0
23531 start >>>= 0
23532
23533 if (end <= start) {
23534 return ''
23535 }
23536
23537 if (!encoding) encoding = 'utf8'
23538
23539 while (true) {
23540 switch (encoding) {
23541 case 'hex':
23542 return hexSlice(this, start, end)
23543
23544 case 'utf8':
23545 case 'utf-8':
23546 return utf8Slice(this, start, end)
23547
23548 case 'ascii':
23549 return asciiSlice(this, start, end)
23550
23551 case 'latin1':
23552 case 'binary':
23553 return latin1Slice(this, start, end)
23554
23555 case 'base64':
23556 return base64Slice(this, start, end)
23557
23558 case 'ucs2':
23559 case 'ucs-2':
23560 case 'utf16le':
23561 case 'utf-16le':
23562 return utf16leSlice(this, start, end)
23563
23564 default:
23565 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23566 encoding = (encoding + '').toLowerCase()
23567 loweredCase = true
23568 }
23569 }
23570 }
23571
23572 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
23573 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
23574 // reliably in a browserify context because there could be multiple different
23575 // copies of the 'buffer' package in use. This method works even for Buffer
23576 // instances that were created from another copy of the `buffer` package.
23577 // See: https://github.com/feross/buffer/issues/154
23578 Buffer.prototype._isBuffer = true
23579
23580 function swap (b, n, m) {
23581 var i = b[n]
23582 b[n] = b[m]
23583 b[m] = i
23584 }
23585
23586 Buffer.prototype.swap16 = function swap16 () {
23587 var len = this.length
23588 if (len % 2 !== 0) {
23589 throw new RangeError('Buffer size must be a multiple of 16-bits')
23590 }
23591 for (var i = 0; i < len; i += 2) {
23592 swap(this, i, i + 1)
23593 }
23594 return this
23595 }
23596
23597 Buffer.prototype.swap32 = function swap32 () {
23598 var len = this.length
23599 if (len % 4 !== 0) {
23600 throw new RangeError('Buffer size must be a multiple of 32-bits')
23601 }
23602 for (var i = 0; i < len; i += 4) {
23603 swap(this, i, i + 3)
23604 swap(this, i + 1, i + 2)
23605 }
23606 return this
23607 }
23608
23609 Buffer.prototype.swap64 = function swap64 () {
23610 var len = this.length
23611 if (len % 8 !== 0) {
23612 throw new RangeError('Buffer size must be a multiple of 64-bits')
23613 }
23614 for (var i = 0; i < len; i += 8) {
23615 swap(this, i, i + 7)
23616 swap(this, i + 1, i + 6)
23617 swap(this, i + 2, i + 5)
23618 swap(this, i + 3, i + 4)
23619 }
23620 return this
23621 }
23622
23623 Buffer.prototype.toString = function toString () {
23624 var length = this.length
23625 if (length === 0) return ''
23626 if (arguments.length === 0) return utf8Slice(this, 0, length)
23627 return slowToString.apply(this, arguments)
23628 }
23629
23630 Buffer.prototype.equals = function equals (b) {
23631 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
23632 if (this === b) return true
23633 return Buffer.compare(this, b) === 0
23634 }
23635
23636 Buffer.prototype.inspect = function inspect () {
23637 var str = ''
23638 var max = exports.INSPECT_MAX_BYTES
23639 if (this.length > 0) {
23640 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
23641 if (this.length > max) str += ' ... '
23642 }
23643 return '<Buffer ' + str + '>'
23644 }
23645
23646 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
23647 if (!Buffer.isBuffer(target)) {
23648 throw new TypeError('Argument must be a Buffer')
23649 }
23650
23651 if (start === undefined) {
23652 start = 0
23653 }
23654 if (end === undefined) {
23655 end = target ? target.length : 0
23656 }
23657 if (thisStart === undefined) {
23658 thisStart = 0
23659 }
23660 if (thisEnd === undefined) {
23661 thisEnd = this.length
23662 }
23663
23664 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
23665 throw new RangeError('out of range index')
23666 }
23667
23668 if (thisStart >= thisEnd && start >= end) {
23669 return 0
23670 }
23671 if (thisStart >= thisEnd) {
23672 return -1
23673 }
23674 if (start >= end) {
23675 return 1
23676 }
23677
23678 start >>>= 0
23679 end >>>= 0
23680 thisStart >>>= 0
23681 thisEnd >>>= 0
23682
23683 if (this === target) return 0
23684
23685 var x = thisEnd - thisStart
23686 var y = end - start
23687 var len = Math.min(x, y)
23688
23689 var thisCopy = this.slice(thisStart, thisEnd)
23690 var targetCopy = target.slice(start, end)
23691
23692 for (var i = 0; i < len; ++i) {
23693 if (thisCopy[i] !== targetCopy[i]) {
23694 x = thisCopy[i]
23695 y = targetCopy[i]
23696 break
23697 }
23698 }
23699
23700 if (x < y) return -1
23701 if (y < x) return 1
23702 return 0
23703 }
23704
23705 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
23706 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
23707 //
23708 // Arguments:
23709 // - buffer - a Buffer to search
23710 // - val - a string, Buffer, or number
23711 // - byteOffset - an index into `buffer`; will be clamped to an int32
23712 // - encoding - an optional encoding, relevant is val is a string
23713 // - dir - true for indexOf, false for lastIndexOf
23714 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
23715 // Empty buffer means no match
23716 if (buffer.length === 0) return -1
23717
23718 // Normalize byteOffset
23719 if (typeof byteOffset === 'string') {
23720 encoding = byteOffset
23721 byteOffset = 0
23722 } else if (byteOffset > 0x7fffffff) {
23723 byteOffset = 0x7fffffff
23724 } else if (byteOffset < -0x80000000) {
23725 byteOffset = -0x80000000
23726 }
23727 byteOffset = +byteOffset // Coerce to Number.
23728 if (isNaN(byteOffset)) {
23729 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
23730 byteOffset = dir ? 0 : (buffer.length - 1)
23731 }
23732
23733 // Normalize byteOffset: negative offsets start from the end of the buffer
23734 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
23735 if (byteOffset >= buffer.length) {
23736 if (dir) return -1
23737 else byteOffset = buffer.length - 1
23738 } else if (byteOffset < 0) {
23739 if (dir) byteOffset = 0
23740 else return -1
23741 }
23742
23743 // Normalize val
23744 if (typeof val === 'string') {
23745 val = Buffer.from(val, encoding)
23746 }
23747
23748 // Finally, search either indexOf (if dir is true) or lastIndexOf
23749 if (Buffer.isBuffer(val)) {
23750 // Special case: looking for empty string/buffer always fails
23751 if (val.length === 0) {
23752 return -1
23753 }
23754 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
23755 } else if (typeof val === 'number') {
23756 val = val & 0xFF // Search for a byte value [0-255]
23757 if (typeof Uint8Array.prototype.indexOf === 'function') {
23758 if (dir) {
23759 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
23760 } else {
23761 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
23762 }
23763 }
23764 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
23765 }
23766
23767 throw new TypeError('val must be string, number or Buffer')
23768 }
23769
23770 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
23771 var indexSize = 1
23772 var arrLength = arr.length
23773 var valLength = val.length
23774
23775 if (encoding !== undefined) {
23776 encoding = String(encoding).toLowerCase()
23777 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
23778 encoding === 'utf16le' || encoding === 'utf-16le') {
23779 if (arr.length < 2 || val.length < 2) {
23780 return -1
23781 }
23782 indexSize = 2
23783 arrLength /= 2
23784 valLength /= 2
23785 byteOffset /= 2
23786 }
23787 }
23788
23789 function read (buf, i) {
23790 if (indexSize === 1) {
23791 return buf[i]
23792 } else {
23793 return buf.readUInt16BE(i * indexSize)
23794 }
23795 }
23796
23797 var i
23798 if (dir) {
23799 var foundIndex = -1
23800 for (i = byteOffset; i < arrLength; i++) {
23801 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
23802 if (foundIndex === -1) foundIndex = i
23803 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
23804 } else {
23805 if (foundIndex !== -1) i -= i - foundIndex
23806 foundIndex = -1
23807 }
23808 }
23809 } else {
23810 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
23811 for (i = byteOffset; i >= 0; i--) {
23812 var found = true
23813 for (var j = 0; j < valLength; j++) {
23814 if (read(arr, i + j) !== read(val, j)) {
23815 found = false
23816 break
23817 }
23818 }
23819 if (found) return i
23820 }
23821 }
23822
23823 return -1
23824 }
23825
23826 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
23827 return this.indexOf(val, byteOffset, encoding) !== -1
23828 }
23829
23830 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
23831 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
23832 }
23833
23834 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
23835 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
23836 }
23837
23838 function hexWrite (buf, string, offset, length) {
23839 offset = Number(offset) || 0
23840 var remaining = buf.length - offset
23841 if (!length) {
23842 length = remaining
23843 } else {
23844 length = Number(length)
23845 if (length > remaining) {
23846 length = remaining
23847 }
23848 }
23849
23850 // must be an even number of digits
23851 var strLen = string.length
23852 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
23853
23854 if (length > strLen / 2) {
23855 length = strLen / 2
23856 }
23857 for (var i = 0; i < length; ++i) {
23858 var parsed = parseInt(string.substr(i * 2, 2), 16)
23859 if (isNaN(parsed)) return i
23860 buf[offset + i] = parsed
23861 }
23862 return i
23863 }
23864
23865 function utf8Write (buf, string, offset, length) {
23866 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
23867 }
23868
23869 function asciiWrite (buf, string, offset, length) {
23870 return blitBuffer(asciiToBytes(string), buf, offset, length)
23871 }
23872
23873 function latin1Write (buf, string, offset, length) {
23874 return asciiWrite(buf, string, offset, length)
23875 }
23876
23877 function base64Write (buf, string, offset, length) {
23878 return blitBuffer(base64ToBytes(string), buf, offset, length)
23879 }
23880
23881 function ucs2Write (buf, string, offset, length) {
23882 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
23883 }
23884
23885 Buffer.prototype.write = function write (string, offset, length, encoding) {
23886 // Buffer#write(string)
23887 if (offset === undefined) {
23888 encoding = 'utf8'
23889 length = this.length
23890 offset = 0
23891 // Buffer#write(string, encoding)
23892 } else if (length === undefined && typeof offset === 'string') {
23893 encoding = offset
23894 length = this.length
23895 offset = 0
23896 // Buffer#write(string, offset[, length][, encoding])
23897 } else if (isFinite(offset)) {
23898 offset = offset >>> 0
23899 if (isFinite(length)) {
23900 length = length >>> 0
23901 if (encoding === undefined) encoding = 'utf8'
23902 } else {
23903 encoding = length
23904 length = undefined
23905 }
23906 } else {
23907 throw new Error(
23908 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
23909 )
23910 }
23911
23912 var remaining = this.length - offset
23913 if (length === undefined || length > remaining) length = remaining
23914
23915 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
23916 throw new RangeError('Attempt to write outside buffer bounds')
23917 }
23918
23919 if (!encoding) encoding = 'utf8'
23920
23921 var loweredCase = false
23922 for (;;) {
23923 switch (encoding) {
23924 case 'hex':
23925 return hexWrite(this, string, offset, length)
23926
23927 case 'utf8':
23928 case 'utf-8':
23929 return utf8Write(this, string, offset, length)
23930
23931 case 'ascii':
23932 return asciiWrite(this, string, offset, length)
23933
23934 case 'latin1':
23935 case 'binary':
23936 return latin1Write(this, string, offset, length)
23937
23938 case 'base64':
23939 // Warning: maxLength not taken into account in base64Write
23940 return base64Write(this, string, offset, length)
23941
23942 case 'ucs2':
23943 case 'ucs-2':
23944 case 'utf16le':
23945 case 'utf-16le':
23946 return ucs2Write(this, string, offset, length)
23947
23948 default:
23949 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23950 encoding = ('' + encoding).toLowerCase()
23951 loweredCase = true
23952 }
23953 }
23954 }
23955
23956 Buffer.prototype.toJSON = function toJSON () {
23957 return {
23958 type: 'Buffer',
23959 data: Array.prototype.slice.call(this._arr || this, 0)
23960 }
23961 }
23962
23963 function base64Slice (buf, start, end) {
23964 if (start === 0 && end === buf.length) {
23965 return base64.fromByteArray(buf)
23966 } else {
23967 return base64.fromByteArray(buf.slice(start, end))
23968 }
23969 }
23970
23971 function utf8Slice (buf, start, end) {
23972 end = Math.min(buf.length, end)
23973 var res = []
23974
23975 var i = start
23976 while (i < end) {
23977 var firstByte = buf[i]
23978 var codePoint = null
23979 var bytesPerSequence = (firstByte > 0xEF) ? 4
23980 : (firstByte > 0xDF) ? 3
23981 : (firstByte > 0xBF) ? 2
23982 : 1
23983
23984 if (i + bytesPerSequence <= end) {
23985 var secondByte, thirdByte, fourthByte, tempCodePoint
23986
23987 switch (bytesPerSequence) {
23988 case 1:
23989 if (firstByte < 0x80) {
23990 codePoint = firstByte
23991 }
23992 break
23993 case 2:
23994 secondByte = buf[i + 1]
23995 if ((secondByte & 0xC0) === 0x80) {
23996 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
23997 if (tempCodePoint > 0x7F) {
23998 codePoint = tempCodePoint
23999 }
24000 }
24001 break
24002 case 3:
24003 secondByte = buf[i + 1]
24004 thirdByte = buf[i + 2]
24005 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
24006 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
24007 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
24008 codePoint = tempCodePoint
24009 }
24010 }
24011 break
24012 case 4:
24013 secondByte = buf[i + 1]
24014 thirdByte = buf[i + 2]
24015 fourthByte = buf[i + 3]
24016 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
24017 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
24018 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
24019 codePoint = tempCodePoint
24020 }
24021 }
24022 }
24023 }
24024
24025 if (codePoint === null) {
24026 // we did not generate a valid codePoint so insert a
24027 // replacement char (U+FFFD) and advance only 1 byte
24028 codePoint = 0xFFFD
24029 bytesPerSequence = 1
24030 } else if (codePoint > 0xFFFF) {
24031 // encode to utf16 (surrogate pair dance)
24032 codePoint -= 0x10000
24033 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
24034 codePoint = 0xDC00 | codePoint & 0x3FF
24035 }
24036
24037 res.push(codePoint)
24038 i += bytesPerSequence
24039 }
24040
24041 return decodeCodePointsArray(res)
24042 }
24043
24044 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
24045 // the lowest limit is Chrome, with 0x10000 args.
24046 // We go 1 magnitude less, for safety
24047 var MAX_ARGUMENTS_LENGTH = 0x1000
24048
24049 function decodeCodePointsArray (codePoints) {
24050 var len = codePoints.length
24051 if (len <= MAX_ARGUMENTS_LENGTH) {
24052 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
24053 }
24054
24055 // Decode in chunks to avoid "call stack size exceeded".
24056 var res = ''
24057 var i = 0
24058 while (i < len) {
24059 res += String.fromCharCode.apply(
24060 String,
24061 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
24062 )
24063 }
24064 return res
24065 }
24066
24067 function asciiSlice (buf, start, end) {
24068 var ret = ''
24069 end = Math.min(buf.length, end)
24070
24071 for (var i = start; i < end; ++i) {
24072 ret += String.fromCharCode(buf[i] & 0x7F)
24073 }
24074 return ret
24075 }
24076
24077 function latin1Slice (buf, start, end) {
24078 var ret = ''
24079 end = Math.min(buf.length, end)
24080
24081 for (var i = start; i < end; ++i) {
24082 ret += String.fromCharCode(buf[i])
24083 }
24084 return ret
24085 }
24086
24087 function hexSlice (buf, start, end) {
24088 var len = buf.length
24089
24090 if (!start || start < 0) start = 0
24091 if (!end || end < 0 || end > len) end = len
24092
24093 var out = ''
24094 for (var i = start; i < end; ++i) {
24095 out += toHex(buf[i])
24096 }
24097 return out
24098 }
24099
24100 function utf16leSlice (buf, start, end) {
24101 var bytes = buf.slice(start, end)
24102 var res = ''
24103 for (var i = 0; i < bytes.length; i += 2) {
24104 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
24105 }
24106 return res
24107 }
24108
24109 Buffer.prototype.slice = function slice (start, end) {
24110 var len = this.length
24111 start = ~~start
24112 end = end === undefined ? len : ~~end
24113
24114 if (start < 0) {
24115 start += len
24116 if (start < 0) start = 0
24117 } else if (start > len) {
24118 start = len
24119 }
24120
24121 if (end < 0) {
24122 end += len
24123 if (end < 0) end = 0
24124 } else if (end > len) {
24125 end = len
24126 }
24127
24128 if (end < start) end = start
24129
24130 var newBuf = this.subarray(start, end)
24131 // Return an augmented `Uint8Array` instance
24132 newBuf.__proto__ = Buffer.prototype
24133 return newBuf
24134 }
24135
24136 /*
24137 * Need to make sure that buffer isn't trying to write out of bounds.
24138 */
24139 function checkOffset (offset, ext, length) {
24140 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
24141 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
24142 }
24143
24144 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
24145 offset = offset >>> 0
24146 byteLength = byteLength >>> 0
24147 if (!noAssert) checkOffset(offset, byteLength, this.length)
24148
24149 var val = this[offset]
24150 var mul = 1
24151 var i = 0
24152 while (++i < byteLength && (mul *= 0x100)) {
24153 val += this[offset + i] * mul
24154 }
24155
24156 return val
24157 }
24158
24159 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
24160 offset = offset >>> 0
24161 byteLength = byteLength >>> 0
24162 if (!noAssert) {
24163 checkOffset(offset, byteLength, this.length)
24164 }
24165
24166 var val = this[offset + --byteLength]
24167 var mul = 1
24168 while (byteLength > 0 && (mul *= 0x100)) {
24169 val += this[offset + --byteLength] * mul
24170 }
24171
24172 return val
24173 }
24174
24175 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
24176 offset = offset >>> 0
24177 if (!noAssert) checkOffset(offset, 1, this.length)
24178 return this[offset]
24179 }
24180
24181 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
24182 offset = offset >>> 0
24183 if (!noAssert) checkOffset(offset, 2, this.length)
24184 return this[offset] | (this[offset + 1] << 8)
24185 }
24186
24187 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
24188 offset = offset >>> 0
24189 if (!noAssert) checkOffset(offset, 2, this.length)
24190 return (this[offset] << 8) | this[offset + 1]
24191 }
24192
24193 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
24194 offset = offset >>> 0
24195 if (!noAssert) checkOffset(offset, 4, this.length)
24196
24197 return ((this[offset]) |
24198 (this[offset + 1] << 8) |
24199 (this[offset + 2] << 16)) +
24200 (this[offset + 3] * 0x1000000)
24201 }
24202
24203 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
24204 offset = offset >>> 0
24205 if (!noAssert) checkOffset(offset, 4, this.length)
24206
24207 return (this[offset] * 0x1000000) +
24208 ((this[offset + 1] << 16) |
24209 (this[offset + 2] << 8) |
24210 this[offset + 3])
24211 }
24212
24213 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
24214 offset = offset >>> 0
24215 byteLength = byteLength >>> 0
24216 if (!noAssert) checkOffset(offset, byteLength, this.length)
24217
24218 var val = this[offset]
24219 var mul = 1
24220 var i = 0
24221 while (++i < byteLength && (mul *= 0x100)) {
24222 val += this[offset + i] * mul
24223 }
24224 mul *= 0x80
24225
24226 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24227
24228 return val
24229 }
24230
24231 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
24232 offset = offset >>> 0
24233 byteLength = byteLength >>> 0
24234 if (!noAssert) checkOffset(offset, byteLength, this.length)
24235
24236 var i = byteLength
24237 var mul = 1
24238 var val = this[offset + --i]
24239 while (i > 0 && (mul *= 0x100)) {
24240 val += this[offset + --i] * mul
24241 }
24242 mul *= 0x80
24243
24244 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24245
24246 return val
24247 }
24248
24249 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
24250 offset = offset >>> 0
24251 if (!noAssert) checkOffset(offset, 1, this.length)
24252 if (!(this[offset] & 0x80)) return (this[offset])
24253 return ((0xff - this[offset] + 1) * -1)
24254 }
24255
24256 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
24257 offset = offset >>> 0
24258 if (!noAssert) checkOffset(offset, 2, this.length)
24259 var val = this[offset] | (this[offset + 1] << 8)
24260 return (val & 0x8000) ? val | 0xFFFF0000 : val
24261 }
24262
24263 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
24264 offset = offset >>> 0
24265 if (!noAssert) checkOffset(offset, 2, this.length)
24266 var val = this[offset + 1] | (this[offset] << 8)
24267 return (val & 0x8000) ? val | 0xFFFF0000 : val
24268 }
24269
24270 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
24271 offset = offset >>> 0
24272 if (!noAssert) checkOffset(offset, 4, this.length)
24273
24274 return (this[offset]) |
24275 (this[offset + 1] << 8) |
24276 (this[offset + 2] << 16) |
24277 (this[offset + 3] << 24)
24278 }
24279
24280 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
24281 offset = offset >>> 0
24282 if (!noAssert) checkOffset(offset, 4, this.length)
24283
24284 return (this[offset] << 24) |
24285 (this[offset + 1] << 16) |
24286 (this[offset + 2] << 8) |
24287 (this[offset + 3])
24288 }
24289
24290 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
24291 offset = offset >>> 0
24292 if (!noAssert) checkOffset(offset, 4, this.length)
24293 return ieee754.read(this, offset, true, 23, 4)
24294 }
24295
24296 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
24297 offset = offset >>> 0
24298 if (!noAssert) checkOffset(offset, 4, this.length)
24299 return ieee754.read(this, offset, false, 23, 4)
24300 }
24301
24302 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
24303 offset = offset >>> 0
24304 if (!noAssert) checkOffset(offset, 8, this.length)
24305 return ieee754.read(this, offset, true, 52, 8)
24306 }
24307
24308 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
24309 offset = offset >>> 0
24310 if (!noAssert) checkOffset(offset, 8, this.length)
24311 return ieee754.read(this, offset, false, 52, 8)
24312 }
24313
24314 function checkInt (buf, value, offset, ext, max, min) {
24315 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
24316 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
24317 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24318 }
24319
24320 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
24321 value = +value
24322 offset = offset >>> 0
24323 byteLength = byteLength >>> 0
24324 if (!noAssert) {
24325 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24326 checkInt(this, value, offset, byteLength, maxBytes, 0)
24327 }
24328
24329 var mul = 1
24330 var i = 0
24331 this[offset] = value & 0xFF
24332 while (++i < byteLength && (mul *= 0x100)) {
24333 this[offset + i] = (value / mul) & 0xFF
24334 }
24335
24336 return offset + byteLength
24337 }
24338
24339 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
24340 value = +value
24341 offset = offset >>> 0
24342 byteLength = byteLength >>> 0
24343 if (!noAssert) {
24344 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24345 checkInt(this, value, offset, byteLength, maxBytes, 0)
24346 }
24347
24348 var i = byteLength - 1
24349 var mul = 1
24350 this[offset + i] = value & 0xFF
24351 while (--i >= 0 && (mul *= 0x100)) {
24352 this[offset + i] = (value / mul) & 0xFF
24353 }
24354
24355 return offset + byteLength
24356 }
24357
24358 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
24359 value = +value
24360 offset = offset >>> 0
24361 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
24362 this[offset] = (value & 0xff)
24363 return offset + 1
24364 }
24365
24366 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
24367 value = +value
24368 offset = offset >>> 0
24369 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24370 this[offset] = (value & 0xff)
24371 this[offset + 1] = (value >>> 8)
24372 return offset + 2
24373 }
24374
24375 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
24376 value = +value
24377 offset = offset >>> 0
24378 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24379 this[offset] = (value >>> 8)
24380 this[offset + 1] = (value & 0xff)
24381 return offset + 2
24382 }
24383
24384 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
24385 value = +value
24386 offset = offset >>> 0
24387 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24388 this[offset + 3] = (value >>> 24)
24389 this[offset + 2] = (value >>> 16)
24390 this[offset + 1] = (value >>> 8)
24391 this[offset] = (value & 0xff)
24392 return offset + 4
24393 }
24394
24395 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
24396 value = +value
24397 offset = offset >>> 0
24398 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24399 this[offset] = (value >>> 24)
24400 this[offset + 1] = (value >>> 16)
24401 this[offset + 2] = (value >>> 8)
24402 this[offset + 3] = (value & 0xff)
24403 return offset + 4
24404 }
24405
24406 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
24407 value = +value
24408 offset = offset >>> 0
24409 if (!noAssert) {
24410 var limit = Math.pow(2, (8 * byteLength) - 1)
24411
24412 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24413 }
24414
24415 var i = 0
24416 var mul = 1
24417 var sub = 0
24418 this[offset] = value & 0xFF
24419 while (++i < byteLength && (mul *= 0x100)) {
24420 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
24421 sub = 1
24422 }
24423 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24424 }
24425
24426 return offset + byteLength
24427 }
24428
24429 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
24430 value = +value
24431 offset = offset >>> 0
24432 if (!noAssert) {
24433 var limit = Math.pow(2, (8 * byteLength) - 1)
24434
24435 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24436 }
24437
24438 var i = byteLength - 1
24439 var mul = 1
24440 var sub = 0
24441 this[offset + i] = value & 0xFF
24442 while (--i >= 0 && (mul *= 0x100)) {
24443 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
24444 sub = 1
24445 }
24446 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
24447 }
24448
24449 return offset + byteLength
24450 }
24451
24452 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
24453 value = +value
24454 offset = offset >>> 0
24455 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
24456 if (value < 0) value = 0xff + value + 1
24457 this[offset] = (value & 0xff)
24458 return offset + 1
24459 }
24460
24461 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
24462 value = +value
24463 offset = offset >>> 0
24464 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24465 this[offset] = (value & 0xff)
24466 this[offset + 1] = (value >>> 8)
24467 return offset + 2
24468 }
24469
24470 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
24471 value = +value
24472 offset = offset >>> 0
24473 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24474 this[offset] = (value >>> 8)
24475 this[offset + 1] = (value & 0xff)
24476 return offset + 2
24477 }
24478
24479 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
24480 value = +value
24481 offset = offset >>> 0
24482 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24483 this[offset] = (value & 0xff)
24484 this[offset + 1] = (value >>> 8)
24485 this[offset + 2] = (value >>> 16)
24486 this[offset + 3] = (value >>> 24)
24487 return offset + 4
24488 }
24489
24490 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
24491 value = +value
24492 offset = offset >>> 0
24493 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24494 if (value < 0) value = 0xffffffff + value + 1
24495 this[offset] = (value >>> 24)
24496 this[offset + 1] = (value >>> 16)
24497 this[offset + 2] = (value >>> 8)
24498 this[offset + 3] = (value & 0xff)
24499 return offset + 4
24500 }
24501
24502 function checkIEEE754 (buf, value, offset, ext, max, min) {
24503 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24504 if (offset < 0) throw new RangeError('Index out of range')
24505 }
24506
24507 function writeFloat (buf, value, offset, littleEndian, noAssert) {
24508 value = +value
24509 offset = offset >>> 0
24510 if (!noAssert) {
24511 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
24512 }
24513 ieee754.write(buf, value, offset, littleEndian, 23, 4)
24514 return offset + 4
24515 }
24516
24517 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
24518 return writeFloat(this, value, offset, true, noAssert)
24519 }
24520
24521 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
24522 return writeFloat(this, value, offset, false, noAssert)
24523 }
24524
24525 function writeDouble (buf, value, offset, littleEndian, noAssert) {
24526 value = +value
24527 offset = offset >>> 0
24528 if (!noAssert) {
24529 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
24530 }
24531 ieee754.write(buf, value, offset, littleEndian, 52, 8)
24532 return offset + 8
24533 }
24534
24535 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
24536 return writeDouble(this, value, offset, true, noAssert)
24537 }
24538
24539 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
24540 return writeDouble(this, value, offset, false, noAssert)
24541 }
24542
24543 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
24544 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
24545 if (!start) start = 0
24546 if (!end && end !== 0) end = this.length
24547 if (targetStart >= target.length) targetStart = target.length
24548 if (!targetStart) targetStart = 0
24549 if (end > 0 && end < start) end = start
24550
24551 // Copy 0 bytes; we're done
24552 if (end === start) return 0
24553 if (target.length === 0 || this.length === 0) return 0
24554
24555 // Fatal error conditions
24556 if (targetStart < 0) {
24557 throw new RangeError('targetStart out of bounds')
24558 }
24559 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
24560 if (end < 0) throw new RangeError('sourceEnd out of bounds')
24561
24562 // Are we oob?
24563 if (end > this.length) end = this.length
24564 if (target.length - targetStart < end - start) {
24565 end = target.length - targetStart + start
24566 }
24567
24568 var len = end - start
24569 var i
24570
24571 if (this === target && start < targetStart && targetStart < end) {
24572 // descending copy from end
24573 for (i = len - 1; i >= 0; --i) {
24574 target[i + targetStart] = this[i + start]
24575 }
24576 } else if (len < 1000) {
24577 // ascending copy from start
24578 for (i = 0; i < len; ++i) {
24579 target[i + targetStart] = this[i + start]
24580 }
24581 } else {
24582 Uint8Array.prototype.set.call(
24583 target,
24584 this.subarray(start, start + len),
24585 targetStart
24586 )
24587 }
24588
24589 return len
24590 }
24591
24592 // Usage:
24593 // buffer.fill(number[, offset[, end]])
24594 // buffer.fill(buffer[, offset[, end]])
24595 // buffer.fill(string[, offset[, end]][, encoding])
24596 Buffer.prototype.fill = function fill (val, start, end, encoding) {
24597 // Handle string cases:
24598 if (typeof val === 'string') {
24599 if (typeof start === 'string') {
24600 encoding = start
24601 start = 0
24602 end = this.length
24603 } else if (typeof end === 'string') {
24604 encoding = end
24605 end = this.length
24606 }
24607 if (val.length === 1) {
24608 var code = val.charCodeAt(0)
24609 if (code < 256) {
24610 val = code
24611 }
24612 }
24613 if (encoding !== undefined && typeof encoding !== 'string') {
24614 throw new TypeError('encoding must be a string')
24615 }
24616 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
24617 throw new TypeError('Unknown encoding: ' + encoding)
24618 }
24619 } else if (typeof val === 'number') {
24620 val = val & 255
24621 }
24622
24623 // Invalid ranges are not set to a default, so can range check early.
24624 if (start < 0 || this.length < start || this.length < end) {
24625 throw new RangeError('Out of range index')
24626 }
24627
24628 if (end <= start) {
24629 return this
24630 }
24631
24632 start = start >>> 0
24633 end = end === undefined ? this.length : end >>> 0
24634
24635 if (!val) val = 0
24636
24637 var i
24638 if (typeof val === 'number') {
24639 for (i = start; i < end; ++i) {
24640 this[i] = val
24641 }
24642 } else {
24643 var bytes = Buffer.isBuffer(val)
24644 ? val
24645 : new Buffer(val, encoding)
24646 var len = bytes.length
24647 for (i = 0; i < end - start; ++i) {
24648 this[i + start] = bytes[i % len]
24649 }
24650 }
24651
24652 return this
24653 }
24654
24655 // HELPER FUNCTIONS
24656 // ================
24657
24658 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
24659
24660 function base64clean (str) {
24661 // Node strips out invalid characters like \n and \t from the string, base64-js does not
24662 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
24663 // Node converts strings with length < 2 to ''
24664 if (str.length < 2) return ''
24665 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
24666 while (str.length % 4 !== 0) {
24667 str = str + '='
24668 }
24669 return str
24670 }
24671
24672 function stringtrim (str) {
24673 if (str.trim) return str.trim()
24674 return str.replace(/^\s+|\s+$/g, '')
24675 }
24676
24677 function toHex (n) {
24678 if (n < 16) return '0' + n.toString(16)
24679 return n.toString(16)
24680 }
24681
24682 function utf8ToBytes (string, units) {
24683 units = units || Infinity
24684 var codePoint
24685 var length = string.length
24686 var leadSurrogate = null
24687 var bytes = []
24688
24689 for (var i = 0; i < length; ++i) {
24690 codePoint = string.charCodeAt(i)
24691
24692 // is surrogate component
24693 if (codePoint > 0xD7FF && codePoint < 0xE000) {
24694 // last char was a lead
24695 if (!leadSurrogate) {
24696 // no lead yet
24697 if (codePoint > 0xDBFF) {
24698 // unexpected trail
24699 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24700 continue
24701 } else if (i + 1 === length) {
24702 // unpaired lead
24703 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24704 continue
24705 }
24706
24707 // valid lead
24708 leadSurrogate = codePoint
24709
24710 continue
24711 }
24712
24713 // 2 leads in a row
24714 if (codePoint < 0xDC00) {
24715 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24716 leadSurrogate = codePoint
24717 continue
24718 }
24719
24720 // valid surrogate pair
24721 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
24722 } else if (leadSurrogate) {
24723 // valid bmp char, but last char was a lead
24724 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24725 }
24726
24727 leadSurrogate = null
24728
24729 // encode utf8
24730 if (codePoint < 0x80) {
24731 if ((units -= 1) < 0) break
24732 bytes.push(codePoint)
24733 } else if (codePoint < 0x800) {
24734 if ((units -= 2) < 0) break
24735 bytes.push(
24736 codePoint >> 0x6 | 0xC0,
24737 codePoint & 0x3F | 0x80
24738 )
24739 } else if (codePoint < 0x10000) {
24740 if ((units -= 3) < 0) break
24741 bytes.push(
24742 codePoint >> 0xC | 0xE0,
24743 codePoint >> 0x6 & 0x3F | 0x80,
24744 codePoint & 0x3F | 0x80
24745 )
24746 } else if (codePoint < 0x110000) {
24747 if ((units -= 4) < 0) break
24748 bytes.push(
24749 codePoint >> 0x12 | 0xF0,
24750 codePoint >> 0xC & 0x3F | 0x80,
24751 codePoint >> 0x6 & 0x3F | 0x80,
24752 codePoint & 0x3F | 0x80
24753 )
24754 } else {
24755 throw new Error('Invalid code point')
24756 }
24757 }
24758
24759 return bytes
24760 }
24761
24762 function asciiToBytes (str) {
24763 var byteArray = []
24764 for (var i = 0; i < str.length; ++i) {
24765 // Node's code seems to be doing this and not & 0x7F..
24766 byteArray.push(str.charCodeAt(i) & 0xFF)
24767 }
24768 return byteArray
24769 }
24770
24771 function utf16leToBytes (str, units) {
24772 var c, hi, lo
24773 var byteArray = []
24774 for (var i = 0; i < str.length; ++i) {
24775 if ((units -= 2) < 0) break
24776
24777 c = str.charCodeAt(i)
24778 hi = c >> 8
24779 lo = c % 256
24780 byteArray.push(lo)
24781 byteArray.push(hi)
24782 }
24783
24784 return byteArray
24785 }
24786
24787 function base64ToBytes (str) {
24788 return base64.toByteArray(base64clean(str))
24789 }
24790
24791 function blitBuffer (src, dst, offset, length) {
24792 for (var i = 0; i < length; ++i) {
24793 if ((i + offset >= dst.length) || (i >= src.length)) break
24794 dst[i + offset] = src[i]
24795 }
24796 return i
24797 }
24798
24799 function isnan (val) {
24800 return val !== val // eslint-disable-line no-self-compare
24801 }
24802
24803 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
24804 (function (Buffer){
24805 // Copyright Joyent, Inc. and other Node contributors.
24806 //
24807 // Permission is hereby granted, free of charge, to any person obtaining a
24808 // copy of this software and associated documentation files (the
24809 // "Software"), to deal in the Software without restriction, including
24810 // without limitation the rights to use, copy, modify, merge, publish,
24811 // distribute, sublicense, and/or sell copies of the Software, and to permit
24812 // persons to whom the Software is furnished to do so, subject to the
24813 // following conditions:
24814 //
24815 // The above copyright notice and this permission notice shall be included
24816 // in all copies or substantial portions of the Software.
24817 //
24818 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24819 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24820 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24821 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24822 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24823 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24824 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24825
24826 // NOTE: These type checking functions intentionally don't use `instanceof`
24827 // because it is fragile and can be easily faked with `Object.create()`.
24828
24829 function isArray(arg) {
24830 if (Array.isArray) {
24831 return Array.isArray(arg);
24832 }
24833 return objectToString(arg) === '[object Array]';
24834 }
24835 exports.isArray = isArray;
24836
24837 function isBoolean(arg) {
24838 return typeof arg === 'boolean';
24839 }
24840 exports.isBoolean = isBoolean;
24841
24842 function isNull(arg) {
24843 return arg === null;
24844 }
24845 exports.isNull = isNull;
24846
24847 function isNullOrUndefined(arg) {
24848 return arg == null;
24849 }
24850 exports.isNullOrUndefined = isNullOrUndefined;
24851
24852 function isNumber(arg) {
24853 return typeof arg === 'number';
24854 }
24855 exports.isNumber = isNumber;
24856
24857 function isString(arg) {
24858 return typeof arg === 'string';
24859 }
24860 exports.isString = isString;
24861
24862 function isSymbol(arg) {
24863 return typeof arg === 'symbol';
24864 }
24865 exports.isSymbol = isSymbol;
24866
24867 function isUndefined(arg) {
24868 return arg === void 0;
24869 }
24870 exports.isUndefined = isUndefined;
24871
24872 function isRegExp(re) {
24873 return objectToString(re) === '[object RegExp]';
24874 }
24875 exports.isRegExp = isRegExp;
24876
24877 function isObject(arg) {
24878 return typeof arg === 'object' && arg !== null;
24879 }
24880 exports.isObject = isObject;
24881
24882 function isDate(d) {
24883 return objectToString(d) === '[object Date]';
24884 }
24885 exports.isDate = isDate;
24886
24887 function isError(e) {
24888 return (objectToString(e) === '[object Error]' || e instanceof Error);
24889 }
24890 exports.isError = isError;
24891
24892 function isFunction(arg) {
24893 return typeof arg === 'function';
24894 }
24895 exports.isFunction = isFunction;
24896
24897 function isPrimitive(arg) {
24898 return arg === null ||
24899 typeof arg === 'boolean' ||
24900 typeof arg === 'number' ||
24901 typeof arg === 'string' ||
24902 typeof arg === 'symbol' || // ES6 symbol
24903 typeof arg === 'undefined';
24904 }
24905 exports.isPrimitive = isPrimitive;
24906
24907 exports.isBuffer = Buffer.isBuffer;
24908
24909 function objectToString(o) {
24910 return Object.prototype.toString.call(o);
24911 }
24912
24913 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
24914 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
24915 // Copyright Joyent, Inc. and other Node contributors.
24916 //
24917 // Permission is hereby granted, free of charge, to any person obtaining a
24918 // copy of this software and associated documentation files (the
24919 // "Software"), to deal in the Software without restriction, including
24920 // without limitation the rights to use, copy, modify, merge, publish,
24921 // distribute, sublicense, and/or sell copies of the Software, and to permit
24922 // persons to whom the Software is furnished to do so, subject to the
24923 // following conditions:
24924 //
24925 // The above copyright notice and this permission notice shall be included
24926 // in all copies or substantial portions of the Software.
24927 //
24928 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24929 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24930 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24931 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24932 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24933 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24934 // USE OR OTHER DEALINGS IN THE SOFTWARE.
24935
24936 function EventEmitter() {
24937 this._events = this._events || {};
24938 this._maxListeners = this._maxListeners || undefined;
24939 }
24940 module.exports = EventEmitter;
24941
24942 // Backwards-compat with node 0.10.x
24943 EventEmitter.EventEmitter = EventEmitter;
24944
24945 EventEmitter.prototype._events = undefined;
24946 EventEmitter.prototype._maxListeners = undefined;
24947
24948 // By default EventEmitters will print a warning if more than 10 listeners are
24949 // added to it. This is a useful default which helps finding memory leaks.
24950 EventEmitter.defaultMaxListeners = 10;
24951
24952 // Obviously not all Emitters should be limited to 10. This function allows
24953 // that to be increased. Set to zero for unlimited.
24954 EventEmitter.prototype.setMaxListeners = function(n) {
24955 if (!isNumber(n) || n < 0 || isNaN(n))
24956 throw TypeError('n must be a positive number');
24957 this._maxListeners = n;
24958 return this;
24959 };
24960
24961 EventEmitter.prototype.emit = function(type) {
24962 var er, handler, len, args, i, listeners;
24963
24964 if (!this._events)
24965 this._events = {};
24966
24967 // If there is no 'error' event listener then throw.
24968 if (type === 'error') {
24969 if (!this._events.error ||
24970 (isObject(this._events.error) && !this._events.error.length)) {
24971 er = arguments[1];
24972 if (er instanceof Error) {
24973 throw er; // Unhandled 'error' event
24974 } else {
24975 // At least give some kind of context to the user
24976 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
24977 err.context = er;
24978 throw err;
24979 }
24980 }
24981 }
24982
24983 handler = this._events[type];
24984
24985 if (isUndefined(handler))
24986 return false;
24987
24988 if (isFunction(handler)) {
24989 switch (arguments.length) {
24990 // fast cases
24991 case 1:
24992 handler.call(this);
24993 break;
24994 case 2:
24995 handler.call(this, arguments[1]);
24996 break;
24997 case 3:
24998 handler.call(this, arguments[1], arguments[2]);
24999 break;
25000 // slower
25001 default:
25002 args = Array.prototype.slice.call(arguments, 1);
25003 handler.apply(this, args);
25004 }
25005 } else if (isObject(handler)) {
25006 args = Array.prototype.slice.call(arguments, 1);
25007 listeners = handler.slice();
25008 len = listeners.length;
25009 for (i = 0; i < len; i++)
25010 listeners[i].apply(this, args);
25011 }
25012
25013 return true;
25014 };
25015
25016 EventEmitter.prototype.addListener = function(type, listener) {
25017 var m;
25018
25019 if (!isFunction(listener))
25020 throw TypeError('listener must be a function');
25021
25022 if (!this._events)
25023 this._events = {};
25024
25025 // To avoid recursion in the case that type === "newListener"! Before
25026 // adding it to the listeners, first emit "newListener".
25027 if (this._events.newListener)
25028 this.emit('newListener', type,
25029 isFunction(listener.listener) ?
25030 listener.listener : listener);
25031
25032 if (!this._events[type])
25033 // Optimize the case of one listener. Don't need the extra array object.
25034 this._events[type] = listener;
25035 else if (isObject(this._events[type]))
25036 // If we've already got an array, just append.
25037 this._events[type].push(listener);
25038 else
25039 // Adding the second element, need to change to array.
25040 this._events[type] = [this._events[type], listener];
25041
25042 // Check for listener leak
25043 if (isObject(this._events[type]) && !this._events[type].warned) {
25044 if (!isUndefined(this._maxListeners)) {
25045 m = this._maxListeners;
25046 } else {
25047 m = EventEmitter.defaultMaxListeners;
25048 }
25049
25050 if (m && m > 0 && this._events[type].length > m) {
25051 this._events[type].warned = true;
25052 console.error('(node) warning: possible EventEmitter memory ' +
25053 'leak detected. %d listeners added. ' +
25054 'Use emitter.setMaxListeners() to increase limit.',
25055 this._events[type].length);
25056 if (typeof console.trace === 'function') {
25057 // not supported in IE 10
25058 console.trace();
25059 }
25060 }
25061 }
25062
25063 return this;
25064 };
25065
25066 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
25067
25068 EventEmitter.prototype.once = function(type, listener) {
25069 if (!isFunction(listener))
25070 throw TypeError('listener must be a function');
25071
25072 var fired = false;
25073
25074 function g() {
25075 this.removeListener(type, g);
25076
25077 if (!fired) {
25078 fired = true;
25079 listener.apply(this, arguments);
25080 }
25081 }
25082
25083 g.listener = listener;
25084 this.on(type, g);
25085
25086 return this;
25087 };
25088
25089 // emits a 'removeListener' event iff the listener was removed
25090 EventEmitter.prototype.removeListener = function(type, listener) {
25091 var list, position, length, i;
25092
25093 if (!isFunction(listener))
25094 throw TypeError('listener must be a function');
25095
25096 if (!this._events || !this._events[type])
25097 return this;
25098
25099 list = this._events[type];
25100 length = list.length;
25101 position = -1;
25102
25103 if (list === listener ||
25104 (isFunction(list.listener) && list.listener === listener)) {
25105 delete this._events[type];
25106 if (this._events.removeListener)
25107 this.emit('removeListener', type, listener);
25108
25109 } else if (isObject(list)) {
25110 for (i = length; i-- > 0;) {
25111 if (list[i] === listener ||
25112 (list[i].listener && list[i].listener === listener)) {
25113 position = i;
25114 break;
25115 }
25116 }
25117
25118 if (position < 0)
25119 return this;
25120
25121 if (list.length === 1) {
25122 list.length = 0;
25123 delete this._events[type];
25124 } else {
25125 list.splice(position, 1);
25126 }
25127
25128 if (this._events.removeListener)
25129 this.emit('removeListener', type, listener);
25130 }
25131
25132 return this;
25133 };
25134
25135 EventEmitter.prototype.removeAllListeners = function(type) {
25136 var key, listeners;
25137
25138 if (!this._events)
25139 return this;
25140
25141 // not listening for removeListener, no need to emit
25142 if (!this._events.removeListener) {
25143 if (arguments.length === 0)
25144 this._events = {};
25145 else if (this._events[type])
25146 delete this._events[type];
25147 return this;
25148 }
25149
25150 // emit removeListener for all listeners on all events
25151 if (arguments.length === 0) {
25152 for (key in this._events) {
25153 if (key === 'removeListener') continue;
25154 this.removeAllListeners(key);
25155 }
25156 this.removeAllListeners('removeListener');
25157 this._events = {};
25158 return this;
25159 }
25160
25161 listeners = this._events[type];
25162
25163 if (isFunction(listeners)) {
25164 this.removeListener(type, listeners);
25165 } else if (listeners) {
25166 // LIFO order
25167 while (listeners.length)
25168 this.removeListener(type, listeners[listeners.length - 1]);
25169 }
25170 delete this._events[type];
25171
25172 return this;
25173 };
25174
25175 EventEmitter.prototype.listeners = function(type) {
25176 var ret;
25177 if (!this._events || !this._events[type])
25178 ret = [];
25179 else if (isFunction(this._events[type]))
25180 ret = [this._events[type]];
25181 else
25182 ret = this._events[type].slice();
25183 return ret;
25184 };
25185
25186 EventEmitter.prototype.listenerCount = function(type) {
25187 if (this._events) {
25188 var evlistener = this._events[type];
25189
25190 if (isFunction(evlistener))
25191 return 1;
25192 else if (evlistener)
25193 return evlistener.length;
25194 }
25195 return 0;
25196 };
25197
25198 EventEmitter.listenerCount = function(emitter, type) {
25199 return emitter.listenerCount(type);
25200 };
25201
25202 function isFunction(arg) {
25203 return typeof arg === 'function';
25204 }
25205
25206 function isNumber(arg) {
25207 return typeof arg === 'number';
25208 }
25209
25210 function isObject(arg) {
25211 return typeof arg === 'object' && arg !== null;
25212 }
25213
25214 function isUndefined(arg) {
25215 return arg === void 0;
25216 }
25217
25218 },{}],8:[function(require,module,exports){
25219 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
25220 var e, m
25221 var eLen = nBytes * 8 - mLen - 1
25222 var eMax = (1 << eLen) - 1
25223 var eBias = eMax >> 1
25224 var nBits = -7
25225 var i = isLE ? (nBytes - 1) : 0
25226 var d = isLE ? -1 : 1
25227 var s = buffer[offset + i]
25228
25229 i += d
25230
25231 e = s & ((1 << (-nBits)) - 1)
25232 s >>= (-nBits)
25233 nBits += eLen
25234 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25235
25236 m = e & ((1 << (-nBits)) - 1)
25237 e >>= (-nBits)
25238 nBits += mLen
25239 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
25240
25241 if (e === 0) {
25242 e = 1 - eBias
25243 } else if (e === eMax) {
25244 return m ? NaN : ((s ? -1 : 1) * Infinity)
25245 } else {
25246 m = m + Math.pow(2, mLen)
25247 e = e - eBias
25248 }
25249 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
25250 }
25251
25252 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
25253 var e, m, c
25254 var eLen = nBytes * 8 - mLen - 1
25255 var eMax = (1 << eLen) - 1
25256 var eBias = eMax >> 1
25257 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
25258 var i = isLE ? 0 : (nBytes - 1)
25259 var d = isLE ? 1 : -1
25260 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
25261
25262 value = Math.abs(value)
25263
25264 if (isNaN(value) || value === Infinity) {
25265 m = isNaN(value) ? 1 : 0
25266 e = eMax
25267 } else {
25268 e = Math.floor(Math.log(value) / Math.LN2)
25269 if (value * (c = Math.pow(2, -e)) < 1) {
25270 e--
25271 c *= 2
25272 }
25273 if (e + eBias >= 1) {
25274 value += rt / c
25275 } else {
25276 value += rt * Math.pow(2, 1 - eBias)
25277 }
25278 if (value * c >= 2) {
25279 e++
25280 c /= 2
25281 }
25282
25283 if (e + eBias >= eMax) {
25284 m = 0
25285 e = eMax
25286 } else if (e + eBias >= 1) {
25287 m = (value * c - 1) * Math.pow(2, mLen)
25288 e = e + eBias
25289 } else {
25290 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
25291 e = 0
25292 }
25293 }
25294
25295 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
25296
25297 e = (e << mLen) | m
25298 eLen += mLen
25299 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
25300
25301 buffer[offset + i - d] |= s * 128
25302 }
25303
25304 },{}],9:[function(require,module,exports){
25305 if (typeof Object.create === 'function') {
25306 // implementation from standard node.js 'util' module
25307 module.exports = function inherits(ctor, superCtor) {
25308 ctor.super_ = superCtor
25309 ctor.prototype = Object.create(superCtor.prototype, {
25310 constructor: {
25311 value: ctor,
25312 enumerable: false,
25313 writable: true,
25314 configurable: true
25315 }
25316 });
25317 };
25318 } else {
25319 // old school shim for old browsers
25320 module.exports = function inherits(ctor, superCtor) {
25321 ctor.super_ = superCtor
25322 var TempCtor = function () {}
25323 TempCtor.prototype = superCtor.prototype
25324 ctor.prototype = new TempCtor()
25325 ctor.prototype.constructor = ctor
25326 }
25327 }
25328
25329 },{}],10:[function(require,module,exports){
25330 /*!
25331 * Determine if an object is a Buffer
25332 *
25333 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
25334 * @license MIT
25335 */
25336
25337 // The _isBuffer check is for Safari 5-7 support, because it's missing
25338 // Object.prototype.constructor. Remove this eventually
25339 module.exports = function (obj) {
25340 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
25341 }
25342
25343 function isBuffer (obj) {
25344 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
25345 }
25346
25347 // For Node v0.10 support. Remove this eventually.
25348 function isSlowBuffer (obj) {
25349 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
25350 }
25351
25352 },{}],11:[function(require,module,exports){
25353 var toString = {}.toString;
25354
25355 module.exports = Array.isArray || function (arr) {
25356 return toString.call(arr) == '[object Array]';
25357 };
25358
25359 },{}],12:[function(require,module,exports){
25360 (function (process){
25361 'use strict';
25362
25363 if (!process.version ||
25364 process.version.indexOf('v0.') === 0 ||
25365 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
25366 module.exports = nextTick;
25367 } else {
25368 module.exports = process.nextTick;
25369 }
25370
25371 function nextTick(fn, arg1, arg2, arg3) {
25372 if (typeof fn !== 'function') {
25373 throw new TypeError('"callback" argument must be a function');
25374 }
25375 var len = arguments.length;
25376 var args, i;
25377 switch (len) {
25378 case 0:
25379 case 1:
25380 return process.nextTick(fn);
25381 case 2:
25382 return process.nextTick(function afterTickOne() {
25383 fn.call(null, arg1);
25384 });
25385 case 3:
25386 return process.nextTick(function afterTickTwo() {
25387 fn.call(null, arg1, arg2);
25388 });
25389 case 4:
25390 return process.nextTick(function afterTickThree() {
25391 fn.call(null, arg1, arg2, arg3);
25392 });
25393 default:
25394 args = new Array(len - 1);
25395 i = 0;
25396 while (i < args.length) {
25397 args[i++] = arguments[i];
25398 }
25399 return process.nextTick(function afterTick() {
25400 fn.apply(null, args);
25401 });
25402 }
25403 }
25404
25405 }).call(this,require('_process'))
25406 },{"_process":13}],13:[function(require,module,exports){
25407 // shim for using process in browser
25408 var process = module.exports = {};
25409
25410 // cached from whatever global is present so that test runners that stub it
25411 // don't break things. But we need to wrap it in a try catch in case it is
25412 // wrapped in strict mode code which doesn't define any globals. It's inside a
25413 // function because try/catches deoptimize in certain engines.
25414
25415 var cachedSetTimeout;
25416 var cachedClearTimeout;
25417
25418 function defaultSetTimout() {
25419 throw new Error('setTimeout has not been defined');
25420 }
25421 function defaultClearTimeout () {
25422 throw new Error('clearTimeout has not been defined');
25423 }
25424 (function () {
25425 try {
25426 if (typeof setTimeout === 'function') {
25427 cachedSetTimeout = setTimeout;
25428 } else {
25429 cachedSetTimeout = defaultSetTimout;
25430 }
25431 } catch (e) {
25432 cachedSetTimeout = defaultSetTimout;
25433 }
25434 try {
25435 if (typeof clearTimeout === 'function') {
25436 cachedClearTimeout = clearTimeout;
25437 } else {
25438 cachedClearTimeout = defaultClearTimeout;
25439 }
25440 } catch (e) {
25441 cachedClearTimeout = defaultClearTimeout;
25442 }
25443 } ())
25444 function runTimeout(fun) {
25445 if (cachedSetTimeout === setTimeout) {
25446 //normal enviroments in sane situations
25447 return setTimeout(fun, 0);
25448 }
25449 // if setTimeout wasn't available but was latter defined
25450 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
25451 cachedSetTimeout = setTimeout;
25452 return setTimeout(fun, 0);
25453 }
25454 try {
25455 // when when somebody has screwed with setTimeout but no I.E. maddness
25456 return cachedSetTimeout(fun, 0);
25457 } catch(e){
25458 try {
25459 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25460 return cachedSetTimeout.call(null, fun, 0);
25461 } catch(e){
25462 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
25463 return cachedSetTimeout.call(this, fun, 0);
25464 }
25465 }
25466
25467
25468 }
25469 function runClearTimeout(marker) {
25470 if (cachedClearTimeout === clearTimeout) {
25471 //normal enviroments in sane situations
25472 return clearTimeout(marker);
25473 }
25474 // if clearTimeout wasn't available but was latter defined
25475 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
25476 cachedClearTimeout = clearTimeout;
25477 return clearTimeout(marker);
25478 }
25479 try {
25480 // when when somebody has screwed with setTimeout but no I.E. maddness
25481 return cachedClearTimeout(marker);
25482 } catch (e){
25483 try {
25484 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25485 return cachedClearTimeout.call(null, marker);
25486 } catch (e){
25487 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
25488 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
25489 return cachedClearTimeout.call(this, marker);
25490 }
25491 }
25492
25493
25494
25495 }
25496 var queue = [];
25497 var draining = false;
25498 var currentQueue;
25499 var queueIndex = -1;
25500
25501 function cleanUpNextTick() {
25502 if (!draining || !currentQueue) {
25503 return;
25504 }
25505 draining = false;
25506 if (currentQueue.length) {
25507 queue = currentQueue.concat(queue);
25508 } else {
25509 queueIndex = -1;
25510 }
25511 if (queue.length) {
25512 drainQueue();
25513 }
25514 }
25515
25516 function drainQueue() {
25517 if (draining) {
25518 return;
25519 }
25520 var timeout = runTimeout(cleanUpNextTick);
25521 draining = true;
25522
25523 var len = queue.length;
25524 while(len) {
25525 currentQueue = queue;
25526 queue = [];
25527 while (++queueIndex < len) {
25528 if (currentQueue) {
25529 currentQueue[queueIndex].run();
25530 }
25531 }
25532 queueIndex = -1;
25533 len = queue.length;
25534 }
25535 currentQueue = null;
25536 draining = false;
25537 runClearTimeout(timeout);
25538 }
25539
25540 process.nextTick = function (fun) {
25541 var args = new Array(arguments.length - 1);
25542 if (arguments.length > 1) {
25543 for (var i = 1; i < arguments.length; i++) {
25544 args[i - 1] = arguments[i];
25545 }
25546 }
25547 queue.push(new Item(fun, args));
25548 if (queue.length === 1 && !draining) {
25549 runTimeout(drainQueue);
25550 }
25551 };
25552
25553 // v8 likes predictible objects
25554 function Item(fun, array) {
25555 this.fun = fun;
25556 this.array = array;
25557 }
25558 Item.prototype.run = function () {
25559 this.fun.apply(null, this.array);
25560 };
25561 process.title = 'browser';
25562 process.browser = true;
25563 process.env = {};
25564 process.argv = [];
25565 process.version = ''; // empty string to avoid regexp issues
25566 process.versions = {};
25567
25568 function noop() {}
25569
25570 process.on = noop;
25571 process.addListener = noop;
25572 process.once = noop;
25573 process.off = noop;
25574 process.removeListener = noop;
25575 process.removeAllListeners = noop;
25576 process.emit = noop;
25577
25578 process.binding = function (name) {
25579 throw new Error('process.binding is not supported');
25580 };
25581
25582 process.cwd = function () { return '/' };
25583 process.chdir = function (dir) {
25584 throw new Error('process.chdir is not supported');
25585 };
25586 process.umask = function() { return 0; };
25587
25588 },{}],14:[function(require,module,exports){
25589 module.exports = require("./lib/_stream_duplex.js")
25590
25591 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
25592 // a duplex stream is just a stream that is both readable and writable.
25593 // Since JS doesn't have multiple prototypal inheritance, this class
25594 // prototypally inherits from Readable, and then parasitically from
25595 // Writable.
25596
25597 'use strict';
25598
25599 /*<replacement>*/
25600
25601 var objectKeys = Object.keys || function (obj) {
25602 var keys = [];
25603 for (var key in obj) {
25604 keys.push(key);
25605 }return keys;
25606 };
25607 /*</replacement>*/
25608
25609 module.exports = Duplex;
25610
25611 /*<replacement>*/
25612 var processNextTick = require('process-nextick-args');
25613 /*</replacement>*/
25614
25615 /*<replacement>*/
25616 var util = require('core-util-is');
25617 util.inherits = require('inherits');
25618 /*</replacement>*/
25619
25620 var Readable = require('./_stream_readable');
25621 var Writable = require('./_stream_writable');
25622
25623 util.inherits(Duplex, Readable);
25624
25625 var keys = objectKeys(Writable.prototype);
25626 for (var v = 0; v < keys.length; v++) {
25627 var method = keys[v];
25628 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
25629 }
25630
25631 function Duplex(options) {
25632 if (!(this instanceof Duplex)) return new Duplex(options);
25633
25634 Readable.call(this, options);
25635 Writable.call(this, options);
25636
25637 if (options && options.readable === false) this.readable = false;
25638
25639 if (options && options.writable === false) this.writable = false;
25640
25641 this.allowHalfOpen = true;
25642 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
25643
25644 this.once('end', onend);
25645 }
25646
25647 // the no-half-open enforcer
25648 function onend() {
25649 // if we allow half-open state, or if the writable side ended,
25650 // then we're ok.
25651 if (this.allowHalfOpen || this._writableState.ended) return;
25652
25653 // no more data can be written.
25654 // But allow more writes to happen in this tick.
25655 processNextTick(onEndNT, this);
25656 }
25657
25658 function onEndNT(self) {
25659 self.end();
25660 }
25661
25662 function forEach(xs, f) {
25663 for (var i = 0, l = xs.length; i < l; i++) {
25664 f(xs[i], i);
25665 }
25666 }
25667 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
25668 // a passthrough stream.
25669 // basically just the most minimal sort of Transform stream.
25670 // Every written chunk gets output as-is.
25671
25672 'use strict';
25673
25674 module.exports = PassThrough;
25675
25676 var Transform = require('./_stream_transform');
25677
25678 /*<replacement>*/
25679 var util = require('core-util-is');
25680 util.inherits = require('inherits');
25681 /*</replacement>*/
25682
25683 util.inherits(PassThrough, Transform);
25684
25685 function PassThrough(options) {
25686 if (!(this instanceof PassThrough)) return new PassThrough(options);
25687
25688 Transform.call(this, options);
25689 }
25690
25691 PassThrough.prototype._transform = function (chunk, encoding, cb) {
25692 cb(null, chunk);
25693 };
25694 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
25695 (function (process){
25696 'use strict';
25697
25698 module.exports = Readable;
25699
25700 /*<replacement>*/
25701 var processNextTick = require('process-nextick-args');
25702 /*</replacement>*/
25703
25704 /*<replacement>*/
25705 var isArray = require('isarray');
25706 /*</replacement>*/
25707
25708 /*<replacement>*/
25709 var Duplex;
25710 /*</replacement>*/
25711
25712 Readable.ReadableState = ReadableState;
25713
25714 /*<replacement>*/
25715 var EE = require('events').EventEmitter;
25716
25717 var EElistenerCount = function (emitter, type) {
25718 return emitter.listeners(type).length;
25719 };
25720 /*</replacement>*/
25721
25722 /*<replacement>*/
25723 var Stream;
25724 (function () {
25725 try {
25726 Stream = require('st' + 'ream');
25727 } catch (_) {} finally {
25728 if (!Stream) Stream = require('events').EventEmitter;
25729 }
25730 })();
25731 /*</replacement>*/
25732
25733 var Buffer = require('buffer').Buffer;
25734 /*<replacement>*/
25735 var bufferShim = require('buffer-shims');
25736 /*</replacement>*/
25737
25738 /*<replacement>*/
25739 var util = require('core-util-is');
25740 util.inherits = require('inherits');
25741 /*</replacement>*/
25742
25743 /*<replacement>*/
25744 var debugUtil = require('util');
25745 var debug = void 0;
25746 if (debugUtil && debugUtil.debuglog) {
25747 debug = debugUtil.debuglog('stream');
25748 } else {
25749 debug = function () {};
25750 }
25751 /*</replacement>*/
25752
25753 var BufferList = require('./internal/streams/BufferList');
25754 var StringDecoder;
25755
25756 util.inherits(Readable, Stream);
25757
25758 function prependListener(emitter, event, fn) {
25759 // Sadly this is not cacheable as some libraries bundle their own
25760 // event emitter implementation with them.
25761 if (typeof emitter.prependListener === 'function') {
25762 return emitter.prependListener(event, fn);
25763 } else {
25764 // This is a hack to make sure that our error handler is attached before any
25765 // userland ones. NEVER DO THIS. This is here only because this code needs
25766 // to continue to work with older versions of Node.js that do not include
25767 // the prependListener() method. The goal is to eventually remove this hack.
25768 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
25769 }
25770 }
25771
25772 function ReadableState(options, stream) {
25773 Duplex = Duplex || require('./_stream_duplex');
25774
25775 options = options || {};
25776
25777 // object stream flag. Used to make read(n) ignore n and to
25778 // make all the buffer merging and length checks go away
25779 this.objectMode = !!options.objectMode;
25780
25781 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
25782
25783 // the point at which it stops calling _read() to fill the buffer
25784 // Note: 0 is a valid value, means "don't call _read preemptively ever"
25785 var hwm = options.highWaterMark;
25786 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
25787 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
25788
25789 // cast to ints.
25790 this.highWaterMark = ~ ~this.highWaterMark;
25791
25792 // A linked list is used to store data chunks instead of an array because the
25793 // linked list can remove elements from the beginning faster than
25794 // array.shift()
25795 this.buffer = new BufferList();
25796 this.length = 0;
25797 this.pipes = null;
25798 this.pipesCount = 0;
25799 this.flowing = null;
25800 this.ended = false;
25801 this.endEmitted = false;
25802 this.reading = false;
25803
25804 // a flag to be able to tell if the onwrite cb is called immediately,
25805 // or on a later tick. We set this to true at first, because any
25806 // actions that shouldn't happen until "later" should generally also
25807 // not happen before the first write call.
25808 this.sync = true;
25809
25810 // whenever we return null, then we set a flag to say
25811 // that we're awaiting a 'readable' event emission.
25812 this.needReadable = false;
25813 this.emittedReadable = false;
25814 this.readableListening = false;
25815 this.resumeScheduled = false;
25816
25817 // Crypto is kind of old and crusty. Historically, its default string
25818 // encoding is 'binary' so we have to make this configurable.
25819 // Everything else in the universe uses 'utf8', though.
25820 this.defaultEncoding = options.defaultEncoding || 'utf8';
25821
25822 // when piping, we only care about 'readable' events that happen
25823 // after read()ing all the bytes and not getting any pushback.
25824 this.ranOut = false;
25825
25826 // the number of writers that are awaiting a drain event in .pipe()s
25827 this.awaitDrain = 0;
25828
25829 // if true, a maybeReadMore has been scheduled
25830 this.readingMore = false;
25831
25832 this.decoder = null;
25833 this.encoding = null;
25834 if (options.encoding) {
25835 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25836 this.decoder = new StringDecoder(options.encoding);
25837 this.encoding = options.encoding;
25838 }
25839 }
25840
25841 function Readable(options) {
25842 Duplex = Duplex || require('./_stream_duplex');
25843
25844 if (!(this instanceof Readable)) return new Readable(options);
25845
25846 this._readableState = new ReadableState(options, this);
25847
25848 // legacy
25849 this.readable = true;
25850
25851 if (options && typeof options.read === 'function') this._read = options.read;
25852
25853 Stream.call(this);
25854 }
25855
25856 // Manually shove something into the read() buffer.
25857 // This returns true if the highWaterMark has not been hit yet,
25858 // similar to how Writable.write() returns true if you should
25859 // write() some more.
25860 Readable.prototype.push = function (chunk, encoding) {
25861 var state = this._readableState;
25862
25863 if (!state.objectMode && typeof chunk === 'string') {
25864 encoding = encoding || state.defaultEncoding;
25865 if (encoding !== state.encoding) {
25866 chunk = bufferShim.from(chunk, encoding);
25867 encoding = '';
25868 }
25869 }
25870
25871 return readableAddChunk(this, state, chunk, encoding, false);
25872 };
25873
25874 // Unshift should *always* be something directly out of read()
25875 Readable.prototype.unshift = function (chunk) {
25876 var state = this._readableState;
25877 return readableAddChunk(this, state, chunk, '', true);
25878 };
25879
25880 Readable.prototype.isPaused = function () {
25881 return this._readableState.flowing === false;
25882 };
25883
25884 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
25885 var er = chunkInvalid(state, chunk);
25886 if (er) {
25887 stream.emit('error', er);
25888 } else if (chunk === null) {
25889 state.reading = false;
25890 onEofChunk(stream, state);
25891 } else if (state.objectMode || chunk && chunk.length > 0) {
25892 if (state.ended && !addToFront) {
25893 var e = new Error('stream.push() after EOF');
25894 stream.emit('error', e);
25895 } else if (state.endEmitted && addToFront) {
25896 var _e = new Error('stream.unshift() after end event');
25897 stream.emit('error', _e);
25898 } else {
25899 var skipAdd;
25900 if (state.decoder && !addToFront && !encoding) {
25901 chunk = state.decoder.write(chunk);
25902 skipAdd = !state.objectMode && chunk.length === 0;
25903 }
25904
25905 if (!addToFront) state.reading = false;
25906
25907 // Don't add to the buffer if we've decoded to an empty string chunk and
25908 // we're not in object mode
25909 if (!skipAdd) {
25910 // if we want the data now, just emit it.
25911 if (state.flowing && state.length === 0 && !state.sync) {
25912 stream.emit('data', chunk);
25913 stream.read(0);
25914 } else {
25915 // update the buffer info.
25916 state.length += state.objectMode ? 1 : chunk.length;
25917 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
25918
25919 if (state.needReadable) emitReadable(stream);
25920 }
25921 }
25922
25923 maybeReadMore(stream, state);
25924 }
25925 } else if (!addToFront) {
25926 state.reading = false;
25927 }
25928
25929 return needMoreData(state);
25930 }
25931
25932 // if it's past the high water mark, we can push in some more.
25933 // Also, if we have no data yet, we can stand some
25934 // more bytes. This is to work around cases where hwm=0,
25935 // such as the repl. Also, if the push() triggered a
25936 // readable event, and the user called read(largeNumber) such that
25937 // needReadable was set, then we ought to push more, so that another
25938 // 'readable' event will be triggered.
25939 function needMoreData(state) {
25940 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
25941 }
25942
25943 // backwards compatibility.
25944 Readable.prototype.setEncoding = function (enc) {
25945 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25946 this._readableState.decoder = new StringDecoder(enc);
25947 this._readableState.encoding = enc;
25948 return this;
25949 };
25950
25951 // Don't raise the hwm > 8MB
25952 var MAX_HWM = 0x800000;
25953 function computeNewHighWaterMark(n) {
25954 if (n >= MAX_HWM) {
25955 n = MAX_HWM;
25956 } else {
25957 // Get the next highest power of 2 to prevent increasing hwm excessively in
25958 // tiny amounts
25959 n--;
25960 n |= n >>> 1;
25961 n |= n >>> 2;
25962 n |= n >>> 4;
25963 n |= n >>> 8;
25964 n |= n >>> 16;
25965 n++;
25966 }
25967 return n;
25968 }
25969
25970 // This function is designed to be inlinable, so please take care when making
25971 // changes to the function body.
25972 function howMuchToRead(n, state) {
25973 if (n <= 0 || state.length === 0 && state.ended) return 0;
25974 if (state.objectMode) return 1;
25975 if (n !== n) {
25976 // Only flow one buffer at a time
25977 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
25978 }
25979 // If we're asking for more than the current hwm, then raise the hwm.
25980 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
25981 if (n <= state.length) return n;
25982 // Don't have enough
25983 if (!state.ended) {
25984 state.needReadable = true;
25985 return 0;
25986 }
25987 return state.length;
25988 }
25989
25990 // you can override either this method, or the async _read(n) below.
25991 Readable.prototype.read = function (n) {
25992 debug('read', n);
25993 n = parseInt(n, 10);
25994 var state = this._readableState;
25995 var nOrig = n;
25996
25997 if (n !== 0) state.emittedReadable = false;
25998
25999 // if we're doing read(0) to trigger a readable event, but we
26000 // already have a bunch of data in the buffer, then just trigger
26001 // the 'readable' event and move on.
26002 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
26003 debug('read: emitReadable', state.length, state.ended);
26004 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
26005 return null;
26006 }
26007
26008 n = howMuchToRead(n, state);
26009
26010 // if we've ended, and we're now clear, then finish it up.
26011 if (n === 0 && state.ended) {
26012 if (state.length === 0) endReadable(this);
26013 return null;
26014 }
26015
26016 // All the actual chunk generation logic needs to be
26017 // *below* the call to _read. The reason is that in certain
26018 // synthetic stream cases, such as passthrough streams, _read
26019 // may be a completely synchronous operation which may change
26020 // the state of the read buffer, providing enough data when
26021 // before there was *not* enough.
26022 //
26023 // So, the steps are:
26024 // 1. Figure out what the state of things will be after we do
26025 // a read from the buffer.
26026 //
26027 // 2. If that resulting state will trigger a _read, then call _read.
26028 // Note that this may be asynchronous, or synchronous. Yes, it is
26029 // deeply ugly to write APIs this way, but that still doesn't mean
26030 // that the Readable class should behave improperly, as streams are
26031 // designed to be sync/async agnostic.
26032 // Take note if the _read call is sync or async (ie, if the read call
26033 // has returned yet), so that we know whether or not it's safe to emit
26034 // 'readable' etc.
26035 //
26036 // 3. Actually pull the requested chunks out of the buffer and return.
26037
26038 // if we need a readable event, then we need to do some reading.
26039 var doRead = state.needReadable;
26040 debug('need readable', doRead);
26041
26042 // if we currently have less than the highWaterMark, then also read some
26043 if (state.length === 0 || state.length - n < state.highWaterMark) {
26044 doRead = true;
26045 debug('length less than watermark', doRead);
26046 }
26047
26048 // however, if we've ended, then there's no point, and if we're already
26049 // reading, then it's unnecessary.
26050 if (state.ended || state.reading) {
26051 doRead = false;
26052 debug('reading or ended', doRead);
26053 } else if (doRead) {
26054 debug('do read');
26055 state.reading = true;
26056 state.sync = true;
26057 // if the length is currently zero, then we *need* a readable event.
26058 if (state.length === 0) state.needReadable = true;
26059 // call internal read method
26060 this._read(state.highWaterMark);
26061 state.sync = false;
26062 // If _read pushed data synchronously, then `reading` will be false,
26063 // and we need to re-evaluate how much data we can return to the user.
26064 if (!state.reading) n = howMuchToRead(nOrig, state);
26065 }
26066
26067 var ret;
26068 if (n > 0) ret = fromList(n, state);else ret = null;
26069
26070 if (ret === null) {
26071 state.needReadable = true;
26072 n = 0;
26073 } else {
26074 state.length -= n;
26075 }
26076
26077 if (state.length === 0) {
26078 // If we have nothing in the buffer, then we want to know
26079 // as soon as we *do* get something into the buffer.
26080 if (!state.ended) state.needReadable = true;
26081
26082 // If we tried to read() past the EOF, then emit end on the next tick.
26083 if (nOrig !== n && state.ended) endReadable(this);
26084 }
26085
26086 if (ret !== null) this.emit('data', ret);
26087
26088 return ret;
26089 };
26090
26091 function chunkInvalid(state, chunk) {
26092 var er = null;
26093 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
26094 er = new TypeError('Invalid non-string/buffer chunk');
26095 }
26096 return er;
26097 }
26098
26099 function onEofChunk(stream, state) {
26100 if (state.ended) return;
26101 if (state.decoder) {
26102 var chunk = state.decoder.end();
26103 if (chunk && chunk.length) {
26104 state.buffer.push(chunk);
26105 state.length += state.objectMode ? 1 : chunk.length;
26106 }
26107 }
26108 state.ended = true;
26109
26110 // emit 'readable' now to make sure it gets picked up.
26111 emitReadable(stream);
26112 }
26113
26114 // Don't emit readable right away in sync mode, because this can trigger
26115 // another read() call => stack overflow. This way, it might trigger
26116 // a nextTick recursion warning, but that's not so bad.
26117 function emitReadable(stream) {
26118 var state = stream._readableState;
26119 state.needReadable = false;
26120 if (!state.emittedReadable) {
26121 debug('emitReadable', state.flowing);
26122 state.emittedReadable = true;
26123 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
26124 }
26125 }
26126
26127 function emitReadable_(stream) {
26128 debug('emit readable');
26129 stream.emit('readable');
26130 flow(stream);
26131 }
26132
26133 // at this point, the user has presumably seen the 'readable' event,
26134 // and called read() to consume some data. that may have triggered
26135 // in turn another _read(n) call, in which case reading = true if
26136 // it's in progress.
26137 // However, if we're not ended, or reading, and the length < hwm,
26138 // then go ahead and try to read some more preemptively.
26139 function maybeReadMore(stream, state) {
26140 if (!state.readingMore) {
26141 state.readingMore = true;
26142 processNextTick(maybeReadMore_, stream, state);
26143 }
26144 }
26145
26146 function maybeReadMore_(stream, state) {
26147 var len = state.length;
26148 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
26149 debug('maybeReadMore read 0');
26150 stream.read(0);
26151 if (len === state.length)
26152 // didn't get any data, stop spinning.
26153 break;else len = state.length;
26154 }
26155 state.readingMore = false;
26156 }
26157
26158 // abstract method. to be overridden in specific implementation classes.
26159 // call cb(er, data) where data is <= n in length.
26160 // for virtual (non-string, non-buffer) streams, "length" is somewhat
26161 // arbitrary, and perhaps not very meaningful.
26162 Readable.prototype._read = function (n) {
26163 this.emit('error', new Error('_read() is not implemented'));
26164 };
26165
26166 Readable.prototype.pipe = function (dest, pipeOpts) {
26167 var src = this;
26168 var state = this._readableState;
26169
26170 switch (state.pipesCount) {
26171 case 0:
26172 state.pipes = dest;
26173 break;
26174 case 1:
26175 state.pipes = [state.pipes, dest];
26176 break;
26177 default:
26178 state.pipes.push(dest);
26179 break;
26180 }
26181 state.pipesCount += 1;
26182 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
26183
26184 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
26185
26186 var endFn = doEnd ? onend : cleanup;
26187 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
26188
26189 dest.on('unpipe', onunpipe);
26190 function onunpipe(readable) {
26191 debug('onunpipe');
26192 if (readable === src) {
26193 cleanup();
26194 }
26195 }
26196
26197 function onend() {
26198 debug('onend');
26199 dest.end();
26200 }
26201
26202 // when the dest drains, it reduces the awaitDrain counter
26203 // on the source. This would be more elegant with a .once()
26204 // handler in flow(), but adding and removing repeatedly is
26205 // too slow.
26206 var ondrain = pipeOnDrain(src);
26207 dest.on('drain', ondrain);
26208
26209 var cleanedUp = false;
26210 function cleanup() {
26211 debug('cleanup');
26212 // cleanup event handlers once the pipe is broken
26213 dest.removeListener('close', onclose);
26214 dest.removeListener('finish', onfinish);
26215 dest.removeListener('drain', ondrain);
26216 dest.removeListener('error', onerror);
26217 dest.removeListener('unpipe', onunpipe);
26218 src.removeListener('end', onend);
26219 src.removeListener('end', cleanup);
26220 src.removeListener('data', ondata);
26221
26222 cleanedUp = true;
26223
26224 // if the reader is waiting for a drain event from this
26225 // specific writer, then it would cause it to never start
26226 // flowing again.
26227 // So, if this is awaiting a drain, then we just call it now.
26228 // If we don't know, then assume that we are waiting for one.
26229 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
26230 }
26231
26232 // If the user pushes more data while we're writing to dest then we'll end up
26233 // in ondata again. However, we only want to increase awaitDrain once because
26234 // dest will only emit one 'drain' event for the multiple writes.
26235 // => Introduce a guard on increasing awaitDrain.
26236 var increasedAwaitDrain = false;
26237 src.on('data', ondata);
26238 function ondata(chunk) {
26239 debug('ondata');
26240 increasedAwaitDrain = false;
26241 var ret = dest.write(chunk);
26242 if (false === ret && !increasedAwaitDrain) {
26243 // If the user unpiped during `dest.write()`, it is possible
26244 // to get stuck in a permanently paused state if that write
26245 // also returned false.
26246 // => Check whether `dest` is still a piping destination.
26247 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
26248 debug('false write response, pause', src._readableState.awaitDrain);
26249 src._readableState.awaitDrain++;
26250 increasedAwaitDrain = true;
26251 }
26252 src.pause();
26253 }
26254 }
26255
26256 // if the dest has an error, then stop piping into it.
26257 // however, don't suppress the throwing behavior for this.
26258 function onerror(er) {
26259 debug('onerror', er);
26260 unpipe();
26261 dest.removeListener('error', onerror);
26262 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
26263 }
26264
26265 // Make sure our error handler is attached before userland ones.
26266 prependListener(dest, 'error', onerror);
26267
26268 // Both close and finish should trigger unpipe, but only once.
26269 function onclose() {
26270 dest.removeListener('finish', onfinish);
26271 unpipe();
26272 }
26273 dest.once('close', onclose);
26274 function onfinish() {
26275 debug('onfinish');
26276 dest.removeListener('close', onclose);
26277 unpipe();
26278 }
26279 dest.once('finish', onfinish);
26280
26281 function unpipe() {
26282 debug('unpipe');
26283 src.unpipe(dest);
26284 }
26285
26286 // tell the dest that it's being piped to
26287 dest.emit('pipe', src);
26288
26289 // start the flow if it hasn't been started already.
26290 if (!state.flowing) {
26291 debug('pipe resume');
26292 src.resume();
26293 }
26294
26295 return dest;
26296 };
26297
26298 function pipeOnDrain(src) {
26299 return function () {
26300 var state = src._readableState;
26301 debug('pipeOnDrain', state.awaitDrain);
26302 if (state.awaitDrain) state.awaitDrain--;
26303 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
26304 state.flowing = true;
26305 flow(src);
26306 }
26307 };
26308 }
26309
26310 Readable.prototype.unpipe = function (dest) {
26311 var state = this._readableState;
26312
26313 // if we're not piping anywhere, then do nothing.
26314 if (state.pipesCount === 0) return this;
26315
26316 // just one destination. most common case.
26317 if (state.pipesCount === 1) {
26318 // passed in one, but it's not the right one.
26319 if (dest && dest !== state.pipes) return this;
26320
26321 if (!dest) dest = state.pipes;
26322
26323 // got a match.
26324 state.pipes = null;
26325 state.pipesCount = 0;
26326 state.flowing = false;
26327 if (dest) dest.emit('unpipe', this);
26328 return this;
26329 }
26330
26331 // slow case. multiple pipe destinations.
26332
26333 if (!dest) {
26334 // remove all.
26335 var dests = state.pipes;
26336 var len = state.pipesCount;
26337 state.pipes = null;
26338 state.pipesCount = 0;
26339 state.flowing = false;
26340
26341 for (var i = 0; i < len; i++) {
26342 dests[i].emit('unpipe', this);
26343 }return this;
26344 }
26345
26346 // try to find the right one.
26347 var index = indexOf(state.pipes, dest);
26348 if (index === -1) return this;
26349
26350 state.pipes.splice(index, 1);
26351 state.pipesCount -= 1;
26352 if (state.pipesCount === 1) state.pipes = state.pipes[0];
26353
26354 dest.emit('unpipe', this);
26355
26356 return this;
26357 };
26358
26359 // set up data events if they are asked for
26360 // Ensure readable listeners eventually get something
26361 Readable.prototype.on = function (ev, fn) {
26362 var res = Stream.prototype.on.call(this, ev, fn);
26363
26364 if (ev === 'data') {
26365 // Start flowing on next tick if stream isn't explicitly paused
26366 if (this._readableState.flowing !== false) this.resume();
26367 } else if (ev === 'readable') {
26368 var state = this._readableState;
26369 if (!state.endEmitted && !state.readableListening) {
26370 state.readableListening = state.needReadable = true;
26371 state.emittedReadable = false;
26372 if (!state.reading) {
26373 processNextTick(nReadingNextTick, this);
26374 } else if (state.length) {
26375 emitReadable(this, state);
26376 }
26377 }
26378 }
26379
26380 return res;
26381 };
26382 Readable.prototype.addListener = Readable.prototype.on;
26383
26384 function nReadingNextTick(self) {
26385 debug('readable nexttick read 0');
26386 self.read(0);
26387 }
26388
26389 // pause() and resume() are remnants of the legacy readable stream API
26390 // If the user uses them, then switch into old mode.
26391 Readable.prototype.resume = function () {
26392 var state = this._readableState;
26393 if (!state.flowing) {
26394 debug('resume');
26395 state.flowing = true;
26396 resume(this, state);
26397 }
26398 return this;
26399 };
26400
26401 function resume(stream, state) {
26402 if (!state.resumeScheduled) {
26403 state.resumeScheduled = true;
26404 processNextTick(resume_, stream, state);
26405 }
26406 }
26407
26408 function resume_(stream, state) {
26409 if (!state.reading) {
26410 debug('resume read 0');
26411 stream.read(0);
26412 }
26413
26414 state.resumeScheduled = false;
26415 state.awaitDrain = 0;
26416 stream.emit('resume');
26417 flow(stream);
26418 if (state.flowing && !state.reading) stream.read(0);
26419 }
26420
26421 Readable.prototype.pause = function () {
26422 debug('call pause flowing=%j', this._readableState.flowing);
26423 if (false !== this._readableState.flowing) {
26424 debug('pause');
26425 this._readableState.flowing = false;
26426 this.emit('pause');
26427 }
26428 return this;
26429 };
26430
26431 function flow(stream) {
26432 var state = stream._readableState;
26433 debug('flow', state.flowing);
26434 while (state.flowing && stream.read() !== null) {}
26435 }
26436
26437 // wrap an old-style stream as the async data source.
26438 // This is *not* part of the readable stream interface.
26439 // It is an ugly unfortunate mess of history.
26440 Readable.prototype.wrap = function (stream) {
26441 var state = this._readableState;
26442 var paused = false;
26443
26444 var self = this;
26445 stream.on('end', function () {
26446 debug('wrapped end');
26447 if (state.decoder && !state.ended) {
26448 var chunk = state.decoder.end();
26449 if (chunk && chunk.length) self.push(chunk);
26450 }
26451
26452 self.push(null);
26453 });
26454
26455 stream.on('data', function (chunk) {
26456 debug('wrapped data');
26457 if (state.decoder) chunk = state.decoder.write(chunk);
26458
26459 // don't skip over falsy values in objectMode
26460 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
26461
26462 var ret = self.push(chunk);
26463 if (!ret) {
26464 paused = true;
26465 stream.pause();
26466 }
26467 });
26468
26469 // proxy all the other methods.
26470 // important when wrapping filters and duplexes.
26471 for (var i in stream) {
26472 if (this[i] === undefined && typeof stream[i] === 'function') {
26473 this[i] = function (method) {
26474 return function () {
26475 return stream[method].apply(stream, arguments);
26476 };
26477 }(i);
26478 }
26479 }
26480
26481 // proxy certain important events.
26482 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
26483 forEach(events, function (ev) {
26484 stream.on(ev, self.emit.bind(self, ev));
26485 });
26486
26487 // when we try to consume some more bytes, simply unpause the
26488 // underlying stream.
26489 self._read = function (n) {
26490 debug('wrapped _read', n);
26491 if (paused) {
26492 paused = false;
26493 stream.resume();
26494 }
26495 };
26496
26497 return self;
26498 };
26499
26500 // exposed for testing purposes only.
26501 Readable._fromList = fromList;
26502
26503 // Pluck off n bytes from an array of buffers.
26504 // Length is the combined lengths of all the buffers in the list.
26505 // This function is designed to be inlinable, so please take care when making
26506 // changes to the function body.
26507 function fromList(n, state) {
26508 // nothing buffered
26509 if (state.length === 0) return null;
26510
26511 var ret;
26512 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
26513 // read it all, truncate the list
26514 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
26515 state.buffer.clear();
26516 } else {
26517 // read part of list
26518 ret = fromListPartial(n, state.buffer, state.decoder);
26519 }
26520
26521 return ret;
26522 }
26523
26524 // Extracts only enough buffered data to satisfy the amount requested.
26525 // This function is designed to be inlinable, so please take care when making
26526 // changes to the function body.
26527 function fromListPartial(n, list, hasStrings) {
26528 var ret;
26529 if (n < list.head.data.length) {
26530 // slice is the same for buffers and strings
26531 ret = list.head.data.slice(0, n);
26532 list.head.data = list.head.data.slice(n);
26533 } else if (n === list.head.data.length) {
26534 // first chunk is a perfect match
26535 ret = list.shift();
26536 } else {
26537 // result spans more than one buffer
26538 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
26539 }
26540 return ret;
26541 }
26542
26543 // Copies a specified amount of characters from the list of buffered data
26544 // chunks.
26545 // This function is designed to be inlinable, so please take care when making
26546 // changes to the function body.
26547 function copyFromBufferString(n, list) {
26548 var p = list.head;
26549 var c = 1;
26550 var ret = p.data;
26551 n -= ret.length;
26552 while (p = p.next) {
26553 var str = p.data;
26554 var nb = n > str.length ? str.length : n;
26555 if (nb === str.length) ret += str;else ret += str.slice(0, n);
26556 n -= nb;
26557 if (n === 0) {
26558 if (nb === str.length) {
26559 ++c;
26560 if (p.next) list.head = p.next;else list.head = list.tail = null;
26561 } else {
26562 list.head = p;
26563 p.data = str.slice(nb);
26564 }
26565 break;
26566 }
26567 ++c;
26568 }
26569 list.length -= c;
26570 return ret;
26571 }
26572
26573 // Copies a specified amount of bytes from the list of buffered data chunks.
26574 // This function is designed to be inlinable, so please take care when making
26575 // changes to the function body.
26576 function copyFromBuffer(n, list) {
26577 var ret = bufferShim.allocUnsafe(n);
26578 var p = list.head;
26579 var c = 1;
26580 p.data.copy(ret);
26581 n -= p.data.length;
26582 while (p = p.next) {
26583 var buf = p.data;
26584 var nb = n > buf.length ? buf.length : n;
26585 buf.copy(ret, ret.length - n, 0, nb);
26586 n -= nb;
26587 if (n === 0) {
26588 if (nb === buf.length) {
26589 ++c;
26590 if (p.next) list.head = p.next;else list.head = list.tail = null;
26591 } else {
26592 list.head = p;
26593 p.data = buf.slice(nb);
26594 }
26595 break;
26596 }
26597 ++c;
26598 }
26599 list.length -= c;
26600 return ret;
26601 }
26602
26603 function endReadable(stream) {
26604 var state = stream._readableState;
26605
26606 // If we get here before consuming all the bytes, then that is a
26607 // bug in node. Should never happen.
26608 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
26609
26610 if (!state.endEmitted) {
26611 state.ended = true;
26612 processNextTick(endReadableNT, state, stream);
26613 }
26614 }
26615
26616 function endReadableNT(state, stream) {
26617 // Check that we didn't get one last unshift.
26618 if (!state.endEmitted && state.length === 0) {
26619 state.endEmitted = true;
26620 stream.readable = false;
26621 stream.emit('end');
26622 }
26623 }
26624
26625 function forEach(xs, f) {
26626 for (var i = 0, l = xs.length; i < l; i++) {
26627 f(xs[i], i);
26628 }
26629 }
26630
26631 function indexOf(xs, x) {
26632 for (var i = 0, l = xs.length; i < l; i++) {
26633 if (xs[i] === x) return i;
26634 }
26635 return -1;
26636 }
26637 }).call(this,require('_process'))
26638 },{"./_stream_duplex":15,"./internal/streams/BufferList":20,"_process":13,"buffer":5,"buffer-shims":4,"core-util-is":6,"events":7,"inherits":9,"isarray":11,"process-nextick-args":12,"string_decoder/":26,"util":3}],18:[function(require,module,exports){
26639 // a transform stream is a readable/writable stream where you do
26640 // something with the data. Sometimes it's called a "filter",
26641 // but that's not a great name for it, since that implies a thing where
26642 // some bits pass through, and others are simply ignored. (That would
26643 // be a valid example of a transform, of course.)
26644 //
26645 // While the output is causally related to the input, it's not a
26646 // necessarily symmetric or synchronous transformation. For example,
26647 // a zlib stream might take multiple plain-text writes(), and then
26648 // emit a single compressed chunk some time in the future.
26649 //
26650 // Here's how this works:
26651 //
26652 // The Transform stream has all the aspects of the readable and writable
26653 // stream classes. When you write(chunk), that calls _write(chunk,cb)
26654 // internally, and returns false if there's a lot of pending writes
26655 // buffered up. When you call read(), that calls _read(n) until
26656 // there's enough pending readable data buffered up.
26657 //
26658 // In a transform stream, the written data is placed in a buffer. When
26659 // _read(n) is called, it transforms the queued up data, calling the
26660 // buffered _write cb's as it consumes chunks. If consuming a single
26661 // written chunk would result in multiple output chunks, then the first
26662 // outputted bit calls the readcb, and subsequent chunks just go into
26663 // the read buffer, and will cause it to emit 'readable' if necessary.
26664 //
26665 // This way, back-pressure is actually determined by the reading side,
26666 // since _read has to be called to start processing a new chunk. However,
26667 // a pathological inflate type of transform can cause excessive buffering
26668 // here. For example, imagine a stream where every byte of input is
26669 // interpreted as an integer from 0-255, and then results in that many
26670 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
26671 // 1kb of data being output. In this case, you could write a very small
26672 // amount of input, and end up with a very large amount of output. In
26673 // such a pathological inflating mechanism, there'd be no way to tell
26674 // the system to stop doing the transform. A single 4MB write could
26675 // cause the system to run out of memory.
26676 //
26677 // However, even in such a pathological case, only a single written chunk
26678 // would be consumed, and then the rest would wait (un-transformed) until
26679 // the results of the previous transformed chunk were consumed.
26680
26681 'use strict';
26682
26683 module.exports = Transform;
26684
26685 var Duplex = require('./_stream_duplex');
26686
26687 /*<replacement>*/
26688 var util = require('core-util-is');
26689 util.inherits = require('inherits');
26690 /*</replacement>*/
26691
26692 util.inherits(Transform, Duplex);
26693
26694 function TransformState(stream) {
26695 this.afterTransform = function (er, data) {
26696 return afterTransform(stream, er, data);
26697 };
26698
26699 this.needTransform = false;
26700 this.transforming = false;
26701 this.writecb = null;
26702 this.writechunk = null;
26703 this.writeencoding = null;
26704 }
26705
26706 function afterTransform(stream, er, data) {
26707 var ts = stream._transformState;
26708 ts.transforming = false;
26709
26710 var cb = ts.writecb;
26711
26712 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
26713
26714 ts.writechunk = null;
26715 ts.writecb = null;
26716
26717 if (data !== null && data !== undefined) stream.push(data);
26718
26719 cb(er);
26720
26721 var rs = stream._readableState;
26722 rs.reading = false;
26723 if (rs.needReadable || rs.length < rs.highWaterMark) {
26724 stream._read(rs.highWaterMark);
26725 }
26726 }
26727
26728 function Transform(options) {
26729 if (!(this instanceof Transform)) return new Transform(options);
26730
26731 Duplex.call(this, options);
26732
26733 this._transformState = new TransformState(this);
26734
26735 var stream = this;
26736
26737 // start out asking for a readable event once data is transformed.
26738 this._readableState.needReadable = true;
26739
26740 // we have implemented the _read method, and done the other things
26741 // that Readable wants before the first _read call, so unset the
26742 // sync guard flag.
26743 this._readableState.sync = false;
26744
26745 if (options) {
26746 if (typeof options.transform === 'function') this._transform = options.transform;
26747
26748 if (typeof options.flush === 'function') this._flush = options.flush;
26749 }
26750
26751 // When the writable side finishes, then flush out anything remaining.
26752 this.once('prefinish', function () {
26753 if (typeof this._flush === 'function') this._flush(function (er, data) {
26754 done(stream, er, data);
26755 });else done(stream);
26756 });
26757 }
26758
26759 Transform.prototype.push = function (chunk, encoding) {
26760 this._transformState.needTransform = false;
26761 return Duplex.prototype.push.call(this, chunk, encoding);
26762 };
26763
26764 // This is the part where you do stuff!
26765 // override this function in implementation classes.
26766 // 'chunk' is an input chunk.
26767 //
26768 // Call `push(newChunk)` to pass along transformed output
26769 // to the readable side. You may call 'push' zero or more times.
26770 //
26771 // Call `cb(err)` when you are done with this chunk. If you pass
26772 // an error, then that'll put the hurt on the whole operation. If you
26773 // never call cb(), then you'll never get another chunk.
26774 Transform.prototype._transform = function (chunk, encoding, cb) {
26775 throw new Error('_transform() is not implemented');
26776 };
26777
26778 Transform.prototype._write = function (chunk, encoding, cb) {
26779 var ts = this._transformState;
26780 ts.writecb = cb;
26781 ts.writechunk = chunk;
26782 ts.writeencoding = encoding;
26783 if (!ts.transforming) {
26784 var rs = this._readableState;
26785 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
26786 }
26787 };
26788
26789 // Doesn't matter what the args are here.
26790 // _transform does all the work.
26791 // That we got here means that the readable side wants more data.
26792 Transform.prototype._read = function (n) {
26793 var ts = this._transformState;
26794
26795 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
26796 ts.transforming = true;
26797 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
26798 } else {
26799 // mark that we need a transform, so that any data that comes in
26800 // will get processed, now that we've asked for it.
26801 ts.needTransform = true;
26802 }
26803 };
26804
26805 function done(stream, er, data) {
26806 if (er) return stream.emit('error', er);
26807
26808 if (data !== null && data !== undefined) stream.push(data);
26809
26810 // if there's nothing in the write buffer, then that means
26811 // that nothing more will ever be provided
26812 var ws = stream._writableState;
26813 var ts = stream._transformState;
26814
26815 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
26816
26817 if (ts.transforming) throw new Error('Calling transform done when still transforming');
26818
26819 return stream.push(null);
26820 }
26821 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
26822 (function (process){
26823 // A bit simpler than readable streams.
26824 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
26825 // the drain event emission and buffering.
26826
26827 'use strict';
26828
26829 module.exports = Writable;
26830
26831 /*<replacement>*/
26832 var processNextTick = require('process-nextick-args');
26833 /*</replacement>*/
26834
26835 /*<replacement>*/
26836 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
26837 /*</replacement>*/
26838
26839 /*<replacement>*/
26840 var Duplex;
26841 /*</replacement>*/
26842
26843 Writable.WritableState = WritableState;
26844
26845 /*<replacement>*/
26846 var util = require('core-util-is');
26847 util.inherits = require('inherits');
26848 /*</replacement>*/
26849
26850 /*<replacement>*/
26851 var internalUtil = {
26852 deprecate: require('util-deprecate')
26853 };
26854 /*</replacement>*/
26855
26856 /*<replacement>*/
26857 var Stream;
26858 (function () {
26859 try {
26860 Stream = require('st' + 'ream');
26861 } catch (_) {} finally {
26862 if (!Stream) Stream = require('events').EventEmitter;
26863 }
26864 })();
26865 /*</replacement>*/
26866
26867 var Buffer = require('buffer').Buffer;
26868 /*<replacement>*/
26869 var bufferShim = require('buffer-shims');
26870 /*</replacement>*/
26871
26872 util.inherits(Writable, Stream);
26873
26874 function nop() {}
26875
26876 function WriteReq(chunk, encoding, cb) {
26877 this.chunk = chunk;
26878 this.encoding = encoding;
26879 this.callback = cb;
26880 this.next = null;
26881 }
26882
26883 function WritableState(options, stream) {
26884 Duplex = Duplex || require('./_stream_duplex');
26885
26886 options = options || {};
26887
26888 // object stream flag to indicate whether or not this stream
26889 // contains buffers or objects.
26890 this.objectMode = !!options.objectMode;
26891
26892 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
26893
26894 // the point at which write() starts returning false
26895 // Note: 0 is a valid value, means that we always return false if
26896 // the entire buffer is not flushed immediately on write()
26897 var hwm = options.highWaterMark;
26898 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
26899 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
26900
26901 // cast to ints.
26902 this.highWaterMark = ~ ~this.highWaterMark;
26903
26904 // drain event flag.
26905 this.needDrain = false;
26906 // at the start of calling end()
26907 this.ending = false;
26908 // when end() has been called, and returned
26909 this.ended = false;
26910 // when 'finish' is emitted
26911 this.finished = false;
26912
26913 // should we decode strings into buffers before passing to _write?
26914 // this is here so that some node-core streams can optimize string
26915 // handling at a lower level.
26916 var noDecode = options.decodeStrings === false;
26917 this.decodeStrings = !noDecode;
26918
26919 // Crypto is kind of old and crusty. Historically, its default string
26920 // encoding is 'binary' so we have to make this configurable.
26921 // Everything else in the universe uses 'utf8', though.
26922 this.defaultEncoding = options.defaultEncoding || 'utf8';
26923
26924 // not an actual buffer we keep track of, but a measurement
26925 // of how much we're waiting to get pushed to some underlying
26926 // socket or file.
26927 this.length = 0;
26928
26929 // a flag to see when we're in the middle of a write.
26930 this.writing = false;
26931
26932 // when true all writes will be buffered until .uncork() call
26933 this.corked = 0;
26934
26935 // a flag to be able to tell if the onwrite cb is called immediately,
26936 // or on a later tick. We set this to true at first, because any
26937 // actions that shouldn't happen until "later" should generally also
26938 // not happen before the first write call.
26939 this.sync = true;
26940
26941 // a flag to know if we're processing previously buffered items, which
26942 // may call the _write() callback in the same tick, so that we don't
26943 // end up in an overlapped onwrite situation.
26944 this.bufferProcessing = false;
26945
26946 // the callback that's passed to _write(chunk,cb)
26947 this.onwrite = function (er) {
26948 onwrite(stream, er);
26949 };
26950
26951 // the callback that the user supplies to write(chunk,encoding,cb)
26952 this.writecb = null;
26953
26954 // the amount that is being written when _write is called.
26955 this.writelen = 0;
26956
26957 this.bufferedRequest = null;
26958 this.lastBufferedRequest = null;
26959
26960 // number of pending user-supplied write callbacks
26961 // this must be 0 before 'finish' can be emitted
26962 this.pendingcb = 0;
26963
26964 // emit prefinish if the only thing we're waiting for is _write cbs
26965 // This is relevant for synchronous Transform streams
26966 this.prefinished = false;
26967
26968 // True if the error was already emitted and should not be thrown again
26969 this.errorEmitted = false;
26970
26971 // count buffered requests
26972 this.bufferedRequestCount = 0;
26973
26974 // allocate the first CorkedRequest, there is always
26975 // one allocated and free to use, and we maintain at most two
26976 this.corkedRequestsFree = new CorkedRequest(this);
26977 }
26978
26979 WritableState.prototype.getBuffer = function getBuffer() {
26980 var current = this.bufferedRequest;
26981 var out = [];
26982 while (current) {
26983 out.push(current);
26984 current = current.next;
26985 }
26986 return out;
26987 };
26988
26989 (function () {
26990 try {
26991 Object.defineProperty(WritableState.prototype, 'buffer', {
26992 get: internalUtil.deprecate(function () {
26993 return this.getBuffer();
26994 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
26995 });
26996 } catch (_) {}
26997 })();
26998
26999 // Test _writableState for inheritance to account for Duplex streams,
27000 // whose prototype chain only points to Readable.
27001 var realHasInstance;
27002 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
27003 realHasInstance = Function.prototype[Symbol.hasInstance];
27004 Object.defineProperty(Writable, Symbol.hasInstance, {
27005 value: function (object) {
27006 if (realHasInstance.call(this, object)) return true;
27007
27008 return object && object._writableState instanceof WritableState;
27009 }
27010 });
27011 } else {
27012 realHasInstance = function (object) {
27013 return object instanceof this;
27014 };
27015 }
27016
27017 function Writable(options) {
27018 Duplex = Duplex || require('./_stream_duplex');
27019
27020 // Writable ctor is applied to Duplexes, too.
27021 // `realHasInstance` is necessary because using plain `instanceof`
27022 // would return false, as no `_writableState` property is attached.
27023
27024 // Trying to use the custom `instanceof` for Writable here will also break the
27025 // Node.js LazyTransform implementation, which has a non-trivial getter for
27026 // `_writableState` that would lead to infinite recursion.
27027 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
27028 return new Writable(options);
27029 }
27030
27031 this._writableState = new WritableState(options, this);
27032
27033 // legacy.
27034 this.writable = true;
27035
27036 if (options) {
27037 if (typeof options.write === 'function') this._write = options.write;
27038
27039 if (typeof options.writev === 'function') this._writev = options.writev;
27040 }
27041
27042 Stream.call(this);
27043 }
27044
27045 // Otherwise people can pipe Writable streams, which is just wrong.
27046 Writable.prototype.pipe = function () {
27047 this.emit('error', new Error('Cannot pipe, not readable'));
27048 };
27049
27050 function writeAfterEnd(stream, cb) {
27051 var er = new Error('write after end');
27052 // TODO: defer error events consistently everywhere, not just the cb
27053 stream.emit('error', er);
27054 processNextTick(cb, er);
27055 }
27056
27057 // If we get something that is not a buffer, string, null, or undefined,
27058 // and we're not in objectMode, then that's an error.
27059 // Otherwise stream chunks are all considered to be of length=1, and the
27060 // watermarks determine how many objects to keep in the buffer, rather than
27061 // how many bytes or characters.
27062 function validChunk(stream, state, chunk, cb) {
27063 var valid = true;
27064 var er = false;
27065 // Always throw error if a null is written
27066 // if we are not in object mode then throw
27067 // if it is not a buffer, string, or undefined.
27068 if (chunk === null) {
27069 er = new TypeError('May not write null values to stream');
27070 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
27071 er = new TypeError('Invalid non-string/buffer chunk');
27072 }
27073 if (er) {
27074 stream.emit('error', er);
27075 processNextTick(cb, er);
27076 valid = false;
27077 }
27078 return valid;
27079 }
27080
27081 Writable.prototype.write = function (chunk, encoding, cb) {
27082 var state = this._writableState;
27083 var ret = false;
27084
27085 if (typeof encoding === 'function') {
27086 cb = encoding;
27087 encoding = null;
27088 }
27089
27090 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
27091
27092 if (typeof cb !== 'function') cb = nop;
27093
27094 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
27095 state.pendingcb++;
27096 ret = writeOrBuffer(this, state, chunk, encoding, cb);
27097 }
27098
27099 return ret;
27100 };
27101
27102 Writable.prototype.cork = function () {
27103 var state = this._writableState;
27104
27105 state.corked++;
27106 };
27107
27108 Writable.prototype.uncork = function () {
27109 var state = this._writableState;
27110
27111 if (state.corked) {
27112 state.corked--;
27113
27114 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
27115 }
27116 };
27117
27118 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
27119 // node::ParseEncoding() requires lower case.
27120 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
27121 if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
27122 this._writableState.defaultEncoding = encoding;
27123 return this;
27124 };
27125
27126 function decodeChunk(state, chunk, encoding) {
27127 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
27128 chunk = bufferShim.from(chunk, encoding);
27129 }
27130 return chunk;
27131 }
27132
27133 // if we're already writing something, then just put this
27134 // in the queue, and wait our turn. Otherwise, call _write
27135 // If we return false, then we need a drain event, so set that flag.
27136 function writeOrBuffer(stream, state, chunk, encoding, cb) {
27137 chunk = decodeChunk(state, chunk, encoding);
27138
27139 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
27140 var len = state.objectMode ? 1 : chunk.length;
27141
27142 state.length += len;
27143
27144 var ret = state.length < state.highWaterMark;
27145 // we must ensure that previous needDrain will not be reset to false.
27146 if (!ret) state.needDrain = true;
27147
27148 if (state.writing || state.corked) {
27149 var last = state.lastBufferedRequest;
27150 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
27151 if (last) {
27152 last.next = state.lastBufferedRequest;
27153 } else {
27154 state.bufferedRequest = state.lastBufferedRequest;
27155 }
27156 state.bufferedRequestCount += 1;
27157 } else {
27158 doWrite(stream, state, false, len, chunk, encoding, cb);
27159 }
27160
27161 return ret;
27162 }
27163
27164 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
27165 state.writelen = len;
27166 state.writecb = cb;
27167 state.writing = true;
27168 state.sync = true;
27169 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
27170 state.sync = false;
27171 }
27172
27173 function onwriteError(stream, state, sync, er, cb) {
27174 --state.pendingcb;
27175 if (sync) processNextTick(cb, er);else cb(er);
27176
27177 stream._writableState.errorEmitted = true;
27178 stream.emit('error', er);
27179 }
27180
27181 function onwriteStateUpdate(state) {
27182 state.writing = false;
27183 state.writecb = null;
27184 state.length -= state.writelen;
27185 state.writelen = 0;
27186 }
27187
27188 function onwrite(stream, er) {
27189 var state = stream._writableState;
27190 var sync = state.sync;
27191 var cb = state.writecb;
27192
27193 onwriteStateUpdate(state);
27194
27195 if (er) onwriteError(stream, state, sync, er, cb);else {
27196 // Check if we're actually ready to finish, but don't emit yet
27197 var finished = needFinish(state);
27198
27199 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
27200 clearBuffer(stream, state);
27201 }
27202
27203 if (sync) {
27204 /*<replacement>*/
27205 asyncWrite(afterWrite, stream, state, finished, cb);
27206 /*</replacement>*/
27207 } else {
27208 afterWrite(stream, state, finished, cb);
27209 }
27210 }
27211 }
27212
27213 function afterWrite(stream, state, finished, cb) {
27214 if (!finished) onwriteDrain(stream, state);
27215 state.pendingcb--;
27216 cb();
27217 finishMaybe(stream, state);
27218 }
27219
27220 // Must force callback to be called on nextTick, so that we don't
27221 // emit 'drain' before the write() consumer gets the 'false' return
27222 // value, and has a chance to attach a 'drain' listener.
27223 function onwriteDrain(stream, state) {
27224 if (state.length === 0 && state.needDrain) {
27225 state.needDrain = false;
27226 stream.emit('drain');
27227 }
27228 }
27229
27230 // if there's something in the buffer waiting, then process it
27231 function clearBuffer(stream, state) {
27232 state.bufferProcessing = true;
27233 var entry = state.bufferedRequest;
27234
27235 if (stream._writev && entry && entry.next) {
27236 // Fast case, write everything using _writev()
27237 var l = state.bufferedRequestCount;
27238 var buffer = new Array(l);
27239 var holder = state.corkedRequestsFree;
27240 holder.entry = entry;
27241
27242 var count = 0;
27243 while (entry) {
27244 buffer[count] = entry;
27245 entry = entry.next;
27246 count += 1;
27247 }
27248
27249 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
27250
27251 // doWrite is almost always async, defer these to save a bit of time
27252 // as the hot path ends with doWrite
27253 state.pendingcb++;
27254 state.lastBufferedRequest = null;
27255 if (holder.next) {
27256 state.corkedRequestsFree = holder.next;
27257 holder.next = null;
27258 } else {
27259 state.corkedRequestsFree = new CorkedRequest(state);
27260 }
27261 } else {
27262 // Slow case, write chunks one-by-one
27263 while (entry) {
27264 var chunk = entry.chunk;
27265 var encoding = entry.encoding;
27266 var cb = entry.callback;
27267 var len = state.objectMode ? 1 : chunk.length;
27268
27269 doWrite(stream, state, false, len, chunk, encoding, cb);
27270 entry = entry.next;
27271 // if we didn't call the onwrite immediately, then
27272 // it means that we need to wait until it does.
27273 // also, that means that the chunk and cb are currently
27274 // being processed, so move the buffer counter past them.
27275 if (state.writing) {
27276 break;
27277 }
27278 }
27279
27280 if (entry === null) state.lastBufferedRequest = null;
27281 }
27282
27283 state.bufferedRequestCount = 0;
27284 state.bufferedRequest = entry;
27285 state.bufferProcessing = false;
27286 }
27287
27288 Writable.prototype._write = function (chunk, encoding, cb) {
27289 cb(new Error('_write() is not implemented'));
27290 };
27291
27292 Writable.prototype._writev = null;
27293
27294 Writable.prototype.end = function (chunk, encoding, cb) {
27295 var state = this._writableState;
27296
27297 if (typeof chunk === 'function') {
27298 cb = chunk;
27299 chunk = null;
27300 encoding = null;
27301 } else if (typeof encoding === 'function') {
27302 cb = encoding;
27303 encoding = null;
27304 }
27305
27306 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
27307
27308 // .end() fully uncorks
27309 if (state.corked) {
27310 state.corked = 1;
27311 this.uncork();
27312 }
27313
27314 // ignore unnecessary end() calls.
27315 if (!state.ending && !state.finished) endWritable(this, state, cb);
27316 };
27317
27318 function needFinish(state) {
27319 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
27320 }
27321
27322 function prefinish(stream, state) {
27323 if (!state.prefinished) {
27324 state.prefinished = true;
27325 stream.emit('prefinish');
27326 }
27327 }
27328
27329 function finishMaybe(stream, state) {
27330 var need = needFinish(state);
27331 if (need) {
27332 if (state.pendingcb === 0) {
27333 prefinish(stream, state);
27334 state.finished = true;
27335 stream.emit('finish');
27336 } else {
27337 prefinish(stream, state);
27338 }
27339 }
27340 return need;
27341 }
27342
27343 function endWritable(stream, state, cb) {
27344 state.ending = true;
27345 finishMaybe(stream, state);
27346 if (cb) {
27347 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
27348 }
27349 state.ended = true;
27350 stream.writable = false;
27351 }
27352
27353 // It seems a linked list but it is not
27354 // there will be only 2 of these for each stream
27355 function CorkedRequest(state) {
27356 var _this = this;
27357
27358 this.next = null;
27359 this.entry = null;
27360
27361 this.finish = function (err) {
27362 var entry = _this.entry;
27363 _this.entry = null;
27364 while (entry) {
27365 var cb = entry.callback;
27366 state.pendingcb--;
27367 cb(err);
27368 entry = entry.next;
27369 }
27370 if (state.corkedRequestsFree) {
27371 state.corkedRequestsFree.next = _this;
27372 } else {
27373 state.corkedRequestsFree = _this;
27374 }
27375 };
27376 }
27377 }).call(this,require('_process'))
27378 },{"./_stream_duplex":15,"_process":13,"buffer":5,"buffer-shims":4,"core-util-is":6,"events":7,"inherits":9,"process-nextick-args":12,"util-deprecate":27}],20:[function(require,module,exports){
27379 'use strict';
27380
27381 var Buffer = require('buffer').Buffer;
27382 /*<replacement>*/
27383 var bufferShim = require('buffer-shims');
27384 /*</replacement>*/
27385
27386 module.exports = BufferList;
27387
27388 function BufferList() {
27389 this.head = null;
27390 this.tail = null;
27391 this.length = 0;
27392 }
27393
27394 BufferList.prototype.push = function (v) {
27395 var entry = { data: v, next: null };
27396 if (this.length > 0) this.tail.next = entry;else this.head = entry;
27397 this.tail = entry;
27398 ++this.length;
27399 };
27400
27401 BufferList.prototype.unshift = function (v) {
27402 var entry = { data: v, next: this.head };
27403 if (this.length === 0) this.tail = entry;
27404 this.head = entry;
27405 ++this.length;
27406 };
27407
27408 BufferList.prototype.shift = function () {
27409 if (this.length === 0) return;
27410 var ret = this.head.data;
27411 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
27412 --this.length;
27413 return ret;
27414 };
27415
27416 BufferList.prototype.clear = function () {
27417 this.head = this.tail = null;
27418 this.length = 0;
27419 };
27420
27421 BufferList.prototype.join = function (s) {
27422 if (this.length === 0) return '';
27423 var p = this.head;
27424 var ret = '' + p.data;
27425 while (p = p.next) {
27426 ret += s + p.data;
27427 }return ret;
27428 };
27429
27430 BufferList.prototype.concat = function (n) {
27431 if (this.length === 0) return bufferShim.alloc(0);
27432 if (this.length === 1) return this.head.data;
27433 var ret = bufferShim.allocUnsafe(n >>> 0);
27434 var p = this.head;
27435 var i = 0;
27436 while (p) {
27437 p.data.copy(ret, i);
27438 i += p.data.length;
27439 p = p.next;
27440 }
27441 return ret;
27442 };
27443 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
27444 module.exports = require("./lib/_stream_passthrough.js")
27445
27446 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
27447 (function (process){
27448 var Stream = (function (){
27449 try {
27450 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
27451 } catch(_){}
27452 }());
27453 exports = module.exports = require('./lib/_stream_readable.js');
27454 exports.Stream = Stream || exports;
27455 exports.Readable = exports;
27456 exports.Writable = require('./lib/_stream_writable.js');
27457 exports.Duplex = require('./lib/_stream_duplex.js');
27458 exports.Transform = require('./lib/_stream_transform.js');
27459 exports.PassThrough = require('./lib/_stream_passthrough.js');
27460
27461 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
27462 module.exports = Stream;
27463 }
27464
27465 }).call(this,require('_process'))
27466 },{"./lib/_stream_duplex.js":15,"./lib/_stream_passthrough.js":16,"./lib/_stream_readable.js":17,"./lib/_stream_transform.js":18,"./lib/_stream_writable.js":19,"_process":13}],23:[function(require,module,exports){
27467 module.exports = require("./lib/_stream_transform.js")
27468
27469 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
27470 module.exports = require("./lib/_stream_writable.js")
27471
27472 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
27473 // Copyright Joyent, Inc. and other Node contributors.
27474 //
27475 // Permission is hereby granted, free of charge, to any person obtaining a
27476 // copy of this software and associated documentation files (the
27477 // "Software"), to deal in the Software without restriction, including
27478 // without limitation the rights to use, copy, modify, merge, publish,
27479 // distribute, sublicense, and/or sell copies of the Software, and to permit
27480 // persons to whom the Software is furnished to do so, subject to the
27481 // following conditions:
27482 //
27483 // The above copyright notice and this permission notice shall be included
27484 // in all copies or substantial portions of the Software.
27485 //
27486 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27487 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27488 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27489 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27490 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27491 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27492 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27493
27494 module.exports = Stream;
27495
27496 var EE = require('events').EventEmitter;
27497 var inherits = require('inherits');
27498
27499 inherits(Stream, EE);
27500 Stream.Readable = require('readable-stream/readable.js');
27501 Stream.Writable = require('readable-stream/writable.js');
27502 Stream.Duplex = require('readable-stream/duplex.js');
27503 Stream.Transform = require('readable-stream/transform.js');
27504 Stream.PassThrough = require('readable-stream/passthrough.js');
27505
27506 // Backwards-compat with node 0.4.x
27507 Stream.Stream = Stream;
27508
27509
27510
27511 // old-style streams. Note that the pipe method (the only relevant
27512 // part of this class) is overridden in the Readable class.
27513
27514 function Stream() {
27515 EE.call(this);
27516 }
27517
27518 Stream.prototype.pipe = function(dest, options) {
27519 var source = this;
27520
27521 function ondata(chunk) {
27522 if (dest.writable) {
27523 if (false === dest.write(chunk) && source.pause) {
27524 source.pause();
27525 }
27526 }
27527 }
27528
27529 source.on('data', ondata);
27530
27531 function ondrain() {
27532 if (source.readable && source.resume) {
27533 source.resume();
27534 }
27535 }
27536
27537 dest.on('drain', ondrain);
27538
27539 // If the 'end' option is not supplied, dest.end() will be called when
27540 // source gets the 'end' or 'close' events. Only dest.end() once.
27541 if (!dest._isStdio && (!options || options.end !== false)) {
27542 source.on('end', onend);
27543 source.on('close', onclose);
27544 }
27545
27546 var didOnEnd = false;
27547 function onend() {
27548 if (didOnEnd) return;
27549 didOnEnd = true;
27550
27551 dest.end();
27552 }
27553
27554
27555 function onclose() {
27556 if (didOnEnd) return;
27557 didOnEnd = true;
27558
27559 if (typeof dest.destroy === 'function') dest.destroy();
27560 }
27561
27562 // don't leave dangling pipes when there are errors.
27563 function onerror(er) {
27564 cleanup();
27565 if (EE.listenerCount(this, 'error') === 0) {
27566 throw er; // Unhandled stream error in pipe.
27567 }
27568 }
27569
27570 source.on('error', onerror);
27571 dest.on('error', onerror);
27572
27573 // remove all the event listeners that were added.
27574 function cleanup() {
27575 source.removeListener('data', ondata);
27576 dest.removeListener('drain', ondrain);
27577
27578 source.removeListener('end', onend);
27579 source.removeListener('close', onclose);
27580
27581 source.removeListener('error', onerror);
27582 dest.removeListener('error', onerror);
27583
27584 source.removeListener('end', cleanup);
27585 source.removeListener('close', cleanup);
27586
27587 dest.removeListener('close', cleanup);
27588 }
27589
27590 source.on('end', cleanup);
27591 source.on('close', cleanup);
27592
27593 dest.on('close', cleanup);
27594
27595 dest.emit('pipe', source);
27596
27597 // Allow for unix-like usage: A.pipe(B).pipe(C)
27598 return dest;
27599 };
27600
27601 },{"events":7,"inherits":9,"readable-stream/duplex.js":14,"readable-stream/passthrough.js":21,"readable-stream/readable.js":22,"readable-stream/transform.js":23,"readable-stream/writable.js":24}],26:[function(require,module,exports){
27602 // Copyright Joyent, Inc. and other Node contributors.
27603 //
27604 // Permission is hereby granted, free of charge, to any person obtaining a
27605 // copy of this software and associated documentation files (the
27606 // "Software"), to deal in the Software without restriction, including
27607 // without limitation the rights to use, copy, modify, merge, publish,
27608 // distribute, sublicense, and/or sell copies of the Software, and to permit
27609 // persons to whom the Software is furnished to do so, subject to the
27610 // following conditions:
27611 //
27612 // The above copyright notice and this permission notice shall be included
27613 // in all copies or substantial portions of the Software.
27614 //
27615 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27616 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27617 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27618 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27619 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27620 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27621 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27622
27623 var Buffer = require('buffer').Buffer;
27624
27625 var isBufferEncoding = Buffer.isEncoding
27626 || function(encoding) {
27627 switch (encoding && encoding.toLowerCase()) {
27628 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;
27629 default: return false;
27630 }
27631 }
27632
27633
27634 function assertEncoding(encoding) {
27635 if (encoding && !isBufferEncoding(encoding)) {
27636 throw new Error('Unknown encoding: ' + encoding);
27637 }
27638 }
27639
27640 // StringDecoder provides an interface for efficiently splitting a series of
27641 // buffers into a series of JS strings without breaking apart multi-byte
27642 // characters. CESU-8 is handled as part of the UTF-8 encoding.
27643 //
27644 // @TODO Handling all encodings inside a single object makes it very difficult
27645 // to reason about this code, so it should be split up in the future.
27646 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
27647 // points as used by CESU-8.
27648 var StringDecoder = exports.StringDecoder = function(encoding) {
27649 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
27650 assertEncoding(encoding);
27651 switch (this.encoding) {
27652 case 'utf8':
27653 // CESU-8 represents each of Surrogate Pair by 3-bytes
27654 this.surrogateSize = 3;
27655 break;
27656 case 'ucs2':
27657 case 'utf16le':
27658 // UTF-16 represents each of Surrogate Pair by 2-bytes
27659 this.surrogateSize = 2;
27660 this.detectIncompleteChar = utf16DetectIncompleteChar;
27661 break;
27662 case 'base64':
27663 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
27664 this.surrogateSize = 3;
27665 this.detectIncompleteChar = base64DetectIncompleteChar;
27666 break;
27667 default:
27668 this.write = passThroughWrite;
27669 return;
27670 }
27671
27672 // Enough space to store all bytes of a single character. UTF-8 needs 4
27673 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
27674 this.charBuffer = new Buffer(6);
27675 // Number of bytes received for the current incomplete multi-byte character.
27676 this.charReceived = 0;
27677 // Number of bytes expected for the current incomplete multi-byte character.
27678 this.charLength = 0;
27679 };
27680
27681
27682 // write decodes the given buffer and returns it as JS string that is
27683 // guaranteed to not contain any partial multi-byte characters. Any partial
27684 // character found at the end of the buffer is buffered up, and will be
27685 // returned when calling write again with the remaining bytes.
27686 //
27687 // Note: Converting a Buffer containing an orphan surrogate to a String
27688 // currently works, but converting a String to a Buffer (via `new Buffer`, or
27689 // Buffer#write) will replace incomplete surrogates with the unicode
27690 // replacement character. See https://codereview.chromium.org/121173009/ .
27691 StringDecoder.prototype.write = function(buffer) {
27692 var charStr = '';
27693 // if our last write ended with an incomplete multibyte character
27694 while (this.charLength) {
27695 // determine how many remaining bytes this buffer has to offer for this char
27696 var available = (buffer.length >= this.charLength - this.charReceived) ?
27697 this.charLength - this.charReceived :
27698 buffer.length;
27699
27700 // add the new bytes to the char buffer
27701 buffer.copy(this.charBuffer, this.charReceived, 0, available);
27702 this.charReceived += available;
27703
27704 if (this.charReceived < this.charLength) {
27705 // still not enough chars in this buffer? wait for more ...
27706 return '';
27707 }
27708
27709 // remove bytes belonging to the current character from the buffer
27710 buffer = buffer.slice(available, buffer.length);
27711
27712 // get the character that was split
27713 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
27714
27715 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27716 var charCode = charStr.charCodeAt(charStr.length - 1);
27717 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27718 this.charLength += this.surrogateSize;
27719 charStr = '';
27720 continue;
27721 }
27722 this.charReceived = this.charLength = 0;
27723
27724 // if there are no more bytes in this buffer, just emit our char
27725 if (buffer.length === 0) {
27726 return charStr;
27727 }
27728 break;
27729 }
27730
27731 // determine and set charLength / charReceived
27732 this.detectIncompleteChar(buffer);
27733
27734 var end = buffer.length;
27735 if (this.charLength) {
27736 // buffer the incomplete character bytes we got
27737 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
27738 end -= this.charReceived;
27739 }
27740
27741 charStr += buffer.toString(this.encoding, 0, end);
27742
27743 var end = charStr.length - 1;
27744 var charCode = charStr.charCodeAt(end);
27745 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27746 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27747 var size = this.surrogateSize;
27748 this.charLength += size;
27749 this.charReceived += size;
27750 this.charBuffer.copy(this.charBuffer, size, 0, size);
27751 buffer.copy(this.charBuffer, 0, 0, size);
27752 return charStr.substring(0, end);
27753 }
27754
27755 // or just emit the charStr
27756 return charStr;
27757 };
27758
27759 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
27760 // the end of the given buffer. If so, it sets this.charLength to the byte
27761 // length that character, and sets this.charReceived to the number of bytes
27762 // that are available for this character.
27763 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
27764 // determine how many bytes we have to check at the end of this buffer
27765 var i = (buffer.length >= 3) ? 3 : buffer.length;
27766
27767 // Figure out if one of the last i bytes of our buffer announces an
27768 // incomplete char.
27769 for (; i > 0; i--) {
27770 var c = buffer[buffer.length - i];
27771
27772 // See http://en.wikipedia.org/wiki/UTF-8#Description
27773
27774 // 110XXXXX
27775 if (i == 1 && c >> 5 == 0x06) {
27776 this.charLength = 2;
27777 break;
27778 }
27779
27780 // 1110XXXX
27781 if (i <= 2 && c >> 4 == 0x0E) {
27782 this.charLength = 3;
27783 break;
27784 }
27785
27786 // 11110XXX
27787 if (i <= 3 && c >> 3 == 0x1E) {
27788 this.charLength = 4;
27789 break;
27790 }
27791 }
27792 this.charReceived = i;
27793 };
27794
27795 StringDecoder.prototype.end = function(buffer) {
27796 var res = '';
27797 if (buffer && buffer.length)
27798 res = this.write(buffer);
27799
27800 if (this.charReceived) {
27801 var cr = this.charReceived;
27802 var buf = this.charBuffer;
27803 var enc = this.encoding;
27804 res += buf.slice(0, cr).toString(enc);
27805 }
27806
27807 return res;
27808 };
27809
27810 function passThroughWrite(buffer) {
27811 return buffer.toString(this.encoding);
27812 }
27813
27814 function utf16DetectIncompleteChar(buffer) {
27815 this.charReceived = buffer.length % 2;
27816 this.charLength = this.charReceived ? 2 : 0;
27817 }
27818
27819 function base64DetectIncompleteChar(buffer) {
27820 this.charReceived = buffer.length % 3;
27821 this.charLength = this.charReceived ? 3 : 0;
27822 }
27823
27824 },{"buffer":5}],27:[function(require,module,exports){
27825 (function (global){
27826
27827 /**
27828 * Module exports.
27829 */
27830
27831 module.exports = deprecate;
27832
27833 /**
27834 * Mark that a method should not be used.
27835 * Returns a modified function which warns once by default.
27836 *
27837 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
27838 *
27839 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
27840 * will throw an Error when invoked.
27841 *
27842 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
27843 * will invoke `console.trace()` instead of `console.error()`.
27844 *
27845 * @param {Function} fn - the function to deprecate
27846 * @param {String} msg - the string to print to the console when `fn` is invoked
27847 * @returns {Function} a new "deprecated" version of `fn`
27848 * @api public
27849 */
27850
27851 function deprecate (fn, msg) {
27852 if (config('noDeprecation')) {
27853 return fn;
27854 }
27855
27856 var warned = false;
27857 function deprecated() {
27858 if (!warned) {
27859 if (config('throwDeprecation')) {
27860 throw new Error(msg);
27861 } else if (config('traceDeprecation')) {
27862 console.trace(msg);
27863 } else {
27864 console.warn(msg);
27865 }
27866 warned = true;
27867 }
27868 return fn.apply(this, arguments);
27869 }
27870
27871 return deprecated;
27872 }
27873
27874 /**
27875 * Checks `localStorage` for boolean values for the given `name`.
27876 *
27877 * @param {String} name
27878 * @returns {Boolean}
27879 * @api private
27880 */
27881
27882 function config (name) {
27883 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
27884 try {
27885 if (!global.localStorage) return false;
27886 } catch (_) {
27887 return false;
27888 }
27889 var val = global.localStorage[name];
27890 if (null == val) return false;
27891 return String(val).toLowerCase() === 'true';
27892 }
27893
27894 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
27895 },{}],28:[function(require,module,exports){
27896 arguments[4][9][0].apply(exports,arguments)
27897 },{"dup":9}],29:[function(require,module,exports){
27898 module.exports = function isBuffer(arg) {
27899 return arg && typeof arg === 'object'
27900 && typeof arg.copy === 'function'
27901 && typeof arg.fill === 'function'
27902 && typeof arg.readUInt8 === 'function';
27903 }
27904 },{}],30:[function(require,module,exports){
27905 (function (process,global){
27906 // Copyright Joyent, Inc. and other Node contributors.
27907 //
27908 // Permission is hereby granted, free of charge, to any person obtaining a
27909 // copy of this software and associated documentation files (the
27910 // "Software"), to deal in the Software without restriction, including
27911 // without limitation the rights to use, copy, modify, merge, publish,
27912 // distribute, sublicense, and/or sell copies of the Software, and to permit
27913 // persons to whom the Software is furnished to do so, subject to the
27914 // following conditions:
27915 //
27916 // The above copyright notice and this permission notice shall be included
27917 // in all copies or substantial portions of the Software.
27918 //
27919 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27920 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27921 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27922 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27923 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27924 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27925 // USE OR OTHER DEALINGS IN THE SOFTWARE.
27926
27927 var formatRegExp = /%[sdj%]/g;
27928 exports.format = function(f) {
27929 if (!isString(f)) {
27930 var objects = [];
27931 for (var i = 0; i < arguments.length; i++) {
27932 objects.push(inspect(arguments[i]));
27933 }
27934 return objects.join(' ');
27935 }
27936
27937 var i = 1;
27938 var args = arguments;
27939 var len = args.length;
27940 var str = String(f).replace(formatRegExp, function(x) {
27941 if (x === '%%') return '%';
27942 if (i >= len) return x;
27943 switch (x) {
27944 case '%s': return String(args[i++]);
27945 case '%d': return Number(args[i++]);
27946 case '%j':
27947 try {
27948 return JSON.stringify(args[i++]);
27949 } catch (_) {
27950 return '[Circular]';
27951 }
27952 default:
27953 return x;
27954 }
27955 });
27956 for (var x = args[i]; i < len; x = args[++i]) {
27957 if (isNull(x) || !isObject(x)) {
27958 str += ' ' + x;
27959 } else {
27960 str += ' ' + inspect(x);
27961 }
27962 }
27963 return str;
27964 };
27965
27966
27967 // Mark that a method should not be used.
27968 // Returns a modified function which warns once by default.
27969 // If --no-deprecation is set, then it is a no-op.
27970 exports.deprecate = function(fn, msg) {
27971 // Allow for deprecating things in the process of starting up.
27972 if (isUndefined(global.process)) {
27973 return function() {
27974 return exports.deprecate(fn, msg).apply(this, arguments);
27975 };
27976 }
27977
27978 if (process.noDeprecation === true) {
27979 return fn;
27980 }
27981
27982 var warned = false;
27983 function deprecated() {
27984 if (!warned) {
27985 if (process.throwDeprecation) {
27986 throw new Error(msg);
27987 } else if (process.traceDeprecation) {
27988 console.trace(msg);
27989 } else {
27990 console.error(msg);
27991 }
27992 warned = true;
27993 }
27994 return fn.apply(this, arguments);
27995 }
27996
27997 return deprecated;
27998 };
27999
28000
28001 var debugs = {};
28002 var debugEnviron;
28003 exports.debuglog = function(set) {
28004 if (isUndefined(debugEnviron))
28005 debugEnviron = process.env.NODE_DEBUG || '';
28006 set = set.toUpperCase();
28007 if (!debugs[set]) {
28008 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
28009 var pid = process.pid;
28010 debugs[set] = function() {
28011 var msg = exports.format.apply(exports, arguments);
28012 console.error('%s %d: %s', set, pid, msg);
28013 };
28014 } else {
28015 debugs[set] = function() {};
28016 }
28017 }
28018 return debugs[set];
28019 };
28020
28021
28022 /**
28023 * Echos the value of a value. Trys to print the value out
28024 * in the best way possible given the different types.
28025 *
28026 * @param {Object} obj The object to print out.
28027 * @param {Object} opts Optional options object that alters the output.
28028 */
28029 /* legacy: obj, showHidden, depth, colors*/
28030 function inspect(obj, opts) {
28031 // default options
28032 var ctx = {
28033 seen: [],
28034 stylize: stylizeNoColor
28035 };
28036 // legacy...
28037 if (arguments.length >= 3) ctx.depth = arguments[2];
28038 if (arguments.length >= 4) ctx.colors = arguments[3];
28039 if (isBoolean(opts)) {
28040 // legacy...
28041 ctx.showHidden = opts;
28042 } else if (opts) {
28043 // got an "options" object
28044 exports._extend(ctx, opts);
28045 }
28046 // set default options
28047 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
28048 if (isUndefined(ctx.depth)) ctx.depth = 2;
28049 if (isUndefined(ctx.colors)) ctx.colors = false;
28050 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
28051 if (ctx.colors) ctx.stylize = stylizeWithColor;
28052 return formatValue(ctx, obj, ctx.depth);
28053 }
28054 exports.inspect = inspect;
28055
28056
28057 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
28058 inspect.colors = {
28059 'bold' : [1, 22],
28060 'italic' : [3, 23],
28061 'underline' : [4, 24],
28062 'inverse' : [7, 27],
28063 'white' : [37, 39],
28064 'grey' : [90, 39],
28065 'black' : [30, 39],
28066 'blue' : [34, 39],
28067 'cyan' : [36, 39],
28068 'green' : [32, 39],
28069 'magenta' : [35, 39],
28070 'red' : [31, 39],
28071 'yellow' : [33, 39]
28072 };
28073
28074 // Don't use 'blue' not visible on cmd.exe
28075 inspect.styles = {
28076 'special': 'cyan',
28077 'number': 'yellow',
28078 'boolean': 'yellow',
28079 'undefined': 'grey',
28080 'null': 'bold',
28081 'string': 'green',
28082 'date': 'magenta',
28083 // "name": intentionally not styling
28084 'regexp': 'red'
28085 };
28086
28087
28088 function stylizeWithColor(str, styleType) {
28089 var style = inspect.styles[styleType];
28090
28091 if (style) {
28092 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
28093 '\u001b[' + inspect.colors[style][1] + 'm';
28094 } else {
28095 return str;
28096 }
28097 }
28098
28099
28100 function stylizeNoColor(str, styleType) {
28101 return str;
28102 }
28103
28104
28105 function arrayToHash(array) {
28106 var hash = {};
28107
28108 array.forEach(function(val, idx) {
28109 hash[val] = true;
28110 });
28111
28112 return hash;
28113 }
28114
28115
28116 function formatValue(ctx, value, recurseTimes) {
28117 // Provide a hook for user-specified inspect functions.
28118 // Check that value is an object with an inspect function on it
28119 if (ctx.customInspect &&
28120 value &&
28121 isFunction(value.inspect) &&
28122 // Filter out the util module, it's inspect function is special
28123 value.inspect !== exports.inspect &&
28124 // Also filter out any prototype objects using the circular check.
28125 !(value.constructor && value.constructor.prototype === value)) {
28126 var ret = value.inspect(recurseTimes, ctx);
28127 if (!isString(ret)) {
28128 ret = formatValue(ctx, ret, recurseTimes);
28129 }
28130 return ret;
28131 }
28132
28133 // Primitive types cannot have properties
28134 var primitive = formatPrimitive(ctx, value);
28135 if (primitive) {
28136 return primitive;
28137 }
28138
28139 // Look up the keys of the object.
28140 var keys = Object.keys(value);
28141 var visibleKeys = arrayToHash(keys);
28142
28143 if (ctx.showHidden) {
28144 keys = Object.getOwnPropertyNames(value);
28145 }
28146
28147 // IE doesn't make error fields non-enumerable
28148 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
28149 if (isError(value)
28150 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
28151 return formatError(value);
28152 }
28153
28154 // Some type of object without properties can be shortcutted.
28155 if (keys.length === 0) {
28156 if (isFunction(value)) {
28157 var name = value.name ? ': ' + value.name : '';
28158 return ctx.stylize('[Function' + name + ']', 'special');
28159 }
28160 if (isRegExp(value)) {
28161 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28162 }
28163 if (isDate(value)) {
28164 return ctx.stylize(Date.prototype.toString.call(value), 'date');
28165 }
28166 if (isError(value)) {
28167 return formatError(value);
28168 }
28169 }
28170
28171 var base = '', array = false, braces = ['{', '}'];
28172
28173 // Make Array say that they are Array
28174 if (isArray(value)) {
28175 array = true;
28176 braces = ['[', ']'];
28177 }
28178
28179 // Make functions say that they are functions
28180 if (isFunction(value)) {
28181 var n = value.name ? ': ' + value.name : '';
28182 base = ' [Function' + n + ']';
28183 }
28184
28185 // Make RegExps say that they are RegExps
28186 if (isRegExp(value)) {
28187 base = ' ' + RegExp.prototype.toString.call(value);
28188 }
28189
28190 // Make dates with properties first say the date
28191 if (isDate(value)) {
28192 base = ' ' + Date.prototype.toUTCString.call(value);
28193 }
28194
28195 // Make error with message first say the error
28196 if (isError(value)) {
28197 base = ' ' + formatError(value);
28198 }
28199
28200 if (keys.length === 0 && (!array || value.length == 0)) {
28201 return braces[0] + base + braces[1];
28202 }
28203
28204 if (recurseTimes < 0) {
28205 if (isRegExp(value)) {
28206 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28207 } else {
28208 return ctx.stylize('[Object]', 'special');
28209 }
28210 }
28211
28212 ctx.seen.push(value);
28213
28214 var output;
28215 if (array) {
28216 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
28217 } else {
28218 output = keys.map(function(key) {
28219 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
28220 });
28221 }
28222
28223 ctx.seen.pop();
28224
28225 return reduceToSingleString(output, base, braces);
28226 }
28227
28228
28229 function formatPrimitive(ctx, value) {
28230 if (isUndefined(value))
28231 return ctx.stylize('undefined', 'undefined');
28232 if (isString(value)) {
28233 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
28234 .replace(/'/g, "\\'")
28235 .replace(/\\"/g, '"') + '\'';
28236 return ctx.stylize(simple, 'string');
28237 }
28238 if (isNumber(value))
28239 return ctx.stylize('' + value, 'number');
28240 if (isBoolean(value))
28241 return ctx.stylize('' + value, 'boolean');
28242 // For some reason typeof null is "object", so special case here.
28243 if (isNull(value))
28244 return ctx.stylize('null', 'null');
28245 }
28246
28247
28248 function formatError(value) {
28249 return '[' + Error.prototype.toString.call(value) + ']';
28250 }
28251
28252
28253 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
28254 var output = [];
28255 for (var i = 0, l = value.length; i < l; ++i) {
28256 if (hasOwnProperty(value, String(i))) {
28257 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28258 String(i), true));
28259 } else {
28260 output.push('');
28261 }
28262 }
28263 keys.forEach(function(key) {
28264 if (!key.match(/^\d+$/)) {
28265 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28266 key, true));
28267 }
28268 });
28269 return output;
28270 }
28271
28272
28273 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
28274 var name, str, desc;
28275 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
28276 if (desc.get) {
28277 if (desc.set) {
28278 str = ctx.stylize('[Getter/Setter]', 'special');
28279 } else {
28280 str = ctx.stylize('[Getter]', 'special');
28281 }
28282 } else {
28283 if (desc.set) {
28284 str = ctx.stylize('[Setter]', 'special');
28285 }
28286 }
28287 if (!hasOwnProperty(visibleKeys, key)) {
28288 name = '[' + key + ']';
28289 }
28290 if (!str) {
28291 if (ctx.seen.indexOf(desc.value) < 0) {
28292 if (isNull(recurseTimes)) {
28293 str = formatValue(ctx, desc.value, null);
28294 } else {
28295 str = formatValue(ctx, desc.value, recurseTimes - 1);
28296 }
28297 if (str.indexOf('\n') > -1) {
28298 if (array) {
28299 str = str.split('\n').map(function(line) {
28300 return ' ' + line;
28301 }).join('\n').substr(2);
28302 } else {
28303 str = '\n' + str.split('\n').map(function(line) {
28304 return ' ' + line;
28305 }).join('\n');
28306 }
28307 }
28308 } else {
28309 str = ctx.stylize('[Circular]', 'special');
28310 }
28311 }
28312 if (isUndefined(name)) {
28313 if (array && key.match(/^\d+$/)) {
28314 return str;
28315 }
28316 name = JSON.stringify('' + key);
28317 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
28318 name = name.substr(1, name.length - 2);
28319 name = ctx.stylize(name, 'name');
28320 } else {
28321 name = name.replace(/'/g, "\\'")
28322 .replace(/\\"/g, '"')
28323 .replace(/(^"|"$)/g, "'");
28324 name = ctx.stylize(name, 'string');
28325 }
28326 }
28327
28328 return name + ': ' + str;
28329 }
28330
28331
28332 function reduceToSingleString(output, base, braces) {
28333 var numLinesEst = 0;
28334 var length = output.reduce(function(prev, cur) {
28335 numLinesEst++;
28336 if (cur.indexOf('\n') >= 0) numLinesEst++;
28337 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
28338 }, 0);
28339
28340 if (length > 60) {
28341 return braces[0] +
28342 (base === '' ? '' : base + '\n ') +
28343 ' ' +
28344 output.join(',\n ') +
28345 ' ' +
28346 braces[1];
28347 }
28348
28349 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
28350 }
28351
28352
28353 // NOTE: These type checking functions intentionally don't use `instanceof`
28354 // because it is fragile and can be easily faked with `Object.create()`.
28355 function isArray(ar) {
28356 return Array.isArray(ar);
28357 }
28358 exports.isArray = isArray;
28359
28360 function isBoolean(arg) {
28361 return typeof arg === 'boolean';
28362 }
28363 exports.isBoolean = isBoolean;
28364
28365 function isNull(arg) {
28366 return arg === null;
28367 }
28368 exports.isNull = isNull;
28369
28370 function isNullOrUndefined(arg) {
28371 return arg == null;
28372 }
28373 exports.isNullOrUndefined = isNullOrUndefined;
28374
28375 function isNumber(arg) {
28376 return typeof arg === 'number';
28377 }
28378 exports.isNumber = isNumber;
28379
28380 function isString(arg) {
28381 return typeof arg === 'string';
28382 }
28383 exports.isString = isString;
28384
28385 function isSymbol(arg) {
28386 return typeof arg === 'symbol';
28387 }
28388 exports.isSymbol = isSymbol;
28389
28390 function isUndefined(arg) {
28391 return arg === void 0;
28392 }
28393 exports.isUndefined = isUndefined;
28394
28395 function isRegExp(re) {
28396 return isObject(re) && objectToString(re) === '[object RegExp]';
28397 }
28398 exports.isRegExp = isRegExp;
28399
28400 function isObject(arg) {
28401 return typeof arg === 'object' && arg !== null;
28402 }
28403 exports.isObject = isObject;
28404
28405 function isDate(d) {
28406 return isObject(d) && objectToString(d) === '[object Date]';
28407 }
28408 exports.isDate = isDate;
28409
28410 function isError(e) {
28411 return isObject(e) &&
28412 (objectToString(e) === '[object Error]' || e instanceof Error);
28413 }
28414 exports.isError = isError;
28415
28416 function isFunction(arg) {
28417 return typeof arg === 'function';
28418 }
28419 exports.isFunction = isFunction;
28420
28421 function isPrimitive(arg) {
28422 return arg === null ||
28423 typeof arg === 'boolean' ||
28424 typeof arg === 'number' ||
28425 typeof arg === 'string' ||
28426 typeof arg === 'symbol' || // ES6 symbol
28427 typeof arg === 'undefined';
28428 }
28429 exports.isPrimitive = isPrimitive;
28430
28431 exports.isBuffer = require('./support/isBuffer');
28432
28433 function objectToString(o) {
28434 return Object.prototype.toString.call(o);
28435 }
28436
28437
28438 function pad(n) {
28439 return n < 10 ? '0' + n.toString(10) : n.toString(10);
28440 }
28441
28442
28443 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
28444 'Oct', 'Nov', 'Dec'];
28445
28446 // 26 Feb 16:19:34
28447 function timestamp() {
28448 var d = new Date();
28449 var time = [pad(d.getHours()),
28450 pad(d.getMinutes()),
28451 pad(d.getSeconds())].join(':');
28452 return [d.getDate(), months[d.getMonth()], time].join(' ');
28453 }
28454
28455
28456 // log is just a thin wrapper to console.log that prepends a timestamp
28457 exports.log = function() {
28458 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
28459 };
28460
28461
28462 /**
28463 * Inherit the prototype methods from one constructor into another.
28464 *
28465 * The Function.prototype.inherits from lang.js rewritten as a standalone
28466 * function (not on Function.prototype). NOTE: If this file is to be loaded
28467 * during bootstrapping this function needs to be rewritten using some native
28468 * functions as prototype setup using normal JavaScript does not work as
28469 * expected during bootstrapping (see mirror.js in r114903).
28470 *
28471 * @param {function} ctor Constructor function which needs to inherit the
28472 * prototype.
28473 * @param {function} superCtor Constructor function to inherit prototype from.
28474 */
28475 exports.inherits = require('inherits');
28476
28477 exports._extend = function(origin, add) {
28478 // Don't do anything if add isn't an object
28479 if (!add || !isObject(add)) return origin;
28480
28481 var keys = Object.keys(add);
28482 var i = keys.length;
28483 while (i--) {
28484 origin[keys[i]] = add[keys[i]];
28485 }
28486 return origin;
28487 };
28488
28489 function hasOwnProperty(obj, prop) {
28490 return Object.prototype.hasOwnProperty.call(obj, prop);
28491 }
28492
28493 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28494 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
28495 (function (Buffer){
28496 const createKeccakHash = require('keccak')
28497 const secp256k1 = require('secp256k1')
28498 const assert = require('assert')
28499 const rlp = require('rlp')
28500 const BN = require('bn.js')
28501 const createHash = require('create-hash')
28502 Object.assign(exports, require('ethjs-util'))
28503
28504 /**
28505 * the max integer that this VM can handle (a ```BN```)
28506 * @var {BN} MAX_INTEGER
28507 */
28508 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
28509
28510 /**
28511 * 2^256 (a ```BN```)
28512 * @var {BN} TWO_POW256
28513 */
28514 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
28515
28516 /**
28517 * SHA3-256 hash of null (a ```String```)
28518 * @var {String} SHA3_NULL_S
28519 */
28520 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
28521
28522 /**
28523 * SHA3-256 hash of null (a ```Buffer```)
28524 * @var {Buffer} SHA3_NULL
28525 */
28526 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
28527
28528 /**
28529 * SHA3-256 of an RLP of an empty array (a ```String```)
28530 * @var {String} SHA3_RLP_ARRAY_S
28531 */
28532 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
28533
28534 /**
28535 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
28536 * @var {Buffer} SHA3_RLP_ARRAY
28537 */
28538 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
28539
28540 /**
28541 * SHA3-256 hash of the RLP of null (a ```String```)
28542 * @var {String} SHA3_RLP_S
28543 */
28544 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
28545
28546 /**
28547 * SHA3-256 hash of the RLP of null (a ```Buffer```)
28548 * @var {Buffer} SHA3_RLP
28549 */
28550 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
28551
28552 /**
28553 * [`BN`](https://github.com/indutny/bn.js)
28554 * @var {Function}
28555 */
28556 exports.BN = BN
28557
28558 /**
28559 * [`rlp`](https://github.com/ethereumjs/rlp)
28560 * @var {Function}
28561 */
28562 exports.rlp = rlp
28563
28564 /**
28565 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
28566 * @var {Object}
28567 */
28568 exports.secp256k1 = secp256k1
28569
28570 /**
28571 * Returns a buffer filled with 0s
28572 * @method zeros
28573 * @param {Number} bytes the number of bytes the buffer should be
28574 * @return {Buffer}
28575 */
28576 exports.zeros = function (bytes) {
28577 return Buffer.allocUnsafe(bytes).fill(0)
28578 }
28579
28580 /**
28581 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28582 * Or it truncates the beginning if it exceeds.
28583 * @method lsetLength
28584 * @param {Buffer|Array} msg the value to pad
28585 * @param {Number} length the number of bytes the output should be
28586 * @param {Boolean} [right=false] whether to start padding form the left or right
28587 * @return {Buffer|Array}
28588 */
28589 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
28590 var buf = exports.zeros(length)
28591 msg = exports.toBuffer(msg)
28592 if (right) {
28593 if (msg.length < length) {
28594 msg.copy(buf)
28595 return buf
28596 }
28597 return msg.slice(0, length)
28598 } else {
28599 if (msg.length < length) {
28600 msg.copy(buf, length - msg.length)
28601 return buf
28602 }
28603 return msg.slice(-length)
28604 }
28605 }
28606
28607 /**
28608 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28609 * Or it truncates the beginning if it exceeds.
28610 * @param {Buffer|Array} msg the value to pad
28611 * @param {Number} length the number of bytes the output should be
28612 * @return {Buffer|Array}
28613 */
28614 exports.setLengthRight = function (msg, length) {
28615 return exports.setLength(msg, length, true)
28616 }
28617
28618 /**
28619 * Trims leading zeros from a `Buffer` or an `Array`
28620 * @param {Buffer|Array|String} a
28621 * @return {Buffer|Array|String}
28622 */
28623 exports.unpad = exports.stripZeros = function (a) {
28624 a = exports.stripHexPrefix(a)
28625 var first = a[0]
28626 while (a.length > 0 && first.toString() === '0') {
28627 a = a.slice(1)
28628 first = a[0]
28629 }
28630 return a
28631 }
28632 /**
28633 * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.
28634 * @param {*} v the value
28635 */
28636 exports.toBuffer = function (v) {
28637 if (!Buffer.isBuffer(v)) {
28638 if (Array.isArray(v)) {
28639 v = Buffer.from(v)
28640 } else if (typeof v === 'string') {
28641 if (exports.isHexPrefixed(v)) {
28642 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
28643 } else {
28644 v = Buffer.from(v)
28645 }
28646 } else if (typeof v === 'number') {
28647 v = exports.intToBuffer(v)
28648 } else if (v === null || v === undefined) {
28649 v = Buffer.allocUnsafe(0)
28650 } else if (v.toArray) {
28651 // converts a BN to a Buffer
28652 v = Buffer.from(v.toArray())
28653 } else {
28654 throw new Error('invalid type')
28655 }
28656 }
28657 return v
28658 }
28659
28660 /**
28661 * Converts a `Buffer` to a `Number`
28662 * @param {Buffer} buf
28663 * @return {Number}
28664 * @throws If the input number exceeds 53 bits.
28665 */
28666 exports.bufferToInt = function (buf) {
28667 return new BN(exports.toBuffer(buf)).toNumber()
28668 }
28669
28670 /**
28671 * Converts a `Buffer` into a hex `String`
28672 * @param {Buffer} buf
28673 * @return {String}
28674 */
28675 exports.bufferToHex = function (buf) {
28676 buf = exports.toBuffer(buf)
28677 return '0x' + buf.toString('hex')
28678 }
28679
28680 /**
28681 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
28682 * @param {Buffer} num
28683 * @return {BN}
28684 */
28685 exports.fromSigned = function (num) {
28686 return new BN(num).fromTwos(256)
28687 }
28688
28689 /**
28690 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
28691 * @param {BN} num
28692 * @return {Buffer}
28693 */
28694 exports.toUnsigned = function (num) {
28695 return Buffer.from(num.toTwos(256).toArray())
28696 }
28697
28698 /**
28699 * Creates SHA-3 hash of the input
28700 * @param {Buffer|Array|String|Number} a the input data
28701 * @param {Number} [bits=256] the SHA width
28702 * @return {Buffer}
28703 */
28704 exports.sha3 = function (a, bits) {
28705 a = exports.toBuffer(a)
28706 if (!bits) bits = 256
28707
28708 return createKeccakHash('keccak' + bits).update(a).digest()
28709 }
28710
28711 /**
28712 * Creates SHA256 hash of the input
28713 * @param {Buffer|Array|String|Number} a the input data
28714 * @return {Buffer}
28715 */
28716 exports.sha256 = function (a) {
28717 a = exports.toBuffer(a)
28718 return createHash('sha256').update(a).digest()
28719 }
28720
28721 /**
28722 * Creates RIPEMD160 hash of the input
28723 * @param {Buffer|Array|String|Number} a the input data
28724 * @param {Boolean} padded whether it should be padded to 256 bits or not
28725 * @return {Buffer}
28726 */
28727 exports.ripemd160 = function (a, padded) {
28728 a = exports.toBuffer(a)
28729 var hash = createHash('rmd160').update(a).digest()
28730 if (padded === true) {
28731 return exports.setLength(hash, 32)
28732 } else {
28733 return hash
28734 }
28735 }
28736
28737 /**
28738 * Creates SHA-3 hash of the RLP encoded version of the input
28739 * @param {Buffer|Array|String|Number} a the input data
28740 * @return {Buffer}
28741 */
28742 exports.rlphash = function (a) {
28743 return exports.sha3(rlp.encode(a))
28744 }
28745
28746 /**
28747 * Checks if the private key satisfies the rules of the curve secp256k1.
28748 * @param {Buffer} privateKey
28749 * @return {Boolean}
28750 */
28751 exports.isValidPrivate = function (privateKey) {
28752 return secp256k1.privateKeyVerify(privateKey)
28753 }
28754
28755 /**
28756 * Checks if the public key satisfies the rules of the curve secp256k1
28757 * and the requirements of Ethereum.
28758 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
28759 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28760 * @return {Boolean}
28761 */
28762 exports.isValidPublic = function (publicKey, sanitize) {
28763 if (publicKey.length === 64) {
28764 // Convert to SEC1 for secp256k1
28765 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
28766 }
28767
28768 if (!sanitize) {
28769 return false
28770 }
28771
28772 return secp256k1.publicKeyVerify(publicKey)
28773 }
28774
28775 /**
28776 * Returns the ethereum address of a given public key.
28777 * Accepts "Ethereum public keys" and SEC1 encoded keys.
28778 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
28779 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28780 * @return {Buffer}
28781 */
28782 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
28783 pubKey = exports.toBuffer(pubKey)
28784 if (sanitize && (pubKey.length !== 64)) {
28785 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
28786 }
28787 assert(pubKey.length === 64)
28788 // Only take the lower 160bits of the hash
28789 return exports.sha3(pubKey).slice(-20)
28790 }
28791
28792 /**
28793 * Returns the ethereum public key of a given private key
28794 * @param {Buffer} privateKey A private key must be 256 bits wide
28795 * @return {Buffer}
28796 */
28797 var privateToPublic = exports.privateToPublic = function (privateKey) {
28798 privateKey = exports.toBuffer(privateKey)
28799 // skip the type flag and use the X, Y points
28800 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
28801 }
28802
28803 /**
28804 * Converts a public key to the Ethereum format.
28805 * @param {Buffer} publicKey
28806 * @return {Buffer}
28807 */
28808 exports.importPublic = function (publicKey) {
28809 publicKey = exports.toBuffer(publicKey)
28810 if (publicKey.length !== 64) {
28811 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
28812 }
28813 return publicKey
28814 }
28815
28816 /**
28817 * ECDSA sign
28818 * @param {Buffer} msgHash
28819 * @param {Buffer} privateKey
28820 * @return {Object}
28821 */
28822 exports.ecsign = function (msgHash, privateKey) {
28823 var sig = secp256k1.sign(msgHash, privateKey)
28824
28825 var ret = {}
28826 ret.r = sig.signature.slice(0, 32)
28827 ret.s = sig.signature.slice(32, 64)
28828 ret.v = sig.recovery + 27
28829 return ret
28830 }
28831
28832 /**
28833 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
28834 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
28835 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
28836 * used to produce the signature.
28837 * @param message
28838 * @returns {Buffer} hash
28839 */
28840 exports.hashPersonalMessage = function (message) {
28841 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
28842 return exports.sha3(Buffer.concat([prefix, message]))
28843 }
28844
28845 /**
28846 * ECDSA public key recovery from signature
28847 * @param {Buffer} msgHash
28848 * @param {Number} v
28849 * @param {Buffer} r
28850 * @param {Buffer} s
28851 * @return {Buffer} publicKey
28852 */
28853 exports.ecrecover = function (msgHash, v, r, s) {
28854 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
28855 var recovery = v - 27
28856 if (recovery !== 0 && recovery !== 1) {
28857 throw new Error('Invalid signature v value')
28858 }
28859 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
28860 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
28861 }
28862
28863 /**
28864 * Convert signature parameters into the format of `eth_sign` RPC method
28865 * @param {Number} v
28866 * @param {Buffer} r
28867 * @param {Buffer} s
28868 * @return {String} sig
28869 */
28870 exports.toRpcSig = function (v, r, s) {
28871 // NOTE: with potential introduction of chainId this might need to be updated
28872 if (v !== 27 && v !== 28) {
28873 throw new Error('Invalid recovery id')
28874 }
28875
28876 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
28877 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
28878 return exports.bufferToHex(Buffer.concat([
28879 exports.setLengthLeft(r, 32),
28880 exports.setLengthLeft(s, 32),
28881 exports.toBuffer(v - 27)
28882 ]))
28883 }
28884
28885 /**
28886 * Convert signature format of the `eth_sign` RPC method to signature parameters
28887 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
28888 * @param {String} sig
28889 * @return {Object}
28890 */
28891 exports.fromRpcSig = function (sig) {
28892 sig = exports.toBuffer(sig)
28893
28894 // NOTE: with potential introduction of chainId this might need to be updated
28895 if (sig.length !== 65) {
28896 throw new Error('Invalid signature length')
28897 }
28898
28899 var v = sig[64]
28900 // support both versions of `eth_sign` responses
28901 if (v < 27) {
28902 v += 27
28903 }
28904
28905 return {
28906 v: v,
28907 r: sig.slice(0, 32),
28908 s: sig.slice(32, 64)
28909 }
28910 }
28911
28912 /**
28913 * Returns the ethereum address of a given private key
28914 * @param {Buffer} privateKey A private key must be 256 bits wide
28915 * @return {Buffer}
28916 */
28917 exports.privateToAddress = function (privateKey) {
28918 return exports.publicToAddress(privateToPublic(privateKey))
28919 }
28920
28921 /**
28922 * Checks if the address is a valid. Accepts checksummed addresses too
28923 * @param {String} address
28924 * @return {Boolean}
28925 */
28926 exports.isValidAddress = function (address) {
28927 return /^0x[0-9a-fA-F]{40}$/i.test(address)
28928 }
28929
28930 /**
28931 * Returns a checksummed address
28932 * @param {String} address
28933 * @return {String}
28934 */
28935 exports.toChecksumAddress = function (address) {
28936 address = exports.stripHexPrefix(address).toLowerCase()
28937 var hash = exports.sha3(address).toString('hex')
28938 var ret = '0x'
28939
28940 for (var i = 0; i < address.length; i++) {
28941 if (parseInt(hash[i], 16) >= 8) {
28942 ret += address[i].toUpperCase()
28943 } else {
28944 ret += address[i]
28945 }
28946 }
28947
28948 return ret
28949 }
28950
28951 /**
28952 * Checks if the address is a valid checksummed address
28953 * @param {Buffer} address
28954 * @return {Boolean}
28955 */
28956 exports.isValidChecksumAddress = function (address) {
28957 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
28958 }
28959
28960 /**
28961 * Generates an address of a newly created contract
28962 * @param {Buffer} from the address which is creating this new address
28963 * @param {Buffer} nonce the nonce of the from account
28964 * @return {Buffer}
28965 */
28966 exports.generateAddress = function (from, nonce) {
28967 from = exports.toBuffer(from)
28968 nonce = new BN(nonce)
28969
28970 if (nonce.isZero()) {
28971 // in RLP we want to encode null in the case of zero nonce
28972 // read the RLP documentation for an answer if you dare
28973 nonce = null
28974 } else {
28975 nonce = Buffer.from(nonce.toArray())
28976 }
28977
28978 // Only take the lower 160bits of the hash
28979 return exports.rlphash([from, nonce]).slice(-20)
28980 }
28981
28982 /**
28983 * Returns true if the supplied address belongs to a precompiled account
28984 * @param {Buffer|String} address
28985 * @return {Boolean}
28986 */
28987 exports.isPrecompiled = function (address) {
28988 var a = exports.unpad(address)
28989 return a.length === 1 && a[0] > 0 && a[0] < 5
28990 }
28991
28992 /**
28993 * Adds "0x" to a given `String` if it does not already start with "0x"
28994 * @param {String} str
28995 * @return {String}
28996 */
28997 exports.addHexPrefix = function (str) {
28998 if (typeof str !== 'string') {
28999 return str
29000 }
29001
29002 return exports.isHexPrefixed(str) ? str : '0x' + str
29003 }
29004
29005 /**
29006 * Validate ECDSA signature
29007 * @method isValidSignature
29008 * @param {Buffer} v
29009 * @param {Buffer} r
29010 * @param {Buffer} s
29011 * @param {Boolean} [homestead=true]
29012 * @return {Boolean}
29013 */
29014
29015 exports.isValidSignature = function (v, r, s, homestead) {
29016 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
29017 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
29018
29019 if (r.length !== 32 || s.length !== 32) {
29020 return false
29021 }
29022
29023 if (v !== 27 && v !== 28) {
29024 return false
29025 }
29026
29027 r = new BN(r)
29028 s = new BN(s)
29029
29030 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
29031 return false
29032 }
29033
29034 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
29035 return false
29036 }
29037
29038 return true
29039 }
29040
29041 /**
29042 * Converts a `Buffer` or `Array` to JSON
29043 * @param {Buffer|Array} ba
29044 * @return {Array|String|null}
29045 */
29046 exports.baToJSON = function (ba) {
29047 if (Buffer.isBuffer(ba)) {
29048 return '0x' + ba.toString('hex')
29049 } else if (ba instanceof Array) {
29050 var array = []
29051 for (var i = 0; i < ba.length; i++) {
29052 array.push(exports.baToJSON(ba[i]))
29053 }
29054 return array
29055 }
29056 }
29057
29058 /**
29059 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
29060 * @param {Object} self the `Object` to define properties on
29061 * @param {Array} fields an array fields to define. Fields can contain:
29062 * * `name` - the name of the properties
29063 * * `length` - the number of bytes the field can have
29064 * * `allowLess` - if the field can be less than the length
29065 * * `allowEmpty`
29066 * @param {*} data data to be validated against the definitions
29067 */
29068 exports.defineProperties = function (self, fields, data) {
29069 self.raw = []
29070 self._fields = []
29071
29072 // attach the `toJSON`
29073 self.toJSON = function (label) {
29074 if (label) {
29075 var obj = {}
29076 self._fields.forEach(function (field) {
29077 obj[field] = '0x' + self[field].toString('hex')
29078 })
29079 return obj
29080 }
29081 return exports.baToJSON(this.raw)
29082 }
29083
29084 self.serialize = function serialize () {
29085 return rlp.encode(self.raw)
29086 }
29087
29088 fields.forEach(function (field, i) {
29089 self._fields.push(field.name)
29090 function getter () {
29091 return self.raw[i]
29092 }
29093 function setter (v) {
29094 v = exports.toBuffer(v)
29095
29096 if (v.toString('hex') === '00' && !field.allowZero) {
29097 v = Buffer.allocUnsafe(0)
29098 }
29099
29100 if (field.allowLess && field.length) {
29101 v = exports.stripZeros(v)
29102 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
29103 } else if (!(field.allowZero && v.length === 0) && field.length) {
29104 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
29105 }
29106
29107 self.raw[i] = v
29108 }
29109
29110 Object.defineProperty(self, field.name, {
29111 enumerable: true,
29112 configurable: true,
29113 get: getter,
29114 set: setter
29115 })
29116
29117 if (field.default) {
29118 self[field.name] = field.default
29119 }
29120
29121 // attach alias
29122 if (field.alias) {
29123 Object.defineProperty(self, field.alias, {
29124 enumerable: false,
29125 configurable: true,
29126 set: setter,
29127 get: getter
29128 })
29129 }
29130 })
29131
29132 // if the constuctor is passed data
29133 if (data) {
29134 if (typeof data === 'string') {
29135 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
29136 }
29137
29138 if (Buffer.isBuffer(data)) {
29139 data = rlp.decode(data)
29140 }
29141
29142 if (Array.isArray(data)) {
29143 if (data.length > self._fields.length) {
29144 throw (new Error('wrong number of fields in data'))
29145 }
29146
29147 // make sure all the items are buffers
29148 data.forEach(function (d, i) {
29149 self[self._fields[i]] = exports.toBuffer(d)
29150 })
29151 } else if (typeof data === 'object') {
29152 const keys = Object.keys(data)
29153 fields.forEach(function (field) {
29154 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
29155 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
29156 })
29157 } else {
29158 throw new Error('invalid data')
29159 }
29160 }
29161 }
29162
29163 }).call(this,require("buffer").Buffer)
29164 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
29165 (function (Buffer){
29166 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
29167 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29168 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
29169
29170 function check (buffer) {
29171 if (buffer.length < 8) return false
29172 if (buffer.length > 72) return false
29173 if (buffer[0] !== 0x30) return false
29174 if (buffer[1] !== buffer.length - 2) return false
29175 if (buffer[2] !== 0x02) return false
29176
29177 var lenR = buffer[3]
29178 if (lenR === 0) return false
29179 if (5 + lenR >= buffer.length) return false
29180 if (buffer[4 + lenR] !== 0x02) return false
29181
29182 var lenS = buffer[5 + lenR]
29183 if (lenS === 0) return false
29184 if ((6 + lenR + lenS) !== buffer.length) return false
29185
29186 if (buffer[4] & 0x80) return false
29187 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
29188
29189 if (buffer[lenR + 6] & 0x80) return false
29190 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
29191 return true
29192 }
29193
29194 function decode (buffer) {
29195 if (buffer.length < 8) throw new Error('DER sequence length is too short')
29196 if (buffer.length > 72) throw new Error('DER sequence length is too long')
29197 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
29198 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
29199 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
29200
29201 var lenR = buffer[3]
29202 if (lenR === 0) throw new Error('R length is zero')
29203 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
29204 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
29205
29206 var lenS = buffer[5 + lenR]
29207 if (lenS === 0) throw new Error('S length is zero')
29208 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
29209
29210 if (buffer[4] & 0x80) throw new Error('R value is negative')
29211 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
29212
29213 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
29214 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
29215
29216 // non-BIP66 - extract R, S values
29217 return {
29218 r: buffer.slice(4, 4 + lenR),
29219 s: buffer.slice(6 + lenR)
29220 }
29221 }
29222
29223 /*
29224 * Expects r and s to be positive DER integers.
29225 *
29226 * The DER format uses the most significant bit as a sign bit (& 0x80).
29227 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
29228 *
29229 * Examples:
29230 *
29231 * 0 => 0x00
29232 * 1 => 0x01
29233 * -1 => 0xff
29234 * 127 => 0x7f
29235 * -127 => 0x81
29236 * 128 => 0x0080
29237 * -128 => 0x80
29238 * 255 => 0x00ff
29239 * -255 => 0xff01
29240 * 16300 => 0x3fac
29241 * -16300 => 0xc054
29242 * 62300 => 0x00f35c
29243 * -62300 => 0xff0ca4
29244 */
29245 function encode (r, s) {
29246 var lenR = r.length
29247 var lenS = s.length
29248 if (lenR === 0) throw new Error('R length is zero')
29249 if (lenS === 0) throw new Error('S length is zero')
29250 if (lenR > 33) throw new Error('R length is too long')
29251 if (lenS > 33) throw new Error('S length is too long')
29252 if (r[0] & 0x80) throw new Error('R value is negative')
29253 if (s[0] & 0x80) throw new Error('S value is negative')
29254 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
29255 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
29256
29257 var signature = new Buffer(6 + lenR + lenS)
29258
29259 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29260 signature[0] = 0x30
29261 signature[1] = signature.length - 2
29262 signature[2] = 0x02
29263 signature[3] = r.length
29264 r.copy(signature, 4)
29265 signature[4 + lenR] = 0x02
29266 signature[5 + lenR] = s.length
29267 s.copy(signature, 6 + lenR)
29268
29269 return signature
29270 }
29271
29272 module.exports = {
29273 check: check,
29274 decode: decode,
29275 encode: encode
29276 }
29277
29278 }).call(this,require("buffer").Buffer)
29279 },{"buffer":5}],33:[function(require,module,exports){
29280 (function (module, exports) {
29281 'use strict';
29282
29283 // Utils
29284 function assert (val, msg) {
29285 if (!val) throw new Error(msg || 'Assertion failed');
29286 }
29287
29288 // Could use `inherits` module, but don't want to move from single file
29289 // architecture yet.
29290 function inherits (ctor, superCtor) {
29291 ctor.super_ = superCtor;
29292 var TempCtor = function () {};
29293 TempCtor.prototype = superCtor.prototype;
29294 ctor.prototype = new TempCtor();
29295 ctor.prototype.constructor = ctor;
29296 }
29297
29298 // BN
29299
29300 function BN (number, base, endian) {
29301 if (BN.isBN(number)) {
29302 return number;
29303 }
29304
29305 this.negative = 0;
29306 this.words = null;
29307 this.length = 0;
29308
29309 // Reduction context
29310 this.red = null;
29311
29312 if (number !== null) {
29313 if (base === 'le' || base === 'be') {
29314 endian = base;
29315 base = 10;
29316 }
29317
29318 this._init(number || 0, base || 10, endian || 'be');
29319 }
29320 }
29321 if (typeof module === 'object') {
29322 module.exports = BN;
29323 } else {
29324 exports.BN = BN;
29325 }
29326
29327 BN.BN = BN;
29328 BN.wordSize = 26;
29329
29330 var Buffer;
29331 try {
29332 Buffer = require('buf' + 'fer').Buffer;
29333 } catch (e) {
29334 }
29335
29336 BN.isBN = function isBN (num) {
29337 if (num instanceof BN) {
29338 return true;
29339 }
29340
29341 return num !== null && typeof num === 'object' &&
29342 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
29343 };
29344
29345 BN.max = function max (left, right) {
29346 if (left.cmp(right) > 0) return left;
29347 return right;
29348 };
29349
29350 BN.min = function min (left, right) {
29351 if (left.cmp(right) < 0) return left;
29352 return right;
29353 };
29354
29355 BN.prototype._init = function init (number, base, endian) {
29356 if (typeof number === 'number') {
29357 return this._initNumber(number, base, endian);
29358 }
29359
29360 if (typeof number === 'object') {
29361 return this._initArray(number, base, endian);
29362 }
29363
29364 if (base === 'hex') {
29365 base = 16;
29366 }
29367 assert(base === (base | 0) && base >= 2 && base <= 36);
29368
29369 number = number.toString().replace(/\s+/g, '');
29370 var start = 0;
29371 if (number[0] === '-') {
29372 start++;
29373 }
29374
29375 if (base === 16) {
29376 this._parseHex(number, start);
29377 } else {
29378 this._parseBase(number, base, start);
29379 }
29380
29381 if (number[0] === '-') {
29382 this.negative = 1;
29383 }
29384
29385 this.strip();
29386
29387 if (endian !== 'le') return;
29388
29389 this._initArray(this.toArray(), base, endian);
29390 };
29391
29392 BN.prototype._initNumber = function _initNumber (number, base, endian) {
29393 if (number < 0) {
29394 this.negative = 1;
29395 number = -number;
29396 }
29397 if (number < 0x4000000) {
29398 this.words = [ number & 0x3ffffff ];
29399 this.length = 1;
29400 } else if (number < 0x10000000000000) {
29401 this.words = [
29402 number & 0x3ffffff,
29403 (number / 0x4000000) & 0x3ffffff
29404 ];
29405 this.length = 2;
29406 } else {
29407 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
29408 this.words = [
29409 number & 0x3ffffff,
29410 (number / 0x4000000) & 0x3ffffff,
29411 1
29412 ];
29413 this.length = 3;
29414 }
29415
29416 if (endian !== 'le') return;
29417
29418 // Reverse the bytes
29419 this._initArray(this.toArray(), base, endian);
29420 };
29421
29422 BN.prototype._initArray = function _initArray (number, base, endian) {
29423 // Perhaps a Uint8Array
29424 assert(typeof number.length === 'number');
29425 if (number.length <= 0) {
29426 this.words = [ 0 ];
29427 this.length = 1;
29428 return this;
29429 }
29430
29431 this.length = Math.ceil(number.length / 3);
29432 this.words = new Array(this.length);
29433 for (var i = 0; i < this.length; i++) {
29434 this.words[i] = 0;
29435 }
29436
29437 var j, w;
29438 var off = 0;
29439 if (endian === 'be') {
29440 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
29441 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
29442 this.words[j] |= (w << off) & 0x3ffffff;
29443 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29444 off += 24;
29445 if (off >= 26) {
29446 off -= 26;
29447 j++;
29448 }
29449 }
29450 } else if (endian === 'le') {
29451 for (i = 0, j = 0; i < number.length; i += 3) {
29452 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
29453 this.words[j] |= (w << off) & 0x3ffffff;
29454 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29455 off += 24;
29456 if (off >= 26) {
29457 off -= 26;
29458 j++;
29459 }
29460 }
29461 }
29462 return this.strip();
29463 };
29464
29465 function parseHex (str, start, end) {
29466 var r = 0;
29467 var len = Math.min(str.length, end);
29468 for (var i = start; i < len; i++) {
29469 var c = str.charCodeAt(i) - 48;
29470
29471 r <<= 4;
29472
29473 // 'a' - 'f'
29474 if (c >= 49 && c <= 54) {
29475 r |= c - 49 + 0xa;
29476
29477 // 'A' - 'F'
29478 } else if (c >= 17 && c <= 22) {
29479 r |= c - 17 + 0xa;
29480
29481 // '0' - '9'
29482 } else {
29483 r |= c & 0xf;
29484 }
29485 }
29486 return r;
29487 }
29488
29489 BN.prototype._parseHex = function _parseHex (number, start) {
29490 // Create possibly bigger array to ensure that it fits the number
29491 this.length = Math.ceil((number.length - start) / 6);
29492 this.words = new Array(this.length);
29493 for (var i = 0; i < this.length; i++) {
29494 this.words[i] = 0;
29495 }
29496
29497 var j, w;
29498 // Scan 24-bit chunks and add them to the number
29499 var off = 0;
29500 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
29501 w = parseHex(number, i, i + 6);
29502 this.words[j] |= (w << off) & 0x3ffffff;
29503 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
29504 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29505 off += 24;
29506 if (off >= 26) {
29507 off -= 26;
29508 j++;
29509 }
29510 }
29511 if (i + 6 !== start) {
29512 w = parseHex(number, start, i + 6);
29513 this.words[j] |= (w << off) & 0x3ffffff;
29514 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29515 }
29516 this.strip();
29517 };
29518
29519 function parseBase (str, start, end, mul) {
29520 var r = 0;
29521 var len = Math.min(str.length, end);
29522 for (var i = start; i < len; i++) {
29523 var c = str.charCodeAt(i) - 48;
29524
29525 r *= mul;
29526
29527 // 'a'
29528 if (c >= 49) {
29529 r += c - 49 + 0xa;
29530
29531 // 'A'
29532 } else if (c >= 17) {
29533 r += c - 17 + 0xa;
29534
29535 // '0' - '9'
29536 } else {
29537 r += c;
29538 }
29539 }
29540 return r;
29541 }
29542
29543 BN.prototype._parseBase = function _parseBase (number, base, start) {
29544 // Initialize as zero
29545 this.words = [ 0 ];
29546 this.length = 1;
29547
29548 // Find length of limb in base
29549 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
29550 limbLen++;
29551 }
29552 limbLen--;
29553 limbPow = (limbPow / base) | 0;
29554
29555 var total = number.length - start;
29556 var mod = total % limbLen;
29557 var end = Math.min(total, total - mod) + start;
29558
29559 var word = 0;
29560 for (var i = start; i < end; i += limbLen) {
29561 word = parseBase(number, i, i + limbLen, base);
29562
29563 this.imuln(limbPow);
29564 if (this.words[0] + word < 0x4000000) {
29565 this.words[0] += word;
29566 } else {
29567 this._iaddn(word);
29568 }
29569 }
29570
29571 if (mod !== 0) {
29572 var pow = 1;
29573 word = parseBase(number, i, number.length, base);
29574
29575 for (i = 0; i < mod; i++) {
29576 pow *= base;
29577 }
29578
29579 this.imuln(pow);
29580 if (this.words[0] + word < 0x4000000) {
29581 this.words[0] += word;
29582 } else {
29583 this._iaddn(word);
29584 }
29585 }
29586 };
29587
29588 BN.prototype.copy = function copy (dest) {
29589 dest.words = new Array(this.length);
29590 for (var i = 0; i < this.length; i++) {
29591 dest.words[i] = this.words[i];
29592 }
29593 dest.length = this.length;
29594 dest.negative = this.negative;
29595 dest.red = this.red;
29596 };
29597
29598 BN.prototype.clone = function clone () {
29599 var r = new BN(null);
29600 this.copy(r);
29601 return r;
29602 };
29603
29604 BN.prototype._expand = function _expand (size) {
29605 while (this.length < size) {
29606 this.words[this.length++] = 0;
29607 }
29608 return this;
29609 };
29610
29611 // Remove leading `0` from `this`
29612 BN.prototype.strip = function strip () {
29613 while (this.length > 1 && this.words[this.length - 1] === 0) {
29614 this.length--;
29615 }
29616 return this._normSign();
29617 };
29618
29619 BN.prototype._normSign = function _normSign () {
29620 // -0 = 0
29621 if (this.length === 1 && this.words[0] === 0) {
29622 this.negative = 0;
29623 }
29624 return this;
29625 };
29626
29627 BN.prototype.inspect = function inspect () {
29628 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
29629 };
29630
29631 /*
29632
29633 var zeros = [];
29634 var groupSizes = [];
29635 var groupBases = [];
29636
29637 var s = '';
29638 var i = -1;
29639 while (++i < BN.wordSize) {
29640 zeros[i] = s;
29641 s += '0';
29642 }
29643 groupSizes[0] = 0;
29644 groupSizes[1] = 0;
29645 groupBases[0] = 0;
29646 groupBases[1] = 0;
29647 var base = 2 - 1;
29648 while (++base < 36 + 1) {
29649 var groupSize = 0;
29650 var groupBase = 1;
29651 while (groupBase < (1 << BN.wordSize) / base) {
29652 groupBase *= base;
29653 groupSize += 1;
29654 }
29655 groupSizes[base] = groupSize;
29656 groupBases[base] = groupBase;
29657 }
29658
29659 */
29660
29661 var zeros = [
29662 '',
29663 '0',
29664 '00',
29665 '000',
29666 '0000',
29667 '00000',
29668 '000000',
29669 '0000000',
29670 '00000000',
29671 '000000000',
29672 '0000000000',
29673 '00000000000',
29674 '000000000000',
29675 '0000000000000',
29676 '00000000000000',
29677 '000000000000000',
29678 '0000000000000000',
29679 '00000000000000000',
29680 '000000000000000000',
29681 '0000000000000000000',
29682 '00000000000000000000',
29683 '000000000000000000000',
29684 '0000000000000000000000',
29685 '00000000000000000000000',
29686 '000000000000000000000000',
29687 '0000000000000000000000000'
29688 ];
29689
29690 var groupSizes = [
29691 0, 0,
29692 25, 16, 12, 11, 10, 9, 8,
29693 8, 7, 7, 7, 7, 6, 6,
29694 6, 6, 6, 6, 6, 5, 5,
29695 5, 5, 5, 5, 5, 5, 5,
29696 5, 5, 5, 5, 5, 5, 5
29697 ];
29698
29699 var groupBases = [
29700 0, 0,
29701 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
29702 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
29703 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
29704 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
29705 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
29706 ];
29707
29708 BN.prototype.toString = function toString (base, padding) {
29709 base = base || 10;
29710 padding = padding | 0 || 1;
29711
29712 var out;
29713 if (base === 16 || base === 'hex') {
29714 out = '';
29715 var off = 0;
29716 var carry = 0;
29717 for (var i = 0; i < this.length; i++) {
29718 var w = this.words[i];
29719 var word = (((w << off) | carry) & 0xffffff).toString(16);
29720 carry = (w >>> (24 - off)) & 0xffffff;
29721 if (carry !== 0 || i !== this.length - 1) {
29722 out = zeros[6 - word.length] + word + out;
29723 } else {
29724 out = word + out;
29725 }
29726 off += 2;
29727 if (off >= 26) {
29728 off -= 26;
29729 i--;
29730 }
29731 }
29732 if (carry !== 0) {
29733 out = carry.toString(16) + out;
29734 }
29735 while (out.length % padding !== 0) {
29736 out = '0' + out;
29737 }
29738 if (this.negative !== 0) {
29739 out = '-' + out;
29740 }
29741 return out;
29742 }
29743
29744 if (base === (base | 0) && base >= 2 && base <= 36) {
29745 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
29746 var groupSize = groupSizes[base];
29747 // var groupBase = Math.pow(base, groupSize);
29748 var groupBase = groupBases[base];
29749 out = '';
29750 var c = this.clone();
29751 c.negative = 0;
29752 while (!c.isZero()) {
29753 var r = c.modn(groupBase).toString(base);
29754 c = c.idivn(groupBase);
29755
29756 if (!c.isZero()) {
29757 out = zeros[groupSize - r.length] + r + out;
29758 } else {
29759 out = r + out;
29760 }
29761 }
29762 if (this.isZero()) {
29763 out = '0' + out;
29764 }
29765 while (out.length % padding !== 0) {
29766 out = '0' + out;
29767 }
29768 if (this.negative !== 0) {
29769 out = '-' + out;
29770 }
29771 return out;
29772 }
29773
29774 assert(false, 'Base should be between 2 and 36');
29775 };
29776
29777 BN.prototype.toNumber = function toNumber () {
29778 var ret = this.words[0];
29779 if (this.length === 2) {
29780 ret += this.words[1] * 0x4000000;
29781 } else if (this.length === 3 && this.words[2] === 0x01) {
29782 // NOTE: at this stage it is known that the top bit is set
29783 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
29784 } else if (this.length > 2) {
29785 assert(false, 'Number can only safely store up to 53 bits');
29786 }
29787 return (this.negative !== 0) ? -ret : ret;
29788 };
29789
29790 BN.prototype.toJSON = function toJSON () {
29791 return this.toString(16);
29792 };
29793
29794 BN.prototype.toBuffer = function toBuffer (endian, length) {
29795 assert(typeof Buffer !== 'undefined');
29796 return this.toArrayLike(Buffer, endian, length);
29797 };
29798
29799 BN.prototype.toArray = function toArray (endian, length) {
29800 return this.toArrayLike(Array, endian, length);
29801 };
29802
29803 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
29804 var byteLength = this.byteLength();
29805 var reqLength = length || Math.max(1, byteLength);
29806 assert(byteLength <= reqLength, 'byte array longer than desired length');
29807 assert(reqLength > 0, 'Requested array length <= 0');
29808
29809 this.strip();
29810 var littleEndian = endian === 'le';
29811 var res = new ArrayType(reqLength);
29812
29813 var b, i;
29814 var q = this.clone();
29815 if (!littleEndian) {
29816 // Assume big-endian
29817 for (i = 0; i < reqLength - byteLength; i++) {
29818 res[i] = 0;
29819 }
29820
29821 for (i = 0; !q.isZero(); i++) {
29822 b = q.andln(0xff);
29823 q.iushrn(8);
29824
29825 res[reqLength - i - 1] = b;
29826 }
29827 } else {
29828 for (i = 0; !q.isZero(); i++) {
29829 b = q.andln(0xff);
29830 q.iushrn(8);
29831
29832 res[i] = b;
29833 }
29834
29835 for (; i < reqLength; i++) {
29836 res[i] = 0;
29837 }
29838 }
29839
29840 return res;
29841 };
29842
29843 if (Math.clz32) {
29844 BN.prototype._countBits = function _countBits (w) {
29845 return 32 - Math.clz32(w);
29846 };
29847 } else {
29848 BN.prototype._countBits = function _countBits (w) {
29849 var t = w;
29850 var r = 0;
29851 if (t >= 0x1000) {
29852 r += 13;
29853 t >>>= 13;
29854 }
29855 if (t >= 0x40) {
29856 r += 7;
29857 t >>>= 7;
29858 }
29859 if (t >= 0x8) {
29860 r += 4;
29861 t >>>= 4;
29862 }
29863 if (t >= 0x02) {
29864 r += 2;
29865 t >>>= 2;
29866 }
29867 return r + t;
29868 };
29869 }
29870
29871 BN.prototype._zeroBits = function _zeroBits (w) {
29872 // Short-cut
29873 if (w === 0) return 26;
29874
29875 var t = w;
29876 var r = 0;
29877 if ((t & 0x1fff) === 0) {
29878 r += 13;
29879 t >>>= 13;
29880 }
29881 if ((t & 0x7f) === 0) {
29882 r += 7;
29883 t >>>= 7;
29884 }
29885 if ((t & 0xf) === 0) {
29886 r += 4;
29887 t >>>= 4;
29888 }
29889 if ((t & 0x3) === 0) {
29890 r += 2;
29891 t >>>= 2;
29892 }
29893 if ((t & 0x1) === 0) {
29894 r++;
29895 }
29896 return r;
29897 };
29898
29899 // Return number of used bits in a BN
29900 BN.prototype.bitLength = function bitLength () {
29901 var w = this.words[this.length - 1];
29902 var hi = this._countBits(w);
29903 return (this.length - 1) * 26 + hi;
29904 };
29905
29906 function toBitArray (num) {
29907 var w = new Array(num.bitLength());
29908
29909 for (var bit = 0; bit < w.length; bit++) {
29910 var off = (bit / 26) | 0;
29911 var wbit = bit % 26;
29912
29913 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
29914 }
29915
29916 return w;
29917 }
29918
29919 // Number of trailing zero bits
29920 BN.prototype.zeroBits = function zeroBits () {
29921 if (this.isZero()) return 0;
29922
29923 var r = 0;
29924 for (var i = 0; i < this.length; i++) {
29925 var b = this._zeroBits(this.words[i]);
29926 r += b;
29927 if (b !== 26) break;
29928 }
29929 return r;
29930 };
29931
29932 BN.prototype.byteLength = function byteLength () {
29933 return Math.ceil(this.bitLength() / 8);
29934 };
29935
29936 BN.prototype.toTwos = function toTwos (width) {
29937 if (this.negative !== 0) {
29938 return this.abs().inotn(width).iaddn(1);
29939 }
29940 return this.clone();
29941 };
29942
29943 BN.prototype.fromTwos = function fromTwos (width) {
29944 if (this.testn(width - 1)) {
29945 return this.notn(width).iaddn(1).ineg();
29946 }
29947 return this.clone();
29948 };
29949
29950 BN.prototype.isNeg = function isNeg () {
29951 return this.negative !== 0;
29952 };
29953
29954 // Return negative clone of `this`
29955 BN.prototype.neg = function neg () {
29956 return this.clone().ineg();
29957 };
29958
29959 BN.prototype.ineg = function ineg () {
29960 if (!this.isZero()) {
29961 this.negative ^= 1;
29962 }
29963
29964 return this;
29965 };
29966
29967 // Or `num` with `this` in-place
29968 BN.prototype.iuor = function iuor (num) {
29969 while (this.length < num.length) {
29970 this.words[this.length++] = 0;
29971 }
29972
29973 for (var i = 0; i < num.length; i++) {
29974 this.words[i] = this.words[i] | num.words[i];
29975 }
29976
29977 return this.strip();
29978 };
29979
29980 BN.prototype.ior = function ior (num) {
29981 assert((this.negative | num.negative) === 0);
29982 return this.iuor(num);
29983 };
29984
29985 // Or `num` with `this`
29986 BN.prototype.or = function or (num) {
29987 if (this.length > num.length) return this.clone().ior(num);
29988 return num.clone().ior(this);
29989 };
29990
29991 BN.prototype.uor = function uor (num) {
29992 if (this.length > num.length) return this.clone().iuor(num);
29993 return num.clone().iuor(this);
29994 };
29995
29996 // And `num` with `this` in-place
29997 BN.prototype.iuand = function iuand (num) {
29998 // b = min-length(num, this)
29999 var b;
30000 if (this.length > num.length) {
30001 b = num;
30002 } else {
30003 b = this;
30004 }
30005
30006 for (var i = 0; i < b.length; i++) {
30007 this.words[i] = this.words[i] & num.words[i];
30008 }
30009
30010 this.length = b.length;
30011
30012 return this.strip();
30013 };
30014
30015 BN.prototype.iand = function iand (num) {
30016 assert((this.negative | num.negative) === 0);
30017 return this.iuand(num);
30018 };
30019
30020 // And `num` with `this`
30021 BN.prototype.and = function and (num) {
30022 if (this.length > num.length) return this.clone().iand(num);
30023 return num.clone().iand(this);
30024 };
30025
30026 BN.prototype.uand = function uand (num) {
30027 if (this.length > num.length) return this.clone().iuand(num);
30028 return num.clone().iuand(this);
30029 };
30030
30031 // Xor `num` with `this` in-place
30032 BN.prototype.iuxor = function iuxor (num) {
30033 // a.length > b.length
30034 var a;
30035 var b;
30036 if (this.length > num.length) {
30037 a = this;
30038 b = num;
30039 } else {
30040 a = num;
30041 b = this;
30042 }
30043
30044 for (var i = 0; i < b.length; i++) {
30045 this.words[i] = a.words[i] ^ b.words[i];
30046 }
30047
30048 if (this !== a) {
30049 for (; i < a.length; i++) {
30050 this.words[i] = a.words[i];
30051 }
30052 }
30053
30054 this.length = a.length;
30055
30056 return this.strip();
30057 };
30058
30059 BN.prototype.ixor = function ixor (num) {
30060 assert((this.negative | num.negative) === 0);
30061 return this.iuxor(num);
30062 };
30063
30064 // Xor `num` with `this`
30065 BN.prototype.xor = function xor (num) {
30066 if (this.length > num.length) return this.clone().ixor(num);
30067 return num.clone().ixor(this);
30068 };
30069
30070 BN.prototype.uxor = function uxor (num) {
30071 if (this.length > num.length) return this.clone().iuxor(num);
30072 return num.clone().iuxor(this);
30073 };
30074
30075 // Not ``this`` with ``width`` bitwidth
30076 BN.prototype.inotn = function inotn (width) {
30077 assert(typeof width === 'number' && width >= 0);
30078
30079 var bytesNeeded = Math.ceil(width / 26) | 0;
30080 var bitsLeft = width % 26;
30081
30082 // Extend the buffer with leading zeroes
30083 this._expand(bytesNeeded);
30084
30085 if (bitsLeft > 0) {
30086 bytesNeeded--;
30087 }
30088
30089 // Handle complete words
30090 for (var i = 0; i < bytesNeeded; i++) {
30091 this.words[i] = ~this.words[i] & 0x3ffffff;
30092 }
30093
30094 // Handle the residue
30095 if (bitsLeft > 0) {
30096 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
30097 }
30098
30099 // And remove leading zeroes
30100 return this.strip();
30101 };
30102
30103 BN.prototype.notn = function notn (width) {
30104 return this.clone().inotn(width);
30105 };
30106
30107 // Set `bit` of `this`
30108 BN.prototype.setn = function setn (bit, val) {
30109 assert(typeof bit === 'number' && bit >= 0);
30110
30111 var off = (bit / 26) | 0;
30112 var wbit = bit % 26;
30113
30114 this._expand(off + 1);
30115
30116 if (val) {
30117 this.words[off] = this.words[off] | (1 << wbit);
30118 } else {
30119 this.words[off] = this.words[off] & ~(1 << wbit);
30120 }
30121
30122 return this.strip();
30123 };
30124
30125 // Add `num` to `this` in-place
30126 BN.prototype.iadd = function iadd (num) {
30127 var r;
30128
30129 // negative + positive
30130 if (this.negative !== 0 && num.negative === 0) {
30131 this.negative = 0;
30132 r = this.isub(num);
30133 this.negative ^= 1;
30134 return this._normSign();
30135
30136 // positive + negative
30137 } else if (this.negative === 0 && num.negative !== 0) {
30138 num.negative = 0;
30139 r = this.isub(num);
30140 num.negative = 1;
30141 return r._normSign();
30142 }
30143
30144 // a.length > b.length
30145 var a, b;
30146 if (this.length > num.length) {
30147 a = this;
30148 b = num;
30149 } else {
30150 a = num;
30151 b = this;
30152 }
30153
30154 var carry = 0;
30155 for (var i = 0; i < b.length; i++) {
30156 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
30157 this.words[i] = r & 0x3ffffff;
30158 carry = r >>> 26;
30159 }
30160 for (; carry !== 0 && i < a.length; i++) {
30161 r = (a.words[i] | 0) + carry;
30162 this.words[i] = r & 0x3ffffff;
30163 carry = r >>> 26;
30164 }
30165
30166 this.length = a.length;
30167 if (carry !== 0) {
30168 this.words[this.length] = carry;
30169 this.length++;
30170 // Copy the rest of the words
30171 } else if (a !== this) {
30172 for (; i < a.length; i++) {
30173 this.words[i] = a.words[i];
30174 }
30175 }
30176
30177 return this;
30178 };
30179
30180 // Add `num` to `this`
30181 BN.prototype.add = function add (num) {
30182 var res;
30183 if (num.negative !== 0 && this.negative === 0) {
30184 num.negative = 0;
30185 res = this.sub(num);
30186 num.negative ^= 1;
30187 return res;
30188 } else if (num.negative === 0 && this.negative !== 0) {
30189 this.negative = 0;
30190 res = num.sub(this);
30191 this.negative = 1;
30192 return res;
30193 }
30194
30195 if (this.length > num.length) return this.clone().iadd(num);
30196
30197 return num.clone().iadd(this);
30198 };
30199
30200 // Subtract `num` from `this` in-place
30201 BN.prototype.isub = function isub (num) {
30202 // this - (-num) = this + num
30203 if (num.negative !== 0) {
30204 num.negative = 0;
30205 var r = this.iadd(num);
30206 num.negative = 1;
30207 return r._normSign();
30208
30209 // -this - num = -(this + num)
30210 } else if (this.negative !== 0) {
30211 this.negative = 0;
30212 this.iadd(num);
30213 this.negative = 1;
30214 return this._normSign();
30215 }
30216
30217 // At this point both numbers are positive
30218 var cmp = this.cmp(num);
30219
30220 // Optimization - zeroify
30221 if (cmp === 0) {
30222 this.negative = 0;
30223 this.length = 1;
30224 this.words[0] = 0;
30225 return this;
30226 }
30227
30228 // a > b
30229 var a, b;
30230 if (cmp > 0) {
30231 a = this;
30232 b = num;
30233 } else {
30234 a = num;
30235 b = this;
30236 }
30237
30238 var carry = 0;
30239 for (var i = 0; i < b.length; i++) {
30240 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
30241 carry = r >> 26;
30242 this.words[i] = r & 0x3ffffff;
30243 }
30244 for (; carry !== 0 && i < a.length; i++) {
30245 r = (a.words[i] | 0) + carry;
30246 carry = r >> 26;
30247 this.words[i] = r & 0x3ffffff;
30248 }
30249
30250 // Copy rest of the words
30251 if (carry === 0 && i < a.length && a !== this) {
30252 for (; i < a.length; i++) {
30253 this.words[i] = a.words[i];
30254 }
30255 }
30256
30257 this.length = Math.max(this.length, i);
30258
30259 if (a !== this) {
30260 this.negative = 1;
30261 }
30262
30263 return this.strip();
30264 };
30265
30266 // Subtract `num` from `this`
30267 BN.prototype.sub = function sub (num) {
30268 return this.clone().isub(num);
30269 };
30270
30271 function smallMulTo (self, num, out) {
30272 out.negative = num.negative ^ self.negative;
30273 var len = (self.length + num.length) | 0;
30274 out.length = len;
30275 len = (len - 1) | 0;
30276
30277 // Peel one iteration (compiler can't do it, because of code complexity)
30278 var a = self.words[0] | 0;
30279 var b = num.words[0] | 0;
30280 var r = a * b;
30281
30282 var lo = r & 0x3ffffff;
30283 var carry = (r / 0x4000000) | 0;
30284 out.words[0] = lo;
30285
30286 for (var k = 1; k < len; k++) {
30287 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30288 // note that ncarry could be >= 0x3ffffff
30289 var ncarry = carry >>> 26;
30290 var rword = carry & 0x3ffffff;
30291 var maxJ = Math.min(k, num.length - 1);
30292 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30293 var i = (k - j) | 0;
30294 a = self.words[i] | 0;
30295 b = num.words[j] | 0;
30296 r = a * b + rword;
30297 ncarry += (r / 0x4000000) | 0;
30298 rword = r & 0x3ffffff;
30299 }
30300 out.words[k] = rword | 0;
30301 carry = ncarry | 0;
30302 }
30303 if (carry !== 0) {
30304 out.words[k] = carry | 0;
30305 } else {
30306 out.length--;
30307 }
30308
30309 return out.strip();
30310 }
30311
30312 // TODO(indutny): it may be reasonable to omit it for users who don't need
30313 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
30314 // multiplication (like elliptic secp256k1).
30315 var comb10MulTo = function comb10MulTo (self, num, out) {
30316 var a = self.words;
30317 var b = num.words;
30318 var o = out.words;
30319 var c = 0;
30320 var lo;
30321 var mid;
30322 var hi;
30323 var a0 = a[0] | 0;
30324 var al0 = a0 & 0x1fff;
30325 var ah0 = a0 >>> 13;
30326 var a1 = a[1] | 0;
30327 var al1 = a1 & 0x1fff;
30328 var ah1 = a1 >>> 13;
30329 var a2 = a[2] | 0;
30330 var al2 = a2 & 0x1fff;
30331 var ah2 = a2 >>> 13;
30332 var a3 = a[3] | 0;
30333 var al3 = a3 & 0x1fff;
30334 var ah3 = a3 >>> 13;
30335 var a4 = a[4] | 0;
30336 var al4 = a4 & 0x1fff;
30337 var ah4 = a4 >>> 13;
30338 var a5 = a[5] | 0;
30339 var al5 = a5 & 0x1fff;
30340 var ah5 = a5 >>> 13;
30341 var a6 = a[6] | 0;
30342 var al6 = a6 & 0x1fff;
30343 var ah6 = a6 >>> 13;
30344 var a7 = a[7] | 0;
30345 var al7 = a7 & 0x1fff;
30346 var ah7 = a7 >>> 13;
30347 var a8 = a[8] | 0;
30348 var al8 = a8 & 0x1fff;
30349 var ah8 = a8 >>> 13;
30350 var a9 = a[9] | 0;
30351 var al9 = a9 & 0x1fff;
30352 var ah9 = a9 >>> 13;
30353 var b0 = b[0] | 0;
30354 var bl0 = b0 & 0x1fff;
30355 var bh0 = b0 >>> 13;
30356 var b1 = b[1] | 0;
30357 var bl1 = b1 & 0x1fff;
30358 var bh1 = b1 >>> 13;
30359 var b2 = b[2] | 0;
30360 var bl2 = b2 & 0x1fff;
30361 var bh2 = b2 >>> 13;
30362 var b3 = b[3] | 0;
30363 var bl3 = b3 & 0x1fff;
30364 var bh3 = b3 >>> 13;
30365 var b4 = b[4] | 0;
30366 var bl4 = b4 & 0x1fff;
30367 var bh4 = b4 >>> 13;
30368 var b5 = b[5] | 0;
30369 var bl5 = b5 & 0x1fff;
30370 var bh5 = b5 >>> 13;
30371 var b6 = b[6] | 0;
30372 var bl6 = b6 & 0x1fff;
30373 var bh6 = b6 >>> 13;
30374 var b7 = b[7] | 0;
30375 var bl7 = b7 & 0x1fff;
30376 var bh7 = b7 >>> 13;
30377 var b8 = b[8] | 0;
30378 var bl8 = b8 & 0x1fff;
30379 var bh8 = b8 >>> 13;
30380 var b9 = b[9] | 0;
30381 var bl9 = b9 & 0x1fff;
30382 var bh9 = b9 >>> 13;
30383
30384 out.negative = self.negative ^ num.negative;
30385 out.length = 19;
30386 /* k = 0 */
30387 lo = Math.imul(al0, bl0);
30388 mid = Math.imul(al0, bh0);
30389 mid = (mid + Math.imul(ah0, bl0)) | 0;
30390 hi = Math.imul(ah0, bh0);
30391 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30392 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
30393 w0 &= 0x3ffffff;
30394 /* k = 1 */
30395 lo = Math.imul(al1, bl0);
30396 mid = Math.imul(al1, bh0);
30397 mid = (mid + Math.imul(ah1, bl0)) | 0;
30398 hi = Math.imul(ah1, bh0);
30399 lo = (lo + Math.imul(al0, bl1)) | 0;
30400 mid = (mid + Math.imul(al0, bh1)) | 0;
30401 mid = (mid + Math.imul(ah0, bl1)) | 0;
30402 hi = (hi + Math.imul(ah0, bh1)) | 0;
30403 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30404 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
30405 w1 &= 0x3ffffff;
30406 /* k = 2 */
30407 lo = Math.imul(al2, bl0);
30408 mid = Math.imul(al2, bh0);
30409 mid = (mid + Math.imul(ah2, bl0)) | 0;
30410 hi = Math.imul(ah2, bh0);
30411 lo = (lo + Math.imul(al1, bl1)) | 0;
30412 mid = (mid + Math.imul(al1, bh1)) | 0;
30413 mid = (mid + Math.imul(ah1, bl1)) | 0;
30414 hi = (hi + Math.imul(ah1, bh1)) | 0;
30415 lo = (lo + Math.imul(al0, bl2)) | 0;
30416 mid = (mid + Math.imul(al0, bh2)) | 0;
30417 mid = (mid + Math.imul(ah0, bl2)) | 0;
30418 hi = (hi + Math.imul(ah0, bh2)) | 0;
30419 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30420 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
30421 w2 &= 0x3ffffff;
30422 /* k = 3 */
30423 lo = Math.imul(al3, bl0);
30424 mid = Math.imul(al3, bh0);
30425 mid = (mid + Math.imul(ah3, bl0)) | 0;
30426 hi = Math.imul(ah3, bh0);
30427 lo = (lo + Math.imul(al2, bl1)) | 0;
30428 mid = (mid + Math.imul(al2, bh1)) | 0;
30429 mid = (mid + Math.imul(ah2, bl1)) | 0;
30430 hi = (hi + Math.imul(ah2, bh1)) | 0;
30431 lo = (lo + Math.imul(al1, bl2)) | 0;
30432 mid = (mid + Math.imul(al1, bh2)) | 0;
30433 mid = (mid + Math.imul(ah1, bl2)) | 0;
30434 hi = (hi + Math.imul(ah1, bh2)) | 0;
30435 lo = (lo + Math.imul(al0, bl3)) | 0;
30436 mid = (mid + Math.imul(al0, bh3)) | 0;
30437 mid = (mid + Math.imul(ah0, bl3)) | 0;
30438 hi = (hi + Math.imul(ah0, bh3)) | 0;
30439 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30440 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
30441 w3 &= 0x3ffffff;
30442 /* k = 4 */
30443 lo = Math.imul(al4, bl0);
30444 mid = Math.imul(al4, bh0);
30445 mid = (mid + Math.imul(ah4, bl0)) | 0;
30446 hi = Math.imul(ah4, bh0);
30447 lo = (lo + Math.imul(al3, bl1)) | 0;
30448 mid = (mid + Math.imul(al3, bh1)) | 0;
30449 mid = (mid + Math.imul(ah3, bl1)) | 0;
30450 hi = (hi + Math.imul(ah3, bh1)) | 0;
30451 lo = (lo + Math.imul(al2, bl2)) | 0;
30452 mid = (mid + Math.imul(al2, bh2)) | 0;
30453 mid = (mid + Math.imul(ah2, bl2)) | 0;
30454 hi = (hi + Math.imul(ah2, bh2)) | 0;
30455 lo = (lo + Math.imul(al1, bl3)) | 0;
30456 mid = (mid + Math.imul(al1, bh3)) | 0;
30457 mid = (mid + Math.imul(ah1, bl3)) | 0;
30458 hi = (hi + Math.imul(ah1, bh3)) | 0;
30459 lo = (lo + Math.imul(al0, bl4)) | 0;
30460 mid = (mid + Math.imul(al0, bh4)) | 0;
30461 mid = (mid + Math.imul(ah0, bl4)) | 0;
30462 hi = (hi + Math.imul(ah0, bh4)) | 0;
30463 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30464 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
30465 w4 &= 0x3ffffff;
30466 /* k = 5 */
30467 lo = Math.imul(al5, bl0);
30468 mid = Math.imul(al5, bh0);
30469 mid = (mid + Math.imul(ah5, bl0)) | 0;
30470 hi = Math.imul(ah5, bh0);
30471 lo = (lo + Math.imul(al4, bl1)) | 0;
30472 mid = (mid + Math.imul(al4, bh1)) | 0;
30473 mid = (mid + Math.imul(ah4, bl1)) | 0;
30474 hi = (hi + Math.imul(ah4, bh1)) | 0;
30475 lo = (lo + Math.imul(al3, bl2)) | 0;
30476 mid = (mid + Math.imul(al3, bh2)) | 0;
30477 mid = (mid + Math.imul(ah3, bl2)) | 0;
30478 hi = (hi + Math.imul(ah3, bh2)) | 0;
30479 lo = (lo + Math.imul(al2, bl3)) | 0;
30480 mid = (mid + Math.imul(al2, bh3)) | 0;
30481 mid = (mid + Math.imul(ah2, bl3)) | 0;
30482 hi = (hi + Math.imul(ah2, bh3)) | 0;
30483 lo = (lo + Math.imul(al1, bl4)) | 0;
30484 mid = (mid + Math.imul(al1, bh4)) | 0;
30485 mid = (mid + Math.imul(ah1, bl4)) | 0;
30486 hi = (hi + Math.imul(ah1, bh4)) | 0;
30487 lo = (lo + Math.imul(al0, bl5)) | 0;
30488 mid = (mid + Math.imul(al0, bh5)) | 0;
30489 mid = (mid + Math.imul(ah0, bl5)) | 0;
30490 hi = (hi + Math.imul(ah0, bh5)) | 0;
30491 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30492 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
30493 w5 &= 0x3ffffff;
30494 /* k = 6 */
30495 lo = Math.imul(al6, bl0);
30496 mid = Math.imul(al6, bh0);
30497 mid = (mid + Math.imul(ah6, bl0)) | 0;
30498 hi = Math.imul(ah6, bh0);
30499 lo = (lo + Math.imul(al5, bl1)) | 0;
30500 mid = (mid + Math.imul(al5, bh1)) | 0;
30501 mid = (mid + Math.imul(ah5, bl1)) | 0;
30502 hi = (hi + Math.imul(ah5, bh1)) | 0;
30503 lo = (lo + Math.imul(al4, bl2)) | 0;
30504 mid = (mid + Math.imul(al4, bh2)) | 0;
30505 mid = (mid + Math.imul(ah4, bl2)) | 0;
30506 hi = (hi + Math.imul(ah4, bh2)) | 0;
30507 lo = (lo + Math.imul(al3, bl3)) | 0;
30508 mid = (mid + Math.imul(al3, bh3)) | 0;
30509 mid = (mid + Math.imul(ah3, bl3)) | 0;
30510 hi = (hi + Math.imul(ah3, bh3)) | 0;
30511 lo = (lo + Math.imul(al2, bl4)) | 0;
30512 mid = (mid + Math.imul(al2, bh4)) | 0;
30513 mid = (mid + Math.imul(ah2, bl4)) | 0;
30514 hi = (hi + Math.imul(ah2, bh4)) | 0;
30515 lo = (lo + Math.imul(al1, bl5)) | 0;
30516 mid = (mid + Math.imul(al1, bh5)) | 0;
30517 mid = (mid + Math.imul(ah1, bl5)) | 0;
30518 hi = (hi + Math.imul(ah1, bh5)) | 0;
30519 lo = (lo + Math.imul(al0, bl6)) | 0;
30520 mid = (mid + Math.imul(al0, bh6)) | 0;
30521 mid = (mid + Math.imul(ah0, bl6)) | 0;
30522 hi = (hi + Math.imul(ah0, bh6)) | 0;
30523 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30524 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
30525 w6 &= 0x3ffffff;
30526 /* k = 7 */
30527 lo = Math.imul(al7, bl0);
30528 mid = Math.imul(al7, bh0);
30529 mid = (mid + Math.imul(ah7, bl0)) | 0;
30530 hi = Math.imul(ah7, bh0);
30531 lo = (lo + Math.imul(al6, bl1)) | 0;
30532 mid = (mid + Math.imul(al6, bh1)) | 0;
30533 mid = (mid + Math.imul(ah6, bl1)) | 0;
30534 hi = (hi + Math.imul(ah6, bh1)) | 0;
30535 lo = (lo + Math.imul(al5, bl2)) | 0;
30536 mid = (mid + Math.imul(al5, bh2)) | 0;
30537 mid = (mid + Math.imul(ah5, bl2)) | 0;
30538 hi = (hi + Math.imul(ah5, bh2)) | 0;
30539 lo = (lo + Math.imul(al4, bl3)) | 0;
30540 mid = (mid + Math.imul(al4, bh3)) | 0;
30541 mid = (mid + Math.imul(ah4, bl3)) | 0;
30542 hi = (hi + Math.imul(ah4, bh3)) | 0;
30543 lo = (lo + Math.imul(al3, bl4)) | 0;
30544 mid = (mid + Math.imul(al3, bh4)) | 0;
30545 mid = (mid + Math.imul(ah3, bl4)) | 0;
30546 hi = (hi + Math.imul(ah3, bh4)) | 0;
30547 lo = (lo + Math.imul(al2, bl5)) | 0;
30548 mid = (mid + Math.imul(al2, bh5)) | 0;
30549 mid = (mid + Math.imul(ah2, bl5)) | 0;
30550 hi = (hi + Math.imul(ah2, bh5)) | 0;
30551 lo = (lo + Math.imul(al1, bl6)) | 0;
30552 mid = (mid + Math.imul(al1, bh6)) | 0;
30553 mid = (mid + Math.imul(ah1, bl6)) | 0;
30554 hi = (hi + Math.imul(ah1, bh6)) | 0;
30555 lo = (lo + Math.imul(al0, bl7)) | 0;
30556 mid = (mid + Math.imul(al0, bh7)) | 0;
30557 mid = (mid + Math.imul(ah0, bl7)) | 0;
30558 hi = (hi + Math.imul(ah0, bh7)) | 0;
30559 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30560 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
30561 w7 &= 0x3ffffff;
30562 /* k = 8 */
30563 lo = Math.imul(al8, bl0);
30564 mid = Math.imul(al8, bh0);
30565 mid = (mid + Math.imul(ah8, bl0)) | 0;
30566 hi = Math.imul(ah8, bh0);
30567 lo = (lo + Math.imul(al7, bl1)) | 0;
30568 mid = (mid + Math.imul(al7, bh1)) | 0;
30569 mid = (mid + Math.imul(ah7, bl1)) | 0;
30570 hi = (hi + Math.imul(ah7, bh1)) | 0;
30571 lo = (lo + Math.imul(al6, bl2)) | 0;
30572 mid = (mid + Math.imul(al6, bh2)) | 0;
30573 mid = (mid + Math.imul(ah6, bl2)) | 0;
30574 hi = (hi + Math.imul(ah6, bh2)) | 0;
30575 lo = (lo + Math.imul(al5, bl3)) | 0;
30576 mid = (mid + Math.imul(al5, bh3)) | 0;
30577 mid = (mid + Math.imul(ah5, bl3)) | 0;
30578 hi = (hi + Math.imul(ah5, bh3)) | 0;
30579 lo = (lo + Math.imul(al4, bl4)) | 0;
30580 mid = (mid + Math.imul(al4, bh4)) | 0;
30581 mid = (mid + Math.imul(ah4, bl4)) | 0;
30582 hi = (hi + Math.imul(ah4, bh4)) | 0;
30583 lo = (lo + Math.imul(al3, bl5)) | 0;
30584 mid = (mid + Math.imul(al3, bh5)) | 0;
30585 mid = (mid + Math.imul(ah3, bl5)) | 0;
30586 hi = (hi + Math.imul(ah3, bh5)) | 0;
30587 lo = (lo + Math.imul(al2, bl6)) | 0;
30588 mid = (mid + Math.imul(al2, bh6)) | 0;
30589 mid = (mid + Math.imul(ah2, bl6)) | 0;
30590 hi = (hi + Math.imul(ah2, bh6)) | 0;
30591 lo = (lo + Math.imul(al1, bl7)) | 0;
30592 mid = (mid + Math.imul(al1, bh7)) | 0;
30593 mid = (mid + Math.imul(ah1, bl7)) | 0;
30594 hi = (hi + Math.imul(ah1, bh7)) | 0;
30595 lo = (lo + Math.imul(al0, bl8)) | 0;
30596 mid = (mid + Math.imul(al0, bh8)) | 0;
30597 mid = (mid + Math.imul(ah0, bl8)) | 0;
30598 hi = (hi + Math.imul(ah0, bh8)) | 0;
30599 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30600 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
30601 w8 &= 0x3ffffff;
30602 /* k = 9 */
30603 lo = Math.imul(al9, bl0);
30604 mid = Math.imul(al9, bh0);
30605 mid = (mid + Math.imul(ah9, bl0)) | 0;
30606 hi = Math.imul(ah9, bh0);
30607 lo = (lo + Math.imul(al8, bl1)) | 0;
30608 mid = (mid + Math.imul(al8, bh1)) | 0;
30609 mid = (mid + Math.imul(ah8, bl1)) | 0;
30610 hi = (hi + Math.imul(ah8, bh1)) | 0;
30611 lo = (lo + Math.imul(al7, bl2)) | 0;
30612 mid = (mid + Math.imul(al7, bh2)) | 0;
30613 mid = (mid + Math.imul(ah7, bl2)) | 0;
30614 hi = (hi + Math.imul(ah7, bh2)) | 0;
30615 lo = (lo + Math.imul(al6, bl3)) | 0;
30616 mid = (mid + Math.imul(al6, bh3)) | 0;
30617 mid = (mid + Math.imul(ah6, bl3)) | 0;
30618 hi = (hi + Math.imul(ah6, bh3)) | 0;
30619 lo = (lo + Math.imul(al5, bl4)) | 0;
30620 mid = (mid + Math.imul(al5, bh4)) | 0;
30621 mid = (mid + Math.imul(ah5, bl4)) | 0;
30622 hi = (hi + Math.imul(ah5, bh4)) | 0;
30623 lo = (lo + Math.imul(al4, bl5)) | 0;
30624 mid = (mid + Math.imul(al4, bh5)) | 0;
30625 mid = (mid + Math.imul(ah4, bl5)) | 0;
30626 hi = (hi + Math.imul(ah4, bh5)) | 0;
30627 lo = (lo + Math.imul(al3, bl6)) | 0;
30628 mid = (mid + Math.imul(al3, bh6)) | 0;
30629 mid = (mid + Math.imul(ah3, bl6)) | 0;
30630 hi = (hi + Math.imul(ah3, bh6)) | 0;
30631 lo = (lo + Math.imul(al2, bl7)) | 0;
30632 mid = (mid + Math.imul(al2, bh7)) | 0;
30633 mid = (mid + Math.imul(ah2, bl7)) | 0;
30634 hi = (hi + Math.imul(ah2, bh7)) | 0;
30635 lo = (lo + Math.imul(al1, bl8)) | 0;
30636 mid = (mid + Math.imul(al1, bh8)) | 0;
30637 mid = (mid + Math.imul(ah1, bl8)) | 0;
30638 hi = (hi + Math.imul(ah1, bh8)) | 0;
30639 lo = (lo + Math.imul(al0, bl9)) | 0;
30640 mid = (mid + Math.imul(al0, bh9)) | 0;
30641 mid = (mid + Math.imul(ah0, bl9)) | 0;
30642 hi = (hi + Math.imul(ah0, bh9)) | 0;
30643 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30644 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
30645 w9 &= 0x3ffffff;
30646 /* k = 10 */
30647 lo = Math.imul(al9, bl1);
30648 mid = Math.imul(al9, bh1);
30649 mid = (mid + Math.imul(ah9, bl1)) | 0;
30650 hi = Math.imul(ah9, bh1);
30651 lo = (lo + Math.imul(al8, bl2)) | 0;
30652 mid = (mid + Math.imul(al8, bh2)) | 0;
30653 mid = (mid + Math.imul(ah8, bl2)) | 0;
30654 hi = (hi + Math.imul(ah8, bh2)) | 0;
30655 lo = (lo + Math.imul(al7, bl3)) | 0;
30656 mid = (mid + Math.imul(al7, bh3)) | 0;
30657 mid = (mid + Math.imul(ah7, bl3)) | 0;
30658 hi = (hi + Math.imul(ah7, bh3)) | 0;
30659 lo = (lo + Math.imul(al6, bl4)) | 0;
30660 mid = (mid + Math.imul(al6, bh4)) | 0;
30661 mid = (mid + Math.imul(ah6, bl4)) | 0;
30662 hi = (hi + Math.imul(ah6, bh4)) | 0;
30663 lo = (lo + Math.imul(al5, bl5)) | 0;
30664 mid = (mid + Math.imul(al5, bh5)) | 0;
30665 mid = (mid + Math.imul(ah5, bl5)) | 0;
30666 hi = (hi + Math.imul(ah5, bh5)) | 0;
30667 lo = (lo + Math.imul(al4, bl6)) | 0;
30668 mid = (mid + Math.imul(al4, bh6)) | 0;
30669 mid = (mid + Math.imul(ah4, bl6)) | 0;
30670 hi = (hi + Math.imul(ah4, bh6)) | 0;
30671 lo = (lo + Math.imul(al3, bl7)) | 0;
30672 mid = (mid + Math.imul(al3, bh7)) | 0;
30673 mid = (mid + Math.imul(ah3, bl7)) | 0;
30674 hi = (hi + Math.imul(ah3, bh7)) | 0;
30675 lo = (lo + Math.imul(al2, bl8)) | 0;
30676 mid = (mid + Math.imul(al2, bh8)) | 0;
30677 mid = (mid + Math.imul(ah2, bl8)) | 0;
30678 hi = (hi + Math.imul(ah2, bh8)) | 0;
30679 lo = (lo + Math.imul(al1, bl9)) | 0;
30680 mid = (mid + Math.imul(al1, bh9)) | 0;
30681 mid = (mid + Math.imul(ah1, bl9)) | 0;
30682 hi = (hi + Math.imul(ah1, bh9)) | 0;
30683 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30684 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
30685 w10 &= 0x3ffffff;
30686 /* k = 11 */
30687 lo = Math.imul(al9, bl2);
30688 mid = Math.imul(al9, bh2);
30689 mid = (mid + Math.imul(ah9, bl2)) | 0;
30690 hi = Math.imul(ah9, bh2);
30691 lo = (lo + Math.imul(al8, bl3)) | 0;
30692 mid = (mid + Math.imul(al8, bh3)) | 0;
30693 mid = (mid + Math.imul(ah8, bl3)) | 0;
30694 hi = (hi + Math.imul(ah8, bh3)) | 0;
30695 lo = (lo + Math.imul(al7, bl4)) | 0;
30696 mid = (mid + Math.imul(al7, bh4)) | 0;
30697 mid = (mid + Math.imul(ah7, bl4)) | 0;
30698 hi = (hi + Math.imul(ah7, bh4)) | 0;
30699 lo = (lo + Math.imul(al6, bl5)) | 0;
30700 mid = (mid + Math.imul(al6, bh5)) | 0;
30701 mid = (mid + Math.imul(ah6, bl5)) | 0;
30702 hi = (hi + Math.imul(ah6, bh5)) | 0;
30703 lo = (lo + Math.imul(al5, bl6)) | 0;
30704 mid = (mid + Math.imul(al5, bh6)) | 0;
30705 mid = (mid + Math.imul(ah5, bl6)) | 0;
30706 hi = (hi + Math.imul(ah5, bh6)) | 0;
30707 lo = (lo + Math.imul(al4, bl7)) | 0;
30708 mid = (mid + Math.imul(al4, bh7)) | 0;
30709 mid = (mid + Math.imul(ah4, bl7)) | 0;
30710 hi = (hi + Math.imul(ah4, bh7)) | 0;
30711 lo = (lo + Math.imul(al3, bl8)) | 0;
30712 mid = (mid + Math.imul(al3, bh8)) | 0;
30713 mid = (mid + Math.imul(ah3, bl8)) | 0;
30714 hi = (hi + Math.imul(ah3, bh8)) | 0;
30715 lo = (lo + Math.imul(al2, bl9)) | 0;
30716 mid = (mid + Math.imul(al2, bh9)) | 0;
30717 mid = (mid + Math.imul(ah2, bl9)) | 0;
30718 hi = (hi + Math.imul(ah2, bh9)) | 0;
30719 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30720 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
30721 w11 &= 0x3ffffff;
30722 /* k = 12 */
30723 lo = Math.imul(al9, bl3);
30724 mid = Math.imul(al9, bh3);
30725 mid = (mid + Math.imul(ah9, bl3)) | 0;
30726 hi = Math.imul(ah9, bh3);
30727 lo = (lo + Math.imul(al8, bl4)) | 0;
30728 mid = (mid + Math.imul(al8, bh4)) | 0;
30729 mid = (mid + Math.imul(ah8, bl4)) | 0;
30730 hi = (hi + Math.imul(ah8, bh4)) | 0;
30731 lo = (lo + Math.imul(al7, bl5)) | 0;
30732 mid = (mid + Math.imul(al7, bh5)) | 0;
30733 mid = (mid + Math.imul(ah7, bl5)) | 0;
30734 hi = (hi + Math.imul(ah7, bh5)) | 0;
30735 lo = (lo + Math.imul(al6, bl6)) | 0;
30736 mid = (mid + Math.imul(al6, bh6)) | 0;
30737 mid = (mid + Math.imul(ah6, bl6)) | 0;
30738 hi = (hi + Math.imul(ah6, bh6)) | 0;
30739 lo = (lo + Math.imul(al5, bl7)) | 0;
30740 mid = (mid + Math.imul(al5, bh7)) | 0;
30741 mid = (mid + Math.imul(ah5, bl7)) | 0;
30742 hi = (hi + Math.imul(ah5, bh7)) | 0;
30743 lo = (lo + Math.imul(al4, bl8)) | 0;
30744 mid = (mid + Math.imul(al4, bh8)) | 0;
30745 mid = (mid + Math.imul(ah4, bl8)) | 0;
30746 hi = (hi + Math.imul(ah4, bh8)) | 0;
30747 lo = (lo + Math.imul(al3, bl9)) | 0;
30748 mid = (mid + Math.imul(al3, bh9)) | 0;
30749 mid = (mid + Math.imul(ah3, bl9)) | 0;
30750 hi = (hi + Math.imul(ah3, bh9)) | 0;
30751 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30752 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
30753 w12 &= 0x3ffffff;
30754 /* k = 13 */
30755 lo = Math.imul(al9, bl4);
30756 mid = Math.imul(al9, bh4);
30757 mid = (mid + Math.imul(ah9, bl4)) | 0;
30758 hi = Math.imul(ah9, bh4);
30759 lo = (lo + Math.imul(al8, bl5)) | 0;
30760 mid = (mid + Math.imul(al8, bh5)) | 0;
30761 mid = (mid + Math.imul(ah8, bl5)) | 0;
30762 hi = (hi + Math.imul(ah8, bh5)) | 0;
30763 lo = (lo + Math.imul(al7, bl6)) | 0;
30764 mid = (mid + Math.imul(al7, bh6)) | 0;
30765 mid = (mid + Math.imul(ah7, bl6)) | 0;
30766 hi = (hi + Math.imul(ah7, bh6)) | 0;
30767 lo = (lo + Math.imul(al6, bl7)) | 0;
30768 mid = (mid + Math.imul(al6, bh7)) | 0;
30769 mid = (mid + Math.imul(ah6, bl7)) | 0;
30770 hi = (hi + Math.imul(ah6, bh7)) | 0;
30771 lo = (lo + Math.imul(al5, bl8)) | 0;
30772 mid = (mid + Math.imul(al5, bh8)) | 0;
30773 mid = (mid + Math.imul(ah5, bl8)) | 0;
30774 hi = (hi + Math.imul(ah5, bh8)) | 0;
30775 lo = (lo + Math.imul(al4, bl9)) | 0;
30776 mid = (mid + Math.imul(al4, bh9)) | 0;
30777 mid = (mid + Math.imul(ah4, bl9)) | 0;
30778 hi = (hi + Math.imul(ah4, bh9)) | 0;
30779 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30780 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
30781 w13 &= 0x3ffffff;
30782 /* k = 14 */
30783 lo = Math.imul(al9, bl5);
30784 mid = Math.imul(al9, bh5);
30785 mid = (mid + Math.imul(ah9, bl5)) | 0;
30786 hi = Math.imul(ah9, bh5);
30787 lo = (lo + Math.imul(al8, bl6)) | 0;
30788 mid = (mid + Math.imul(al8, bh6)) | 0;
30789 mid = (mid + Math.imul(ah8, bl6)) | 0;
30790 hi = (hi + Math.imul(ah8, bh6)) | 0;
30791 lo = (lo + Math.imul(al7, bl7)) | 0;
30792 mid = (mid + Math.imul(al7, bh7)) | 0;
30793 mid = (mid + Math.imul(ah7, bl7)) | 0;
30794 hi = (hi + Math.imul(ah7, bh7)) | 0;
30795 lo = (lo + Math.imul(al6, bl8)) | 0;
30796 mid = (mid + Math.imul(al6, bh8)) | 0;
30797 mid = (mid + Math.imul(ah6, bl8)) | 0;
30798 hi = (hi + Math.imul(ah6, bh8)) | 0;
30799 lo = (lo + Math.imul(al5, bl9)) | 0;
30800 mid = (mid + Math.imul(al5, bh9)) | 0;
30801 mid = (mid + Math.imul(ah5, bl9)) | 0;
30802 hi = (hi + Math.imul(ah5, bh9)) | 0;
30803 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30804 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
30805 w14 &= 0x3ffffff;
30806 /* k = 15 */
30807 lo = Math.imul(al9, bl6);
30808 mid = Math.imul(al9, bh6);
30809 mid = (mid + Math.imul(ah9, bl6)) | 0;
30810 hi = Math.imul(ah9, bh6);
30811 lo = (lo + Math.imul(al8, bl7)) | 0;
30812 mid = (mid + Math.imul(al8, bh7)) | 0;
30813 mid = (mid + Math.imul(ah8, bl7)) | 0;
30814 hi = (hi + Math.imul(ah8, bh7)) | 0;
30815 lo = (lo + Math.imul(al7, bl8)) | 0;
30816 mid = (mid + Math.imul(al7, bh8)) | 0;
30817 mid = (mid + Math.imul(ah7, bl8)) | 0;
30818 hi = (hi + Math.imul(ah7, bh8)) | 0;
30819 lo = (lo + Math.imul(al6, bl9)) | 0;
30820 mid = (mid + Math.imul(al6, bh9)) | 0;
30821 mid = (mid + Math.imul(ah6, bl9)) | 0;
30822 hi = (hi + Math.imul(ah6, bh9)) | 0;
30823 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30824 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
30825 w15 &= 0x3ffffff;
30826 /* k = 16 */
30827 lo = Math.imul(al9, bl7);
30828 mid = Math.imul(al9, bh7);
30829 mid = (mid + Math.imul(ah9, bl7)) | 0;
30830 hi = Math.imul(ah9, bh7);
30831 lo = (lo + Math.imul(al8, bl8)) | 0;
30832 mid = (mid + Math.imul(al8, bh8)) | 0;
30833 mid = (mid + Math.imul(ah8, bl8)) | 0;
30834 hi = (hi + Math.imul(ah8, bh8)) | 0;
30835 lo = (lo + Math.imul(al7, bl9)) | 0;
30836 mid = (mid + Math.imul(al7, bh9)) | 0;
30837 mid = (mid + Math.imul(ah7, bl9)) | 0;
30838 hi = (hi + Math.imul(ah7, bh9)) | 0;
30839 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30840 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
30841 w16 &= 0x3ffffff;
30842 /* k = 17 */
30843 lo = Math.imul(al9, bl8);
30844 mid = Math.imul(al9, bh8);
30845 mid = (mid + Math.imul(ah9, bl8)) | 0;
30846 hi = Math.imul(ah9, bh8);
30847 lo = (lo + Math.imul(al8, bl9)) | 0;
30848 mid = (mid + Math.imul(al8, bh9)) | 0;
30849 mid = (mid + Math.imul(ah8, bl9)) | 0;
30850 hi = (hi + Math.imul(ah8, bh9)) | 0;
30851 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30852 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
30853 w17 &= 0x3ffffff;
30854 /* k = 18 */
30855 lo = Math.imul(al9, bl9);
30856 mid = Math.imul(al9, bh9);
30857 mid = (mid + Math.imul(ah9, bl9)) | 0;
30858 hi = Math.imul(ah9, bh9);
30859 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30860 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
30861 w18 &= 0x3ffffff;
30862 o[0] = w0;
30863 o[1] = w1;
30864 o[2] = w2;
30865 o[3] = w3;
30866 o[4] = w4;
30867 o[5] = w5;
30868 o[6] = w6;
30869 o[7] = w7;
30870 o[8] = w8;
30871 o[9] = w9;
30872 o[10] = w10;
30873 o[11] = w11;
30874 o[12] = w12;
30875 o[13] = w13;
30876 o[14] = w14;
30877 o[15] = w15;
30878 o[16] = w16;
30879 o[17] = w17;
30880 o[18] = w18;
30881 if (c !== 0) {
30882 o[19] = c;
30883 out.length++;
30884 }
30885 return out;
30886 };
30887
30888 // Polyfill comb
30889 if (!Math.imul) {
30890 comb10MulTo = smallMulTo;
30891 }
30892
30893 function bigMulTo (self, num, out) {
30894 out.negative = num.negative ^ self.negative;
30895 out.length = self.length + num.length;
30896
30897 var carry = 0;
30898 var hncarry = 0;
30899 for (var k = 0; k < out.length - 1; k++) {
30900 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30901 // note that ncarry could be >= 0x3ffffff
30902 var ncarry = hncarry;
30903 hncarry = 0;
30904 var rword = carry & 0x3ffffff;
30905 var maxJ = Math.min(k, num.length - 1);
30906 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30907 var i = k - j;
30908 var a = self.words[i] | 0;
30909 var b = num.words[j] | 0;
30910 var r = a * b;
30911
30912 var lo = r & 0x3ffffff;
30913 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
30914 lo = (lo + rword) | 0;
30915 rword = lo & 0x3ffffff;
30916 ncarry = (ncarry + (lo >>> 26)) | 0;
30917
30918 hncarry += ncarry >>> 26;
30919 ncarry &= 0x3ffffff;
30920 }
30921 out.words[k] = rword;
30922 carry = ncarry;
30923 ncarry = hncarry;
30924 }
30925 if (carry !== 0) {
30926 out.words[k] = carry;
30927 } else {
30928 out.length--;
30929 }
30930
30931 return out.strip();
30932 }
30933
30934 function jumboMulTo (self, num, out) {
30935 var fftm = new FFTM();
30936 return fftm.mulp(self, num, out);
30937 }
30938
30939 BN.prototype.mulTo = function mulTo (num, out) {
30940 var res;
30941 var len = this.length + num.length;
30942 if (this.length === 10 && num.length === 10) {
30943 res = comb10MulTo(this, num, out);
30944 } else if (len < 63) {
30945 res = smallMulTo(this, num, out);
30946 } else if (len < 1024) {
30947 res = bigMulTo(this, num, out);
30948 } else {
30949 res = jumboMulTo(this, num, out);
30950 }
30951
30952 return res;
30953 };
30954
30955 // Cooley-Tukey algorithm for FFT
30956 // slightly revisited to rely on looping instead of recursion
30957
30958 function FFTM (x, y) {
30959 this.x = x;
30960 this.y = y;
30961 }
30962
30963 FFTM.prototype.makeRBT = function makeRBT (N) {
30964 var t = new Array(N);
30965 var l = BN.prototype._countBits(N) - 1;
30966 for (var i = 0; i < N; i++) {
30967 t[i] = this.revBin(i, l, N);
30968 }
30969
30970 return t;
30971 };
30972
30973 // Returns binary-reversed representation of `x`
30974 FFTM.prototype.revBin = function revBin (x, l, N) {
30975 if (x === 0 || x === N - 1) return x;
30976
30977 var rb = 0;
30978 for (var i = 0; i < l; i++) {
30979 rb |= (x & 1) << (l - i - 1);
30980 x >>= 1;
30981 }
30982
30983 return rb;
30984 };
30985
30986 // Performs "tweedling" phase, therefore 'emulating'
30987 // behaviour of the recursive algorithm
30988 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
30989 for (var i = 0; i < N; i++) {
30990 rtws[i] = rws[rbt[i]];
30991 itws[i] = iws[rbt[i]];
30992 }
30993 };
30994
30995 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
30996 this.permute(rbt, rws, iws, rtws, itws, N);
30997
30998 for (var s = 1; s < N; s <<= 1) {
30999 var l = s << 1;
31000
31001 var rtwdf = Math.cos(2 * Math.PI / l);
31002 var itwdf = Math.sin(2 * Math.PI / l);
31003
31004 for (var p = 0; p < N; p += l) {
31005 var rtwdf_ = rtwdf;
31006 var itwdf_ = itwdf;
31007
31008 for (var j = 0; j < s; j++) {
31009 var re = rtws[p + j];
31010 var ie = itws[p + j];
31011
31012 var ro = rtws[p + j + s];
31013 var io = itws[p + j + s];
31014
31015 var rx = rtwdf_ * ro - itwdf_ * io;
31016
31017 io = rtwdf_ * io + itwdf_ * ro;
31018 ro = rx;
31019
31020 rtws[p + j] = re + ro;
31021 itws[p + j] = ie + io;
31022
31023 rtws[p + j + s] = re - ro;
31024 itws[p + j + s] = ie - io;
31025
31026 /* jshint maxdepth : false */
31027 if (j !== l) {
31028 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
31029
31030 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
31031 rtwdf_ = rx;
31032 }
31033 }
31034 }
31035 }
31036 };
31037
31038 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
31039 var N = Math.max(m, n) | 1;
31040 var odd = N & 1;
31041 var i = 0;
31042 for (N = N / 2 | 0; N; N = N >>> 1) {
31043 i++;
31044 }
31045
31046 return 1 << i + 1 + odd;
31047 };
31048
31049 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
31050 if (N <= 1) return;
31051
31052 for (var i = 0; i < N / 2; i++) {
31053 var t = rws[i];
31054
31055 rws[i] = rws[N - i - 1];
31056 rws[N - i - 1] = t;
31057
31058 t = iws[i];
31059
31060 iws[i] = -iws[N - i - 1];
31061 iws[N - i - 1] = -t;
31062 }
31063 };
31064
31065 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
31066 var carry = 0;
31067 for (var i = 0; i < N / 2; i++) {
31068 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
31069 Math.round(ws[2 * i] / N) +
31070 carry;
31071
31072 ws[i] = w & 0x3ffffff;
31073
31074 if (w < 0x4000000) {
31075 carry = 0;
31076 } else {
31077 carry = w / 0x4000000 | 0;
31078 }
31079 }
31080
31081 return ws;
31082 };
31083
31084 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
31085 var carry = 0;
31086 for (var i = 0; i < len; i++) {
31087 carry = carry + (ws[i] | 0);
31088
31089 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
31090 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
31091 }
31092
31093 // Pad with zeroes
31094 for (i = 2 * len; i < N; ++i) {
31095 rws[i] = 0;
31096 }
31097
31098 assert(carry === 0);
31099 assert((carry & ~0x1fff) === 0);
31100 };
31101
31102 FFTM.prototype.stub = function stub (N) {
31103 var ph = new Array(N);
31104 for (var i = 0; i < N; i++) {
31105 ph[i] = 0;
31106 }
31107
31108 return ph;
31109 };
31110
31111 FFTM.prototype.mulp = function mulp (x, y, out) {
31112 var N = 2 * this.guessLen13b(x.length, y.length);
31113
31114 var rbt = this.makeRBT(N);
31115
31116 var _ = this.stub(N);
31117
31118 var rws = new Array(N);
31119 var rwst = new Array(N);
31120 var iwst = new Array(N);
31121
31122 var nrws = new Array(N);
31123 var nrwst = new Array(N);
31124 var niwst = new Array(N);
31125
31126 var rmws = out.words;
31127 rmws.length = N;
31128
31129 this.convert13b(x.words, x.length, rws, N);
31130 this.convert13b(y.words, y.length, nrws, N);
31131
31132 this.transform(rws, _, rwst, iwst, N, rbt);
31133 this.transform(nrws, _, nrwst, niwst, N, rbt);
31134
31135 for (var i = 0; i < N; i++) {
31136 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
31137 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
31138 rwst[i] = rx;
31139 }
31140
31141 this.conjugate(rwst, iwst, N);
31142 this.transform(rwst, iwst, rmws, _, N, rbt);
31143 this.conjugate(rmws, _, N);
31144 this.normalize13b(rmws, N);
31145
31146 out.negative = x.negative ^ y.negative;
31147 out.length = x.length + y.length;
31148 return out.strip();
31149 };
31150
31151 // Multiply `this` by `num`
31152 BN.prototype.mul = function mul (num) {
31153 var out = new BN(null);
31154 out.words = new Array(this.length + num.length);
31155 return this.mulTo(num, out);
31156 };
31157
31158 // Multiply employing FFT
31159 BN.prototype.mulf = function mulf (num) {
31160 var out = new BN(null);
31161 out.words = new Array(this.length + num.length);
31162 return jumboMulTo(this, num, out);
31163 };
31164
31165 // In-place Multiplication
31166 BN.prototype.imul = function imul (num) {
31167 return this.clone().mulTo(num, this);
31168 };
31169
31170 BN.prototype.imuln = function imuln (num) {
31171 assert(typeof num === 'number');
31172 assert(num < 0x4000000);
31173
31174 // Carry
31175 var carry = 0;
31176 for (var i = 0; i < this.length; i++) {
31177 var w = (this.words[i] | 0) * num;
31178 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
31179 carry >>= 26;
31180 carry += (w / 0x4000000) | 0;
31181 // NOTE: lo is 27bit maximum
31182 carry += lo >>> 26;
31183 this.words[i] = lo & 0x3ffffff;
31184 }
31185
31186 if (carry !== 0) {
31187 this.words[i] = carry;
31188 this.length++;
31189 }
31190
31191 return this;
31192 };
31193
31194 BN.prototype.muln = function muln (num) {
31195 return this.clone().imuln(num);
31196 };
31197
31198 // `this` * `this`
31199 BN.prototype.sqr = function sqr () {
31200 return this.mul(this);
31201 };
31202
31203 // `this` * `this` in-place
31204 BN.prototype.isqr = function isqr () {
31205 return this.imul(this.clone());
31206 };
31207
31208 // Math.pow(`this`, `num`)
31209 BN.prototype.pow = function pow (num) {
31210 var w = toBitArray(num);
31211 if (w.length === 0) return new BN(1);
31212
31213 // Skip leading zeroes
31214 var res = this;
31215 for (var i = 0; i < w.length; i++, res = res.sqr()) {
31216 if (w[i] !== 0) break;
31217 }
31218
31219 if (++i < w.length) {
31220 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
31221 if (w[i] === 0) continue;
31222
31223 res = res.mul(q);
31224 }
31225 }
31226
31227 return res;
31228 };
31229
31230 // Shift-left in-place
31231 BN.prototype.iushln = function iushln (bits) {
31232 assert(typeof bits === 'number' && bits >= 0);
31233 var r = bits % 26;
31234 var s = (bits - r) / 26;
31235 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
31236 var i;
31237
31238 if (r !== 0) {
31239 var carry = 0;
31240
31241 for (i = 0; i < this.length; i++) {
31242 var newCarry = this.words[i] & carryMask;
31243 var c = ((this.words[i] | 0) - newCarry) << r;
31244 this.words[i] = c | carry;
31245 carry = newCarry >>> (26 - r);
31246 }
31247
31248 if (carry) {
31249 this.words[i] = carry;
31250 this.length++;
31251 }
31252 }
31253
31254 if (s !== 0) {
31255 for (i = this.length - 1; i >= 0; i--) {
31256 this.words[i + s] = this.words[i];
31257 }
31258
31259 for (i = 0; i < s; i++) {
31260 this.words[i] = 0;
31261 }
31262
31263 this.length += s;
31264 }
31265
31266 return this.strip();
31267 };
31268
31269 BN.prototype.ishln = function ishln (bits) {
31270 // TODO(indutny): implement me
31271 assert(this.negative === 0);
31272 return this.iushln(bits);
31273 };
31274
31275 // Shift-right in-place
31276 // NOTE: `hint` is a lowest bit before trailing zeroes
31277 // NOTE: if `extended` is present - it will be filled with destroyed bits
31278 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
31279 assert(typeof bits === 'number' && bits >= 0);
31280 var h;
31281 if (hint) {
31282 h = (hint - (hint % 26)) / 26;
31283 } else {
31284 h = 0;
31285 }
31286
31287 var r = bits % 26;
31288 var s = Math.min((bits - r) / 26, this.length);
31289 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31290 var maskedWords = extended;
31291
31292 h -= s;
31293 h = Math.max(0, h);
31294
31295 // Extended mode, copy masked part
31296 if (maskedWords) {
31297 for (var i = 0; i < s; i++) {
31298 maskedWords.words[i] = this.words[i];
31299 }
31300 maskedWords.length = s;
31301 }
31302
31303 if (s === 0) {
31304 // No-op, we should not move anything at all
31305 } else if (this.length > s) {
31306 this.length -= s;
31307 for (i = 0; i < this.length; i++) {
31308 this.words[i] = this.words[i + s];
31309 }
31310 } else {
31311 this.words[0] = 0;
31312 this.length = 1;
31313 }
31314
31315 var carry = 0;
31316 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
31317 var word = this.words[i] | 0;
31318 this.words[i] = (carry << (26 - r)) | (word >>> r);
31319 carry = word & mask;
31320 }
31321
31322 // Push carried bits as a mask
31323 if (maskedWords && carry !== 0) {
31324 maskedWords.words[maskedWords.length++] = carry;
31325 }
31326
31327 if (this.length === 0) {
31328 this.words[0] = 0;
31329 this.length = 1;
31330 }
31331
31332 return this.strip();
31333 };
31334
31335 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
31336 // TODO(indutny): implement me
31337 assert(this.negative === 0);
31338 return this.iushrn(bits, hint, extended);
31339 };
31340
31341 // Shift-left
31342 BN.prototype.shln = function shln (bits) {
31343 return this.clone().ishln(bits);
31344 };
31345
31346 BN.prototype.ushln = function ushln (bits) {
31347 return this.clone().iushln(bits);
31348 };
31349
31350 // Shift-right
31351 BN.prototype.shrn = function shrn (bits) {
31352 return this.clone().ishrn(bits);
31353 };
31354
31355 BN.prototype.ushrn = function ushrn (bits) {
31356 return this.clone().iushrn(bits);
31357 };
31358
31359 // Test if n bit is set
31360 BN.prototype.testn = function testn (bit) {
31361 assert(typeof bit === 'number' && bit >= 0);
31362 var r = bit % 26;
31363 var s = (bit - r) / 26;
31364 var q = 1 << r;
31365
31366 // Fast case: bit is much higher than all existing words
31367 if (this.length <= s) return false;
31368
31369 // Check bit and return
31370 var w = this.words[s];
31371
31372 return !!(w & q);
31373 };
31374
31375 // Return only lowers bits of number (in-place)
31376 BN.prototype.imaskn = function imaskn (bits) {
31377 assert(typeof bits === 'number' && bits >= 0);
31378 var r = bits % 26;
31379 var s = (bits - r) / 26;
31380
31381 assert(this.negative === 0, 'imaskn works only with positive numbers');
31382
31383 if (this.length <= s) {
31384 return this;
31385 }
31386
31387 if (r !== 0) {
31388 s++;
31389 }
31390 this.length = Math.min(s, this.length);
31391
31392 if (r !== 0) {
31393 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31394 this.words[this.length - 1] &= mask;
31395 }
31396
31397 return this.strip();
31398 };
31399
31400 // Return only lowers bits of number
31401 BN.prototype.maskn = function maskn (bits) {
31402 return this.clone().imaskn(bits);
31403 };
31404
31405 // Add plain number `num` to `this`
31406 BN.prototype.iaddn = function iaddn (num) {
31407 assert(typeof num === 'number');
31408 assert(num < 0x4000000);
31409 if (num < 0) return this.isubn(-num);
31410
31411 // Possible sign change
31412 if (this.negative !== 0) {
31413 if (this.length === 1 && (this.words[0] | 0) < num) {
31414 this.words[0] = num - (this.words[0] | 0);
31415 this.negative = 0;
31416 return this;
31417 }
31418
31419 this.negative = 0;
31420 this.isubn(num);
31421 this.negative = 1;
31422 return this;
31423 }
31424
31425 // Add without checks
31426 return this._iaddn(num);
31427 };
31428
31429 BN.prototype._iaddn = function _iaddn (num) {
31430 this.words[0] += num;
31431
31432 // Carry
31433 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
31434 this.words[i] -= 0x4000000;
31435 if (i === this.length - 1) {
31436 this.words[i + 1] = 1;
31437 } else {
31438 this.words[i + 1]++;
31439 }
31440 }
31441 this.length = Math.max(this.length, i + 1);
31442
31443 return this;
31444 };
31445
31446 // Subtract plain number `num` from `this`
31447 BN.prototype.isubn = function isubn (num) {
31448 assert(typeof num === 'number');
31449 assert(num < 0x4000000);
31450 if (num < 0) return this.iaddn(-num);
31451
31452 if (this.negative !== 0) {
31453 this.negative = 0;
31454 this.iaddn(num);
31455 this.negative = 1;
31456 return this;
31457 }
31458
31459 this.words[0] -= num;
31460
31461 if (this.length === 1 && this.words[0] < 0) {
31462 this.words[0] = -this.words[0];
31463 this.negative = 1;
31464 } else {
31465 // Carry
31466 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
31467 this.words[i] += 0x4000000;
31468 this.words[i + 1] -= 1;
31469 }
31470 }
31471
31472 return this.strip();
31473 };
31474
31475 BN.prototype.addn = function addn (num) {
31476 return this.clone().iaddn(num);
31477 };
31478
31479 BN.prototype.subn = function subn (num) {
31480 return this.clone().isubn(num);
31481 };
31482
31483 BN.prototype.iabs = function iabs () {
31484 this.negative = 0;
31485
31486 return this;
31487 };
31488
31489 BN.prototype.abs = function abs () {
31490 return this.clone().iabs();
31491 };
31492
31493 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
31494 var len = num.length + shift;
31495 var i;
31496
31497 this._expand(len);
31498
31499 var w;
31500 var carry = 0;
31501 for (i = 0; i < num.length; i++) {
31502 w = (this.words[i + shift] | 0) + carry;
31503 var right = (num.words[i] | 0) * mul;
31504 w -= right & 0x3ffffff;
31505 carry = (w >> 26) - ((right / 0x4000000) | 0);
31506 this.words[i + shift] = w & 0x3ffffff;
31507 }
31508 for (; i < this.length - shift; i++) {
31509 w = (this.words[i + shift] | 0) + carry;
31510 carry = w >> 26;
31511 this.words[i + shift] = w & 0x3ffffff;
31512 }
31513
31514 if (carry === 0) return this.strip();
31515
31516 // Subtraction overflow
31517 assert(carry === -1);
31518 carry = 0;
31519 for (i = 0; i < this.length; i++) {
31520 w = -(this.words[i] | 0) + carry;
31521 carry = w >> 26;
31522 this.words[i] = w & 0x3ffffff;
31523 }
31524 this.negative = 1;
31525
31526 return this.strip();
31527 };
31528
31529 BN.prototype._wordDiv = function _wordDiv (num, mode) {
31530 var shift = this.length - num.length;
31531
31532 var a = this.clone();
31533 var b = num;
31534
31535 // Normalize
31536 var bhi = b.words[b.length - 1] | 0;
31537 var bhiBits = this._countBits(bhi);
31538 shift = 26 - bhiBits;
31539 if (shift !== 0) {
31540 b = b.ushln(shift);
31541 a.iushln(shift);
31542 bhi = b.words[b.length - 1] | 0;
31543 }
31544
31545 // Initialize quotient
31546 var m = a.length - b.length;
31547 var q;
31548
31549 if (mode !== 'mod') {
31550 q = new BN(null);
31551 q.length = m + 1;
31552 q.words = new Array(q.length);
31553 for (var i = 0; i < q.length; i++) {
31554 q.words[i] = 0;
31555 }
31556 }
31557
31558 var diff = a.clone()._ishlnsubmul(b, 1, m);
31559 if (diff.negative === 0) {
31560 a = diff;
31561 if (q) {
31562 q.words[m] = 1;
31563 }
31564 }
31565
31566 for (var j = m - 1; j >= 0; j--) {
31567 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
31568 (a.words[b.length + j - 1] | 0);
31569
31570 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
31571 // (0x7ffffff)
31572 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
31573
31574 a._ishlnsubmul(b, qj, j);
31575 while (a.negative !== 0) {
31576 qj--;
31577 a.negative = 0;
31578 a._ishlnsubmul(b, 1, j);
31579 if (!a.isZero()) {
31580 a.negative ^= 1;
31581 }
31582 }
31583 if (q) {
31584 q.words[j] = qj;
31585 }
31586 }
31587 if (q) {
31588 q.strip();
31589 }
31590 a.strip();
31591
31592 // Denormalize
31593 if (mode !== 'div' && shift !== 0) {
31594 a.iushrn(shift);
31595 }
31596
31597 return {
31598 div: q || null,
31599 mod: a
31600 };
31601 };
31602
31603 // NOTE: 1) `mode` can be set to `mod` to request mod only,
31604 // to `div` to request div only, or be absent to
31605 // request both div & mod
31606 // 2) `positive` is true if unsigned mod is requested
31607 BN.prototype.divmod = function divmod (num, mode, positive) {
31608 assert(!num.isZero());
31609
31610 if (this.isZero()) {
31611 return {
31612 div: new BN(0),
31613 mod: new BN(0)
31614 };
31615 }
31616
31617 var div, mod, res;
31618 if (this.negative !== 0 && num.negative === 0) {
31619 res = this.neg().divmod(num, mode);
31620
31621 if (mode !== 'mod') {
31622 div = res.div.neg();
31623 }
31624
31625 if (mode !== 'div') {
31626 mod = res.mod.neg();
31627 if (positive && mod.negative !== 0) {
31628 mod.iadd(num);
31629 }
31630 }
31631
31632 return {
31633 div: div,
31634 mod: mod
31635 };
31636 }
31637
31638 if (this.negative === 0 && num.negative !== 0) {
31639 res = this.divmod(num.neg(), mode);
31640
31641 if (mode !== 'mod') {
31642 div = res.div.neg();
31643 }
31644
31645 return {
31646 div: div,
31647 mod: res.mod
31648 };
31649 }
31650
31651 if ((this.negative & num.negative) !== 0) {
31652 res = this.neg().divmod(num.neg(), mode);
31653
31654 if (mode !== 'div') {
31655 mod = res.mod.neg();
31656 if (positive && mod.negative !== 0) {
31657 mod.isub(num);
31658 }
31659 }
31660
31661 return {
31662 div: res.div,
31663 mod: mod
31664 };
31665 }
31666
31667 // Both numbers are positive at this point
31668
31669 // Strip both numbers to approximate shift value
31670 if (num.length > this.length || this.cmp(num) < 0) {
31671 return {
31672 div: new BN(0),
31673 mod: this
31674 };
31675 }
31676
31677 // Very short reduction
31678 if (num.length === 1) {
31679 if (mode === 'div') {
31680 return {
31681 div: this.divn(num.words[0]),
31682 mod: null
31683 };
31684 }
31685
31686 if (mode === 'mod') {
31687 return {
31688 div: null,
31689 mod: new BN(this.modn(num.words[0]))
31690 };
31691 }
31692
31693 return {
31694 div: this.divn(num.words[0]),
31695 mod: new BN(this.modn(num.words[0]))
31696 };
31697 }
31698
31699 return this._wordDiv(num, mode);
31700 };
31701
31702 // Find `this` / `num`
31703 BN.prototype.div = function div (num) {
31704 return this.divmod(num, 'div', false).div;
31705 };
31706
31707 // Find `this` % `num`
31708 BN.prototype.mod = function mod (num) {
31709 return this.divmod(num, 'mod', false).mod;
31710 };
31711
31712 BN.prototype.umod = function umod (num) {
31713 return this.divmod(num, 'mod', true).mod;
31714 };
31715
31716 // Find Round(`this` / `num`)
31717 BN.prototype.divRound = function divRound (num) {
31718 var dm = this.divmod(num);
31719
31720 // Fast case - exact division
31721 if (dm.mod.isZero()) return dm.div;
31722
31723 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
31724
31725 var half = num.ushrn(1);
31726 var r2 = num.andln(1);
31727 var cmp = mod.cmp(half);
31728
31729 // Round down
31730 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
31731
31732 // Round up
31733 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
31734 };
31735
31736 BN.prototype.modn = function modn (num) {
31737 assert(num <= 0x3ffffff);
31738 var p = (1 << 26) % num;
31739
31740 var acc = 0;
31741 for (var i = this.length - 1; i >= 0; i--) {
31742 acc = (p * acc + (this.words[i] | 0)) % num;
31743 }
31744
31745 return acc;
31746 };
31747
31748 // In-place division by number
31749 BN.prototype.idivn = function idivn (num) {
31750 assert(num <= 0x3ffffff);
31751
31752 var carry = 0;
31753 for (var i = this.length - 1; i >= 0; i--) {
31754 var w = (this.words[i] | 0) + carry * 0x4000000;
31755 this.words[i] = (w / num) | 0;
31756 carry = w % num;
31757 }
31758
31759 return this.strip();
31760 };
31761
31762 BN.prototype.divn = function divn (num) {
31763 return this.clone().idivn(num);
31764 };
31765
31766 BN.prototype.egcd = function egcd (p) {
31767 assert(p.negative === 0);
31768 assert(!p.isZero());
31769
31770 var x = this;
31771 var y = p.clone();
31772
31773 if (x.negative !== 0) {
31774 x = x.umod(p);
31775 } else {
31776 x = x.clone();
31777 }
31778
31779 // A * x + B * y = x
31780 var A = new BN(1);
31781 var B = new BN(0);
31782
31783 // C * x + D * y = y
31784 var C = new BN(0);
31785 var D = new BN(1);
31786
31787 var g = 0;
31788
31789 while (x.isEven() && y.isEven()) {
31790 x.iushrn(1);
31791 y.iushrn(1);
31792 ++g;
31793 }
31794
31795 var yp = y.clone();
31796 var xp = x.clone();
31797
31798 while (!x.isZero()) {
31799 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31800 if (i > 0) {
31801 x.iushrn(i);
31802 while (i-- > 0) {
31803 if (A.isOdd() || B.isOdd()) {
31804 A.iadd(yp);
31805 B.isub(xp);
31806 }
31807
31808 A.iushrn(1);
31809 B.iushrn(1);
31810 }
31811 }
31812
31813 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31814 if (j > 0) {
31815 y.iushrn(j);
31816 while (j-- > 0) {
31817 if (C.isOdd() || D.isOdd()) {
31818 C.iadd(yp);
31819 D.isub(xp);
31820 }
31821
31822 C.iushrn(1);
31823 D.iushrn(1);
31824 }
31825 }
31826
31827 if (x.cmp(y) >= 0) {
31828 x.isub(y);
31829 A.isub(C);
31830 B.isub(D);
31831 } else {
31832 y.isub(x);
31833 C.isub(A);
31834 D.isub(B);
31835 }
31836 }
31837
31838 return {
31839 a: C,
31840 b: D,
31841 gcd: y.iushln(g)
31842 };
31843 };
31844
31845 // This is reduced incarnation of the binary EEA
31846 // above, designated to invert members of the
31847 // _prime_ fields F(p) at a maximal speed
31848 BN.prototype._invmp = function _invmp (p) {
31849 assert(p.negative === 0);
31850 assert(!p.isZero());
31851
31852 var a = this;
31853 var b = p.clone();
31854
31855 if (a.negative !== 0) {
31856 a = a.umod(p);
31857 } else {
31858 a = a.clone();
31859 }
31860
31861 var x1 = new BN(1);
31862 var x2 = new BN(0);
31863
31864 var delta = b.clone();
31865
31866 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
31867 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31868 if (i > 0) {
31869 a.iushrn(i);
31870 while (i-- > 0) {
31871 if (x1.isOdd()) {
31872 x1.iadd(delta);
31873 }
31874
31875 x1.iushrn(1);
31876 }
31877 }
31878
31879 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31880 if (j > 0) {
31881 b.iushrn(j);
31882 while (j-- > 0) {
31883 if (x2.isOdd()) {
31884 x2.iadd(delta);
31885 }
31886
31887 x2.iushrn(1);
31888 }
31889 }
31890
31891 if (a.cmp(b) >= 0) {
31892 a.isub(b);
31893 x1.isub(x2);
31894 } else {
31895 b.isub(a);
31896 x2.isub(x1);
31897 }
31898 }
31899
31900 var res;
31901 if (a.cmpn(1) === 0) {
31902 res = x1;
31903 } else {
31904 res = x2;
31905 }
31906
31907 if (res.cmpn(0) < 0) {
31908 res.iadd(p);
31909 }
31910
31911 return res;
31912 };
31913
31914 BN.prototype.gcd = function gcd (num) {
31915 if (this.isZero()) return num.abs();
31916 if (num.isZero()) return this.abs();
31917
31918 var a = this.clone();
31919 var b = num.clone();
31920 a.negative = 0;
31921 b.negative = 0;
31922
31923 // Remove common factor of two
31924 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
31925 a.iushrn(1);
31926 b.iushrn(1);
31927 }
31928
31929 do {
31930 while (a.isEven()) {
31931 a.iushrn(1);
31932 }
31933 while (b.isEven()) {
31934 b.iushrn(1);
31935 }
31936
31937 var r = a.cmp(b);
31938 if (r < 0) {
31939 // Swap `a` and `b` to make `a` always bigger than `b`
31940 var t = a;
31941 a = b;
31942 b = t;
31943 } else if (r === 0 || b.cmpn(1) === 0) {
31944 break;
31945 }
31946
31947 a.isub(b);
31948 } while (true);
31949
31950 return b.iushln(shift);
31951 };
31952
31953 // Invert number in the field F(num)
31954 BN.prototype.invm = function invm (num) {
31955 return this.egcd(num).a.umod(num);
31956 };
31957
31958 BN.prototype.isEven = function isEven () {
31959 return (this.words[0] & 1) === 0;
31960 };
31961
31962 BN.prototype.isOdd = function isOdd () {
31963 return (this.words[0] & 1) === 1;
31964 };
31965
31966 // And first word and num
31967 BN.prototype.andln = function andln (num) {
31968 return this.words[0] & num;
31969 };
31970
31971 // Increment at the bit position in-line
31972 BN.prototype.bincn = function bincn (bit) {
31973 assert(typeof bit === 'number');
31974 var r = bit % 26;
31975 var s = (bit - r) / 26;
31976 var q = 1 << r;
31977
31978 // Fast case: bit is much higher than all existing words
31979 if (this.length <= s) {
31980 this._expand(s + 1);
31981 this.words[s] |= q;
31982 return this;
31983 }
31984
31985 // Add bit and propagate, if needed
31986 var carry = q;
31987 for (var i = s; carry !== 0 && i < this.length; i++) {
31988 var w = this.words[i] | 0;
31989 w += carry;
31990 carry = w >>> 26;
31991 w &= 0x3ffffff;
31992 this.words[i] = w;
31993 }
31994 if (carry !== 0) {
31995 this.words[i] = carry;
31996 this.length++;
31997 }
31998 return this;
31999 };
32000
32001 BN.prototype.isZero = function isZero () {
32002 return this.length === 1 && this.words[0] === 0;
32003 };
32004
32005 BN.prototype.cmpn = function cmpn (num) {
32006 var negative = num < 0;
32007
32008 if (this.negative !== 0 && !negative) return -1;
32009 if (this.negative === 0 && negative) return 1;
32010
32011 this.strip();
32012
32013 var res;
32014 if (this.length > 1) {
32015 res = 1;
32016 } else {
32017 if (negative) {
32018 num = -num;
32019 }
32020
32021 assert(num <= 0x3ffffff, 'Number is too big');
32022
32023 var w = this.words[0] | 0;
32024 res = w === num ? 0 : w < num ? -1 : 1;
32025 }
32026 if (this.negative !== 0) return -res | 0;
32027 return res;
32028 };
32029
32030 // Compare two numbers and return:
32031 // 1 - if `this` > `num`
32032 // 0 - if `this` == `num`
32033 // -1 - if `this` < `num`
32034 BN.prototype.cmp = function cmp (num) {
32035 if (this.negative !== 0 && num.negative === 0) return -1;
32036 if (this.negative === 0 && num.negative !== 0) return 1;
32037
32038 var res = this.ucmp(num);
32039 if (this.negative !== 0) return -res | 0;
32040 return res;
32041 };
32042
32043 // Unsigned comparison
32044 BN.prototype.ucmp = function ucmp (num) {
32045 // At this point both numbers have the same sign
32046 if (this.length > num.length) return 1;
32047 if (this.length < num.length) return -1;
32048
32049 var res = 0;
32050 for (var i = this.length - 1; i >= 0; i--) {
32051 var a = this.words[i] | 0;
32052 var b = num.words[i] | 0;
32053
32054 if (a === b) continue;
32055 if (a < b) {
32056 res = -1;
32057 } else if (a > b) {
32058 res = 1;
32059 }
32060 break;
32061 }
32062 return res;
32063 };
32064
32065 BN.prototype.gtn = function gtn (num) {
32066 return this.cmpn(num) === 1;
32067 };
32068
32069 BN.prototype.gt = function gt (num) {
32070 return this.cmp(num) === 1;
32071 };
32072
32073 BN.prototype.gten = function gten (num) {
32074 return this.cmpn(num) >= 0;
32075 };
32076
32077 BN.prototype.gte = function gte (num) {
32078 return this.cmp(num) >= 0;
32079 };
32080
32081 BN.prototype.ltn = function ltn (num) {
32082 return this.cmpn(num) === -1;
32083 };
32084
32085 BN.prototype.lt = function lt (num) {
32086 return this.cmp(num) === -1;
32087 };
32088
32089 BN.prototype.lten = function lten (num) {
32090 return this.cmpn(num) <= 0;
32091 };
32092
32093 BN.prototype.lte = function lte (num) {
32094 return this.cmp(num) <= 0;
32095 };
32096
32097 BN.prototype.eqn = function eqn (num) {
32098 return this.cmpn(num) === 0;
32099 };
32100
32101 BN.prototype.eq = function eq (num) {
32102 return this.cmp(num) === 0;
32103 };
32104
32105 //
32106 // A reduce context, could be using montgomery or something better, depending
32107 // on the `m` itself.
32108 //
32109 BN.red = function red (num) {
32110 return new Red(num);
32111 };
32112
32113 BN.prototype.toRed = function toRed (ctx) {
32114 assert(!this.red, 'Already a number in reduction context');
32115 assert(this.negative === 0, 'red works only with positives');
32116 return ctx.convertTo(this)._forceRed(ctx);
32117 };
32118
32119 BN.prototype.fromRed = function fromRed () {
32120 assert(this.red, 'fromRed works only with numbers in reduction context');
32121 return this.red.convertFrom(this);
32122 };
32123
32124 BN.prototype._forceRed = function _forceRed (ctx) {
32125 this.red = ctx;
32126 return this;
32127 };
32128
32129 BN.prototype.forceRed = function forceRed (ctx) {
32130 assert(!this.red, 'Already a number in reduction context');
32131 return this._forceRed(ctx);
32132 };
32133
32134 BN.prototype.redAdd = function redAdd (num) {
32135 assert(this.red, 'redAdd works only with red numbers');
32136 return this.red.add(this, num);
32137 };
32138
32139 BN.prototype.redIAdd = function redIAdd (num) {
32140 assert(this.red, 'redIAdd works only with red numbers');
32141 return this.red.iadd(this, num);
32142 };
32143
32144 BN.prototype.redSub = function redSub (num) {
32145 assert(this.red, 'redSub works only with red numbers');
32146 return this.red.sub(this, num);
32147 };
32148
32149 BN.prototype.redISub = function redISub (num) {
32150 assert(this.red, 'redISub works only with red numbers');
32151 return this.red.isub(this, num);
32152 };
32153
32154 BN.prototype.redShl = function redShl (num) {
32155 assert(this.red, 'redShl works only with red numbers');
32156 return this.red.shl(this, num);
32157 };
32158
32159 BN.prototype.redMul = function redMul (num) {
32160 assert(this.red, 'redMul works only with red numbers');
32161 this.red._verify2(this, num);
32162 return this.red.mul(this, num);
32163 };
32164
32165 BN.prototype.redIMul = function redIMul (num) {
32166 assert(this.red, 'redMul works only with red numbers');
32167 this.red._verify2(this, num);
32168 return this.red.imul(this, num);
32169 };
32170
32171 BN.prototype.redSqr = function redSqr () {
32172 assert(this.red, 'redSqr works only with red numbers');
32173 this.red._verify1(this);
32174 return this.red.sqr(this);
32175 };
32176
32177 BN.prototype.redISqr = function redISqr () {
32178 assert(this.red, 'redISqr works only with red numbers');
32179 this.red._verify1(this);
32180 return this.red.isqr(this);
32181 };
32182
32183 // Square root over p
32184 BN.prototype.redSqrt = function redSqrt () {
32185 assert(this.red, 'redSqrt works only with red numbers');
32186 this.red._verify1(this);
32187 return this.red.sqrt(this);
32188 };
32189
32190 BN.prototype.redInvm = function redInvm () {
32191 assert(this.red, 'redInvm works only with red numbers');
32192 this.red._verify1(this);
32193 return this.red.invm(this);
32194 };
32195
32196 // Return negative clone of `this` % `red modulo`
32197 BN.prototype.redNeg = function redNeg () {
32198 assert(this.red, 'redNeg works only with red numbers');
32199 this.red._verify1(this);
32200 return this.red.neg(this);
32201 };
32202
32203 BN.prototype.redPow = function redPow (num) {
32204 assert(this.red && !num.red, 'redPow(normalNum)');
32205 this.red._verify1(this);
32206 return this.red.pow(this, num);
32207 };
32208
32209 // Prime numbers with efficient reduction
32210 var primes = {
32211 k256: null,
32212 p224: null,
32213 p192: null,
32214 p25519: null
32215 };
32216
32217 // Pseudo-Mersenne prime
32218 function MPrime (name, p) {
32219 // P = 2 ^ N - K
32220 this.name = name;
32221 this.p = new BN(p, 16);
32222 this.n = this.p.bitLength();
32223 this.k = new BN(1).iushln(this.n).isub(this.p);
32224
32225 this.tmp = this._tmp();
32226 }
32227
32228 MPrime.prototype._tmp = function _tmp () {
32229 var tmp = new BN(null);
32230 tmp.words = new Array(Math.ceil(this.n / 13));
32231 return tmp;
32232 };
32233
32234 MPrime.prototype.ireduce = function ireduce (num) {
32235 // Assumes that `num` is less than `P^2`
32236 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
32237 var r = num;
32238 var rlen;
32239
32240 do {
32241 this.split(r, this.tmp);
32242 r = this.imulK(r);
32243 r = r.iadd(this.tmp);
32244 rlen = r.bitLength();
32245 } while (rlen > this.n);
32246
32247 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
32248 if (cmp === 0) {
32249 r.words[0] = 0;
32250 r.length = 1;
32251 } else if (cmp > 0) {
32252 r.isub(this.p);
32253 } else {
32254 r.strip();
32255 }
32256
32257 return r;
32258 };
32259
32260 MPrime.prototype.split = function split (input, out) {
32261 input.iushrn(this.n, 0, out);
32262 };
32263
32264 MPrime.prototype.imulK = function imulK (num) {
32265 return num.imul(this.k);
32266 };
32267
32268 function K256 () {
32269 MPrime.call(
32270 this,
32271 'k256',
32272 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
32273 }
32274 inherits(K256, MPrime);
32275
32276 K256.prototype.split = function split (input, output) {
32277 // 256 = 9 * 26 + 22
32278 var mask = 0x3fffff;
32279
32280 var outLen = Math.min(input.length, 9);
32281 for (var i = 0; i < outLen; i++) {
32282 output.words[i] = input.words[i];
32283 }
32284 output.length = outLen;
32285
32286 if (input.length <= 9) {
32287 input.words[0] = 0;
32288 input.length = 1;
32289 return;
32290 }
32291
32292 // Shift by 9 limbs
32293 var prev = input.words[9];
32294 output.words[output.length++] = prev & mask;
32295
32296 for (i = 10; i < input.length; i++) {
32297 var next = input.words[i] | 0;
32298 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
32299 prev = next;
32300 }
32301 prev >>>= 22;
32302 input.words[i - 10] = prev;
32303 if (prev === 0 && input.length > 10) {
32304 input.length -= 10;
32305 } else {
32306 input.length -= 9;
32307 }
32308 };
32309
32310 K256.prototype.imulK = function imulK (num) {
32311 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
32312 num.words[num.length] = 0;
32313 num.words[num.length + 1] = 0;
32314 num.length += 2;
32315
32316 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
32317 var lo = 0;
32318 for (var i = 0; i < num.length; i++) {
32319 var w = num.words[i] | 0;
32320 lo += w * 0x3d1;
32321 num.words[i] = lo & 0x3ffffff;
32322 lo = w * 0x40 + ((lo / 0x4000000) | 0);
32323 }
32324
32325 // Fast length reduction
32326 if (num.words[num.length - 1] === 0) {
32327 num.length--;
32328 if (num.words[num.length - 1] === 0) {
32329 num.length--;
32330 }
32331 }
32332 return num;
32333 };
32334
32335 function P224 () {
32336 MPrime.call(
32337 this,
32338 'p224',
32339 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
32340 }
32341 inherits(P224, MPrime);
32342
32343 function P192 () {
32344 MPrime.call(
32345 this,
32346 'p192',
32347 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
32348 }
32349 inherits(P192, MPrime);
32350
32351 function P25519 () {
32352 // 2 ^ 255 - 19
32353 MPrime.call(
32354 this,
32355 '25519',
32356 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
32357 }
32358 inherits(P25519, MPrime);
32359
32360 P25519.prototype.imulK = function imulK (num) {
32361 // K = 0x13
32362 var carry = 0;
32363 for (var i = 0; i < num.length; i++) {
32364 var hi = (num.words[i] | 0) * 0x13 + carry;
32365 var lo = hi & 0x3ffffff;
32366 hi >>>= 26;
32367
32368 num.words[i] = lo;
32369 carry = hi;
32370 }
32371 if (carry !== 0) {
32372 num.words[num.length++] = carry;
32373 }
32374 return num;
32375 };
32376
32377 // Exported mostly for testing purposes, use plain name instead
32378 BN._prime = function prime (name) {
32379 // Cached version of prime
32380 if (primes[name]) return primes[name];
32381
32382 var prime;
32383 if (name === 'k256') {
32384 prime = new K256();
32385 } else if (name === 'p224') {
32386 prime = new P224();
32387 } else if (name === 'p192') {
32388 prime = new P192();
32389 } else if (name === 'p25519') {
32390 prime = new P25519();
32391 } else {
32392 throw new Error('Unknown prime ' + name);
32393 }
32394 primes[name] = prime;
32395
32396 return prime;
32397 };
32398
32399 //
32400 // Base reduction engine
32401 //
32402 function Red (m) {
32403 if (typeof m === 'string') {
32404 var prime = BN._prime(m);
32405 this.m = prime.p;
32406 this.prime = prime;
32407 } else {
32408 assert(m.gtn(1), 'modulus must be greater than 1');
32409 this.m = m;
32410 this.prime = null;
32411 }
32412 }
32413
32414 Red.prototype._verify1 = function _verify1 (a) {
32415 assert(a.negative === 0, 'red works only with positives');
32416 assert(a.red, 'red works only with red numbers');
32417 };
32418
32419 Red.prototype._verify2 = function _verify2 (a, b) {
32420 assert((a.negative | b.negative) === 0, 'red works only with positives');
32421 assert(a.red && a.red === b.red,
32422 'red works only with red numbers');
32423 };
32424
32425 Red.prototype.imod = function imod (a) {
32426 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
32427 return a.umod(this.m)._forceRed(this);
32428 };
32429
32430 Red.prototype.neg = function neg (a) {
32431 if (a.isZero()) {
32432 return a.clone();
32433 }
32434
32435 return this.m.sub(a)._forceRed(this);
32436 };
32437
32438 Red.prototype.add = function add (a, b) {
32439 this._verify2(a, b);
32440
32441 var res = a.add(b);
32442 if (res.cmp(this.m) >= 0) {
32443 res.isub(this.m);
32444 }
32445 return res._forceRed(this);
32446 };
32447
32448 Red.prototype.iadd = function iadd (a, b) {
32449 this._verify2(a, b);
32450
32451 var res = a.iadd(b);
32452 if (res.cmp(this.m) >= 0) {
32453 res.isub(this.m);
32454 }
32455 return res;
32456 };
32457
32458 Red.prototype.sub = function sub (a, b) {
32459 this._verify2(a, b);
32460
32461 var res = a.sub(b);
32462 if (res.cmpn(0) < 0) {
32463 res.iadd(this.m);
32464 }
32465 return res._forceRed(this);
32466 };
32467
32468 Red.prototype.isub = function isub (a, b) {
32469 this._verify2(a, b);
32470
32471 var res = a.isub(b);
32472 if (res.cmpn(0) < 0) {
32473 res.iadd(this.m);
32474 }
32475 return res;
32476 };
32477
32478 Red.prototype.shl = function shl (a, num) {
32479 this._verify1(a);
32480 return this.imod(a.ushln(num));
32481 };
32482
32483 Red.prototype.imul = function imul (a, b) {
32484 this._verify2(a, b);
32485 return this.imod(a.imul(b));
32486 };
32487
32488 Red.prototype.mul = function mul (a, b) {
32489 this._verify2(a, b);
32490 return this.imod(a.mul(b));
32491 };
32492
32493 Red.prototype.isqr = function isqr (a) {
32494 return this.imul(a, a.clone());
32495 };
32496
32497 Red.prototype.sqr = function sqr (a) {
32498 return this.mul(a, a);
32499 };
32500
32501 Red.prototype.sqrt = function sqrt (a) {
32502 if (a.isZero()) return a.clone();
32503
32504 var mod3 = this.m.andln(3);
32505 assert(mod3 % 2 === 1);
32506
32507 // Fast case
32508 if (mod3 === 3) {
32509 var pow = this.m.add(new BN(1)).iushrn(2);
32510 return this.pow(a, pow);
32511 }
32512
32513 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
32514 //
32515 // Find Q and S, that Q * 2 ^ S = (P - 1)
32516 var q = this.m.subn(1);
32517 var s = 0;
32518 while (!q.isZero() && q.andln(1) === 0) {
32519 s++;
32520 q.iushrn(1);
32521 }
32522 assert(!q.isZero());
32523
32524 var one = new BN(1).toRed(this);
32525 var nOne = one.redNeg();
32526
32527 // Find quadratic non-residue
32528 // NOTE: Max is such because of generalized Riemann hypothesis.
32529 var lpow = this.m.subn(1).iushrn(1);
32530 var z = this.m.bitLength();
32531 z = new BN(2 * z * z).toRed(this);
32532
32533 while (this.pow(z, lpow).cmp(nOne) !== 0) {
32534 z.redIAdd(nOne);
32535 }
32536
32537 var c = this.pow(z, q);
32538 var r = this.pow(a, q.addn(1).iushrn(1));
32539 var t = this.pow(a, q);
32540 var m = s;
32541 while (t.cmp(one) !== 0) {
32542 var tmp = t;
32543 for (var i = 0; tmp.cmp(one) !== 0; i++) {
32544 tmp = tmp.redSqr();
32545 }
32546 assert(i < m);
32547 var b = this.pow(c, new BN(1).iushln(m - i - 1));
32548
32549 r = r.redMul(b);
32550 c = b.redSqr();
32551 t = t.redMul(c);
32552 m = i;
32553 }
32554
32555 return r;
32556 };
32557
32558 Red.prototype.invm = function invm (a) {
32559 var inv = a._invmp(this.m);
32560 if (inv.negative !== 0) {
32561 inv.negative = 0;
32562 return this.imod(inv).redNeg();
32563 } else {
32564 return this.imod(inv);
32565 }
32566 };
32567
32568 Red.prototype.pow = function pow (a, num) {
32569 if (num.isZero()) return new BN(1);
32570 if (num.cmpn(1) === 0) return a.clone();
32571
32572 var windowSize = 4;
32573 var wnd = new Array(1 << windowSize);
32574 wnd[0] = new BN(1).toRed(this);
32575 wnd[1] = a;
32576 for (var i = 2; i < wnd.length; i++) {
32577 wnd[i] = this.mul(wnd[i - 1], a);
32578 }
32579
32580 var res = wnd[0];
32581 var current = 0;
32582 var currentLen = 0;
32583 var start = num.bitLength() % 26;
32584 if (start === 0) {
32585 start = 26;
32586 }
32587
32588 for (i = num.length - 1; i >= 0; i--) {
32589 var word = num.words[i];
32590 for (var j = start - 1; j >= 0; j--) {
32591 var bit = (word >> j) & 1;
32592 if (res !== wnd[0]) {
32593 res = this.sqr(res);
32594 }
32595
32596 if (bit === 0 && current === 0) {
32597 currentLen = 0;
32598 continue;
32599 }
32600
32601 current <<= 1;
32602 current |= bit;
32603 currentLen++;
32604 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
32605
32606 res = this.mul(res, wnd[current]);
32607 currentLen = 0;
32608 current = 0;
32609 }
32610 start = 26;
32611 }
32612
32613 return res;
32614 };
32615
32616 Red.prototype.convertTo = function convertTo (num) {
32617 var r = num.umod(this.m);
32618
32619 return r === num ? r.clone() : r;
32620 };
32621
32622 Red.prototype.convertFrom = function convertFrom (num) {
32623 var res = num.clone();
32624 res.red = null;
32625 return res;
32626 };
32627
32628 //
32629 // Montgomery method engine
32630 //
32631
32632 BN.mont = function mont (num) {
32633 return new Mont(num);
32634 };
32635
32636 function Mont (m) {
32637 Red.call(this, m);
32638
32639 this.shift = this.m.bitLength();
32640 if (this.shift % 26 !== 0) {
32641 this.shift += 26 - (this.shift % 26);
32642 }
32643
32644 this.r = new BN(1).iushln(this.shift);
32645 this.r2 = this.imod(this.r.sqr());
32646 this.rinv = this.r._invmp(this.m);
32647
32648 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
32649 this.minv = this.minv.umod(this.r);
32650 this.minv = this.r.sub(this.minv);
32651 }
32652 inherits(Mont, Red);
32653
32654 Mont.prototype.convertTo = function convertTo (num) {
32655 return this.imod(num.ushln(this.shift));
32656 };
32657
32658 Mont.prototype.convertFrom = function convertFrom (num) {
32659 var r = this.imod(num.mul(this.rinv));
32660 r.red = null;
32661 return r;
32662 };
32663
32664 Mont.prototype.imul = function imul (a, b) {
32665 if (a.isZero() || b.isZero()) {
32666 a.words[0] = 0;
32667 a.length = 1;
32668 return a;
32669 }
32670
32671 var t = a.imul(b);
32672 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32673 var u = t.isub(c).iushrn(this.shift);
32674 var res = u;
32675
32676 if (u.cmp(this.m) >= 0) {
32677 res = u.isub(this.m);
32678 } else if (u.cmpn(0) < 0) {
32679 res = u.iadd(this.m);
32680 }
32681
32682 return res._forceRed(this);
32683 };
32684
32685 Mont.prototype.mul = function mul (a, b) {
32686 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
32687
32688 var t = a.mul(b);
32689 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32690 var u = t.isub(c).iushrn(this.shift);
32691 var res = u;
32692 if (u.cmp(this.m) >= 0) {
32693 res = u.isub(this.m);
32694 } else if (u.cmpn(0) < 0) {
32695 res = u.iadd(this.m);
32696 }
32697
32698 return res._forceRed(this);
32699 };
32700
32701 Mont.prototype.invm = function invm (a) {
32702 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
32703 var res = this.imod(a._invmp(this.m).mul(this.r2));
32704 return res._forceRed(this);
32705 };
32706 })(typeof module === 'undefined' || module, this);
32707
32708 },{}],34:[function(require,module,exports){
32709 var r;
32710
32711 module.exports = function rand(len) {
32712 if (!r)
32713 r = new Rand(null);
32714
32715 return r.generate(len);
32716 };
32717
32718 function Rand(rand) {
32719 this.rand = rand;
32720 }
32721 module.exports.Rand = Rand;
32722
32723 Rand.prototype.generate = function generate(len) {
32724 return this._rand(len);
32725 };
32726
32727 if (typeof self === 'object') {
32728 if (self.crypto && self.crypto.getRandomValues) {
32729 // Modern browsers
32730 Rand.prototype._rand = function _rand(n) {
32731 var arr = new Uint8Array(n);
32732 self.crypto.getRandomValues(arr);
32733 return arr;
32734 };
32735 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
32736 // IE
32737 Rand.prototype._rand = function _rand(n) {
32738 var arr = new Uint8Array(n);
32739 self.msCrypto.getRandomValues(arr);
32740 return arr;
32741 };
32742 } else {
32743 // Old junk
32744 Rand.prototype._rand = function() {
32745 throw new Error('Not implemented yet');
32746 };
32747 }
32748 } else {
32749 // Node.js or Web worker with no crypto support
32750 try {
32751 var crypto = require('crypto');
32752
32753 Rand.prototype._rand = function _rand(n) {
32754 return crypto.randomBytes(n);
32755 };
32756 } catch (e) {
32757 // Emulate crypto API using randy
32758 Rand.prototype._rand = function _rand(n) {
32759 var res = new Uint8Array(n);
32760 for (var i = 0; i < res.length; i++)
32761 res[i] = this.rand.getByte();
32762 return res;
32763 };
32764 }
32765 }
32766
32767 },{"crypto":3}],35:[function(require,module,exports){
32768 (function (Buffer){
32769 var Transform = require('stream').Transform
32770 var inherits = require('inherits')
32771 var StringDecoder = require('string_decoder').StringDecoder
32772 module.exports = CipherBase
32773 inherits(CipherBase, Transform)
32774 function CipherBase (hashMode) {
32775 Transform.call(this)
32776 this.hashMode = typeof hashMode === 'string'
32777 if (this.hashMode) {
32778 this[hashMode] = this._finalOrDigest
32779 } else {
32780 this.final = this._finalOrDigest
32781 }
32782 this._decoder = null
32783 this._encoding = null
32784 }
32785 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
32786 if (typeof data === 'string') {
32787 data = new Buffer(data, inputEnc)
32788 }
32789 var outData = this._update(data)
32790 if (this.hashMode) {
32791 return this
32792 }
32793 if (outputEnc) {
32794 outData = this._toString(outData, outputEnc)
32795 }
32796 return outData
32797 }
32798
32799 CipherBase.prototype.setAutoPadding = function () {}
32800
32801 CipherBase.prototype.getAuthTag = function () {
32802 throw new Error('trying to get auth tag in unsupported state')
32803 }
32804
32805 CipherBase.prototype.setAuthTag = function () {
32806 throw new Error('trying to set auth tag in unsupported state')
32807 }
32808
32809 CipherBase.prototype.setAAD = function () {
32810 throw new Error('trying to set aad in unsupported state')
32811 }
32812
32813 CipherBase.prototype._transform = function (data, _, next) {
32814 var err
32815 try {
32816 if (this.hashMode) {
32817 this._update(data)
32818 } else {
32819 this.push(this._update(data))
32820 }
32821 } catch (e) {
32822 err = e
32823 } finally {
32824 next(err)
32825 }
32826 }
32827 CipherBase.prototype._flush = function (done) {
32828 var err
32829 try {
32830 this.push(this._final())
32831 } catch (e) {
32832 err = e
32833 } finally {
32834 done(err)
32835 }
32836 }
32837 CipherBase.prototype._finalOrDigest = function (outputEnc) {
32838 var outData = this._final() || new Buffer('')
32839 if (outputEnc) {
32840 outData = this._toString(outData, outputEnc, true)
32841 }
32842 return outData
32843 }
32844
32845 CipherBase.prototype._toString = function (value, enc, fin) {
32846 if (!this._decoder) {
32847 this._decoder = new StringDecoder(enc)
32848 this._encoding = enc
32849 }
32850 if (this._encoding !== enc) {
32851 throw new Error('can\'t switch encodings')
32852 }
32853 var out = this._decoder.write(value)
32854 if (fin) {
32855 out += this._decoder.end()
32856 }
32857 return out
32858 }
32859
32860 }).call(this,require("buffer").Buffer)
32861 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
32862 (function (Buffer){
32863 'use strict';
32864 var inherits = require('inherits')
32865 var md5 = require('./md5')
32866 var rmd160 = require('ripemd160')
32867 var sha = require('sha.js')
32868
32869 var Base = require('cipher-base')
32870
32871 function HashNoConstructor(hash) {
32872 Base.call(this, 'digest')
32873
32874 this._hash = hash
32875 this.buffers = []
32876 }
32877
32878 inherits(HashNoConstructor, Base)
32879
32880 HashNoConstructor.prototype._update = function (data) {
32881 this.buffers.push(data)
32882 }
32883
32884 HashNoConstructor.prototype._final = function () {
32885 var buf = Buffer.concat(this.buffers)
32886 var r = this._hash(buf)
32887 this.buffers = null
32888
32889 return r
32890 }
32891
32892 function Hash(hash) {
32893 Base.call(this, 'digest')
32894
32895 this._hash = hash
32896 }
32897
32898 inherits(Hash, Base)
32899
32900 Hash.prototype._update = function (data) {
32901 this._hash.update(data)
32902 }
32903
32904 Hash.prototype._final = function () {
32905 return this._hash.digest()
32906 }
32907
32908 module.exports = function createHash (alg) {
32909 alg = alg.toLowerCase()
32910 if ('md5' === alg) return new HashNoConstructor(md5)
32911 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
32912
32913 return new Hash(sha(alg))
32914 }
32915
32916 }).call(this,require("buffer").Buffer)
32917 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
32918 (function (Buffer){
32919 'use strict';
32920 var intSize = 4;
32921 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
32922 var chrsz = 8;
32923
32924 function toArray(buf, bigEndian) {
32925 if ((buf.length % intSize) !== 0) {
32926 var len = buf.length + (intSize - (buf.length % intSize));
32927 buf = Buffer.concat([buf, zeroBuffer], len);
32928 }
32929
32930 var arr = [];
32931 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
32932 for (var i = 0; i < buf.length; i += intSize) {
32933 arr.push(fn.call(buf, i));
32934 }
32935 return arr;
32936 }
32937
32938 function toBuffer(arr, size, bigEndian) {
32939 var buf = new Buffer(size);
32940 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
32941 for (var i = 0; i < arr.length; i++) {
32942 fn.call(buf, arr[i], i * 4, true);
32943 }
32944 return buf;
32945 }
32946
32947 function hash(buf, fn, hashSize, bigEndian) {
32948 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
32949 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
32950 return toBuffer(arr, hashSize, bigEndian);
32951 }
32952 exports.hash = hash;
32953 }).call(this,require("buffer").Buffer)
32954 },{"buffer":5}],38:[function(require,module,exports){
32955 'use strict';
32956 /*
32957 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
32958 * Digest Algorithm, as defined in RFC 1321.
32959 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
32960 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
32961 * Distributed under the BSD License
32962 * See http://pajhome.org.uk/crypt/md5 for more info.
32963 */
32964
32965 var helpers = require('./helpers');
32966
32967 /*
32968 * Calculate the MD5 of an array of little-endian words, and a bit length
32969 */
32970 function core_md5(x, len)
32971 {
32972 /* append padding */
32973 x[len >> 5] |= 0x80 << ((len) % 32);
32974 x[(((len + 64) >>> 9) << 4) + 14] = len;
32975
32976 var a = 1732584193;
32977 var b = -271733879;
32978 var c = -1732584194;
32979 var d = 271733878;
32980
32981 for(var i = 0; i < x.length; i += 16)
32982 {
32983 var olda = a;
32984 var oldb = b;
32985 var oldc = c;
32986 var oldd = d;
32987
32988 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
32989 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
32990 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
32991 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
32992 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
32993 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
32994 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
32995 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
32996 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
32997 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
32998 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
32999 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
33000 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
33001 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
33002 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
33003 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
33004
33005 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
33006 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
33007 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
33008 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
33009 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
33010 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
33011 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
33012 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
33013 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
33014 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
33015 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
33016 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
33017 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
33018 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
33019 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
33020 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
33021
33022 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
33023 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
33024 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
33025 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
33026 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
33027 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
33028 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
33029 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
33030 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
33031 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
33032 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
33033 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
33034 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
33035 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
33036 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
33037 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
33038
33039 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
33040 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
33041 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
33042 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
33043 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
33044 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
33045 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
33046 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
33047 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
33048 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
33049 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
33050 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
33051 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
33052 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
33053 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
33054 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
33055
33056 a = safe_add(a, olda);
33057 b = safe_add(b, oldb);
33058 c = safe_add(c, oldc);
33059 d = safe_add(d, oldd);
33060 }
33061 return Array(a, b, c, d);
33062
33063 }
33064
33065 /*
33066 * These functions implement the four basic operations the algorithm uses.
33067 */
33068 function md5_cmn(q, a, b, x, s, t)
33069 {
33070 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
33071 }
33072 function md5_ff(a, b, c, d, x, s, t)
33073 {
33074 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
33075 }
33076 function md5_gg(a, b, c, d, x, s, t)
33077 {
33078 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
33079 }
33080 function md5_hh(a, b, c, d, x, s, t)
33081 {
33082 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
33083 }
33084 function md5_ii(a, b, c, d, x, s, t)
33085 {
33086 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
33087 }
33088
33089 /*
33090 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
33091 * to work around bugs in some JS interpreters.
33092 */
33093 function safe_add(x, y)
33094 {
33095 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
33096 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
33097 return (msw << 16) | (lsw & 0xFFFF);
33098 }
33099
33100 /*
33101 * Bitwise rotate a 32-bit number to the left.
33102 */
33103 function bit_rol(num, cnt)
33104 {
33105 return (num << cnt) | (num >>> (32 - cnt));
33106 }
33107
33108 module.exports = function md5(buf) {
33109 return helpers.hash(buf, core_md5, 16);
33110 };
33111 },{"./helpers":37}],39:[function(require,module,exports){
33112 'use strict';
33113
33114 var elliptic = exports;
33115
33116 elliptic.version = require('../package.json').version;
33117 elliptic.utils = require('./elliptic/utils');
33118 elliptic.rand = require('brorand');
33119 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
33120 elliptic.curve = require('./elliptic/curve');
33121 elliptic.curves = require('./elliptic/curves');
33122
33123 // Protocols
33124 elliptic.ec = require('./elliptic/ec');
33125 elliptic.eddsa = require('./elliptic/eddsa');
33126
33127 },{"../package.json":55,"./elliptic/curve":42,"./elliptic/curves":45,"./elliptic/ec":46,"./elliptic/eddsa":49,"./elliptic/hmac-drbg":52,"./elliptic/utils":54,"brorand":34}],40:[function(require,module,exports){
33128 'use strict';
33129
33130 var BN = require('bn.js');
33131 var elliptic = require('../../elliptic');
33132 var utils = elliptic.utils;
33133 var getNAF = utils.getNAF;
33134 var getJSF = utils.getJSF;
33135 var assert = utils.assert;
33136
33137 function BaseCurve(type, conf) {
33138 this.type = type;
33139 this.p = new BN(conf.p, 16);
33140
33141 // Use Montgomery, when there is no fast reduction for the prime
33142 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
33143
33144 // Useful for many curves
33145 this.zero = new BN(0).toRed(this.red);
33146 this.one = new BN(1).toRed(this.red);
33147 this.two = new BN(2).toRed(this.red);
33148
33149 // Curve configuration, optional
33150 this.n = conf.n && new BN(conf.n, 16);
33151 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
33152
33153 // Temporary arrays
33154 this._wnafT1 = new Array(4);
33155 this._wnafT2 = new Array(4);
33156 this._wnafT3 = new Array(4);
33157 this._wnafT4 = new Array(4);
33158
33159 // Generalized Greg Maxwell's trick
33160 var adjustCount = this.n && this.p.div(this.n);
33161 if (!adjustCount || adjustCount.cmpn(100) > 0) {
33162 this.redN = null;
33163 } else {
33164 this._maxwellTrick = true;
33165 this.redN = this.n.toRed(this.red);
33166 }
33167 }
33168 module.exports = BaseCurve;
33169
33170 BaseCurve.prototype.point = function point() {
33171 throw new Error('Not implemented');
33172 };
33173
33174 BaseCurve.prototype.validate = function validate() {
33175 throw new Error('Not implemented');
33176 };
33177
33178 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
33179 assert(p.precomputed);
33180 var doubles = p._getDoubles();
33181
33182 var naf = getNAF(k, 1);
33183 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
33184 I /= 3;
33185
33186 // Translate into more windowed form
33187 var repr = [];
33188 for (var j = 0; j < naf.length; j += doubles.step) {
33189 var nafW = 0;
33190 for (var k = j + doubles.step - 1; k >= j; k--)
33191 nafW = (nafW << 1) + naf[k];
33192 repr.push(nafW);
33193 }
33194
33195 var a = this.jpoint(null, null, null);
33196 var b = this.jpoint(null, null, null);
33197 for (var i = I; i > 0; i--) {
33198 for (var j = 0; j < repr.length; j++) {
33199 var nafW = repr[j];
33200 if (nafW === i)
33201 b = b.mixedAdd(doubles.points[j]);
33202 else if (nafW === -i)
33203 b = b.mixedAdd(doubles.points[j].neg());
33204 }
33205 a = a.add(b);
33206 }
33207 return a.toP();
33208 };
33209
33210 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
33211 var w = 4;
33212
33213 // Precompute window
33214 var nafPoints = p._getNAFPoints(w);
33215 w = nafPoints.wnd;
33216 var wnd = nafPoints.points;
33217
33218 // Get NAF form
33219 var naf = getNAF(k, w);
33220
33221 // Add `this`*(N+1) for every w-NAF index
33222 var acc = this.jpoint(null, null, null);
33223 for (var i = naf.length - 1; i >= 0; i--) {
33224 // Count zeroes
33225 for (var k = 0; i >= 0 && naf[i] === 0; i--)
33226 k++;
33227 if (i >= 0)
33228 k++;
33229 acc = acc.dblp(k);
33230
33231 if (i < 0)
33232 break;
33233 var z = naf[i];
33234 assert(z !== 0);
33235 if (p.type === 'affine') {
33236 // J +- P
33237 if (z > 0)
33238 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
33239 else
33240 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
33241 } else {
33242 // J +- J
33243 if (z > 0)
33244 acc = acc.add(wnd[(z - 1) >> 1]);
33245 else
33246 acc = acc.add(wnd[(-z - 1) >> 1].neg());
33247 }
33248 }
33249 return p.type === 'affine' ? acc.toP() : acc;
33250 };
33251
33252 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
33253 points,
33254 coeffs,
33255 len,
33256 jacobianResult) {
33257 var wndWidth = this._wnafT1;
33258 var wnd = this._wnafT2;
33259 var naf = this._wnafT3;
33260
33261 // Fill all arrays
33262 var max = 0;
33263 for (var i = 0; i < len; i++) {
33264 var p = points[i];
33265 var nafPoints = p._getNAFPoints(defW);
33266 wndWidth[i] = nafPoints.wnd;
33267 wnd[i] = nafPoints.points;
33268 }
33269
33270 // Comb small window NAFs
33271 for (var i = len - 1; i >= 1; i -= 2) {
33272 var a = i - 1;
33273 var b = i;
33274 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
33275 naf[a] = getNAF(coeffs[a], wndWidth[a]);
33276 naf[b] = getNAF(coeffs[b], wndWidth[b]);
33277 max = Math.max(naf[a].length, max);
33278 max = Math.max(naf[b].length, max);
33279 continue;
33280 }
33281
33282 var comb = [
33283 points[a], /* 1 */
33284 null, /* 3 */
33285 null, /* 5 */
33286 points[b] /* 7 */
33287 ];
33288
33289 // Try to avoid Projective points, if possible
33290 if (points[a].y.cmp(points[b].y) === 0) {
33291 comb[1] = points[a].add(points[b]);
33292 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33293 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
33294 comb[1] = points[a].toJ().mixedAdd(points[b]);
33295 comb[2] = points[a].add(points[b].neg());
33296 } else {
33297 comb[1] = points[a].toJ().mixedAdd(points[b]);
33298 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33299 }
33300
33301 var index = [
33302 -3, /* -1 -1 */
33303 -1, /* -1 0 */
33304 -5, /* -1 1 */
33305 -7, /* 0 -1 */
33306 0, /* 0 0 */
33307 7, /* 0 1 */
33308 5, /* 1 -1 */
33309 1, /* 1 0 */
33310 3 /* 1 1 */
33311 ];
33312
33313 var jsf = getJSF(coeffs[a], coeffs[b]);
33314 max = Math.max(jsf[0].length, max);
33315 naf[a] = new Array(max);
33316 naf[b] = new Array(max);
33317 for (var j = 0; j < max; j++) {
33318 var ja = jsf[0][j] | 0;
33319 var jb = jsf[1][j] | 0;
33320
33321 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
33322 naf[b][j] = 0;
33323 wnd[a] = comb;
33324 }
33325 }
33326
33327 var acc = this.jpoint(null, null, null);
33328 var tmp = this._wnafT4;
33329 for (var i = max; i >= 0; i--) {
33330 var k = 0;
33331
33332 while (i >= 0) {
33333 var zero = true;
33334 for (var j = 0; j < len; j++) {
33335 tmp[j] = naf[j][i] | 0;
33336 if (tmp[j] !== 0)
33337 zero = false;
33338 }
33339 if (!zero)
33340 break;
33341 k++;
33342 i--;
33343 }
33344 if (i >= 0)
33345 k++;
33346 acc = acc.dblp(k);
33347 if (i < 0)
33348 break;
33349
33350 for (var j = 0; j < len; j++) {
33351 var z = tmp[j];
33352 var p;
33353 if (z === 0)
33354 continue;
33355 else if (z > 0)
33356 p = wnd[j][(z - 1) >> 1];
33357 else if (z < 0)
33358 p = wnd[j][(-z - 1) >> 1].neg();
33359
33360 if (p.type === 'affine')
33361 acc = acc.mixedAdd(p);
33362 else
33363 acc = acc.add(p);
33364 }
33365 }
33366 // Zeroify references
33367 for (var i = 0; i < len; i++)
33368 wnd[i] = null;
33369
33370 if (jacobianResult)
33371 return acc;
33372 else
33373 return acc.toP();
33374 };
33375
33376 function BasePoint(curve, type) {
33377 this.curve = curve;
33378 this.type = type;
33379 this.precomputed = null;
33380 }
33381 BaseCurve.BasePoint = BasePoint;
33382
33383 BasePoint.prototype.eq = function eq(/*other*/) {
33384 throw new Error('Not implemented');
33385 };
33386
33387 BasePoint.prototype.validate = function validate() {
33388 return this.curve.validate(this);
33389 };
33390
33391 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33392 bytes = utils.toArray(bytes, enc);
33393
33394 var len = this.p.byteLength();
33395
33396 // uncompressed, hybrid-odd, hybrid-even
33397 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
33398 bytes.length - 1 === 2 * len) {
33399 if (bytes[0] === 0x06)
33400 assert(bytes[bytes.length - 1] % 2 === 0);
33401 else if (bytes[0] === 0x07)
33402 assert(bytes[bytes.length - 1] % 2 === 1);
33403
33404 var res = this.point(bytes.slice(1, 1 + len),
33405 bytes.slice(1 + len, 1 + 2 * len));
33406
33407 return res;
33408 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
33409 bytes.length - 1 === len) {
33410 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
33411 }
33412 throw new Error('Unknown point format');
33413 };
33414
33415 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
33416 return this.encode(enc, true);
33417 };
33418
33419 BasePoint.prototype._encode = function _encode(compact) {
33420 var len = this.curve.p.byteLength();
33421 var x = this.getX().toArray('be', len);
33422
33423 if (compact)
33424 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
33425
33426 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
33427 };
33428
33429 BasePoint.prototype.encode = function encode(enc, compact) {
33430 return utils.encode(this._encode(compact), enc);
33431 };
33432
33433 BasePoint.prototype.precompute = function precompute(power) {
33434 if (this.precomputed)
33435 return this;
33436
33437 var precomputed = {
33438 doubles: null,
33439 naf: null,
33440 beta: null
33441 };
33442 precomputed.naf = this._getNAFPoints(8);
33443 precomputed.doubles = this._getDoubles(4, power);
33444 precomputed.beta = this._getBeta();
33445 this.precomputed = precomputed;
33446
33447 return this;
33448 };
33449
33450 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
33451 if (!this.precomputed)
33452 return false;
33453
33454 var doubles = this.precomputed.doubles;
33455 if (!doubles)
33456 return false;
33457
33458 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
33459 };
33460
33461 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
33462 if (this.precomputed && this.precomputed.doubles)
33463 return this.precomputed.doubles;
33464
33465 var doubles = [ this ];
33466 var acc = this;
33467 for (var i = 0; i < power; i += step) {
33468 for (var j = 0; j < step; j++)
33469 acc = acc.dbl();
33470 doubles.push(acc);
33471 }
33472 return {
33473 step: step,
33474 points: doubles
33475 };
33476 };
33477
33478 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
33479 if (this.precomputed && this.precomputed.naf)
33480 return this.precomputed.naf;
33481
33482 var res = [ this ];
33483 var max = (1 << wnd) - 1;
33484 var dbl = max === 1 ? null : this.dbl();
33485 for (var i = 1; i < max; i++)
33486 res[i] = res[i - 1].add(dbl);
33487 return {
33488 wnd: wnd,
33489 points: res
33490 };
33491 };
33492
33493 BasePoint.prototype._getBeta = function _getBeta() {
33494 return null;
33495 };
33496
33497 BasePoint.prototype.dblp = function dblp(k) {
33498 var r = this;
33499 for (var i = 0; i < k; i++)
33500 r = r.dbl();
33501 return r;
33502 };
33503
33504 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
33505 'use strict';
33506
33507 var curve = require('../curve');
33508 var elliptic = require('../../elliptic');
33509 var BN = require('bn.js');
33510 var inherits = require('inherits');
33511 var Base = curve.base;
33512
33513 var assert = elliptic.utils.assert;
33514
33515 function EdwardsCurve(conf) {
33516 // NOTE: Important as we are creating point in Base.call()
33517 this.twisted = (conf.a | 0) !== 1;
33518 this.mOneA = this.twisted && (conf.a | 0) === -1;
33519 this.extended = this.mOneA;
33520
33521 Base.call(this, 'edwards', conf);
33522
33523 this.a = new BN(conf.a, 16).umod(this.red.m);
33524 this.a = this.a.toRed(this.red);
33525 this.c = new BN(conf.c, 16).toRed(this.red);
33526 this.c2 = this.c.redSqr();
33527 this.d = new BN(conf.d, 16).toRed(this.red);
33528 this.dd = this.d.redAdd(this.d);
33529
33530 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
33531 this.oneC = (conf.c | 0) === 1;
33532 }
33533 inherits(EdwardsCurve, Base);
33534 module.exports = EdwardsCurve;
33535
33536 EdwardsCurve.prototype._mulA = function _mulA(num) {
33537 if (this.mOneA)
33538 return num.redNeg();
33539 else
33540 return this.a.redMul(num);
33541 };
33542
33543 EdwardsCurve.prototype._mulC = function _mulC(num) {
33544 if (this.oneC)
33545 return num;
33546 else
33547 return this.c.redMul(num);
33548 };
33549
33550 // Just for compatibility with Short curve
33551 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
33552 return this.point(x, y, z, t);
33553 };
33554
33555 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
33556 x = new BN(x, 16);
33557 if (!x.red)
33558 x = x.toRed(this.red);
33559
33560 var x2 = x.redSqr();
33561 var rhs = this.c2.redSub(this.a.redMul(x2));
33562 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
33563
33564 var y2 = rhs.redMul(lhs.redInvm());
33565 var y = y2.redSqrt();
33566 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
33567 throw new Error('invalid point');
33568
33569 var isOdd = y.fromRed().isOdd();
33570 if (odd && !isOdd || !odd && isOdd)
33571 y = y.redNeg();
33572
33573 return this.point(x, y);
33574 };
33575
33576 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
33577 y = new BN(y, 16);
33578 if (!y.red)
33579 y = y.toRed(this.red);
33580
33581 // x^2 = (y^2 - 1) / (d y^2 + 1)
33582 var y2 = y.redSqr();
33583 var lhs = y2.redSub(this.one);
33584 var rhs = y2.redMul(this.d).redAdd(this.one);
33585 var x2 = lhs.redMul(rhs.redInvm());
33586
33587 if (x2.cmp(this.zero) === 0) {
33588 if (odd)
33589 throw new Error('invalid point');
33590 else
33591 return this.point(this.zero, y);
33592 }
33593
33594 var x = x2.redSqrt();
33595 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
33596 throw new Error('invalid point');
33597
33598 if (x.isOdd() !== odd)
33599 x = x.redNeg();
33600
33601 return this.point(x, y);
33602 };
33603
33604 EdwardsCurve.prototype.validate = function validate(point) {
33605 if (point.isInfinity())
33606 return true;
33607
33608 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
33609 point.normalize();
33610
33611 var x2 = point.x.redSqr();
33612 var y2 = point.y.redSqr();
33613 var lhs = x2.redMul(this.a).redAdd(y2);
33614 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
33615
33616 return lhs.cmp(rhs) === 0;
33617 };
33618
33619 function Point(curve, x, y, z, t) {
33620 Base.BasePoint.call(this, curve, 'projective');
33621 if (x === null && y === null && z === null) {
33622 this.x = this.curve.zero;
33623 this.y = this.curve.one;
33624 this.z = this.curve.one;
33625 this.t = this.curve.zero;
33626 this.zOne = true;
33627 } else {
33628 this.x = new BN(x, 16);
33629 this.y = new BN(y, 16);
33630 this.z = z ? new BN(z, 16) : this.curve.one;
33631 this.t = t && new BN(t, 16);
33632 if (!this.x.red)
33633 this.x = this.x.toRed(this.curve.red);
33634 if (!this.y.red)
33635 this.y = this.y.toRed(this.curve.red);
33636 if (!this.z.red)
33637 this.z = this.z.toRed(this.curve.red);
33638 if (this.t && !this.t.red)
33639 this.t = this.t.toRed(this.curve.red);
33640 this.zOne = this.z === this.curve.one;
33641
33642 // Use extended coordinates
33643 if (this.curve.extended && !this.t) {
33644 this.t = this.x.redMul(this.y);
33645 if (!this.zOne)
33646 this.t = this.t.redMul(this.z.redInvm());
33647 }
33648 }
33649 }
33650 inherits(Point, Base.BasePoint);
33651
33652 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33653 return Point.fromJSON(this, obj);
33654 };
33655
33656 EdwardsCurve.prototype.point = function point(x, y, z, t) {
33657 return new Point(this, x, y, z, t);
33658 };
33659
33660 Point.fromJSON = function fromJSON(curve, obj) {
33661 return new Point(curve, obj[0], obj[1], obj[2]);
33662 };
33663
33664 Point.prototype.inspect = function inspect() {
33665 if (this.isInfinity())
33666 return '<EC Point Infinity>';
33667 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33668 ' y: ' + this.y.fromRed().toString(16, 2) +
33669 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33670 };
33671
33672 Point.prototype.isInfinity = function isInfinity() {
33673 // XXX This code assumes that zero is always zero in red
33674 return this.x.cmpn(0) === 0 &&
33675 this.y.cmp(this.z) === 0;
33676 };
33677
33678 Point.prototype._extDbl = function _extDbl() {
33679 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33680 // #doubling-dbl-2008-hwcd
33681 // 4M + 4S
33682
33683 // A = X1^2
33684 var a = this.x.redSqr();
33685 // B = Y1^2
33686 var b = this.y.redSqr();
33687 // C = 2 * Z1^2
33688 var c = this.z.redSqr();
33689 c = c.redIAdd(c);
33690 // D = a * A
33691 var d = this.curve._mulA(a);
33692 // E = (X1 + Y1)^2 - A - B
33693 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
33694 // G = D + B
33695 var g = d.redAdd(b);
33696 // F = G - C
33697 var f = g.redSub(c);
33698 // H = D - B
33699 var h = d.redSub(b);
33700 // X3 = E * F
33701 var nx = e.redMul(f);
33702 // Y3 = G * H
33703 var ny = g.redMul(h);
33704 // T3 = E * H
33705 var nt = e.redMul(h);
33706 // Z3 = F * G
33707 var nz = f.redMul(g);
33708 return this.curve.point(nx, ny, nz, nt);
33709 };
33710
33711 Point.prototype._projDbl = function _projDbl() {
33712 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33713 // #doubling-dbl-2008-bbjlp
33714 // #doubling-dbl-2007-bl
33715 // and others
33716 // Generally 3M + 4S or 2M + 4S
33717
33718 // B = (X1 + Y1)^2
33719 var b = this.x.redAdd(this.y).redSqr();
33720 // C = X1^2
33721 var c = this.x.redSqr();
33722 // D = Y1^2
33723 var d = this.y.redSqr();
33724
33725 var nx;
33726 var ny;
33727 var nz;
33728 if (this.curve.twisted) {
33729 // E = a * C
33730 var e = this.curve._mulA(c);
33731 // F = E + D
33732 var f = e.redAdd(d);
33733 if (this.zOne) {
33734 // X3 = (B - C - D) * (F - 2)
33735 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
33736 // Y3 = F * (E - D)
33737 ny = f.redMul(e.redSub(d));
33738 // Z3 = F^2 - 2 * F
33739 nz = f.redSqr().redSub(f).redSub(f);
33740 } else {
33741 // H = Z1^2
33742 var h = this.z.redSqr();
33743 // J = F - 2 * H
33744 var j = f.redSub(h).redISub(h);
33745 // X3 = (B-C-D)*J
33746 nx = b.redSub(c).redISub(d).redMul(j);
33747 // Y3 = F * (E - D)
33748 ny = f.redMul(e.redSub(d));
33749 // Z3 = F * J
33750 nz = f.redMul(j);
33751 }
33752 } else {
33753 // E = C + D
33754 var e = c.redAdd(d);
33755 // H = (c * Z1)^2
33756 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
33757 // J = E - 2 * H
33758 var j = e.redSub(h).redSub(h);
33759 // X3 = c * (B - E) * J
33760 nx = this.curve._mulC(b.redISub(e)).redMul(j);
33761 // Y3 = c * E * (C - D)
33762 ny = this.curve._mulC(e).redMul(c.redISub(d));
33763 // Z3 = E * J
33764 nz = e.redMul(j);
33765 }
33766 return this.curve.point(nx, ny, nz);
33767 };
33768
33769 Point.prototype.dbl = function dbl() {
33770 if (this.isInfinity())
33771 return this;
33772
33773 // Double in extended coordinates
33774 if (this.curve.extended)
33775 return this._extDbl();
33776 else
33777 return this._projDbl();
33778 };
33779
33780 Point.prototype._extAdd = function _extAdd(p) {
33781 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33782 // #addition-add-2008-hwcd-3
33783 // 8M
33784
33785 // A = (Y1 - X1) * (Y2 - X2)
33786 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
33787 // B = (Y1 + X1) * (Y2 + X2)
33788 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
33789 // C = T1 * k * T2
33790 var c = this.t.redMul(this.curve.dd).redMul(p.t);
33791 // D = Z1 * 2 * Z2
33792 var d = this.z.redMul(p.z.redAdd(p.z));
33793 // E = B - A
33794 var e = b.redSub(a);
33795 // F = D - C
33796 var f = d.redSub(c);
33797 // G = D + C
33798 var g = d.redAdd(c);
33799 // H = B + A
33800 var h = b.redAdd(a);
33801 // X3 = E * F
33802 var nx = e.redMul(f);
33803 // Y3 = G * H
33804 var ny = g.redMul(h);
33805 // T3 = E * H
33806 var nt = e.redMul(h);
33807 // Z3 = F * G
33808 var nz = f.redMul(g);
33809 return this.curve.point(nx, ny, nz, nt);
33810 };
33811
33812 Point.prototype._projAdd = function _projAdd(p) {
33813 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33814 // #addition-add-2008-bbjlp
33815 // #addition-add-2007-bl
33816 // 10M + 1S
33817
33818 // A = Z1 * Z2
33819 var a = this.z.redMul(p.z);
33820 // B = A^2
33821 var b = a.redSqr();
33822 // C = X1 * X2
33823 var c = this.x.redMul(p.x);
33824 // D = Y1 * Y2
33825 var d = this.y.redMul(p.y);
33826 // E = d * C * D
33827 var e = this.curve.d.redMul(c).redMul(d);
33828 // F = B - E
33829 var f = b.redSub(e);
33830 // G = B + E
33831 var g = b.redAdd(e);
33832 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
33833 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
33834 var nx = a.redMul(f).redMul(tmp);
33835 var ny;
33836 var nz;
33837 if (this.curve.twisted) {
33838 // Y3 = A * G * (D - a * C)
33839 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
33840 // Z3 = F * G
33841 nz = f.redMul(g);
33842 } else {
33843 // Y3 = A * G * (D - C)
33844 ny = a.redMul(g).redMul(d.redSub(c));
33845 // Z3 = c * F * G
33846 nz = this.curve._mulC(f).redMul(g);
33847 }
33848 return this.curve.point(nx, ny, nz);
33849 };
33850
33851 Point.prototype.add = function add(p) {
33852 if (this.isInfinity())
33853 return p;
33854 if (p.isInfinity())
33855 return this;
33856
33857 if (this.curve.extended)
33858 return this._extAdd(p);
33859 else
33860 return this._projAdd(p);
33861 };
33862
33863 Point.prototype.mul = function mul(k) {
33864 if (this._hasDoubles(k))
33865 return this.curve._fixedNafMul(this, k);
33866 else
33867 return this.curve._wnafMul(this, k);
33868 };
33869
33870 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
33871 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
33872 };
33873
33874 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
33875 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
33876 };
33877
33878 Point.prototype.normalize = function normalize() {
33879 if (this.zOne)
33880 return this;
33881
33882 // Normalize coordinates
33883 var zi = this.z.redInvm();
33884 this.x = this.x.redMul(zi);
33885 this.y = this.y.redMul(zi);
33886 if (this.t)
33887 this.t = this.t.redMul(zi);
33888 this.z = this.curve.one;
33889 this.zOne = true;
33890 return this;
33891 };
33892
33893 Point.prototype.neg = function neg() {
33894 return this.curve.point(this.x.redNeg(),
33895 this.y,
33896 this.z,
33897 this.t && this.t.redNeg());
33898 };
33899
33900 Point.prototype.getX = function getX() {
33901 this.normalize();
33902 return this.x.fromRed();
33903 };
33904
33905 Point.prototype.getY = function getY() {
33906 this.normalize();
33907 return this.y.fromRed();
33908 };
33909
33910 Point.prototype.eq = function eq(other) {
33911 return this === other ||
33912 this.getX().cmp(other.getX()) === 0 &&
33913 this.getY().cmp(other.getY()) === 0;
33914 };
33915
33916 Point.prototype.eqXToP = function eqXToP(x) {
33917 var rx = x.toRed(this.curve.red).redMul(this.z);
33918 if (this.x.cmp(rx) === 0)
33919 return true;
33920
33921 var xc = x.clone();
33922 var t = this.curve.redN.redMul(this.z);
33923 for (;;) {
33924 xc.iadd(this.curve.n);
33925 if (xc.cmp(this.curve.p) >= 0)
33926 return false;
33927
33928 rx.redIAdd(t);
33929 if (this.x.cmp(rx) === 0)
33930 return true;
33931 }
33932 return false;
33933 };
33934
33935 // Compatibility with BaseCurve
33936 Point.prototype.toP = Point.prototype.normalize;
33937 Point.prototype.mixedAdd = Point.prototype.add;
33938
33939 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
33940 'use strict';
33941
33942 var curve = exports;
33943
33944 curve.base = require('./base');
33945 curve.short = require('./short');
33946 curve.mont = require('./mont');
33947 curve.edwards = require('./edwards');
33948
33949 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
33950 'use strict';
33951
33952 var curve = require('../curve');
33953 var BN = require('bn.js');
33954 var inherits = require('inherits');
33955 var Base = curve.base;
33956
33957 var elliptic = require('../../elliptic');
33958 var utils = elliptic.utils;
33959
33960 function MontCurve(conf) {
33961 Base.call(this, 'mont', conf);
33962
33963 this.a = new BN(conf.a, 16).toRed(this.red);
33964 this.b = new BN(conf.b, 16).toRed(this.red);
33965 this.i4 = new BN(4).toRed(this.red).redInvm();
33966 this.two = new BN(2).toRed(this.red);
33967 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
33968 }
33969 inherits(MontCurve, Base);
33970 module.exports = MontCurve;
33971
33972 MontCurve.prototype.validate = function validate(point) {
33973 var x = point.normalize().x;
33974 var x2 = x.redSqr();
33975 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
33976 var y = rhs.redSqrt();
33977
33978 return y.redSqr().cmp(rhs) === 0;
33979 };
33980
33981 function Point(curve, x, z) {
33982 Base.BasePoint.call(this, curve, 'projective');
33983 if (x === null && z === null) {
33984 this.x = this.curve.one;
33985 this.z = this.curve.zero;
33986 } else {
33987 this.x = new BN(x, 16);
33988 this.z = new BN(z, 16);
33989 if (!this.x.red)
33990 this.x = this.x.toRed(this.curve.red);
33991 if (!this.z.red)
33992 this.z = this.z.toRed(this.curve.red);
33993 }
33994 }
33995 inherits(Point, Base.BasePoint);
33996
33997 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33998 return this.point(utils.toArray(bytes, enc), 1);
33999 };
34000
34001 MontCurve.prototype.point = function point(x, z) {
34002 return new Point(this, x, z);
34003 };
34004
34005 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
34006 return Point.fromJSON(this, obj);
34007 };
34008
34009 Point.prototype.precompute = function precompute() {
34010 // No-op
34011 };
34012
34013 Point.prototype._encode = function _encode() {
34014 return this.getX().toArray('be', this.curve.p.byteLength());
34015 };
34016
34017 Point.fromJSON = function fromJSON(curve, obj) {
34018 return new Point(curve, obj[0], obj[1] || curve.one);
34019 };
34020
34021 Point.prototype.inspect = function inspect() {
34022 if (this.isInfinity())
34023 return '<EC Point Infinity>';
34024 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34025 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
34026 };
34027
34028 Point.prototype.isInfinity = function isInfinity() {
34029 // XXX This code assumes that zero is always zero in red
34030 return this.z.cmpn(0) === 0;
34031 };
34032
34033 Point.prototype.dbl = function dbl() {
34034 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
34035 // 2M + 2S + 4A
34036
34037 // A = X1 + Z1
34038 var a = this.x.redAdd(this.z);
34039 // AA = A^2
34040 var aa = a.redSqr();
34041 // B = X1 - Z1
34042 var b = this.x.redSub(this.z);
34043 // BB = B^2
34044 var bb = b.redSqr();
34045 // C = AA - BB
34046 var c = aa.redSub(bb);
34047 // X3 = AA * BB
34048 var nx = aa.redMul(bb);
34049 // Z3 = C * (BB + A24 * C)
34050 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
34051 return this.curve.point(nx, nz);
34052 };
34053
34054 Point.prototype.add = function add() {
34055 throw new Error('Not supported on Montgomery curve');
34056 };
34057
34058 Point.prototype.diffAdd = function diffAdd(p, diff) {
34059 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
34060 // 4M + 2S + 6A
34061
34062 // A = X2 + Z2
34063 var a = this.x.redAdd(this.z);
34064 // B = X2 - Z2
34065 var b = this.x.redSub(this.z);
34066 // C = X3 + Z3
34067 var c = p.x.redAdd(p.z);
34068 // D = X3 - Z3
34069 var d = p.x.redSub(p.z);
34070 // DA = D * A
34071 var da = d.redMul(a);
34072 // CB = C * B
34073 var cb = c.redMul(b);
34074 // X5 = Z1 * (DA + CB)^2
34075 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
34076 // Z5 = X1 * (DA - CB)^2
34077 var nz = diff.x.redMul(da.redISub(cb).redSqr());
34078 return this.curve.point(nx, nz);
34079 };
34080
34081 Point.prototype.mul = function mul(k) {
34082 var t = k.clone();
34083 var a = this; // (N / 2) * Q + Q
34084 var b = this.curve.point(null, null); // (N / 2) * Q
34085 var c = this; // Q
34086
34087 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
34088 bits.push(t.andln(1));
34089
34090 for (var i = bits.length - 1; i >= 0; i--) {
34091 if (bits[i] === 0) {
34092 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
34093 a = a.diffAdd(b, c);
34094 // N * Q = 2 * ((N / 2) * Q + Q))
34095 b = b.dbl();
34096 } else {
34097 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
34098 b = a.diffAdd(b, c);
34099 // N * Q + Q = 2 * ((N / 2) * Q + Q)
34100 a = a.dbl();
34101 }
34102 }
34103 return b;
34104 };
34105
34106 Point.prototype.mulAdd = function mulAdd() {
34107 throw new Error('Not supported on Montgomery curve');
34108 };
34109
34110 Point.prototype.jumlAdd = function jumlAdd() {
34111 throw new Error('Not supported on Montgomery curve');
34112 };
34113
34114 Point.prototype.eq = function eq(other) {
34115 return this.getX().cmp(other.getX()) === 0;
34116 };
34117
34118 Point.prototype.normalize = function normalize() {
34119 this.x = this.x.redMul(this.z.redInvm());
34120 this.z = this.curve.one;
34121 return this;
34122 };
34123
34124 Point.prototype.getX = function getX() {
34125 // Normalize coordinates
34126 this.normalize();
34127
34128 return this.x.fromRed();
34129 };
34130
34131 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
34132 'use strict';
34133
34134 var curve = require('../curve');
34135 var elliptic = require('../../elliptic');
34136 var BN = require('bn.js');
34137 var inherits = require('inherits');
34138 var Base = curve.base;
34139
34140 var assert = elliptic.utils.assert;
34141
34142 function ShortCurve(conf) {
34143 Base.call(this, 'short', conf);
34144
34145 this.a = new BN(conf.a, 16).toRed(this.red);
34146 this.b = new BN(conf.b, 16).toRed(this.red);
34147 this.tinv = this.two.redInvm();
34148
34149 this.zeroA = this.a.fromRed().cmpn(0) === 0;
34150 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
34151
34152 // If the curve is endomorphic, precalculate beta and lambda
34153 this.endo = this._getEndomorphism(conf);
34154 this._endoWnafT1 = new Array(4);
34155 this._endoWnafT2 = new Array(4);
34156 }
34157 inherits(ShortCurve, Base);
34158 module.exports = ShortCurve;
34159
34160 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
34161 // No efficient endomorphism
34162 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
34163 return;
34164
34165 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
34166 var beta;
34167 var lambda;
34168 if (conf.beta) {
34169 beta = new BN(conf.beta, 16).toRed(this.red);
34170 } else {
34171 var betas = this._getEndoRoots(this.p);
34172 // Choose the smallest beta
34173 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
34174 beta = beta.toRed(this.red);
34175 }
34176 if (conf.lambda) {
34177 lambda = new BN(conf.lambda, 16);
34178 } else {
34179 // Choose the lambda that is matching selected beta
34180 var lambdas = this._getEndoRoots(this.n);
34181 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
34182 lambda = lambdas[0];
34183 } else {
34184 lambda = lambdas[1];
34185 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
34186 }
34187 }
34188
34189 // Get basis vectors, used for balanced length-two representation
34190 var basis;
34191 if (conf.basis) {
34192 basis = conf.basis.map(function(vec) {
34193 return {
34194 a: new BN(vec.a, 16),
34195 b: new BN(vec.b, 16)
34196 };
34197 });
34198 } else {
34199 basis = this._getEndoBasis(lambda);
34200 }
34201
34202 return {
34203 beta: beta,
34204 lambda: lambda,
34205 basis: basis
34206 };
34207 };
34208
34209 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
34210 // Find roots of for x^2 + x + 1 in F
34211 // Root = (-1 +- Sqrt(-3)) / 2
34212 //
34213 var red = num === this.p ? this.red : BN.mont(num);
34214 var tinv = new BN(2).toRed(red).redInvm();
34215 var ntinv = tinv.redNeg();
34216
34217 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
34218
34219 var l1 = ntinv.redAdd(s).fromRed();
34220 var l2 = ntinv.redSub(s).fromRed();
34221 return [ l1, l2 ];
34222 };
34223
34224 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
34225 // aprxSqrt >= sqrt(this.n)
34226 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
34227
34228 // 3.74
34229 // Run EGCD, until r(L + 1) < aprxSqrt
34230 var u = lambda;
34231 var v = this.n.clone();
34232 var x1 = new BN(1);
34233 var y1 = new BN(0);
34234 var x2 = new BN(0);
34235 var y2 = new BN(1);
34236
34237 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
34238 var a0;
34239 var b0;
34240 // First vector
34241 var a1;
34242 var b1;
34243 // Second vector
34244 var a2;
34245 var b2;
34246
34247 var prevR;
34248 var i = 0;
34249 var r;
34250 var x;
34251 while (u.cmpn(0) !== 0) {
34252 var q = v.div(u);
34253 r = v.sub(q.mul(u));
34254 x = x2.sub(q.mul(x1));
34255 var y = y2.sub(q.mul(y1));
34256
34257 if (!a1 && r.cmp(aprxSqrt) < 0) {
34258 a0 = prevR.neg();
34259 b0 = x1;
34260 a1 = r.neg();
34261 b1 = x;
34262 } else if (a1 && ++i === 2) {
34263 break;
34264 }
34265 prevR = r;
34266
34267 v = u;
34268 u = r;
34269 x2 = x1;
34270 x1 = x;
34271 y2 = y1;
34272 y1 = y;
34273 }
34274 a2 = r.neg();
34275 b2 = x;
34276
34277 var len1 = a1.sqr().add(b1.sqr());
34278 var len2 = a2.sqr().add(b2.sqr());
34279 if (len2.cmp(len1) >= 0) {
34280 a2 = a0;
34281 b2 = b0;
34282 }
34283
34284 // Normalize signs
34285 if (a1.negative) {
34286 a1 = a1.neg();
34287 b1 = b1.neg();
34288 }
34289 if (a2.negative) {
34290 a2 = a2.neg();
34291 b2 = b2.neg();
34292 }
34293
34294 return [
34295 { a: a1, b: b1 },
34296 { a: a2, b: b2 }
34297 ];
34298 };
34299
34300 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
34301 var basis = this.endo.basis;
34302 var v1 = basis[0];
34303 var v2 = basis[1];
34304
34305 var c1 = v2.b.mul(k).divRound(this.n);
34306 var c2 = v1.b.neg().mul(k).divRound(this.n);
34307
34308 var p1 = c1.mul(v1.a);
34309 var p2 = c2.mul(v2.a);
34310 var q1 = c1.mul(v1.b);
34311 var q2 = c2.mul(v2.b);
34312
34313 // Calculate answer
34314 var k1 = k.sub(p1).sub(p2);
34315 var k2 = q1.add(q2).neg();
34316 return { k1: k1, k2: k2 };
34317 };
34318
34319 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
34320 x = new BN(x, 16);
34321 if (!x.red)
34322 x = x.toRed(this.red);
34323
34324 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
34325 var y = y2.redSqrt();
34326 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
34327 throw new Error('invalid point');
34328
34329 // XXX Is there any way to tell if the number is odd without converting it
34330 // to non-red form?
34331 var isOdd = y.fromRed().isOdd();
34332 if (odd && !isOdd || !odd && isOdd)
34333 y = y.redNeg();
34334
34335 return this.point(x, y);
34336 };
34337
34338 ShortCurve.prototype.validate = function validate(point) {
34339 if (point.inf)
34340 return true;
34341
34342 var x = point.x;
34343 var y = point.y;
34344
34345 var ax = this.a.redMul(x);
34346 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
34347 return y.redSqr().redISub(rhs).cmpn(0) === 0;
34348 };
34349
34350 ShortCurve.prototype._endoWnafMulAdd =
34351 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
34352 var npoints = this._endoWnafT1;
34353 var ncoeffs = this._endoWnafT2;
34354 for (var i = 0; i < points.length; i++) {
34355 var split = this._endoSplit(coeffs[i]);
34356 var p = points[i];
34357 var beta = p._getBeta();
34358
34359 if (split.k1.negative) {
34360 split.k1.ineg();
34361 p = p.neg(true);
34362 }
34363 if (split.k2.negative) {
34364 split.k2.ineg();
34365 beta = beta.neg(true);
34366 }
34367
34368 npoints[i * 2] = p;
34369 npoints[i * 2 + 1] = beta;
34370 ncoeffs[i * 2] = split.k1;
34371 ncoeffs[i * 2 + 1] = split.k2;
34372 }
34373 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
34374
34375 // Clean-up references to points and coefficients
34376 for (var j = 0; j < i * 2; j++) {
34377 npoints[j] = null;
34378 ncoeffs[j] = null;
34379 }
34380 return res;
34381 };
34382
34383 function Point(curve, x, y, isRed) {
34384 Base.BasePoint.call(this, curve, 'affine');
34385 if (x === null && y === null) {
34386 this.x = null;
34387 this.y = null;
34388 this.inf = true;
34389 } else {
34390 this.x = new BN(x, 16);
34391 this.y = new BN(y, 16);
34392 // Force redgomery representation when loading from JSON
34393 if (isRed) {
34394 this.x.forceRed(this.curve.red);
34395 this.y.forceRed(this.curve.red);
34396 }
34397 if (!this.x.red)
34398 this.x = this.x.toRed(this.curve.red);
34399 if (!this.y.red)
34400 this.y = this.y.toRed(this.curve.red);
34401 this.inf = false;
34402 }
34403 }
34404 inherits(Point, Base.BasePoint);
34405
34406 ShortCurve.prototype.point = function point(x, y, isRed) {
34407 return new Point(this, x, y, isRed);
34408 };
34409
34410 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
34411 return Point.fromJSON(this, obj, red);
34412 };
34413
34414 Point.prototype._getBeta = function _getBeta() {
34415 if (!this.curve.endo)
34416 return;
34417
34418 var pre = this.precomputed;
34419 if (pre && pre.beta)
34420 return pre.beta;
34421
34422 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
34423 if (pre) {
34424 var curve = this.curve;
34425 var endoMul = function(p) {
34426 return curve.point(p.x.redMul(curve.endo.beta), p.y);
34427 };
34428 pre.beta = beta;
34429 beta.precomputed = {
34430 beta: null,
34431 naf: pre.naf && {
34432 wnd: pre.naf.wnd,
34433 points: pre.naf.points.map(endoMul)
34434 },
34435 doubles: pre.doubles && {
34436 step: pre.doubles.step,
34437 points: pre.doubles.points.map(endoMul)
34438 }
34439 };
34440 }
34441 return beta;
34442 };
34443
34444 Point.prototype.toJSON = function toJSON() {
34445 if (!this.precomputed)
34446 return [ this.x, this.y ];
34447
34448 return [ this.x, this.y, this.precomputed && {
34449 doubles: this.precomputed.doubles && {
34450 step: this.precomputed.doubles.step,
34451 points: this.precomputed.doubles.points.slice(1)
34452 },
34453 naf: this.precomputed.naf && {
34454 wnd: this.precomputed.naf.wnd,
34455 points: this.precomputed.naf.points.slice(1)
34456 }
34457 } ];
34458 };
34459
34460 Point.fromJSON = function fromJSON(curve, obj, red) {
34461 if (typeof obj === 'string')
34462 obj = JSON.parse(obj);
34463 var res = curve.point(obj[0], obj[1], red);
34464 if (!obj[2])
34465 return res;
34466
34467 function obj2point(obj) {
34468 return curve.point(obj[0], obj[1], red);
34469 }
34470
34471 var pre = obj[2];
34472 res.precomputed = {
34473 beta: null,
34474 doubles: pre.doubles && {
34475 step: pre.doubles.step,
34476 points: [ res ].concat(pre.doubles.points.map(obj2point))
34477 },
34478 naf: pre.naf && {
34479 wnd: pre.naf.wnd,
34480 points: [ res ].concat(pre.naf.points.map(obj2point))
34481 }
34482 };
34483 return res;
34484 };
34485
34486 Point.prototype.inspect = function inspect() {
34487 if (this.isInfinity())
34488 return '<EC Point Infinity>';
34489 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34490 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
34491 };
34492
34493 Point.prototype.isInfinity = function isInfinity() {
34494 return this.inf;
34495 };
34496
34497 Point.prototype.add = function add(p) {
34498 // O + P = P
34499 if (this.inf)
34500 return p;
34501
34502 // P + O = P
34503 if (p.inf)
34504 return this;
34505
34506 // P + P = 2P
34507 if (this.eq(p))
34508 return this.dbl();
34509
34510 // P + (-P) = O
34511 if (this.neg().eq(p))
34512 return this.curve.point(null, null);
34513
34514 // P + Q = O
34515 if (this.x.cmp(p.x) === 0)
34516 return this.curve.point(null, null);
34517
34518 var c = this.y.redSub(p.y);
34519 if (c.cmpn(0) !== 0)
34520 c = c.redMul(this.x.redSub(p.x).redInvm());
34521 var nx = c.redSqr().redISub(this.x).redISub(p.x);
34522 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34523 return this.curve.point(nx, ny);
34524 };
34525
34526 Point.prototype.dbl = function dbl() {
34527 if (this.inf)
34528 return this;
34529
34530 // 2P = O
34531 var ys1 = this.y.redAdd(this.y);
34532 if (ys1.cmpn(0) === 0)
34533 return this.curve.point(null, null);
34534
34535 var a = this.curve.a;
34536
34537 var x2 = this.x.redSqr();
34538 var dyinv = ys1.redInvm();
34539 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
34540
34541 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
34542 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34543 return this.curve.point(nx, ny);
34544 };
34545
34546 Point.prototype.getX = function getX() {
34547 return this.x.fromRed();
34548 };
34549
34550 Point.prototype.getY = function getY() {
34551 return this.y.fromRed();
34552 };
34553
34554 Point.prototype.mul = function mul(k) {
34555 k = new BN(k, 16);
34556
34557 if (this._hasDoubles(k))
34558 return this.curve._fixedNafMul(this, k);
34559 else if (this.curve.endo)
34560 return this.curve._endoWnafMulAdd([ this ], [ k ]);
34561 else
34562 return this.curve._wnafMul(this, k);
34563 };
34564
34565 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
34566 var points = [ this, p2 ];
34567 var coeffs = [ k1, k2 ];
34568 if (this.curve.endo)
34569 return this.curve._endoWnafMulAdd(points, coeffs);
34570 else
34571 return this.curve._wnafMulAdd(1, points, coeffs, 2);
34572 };
34573
34574 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
34575 var points = [ this, p2 ];
34576 var coeffs = [ k1, k2 ];
34577 if (this.curve.endo)
34578 return this.curve._endoWnafMulAdd(points, coeffs, true);
34579 else
34580 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
34581 };
34582
34583 Point.prototype.eq = function eq(p) {
34584 return this === p ||
34585 this.inf === p.inf &&
34586 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
34587 };
34588
34589 Point.prototype.neg = function neg(_precompute) {
34590 if (this.inf)
34591 return this;
34592
34593 var res = this.curve.point(this.x, this.y.redNeg());
34594 if (_precompute && this.precomputed) {
34595 var pre = this.precomputed;
34596 var negate = function(p) {
34597 return p.neg();
34598 };
34599 res.precomputed = {
34600 naf: pre.naf && {
34601 wnd: pre.naf.wnd,
34602 points: pre.naf.points.map(negate)
34603 },
34604 doubles: pre.doubles && {
34605 step: pre.doubles.step,
34606 points: pre.doubles.points.map(negate)
34607 }
34608 };
34609 }
34610 return res;
34611 };
34612
34613 Point.prototype.toJ = function toJ() {
34614 if (this.inf)
34615 return this.curve.jpoint(null, null, null);
34616
34617 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
34618 return res;
34619 };
34620
34621 function JPoint(curve, x, y, z) {
34622 Base.BasePoint.call(this, curve, 'jacobian');
34623 if (x === null && y === null && z === null) {
34624 this.x = this.curve.one;
34625 this.y = this.curve.one;
34626 this.z = new BN(0);
34627 } else {
34628 this.x = new BN(x, 16);
34629 this.y = new BN(y, 16);
34630 this.z = new BN(z, 16);
34631 }
34632 if (!this.x.red)
34633 this.x = this.x.toRed(this.curve.red);
34634 if (!this.y.red)
34635 this.y = this.y.toRed(this.curve.red);
34636 if (!this.z.red)
34637 this.z = this.z.toRed(this.curve.red);
34638
34639 this.zOne = this.z === this.curve.one;
34640 }
34641 inherits(JPoint, Base.BasePoint);
34642
34643 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
34644 return new JPoint(this, x, y, z);
34645 };
34646
34647 JPoint.prototype.toP = function toP() {
34648 if (this.isInfinity())
34649 return this.curve.point(null, null);
34650
34651 var zinv = this.z.redInvm();
34652 var zinv2 = zinv.redSqr();
34653 var ax = this.x.redMul(zinv2);
34654 var ay = this.y.redMul(zinv2).redMul(zinv);
34655
34656 return this.curve.point(ax, ay);
34657 };
34658
34659 JPoint.prototype.neg = function neg() {
34660 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
34661 };
34662
34663 JPoint.prototype.add = function add(p) {
34664 // O + P = P
34665 if (this.isInfinity())
34666 return p;
34667
34668 // P + O = P
34669 if (p.isInfinity())
34670 return this;
34671
34672 // 12M + 4S + 7A
34673 var pz2 = p.z.redSqr();
34674 var z2 = this.z.redSqr();
34675 var u1 = this.x.redMul(pz2);
34676 var u2 = p.x.redMul(z2);
34677 var s1 = this.y.redMul(pz2.redMul(p.z));
34678 var s2 = p.y.redMul(z2.redMul(this.z));
34679
34680 var h = u1.redSub(u2);
34681 var r = s1.redSub(s2);
34682 if (h.cmpn(0) === 0) {
34683 if (r.cmpn(0) !== 0)
34684 return this.curve.jpoint(null, null, null);
34685 else
34686 return this.dbl();
34687 }
34688
34689 var h2 = h.redSqr();
34690 var h3 = h2.redMul(h);
34691 var v = u1.redMul(h2);
34692
34693 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34694 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34695 var nz = this.z.redMul(p.z).redMul(h);
34696
34697 return this.curve.jpoint(nx, ny, nz);
34698 };
34699
34700 JPoint.prototype.mixedAdd = function mixedAdd(p) {
34701 // O + P = P
34702 if (this.isInfinity())
34703 return p.toJ();
34704
34705 // P + O = P
34706 if (p.isInfinity())
34707 return this;
34708
34709 // 8M + 3S + 7A
34710 var z2 = this.z.redSqr();
34711 var u1 = this.x;
34712 var u2 = p.x.redMul(z2);
34713 var s1 = this.y;
34714 var s2 = p.y.redMul(z2).redMul(this.z);
34715
34716 var h = u1.redSub(u2);
34717 var r = s1.redSub(s2);
34718 if (h.cmpn(0) === 0) {
34719 if (r.cmpn(0) !== 0)
34720 return this.curve.jpoint(null, null, null);
34721 else
34722 return this.dbl();
34723 }
34724
34725 var h2 = h.redSqr();
34726 var h3 = h2.redMul(h);
34727 var v = u1.redMul(h2);
34728
34729 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34730 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34731 var nz = this.z.redMul(h);
34732
34733 return this.curve.jpoint(nx, ny, nz);
34734 };
34735
34736 JPoint.prototype.dblp = function dblp(pow) {
34737 if (pow === 0)
34738 return this;
34739 if (this.isInfinity())
34740 return this;
34741 if (!pow)
34742 return this.dbl();
34743
34744 if (this.curve.zeroA || this.curve.threeA) {
34745 var r = this;
34746 for (var i = 0; i < pow; i++)
34747 r = r.dbl();
34748 return r;
34749 }
34750
34751 // 1M + 2S + 1A + N * (4S + 5M + 8A)
34752 // N = 1 => 6M + 6S + 9A
34753 var a = this.curve.a;
34754 var tinv = this.curve.tinv;
34755
34756 var jx = this.x;
34757 var jy = this.y;
34758 var jz = this.z;
34759 var jz4 = jz.redSqr().redSqr();
34760
34761 // Reuse results
34762 var jyd = jy.redAdd(jy);
34763 for (var i = 0; i < pow; i++) {
34764 var jx2 = jx.redSqr();
34765 var jyd2 = jyd.redSqr();
34766 var jyd4 = jyd2.redSqr();
34767 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34768
34769 var t1 = jx.redMul(jyd2);
34770 var nx = c.redSqr().redISub(t1.redAdd(t1));
34771 var t2 = t1.redISub(nx);
34772 var dny = c.redMul(t2);
34773 dny = dny.redIAdd(dny).redISub(jyd4);
34774 var nz = jyd.redMul(jz);
34775 if (i + 1 < pow)
34776 jz4 = jz4.redMul(jyd4);
34777
34778 jx = nx;
34779 jz = nz;
34780 jyd = dny;
34781 }
34782
34783 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
34784 };
34785
34786 JPoint.prototype.dbl = function dbl() {
34787 if (this.isInfinity())
34788 return this;
34789
34790 if (this.curve.zeroA)
34791 return this._zeroDbl();
34792 else if (this.curve.threeA)
34793 return this._threeDbl();
34794 else
34795 return this._dbl();
34796 };
34797
34798 JPoint.prototype._zeroDbl = function _zeroDbl() {
34799 var nx;
34800 var ny;
34801 var nz;
34802 // Z = 1
34803 if (this.zOne) {
34804 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34805 // #doubling-mdbl-2007-bl
34806 // 1M + 5S + 14A
34807
34808 // XX = X1^2
34809 var xx = this.x.redSqr();
34810 // YY = Y1^2
34811 var yy = this.y.redSqr();
34812 // YYYY = YY^2
34813 var yyyy = yy.redSqr();
34814 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34815 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34816 s = s.redIAdd(s);
34817 // M = 3 * XX + a; a = 0
34818 var m = xx.redAdd(xx).redIAdd(xx);
34819 // T = M ^ 2 - 2*S
34820 var t = m.redSqr().redISub(s).redISub(s);
34821
34822 // 8 * YYYY
34823 var yyyy8 = yyyy.redIAdd(yyyy);
34824 yyyy8 = yyyy8.redIAdd(yyyy8);
34825 yyyy8 = yyyy8.redIAdd(yyyy8);
34826
34827 // X3 = T
34828 nx = t;
34829 // Y3 = M * (S - T) - 8 * YYYY
34830 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34831 // Z3 = 2*Y1
34832 nz = this.y.redAdd(this.y);
34833 } else {
34834 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34835 // #doubling-dbl-2009-l
34836 // 2M + 5S + 13A
34837
34838 // A = X1^2
34839 var a = this.x.redSqr();
34840 // B = Y1^2
34841 var b = this.y.redSqr();
34842 // C = B^2
34843 var c = b.redSqr();
34844 // D = 2 * ((X1 + B)^2 - A - C)
34845 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
34846 d = d.redIAdd(d);
34847 // E = 3 * A
34848 var e = a.redAdd(a).redIAdd(a);
34849 // F = E^2
34850 var f = e.redSqr();
34851
34852 // 8 * C
34853 var c8 = c.redIAdd(c);
34854 c8 = c8.redIAdd(c8);
34855 c8 = c8.redIAdd(c8);
34856
34857 // X3 = F - 2 * D
34858 nx = f.redISub(d).redISub(d);
34859 // Y3 = E * (D - X3) - 8 * C
34860 ny = e.redMul(d.redISub(nx)).redISub(c8);
34861 // Z3 = 2 * Y1 * Z1
34862 nz = this.y.redMul(this.z);
34863 nz = nz.redIAdd(nz);
34864 }
34865
34866 return this.curve.jpoint(nx, ny, nz);
34867 };
34868
34869 JPoint.prototype._threeDbl = function _threeDbl() {
34870 var nx;
34871 var ny;
34872 var nz;
34873 // Z = 1
34874 if (this.zOne) {
34875 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
34876 // #doubling-mdbl-2007-bl
34877 // 1M + 5S + 15A
34878
34879 // XX = X1^2
34880 var xx = this.x.redSqr();
34881 // YY = Y1^2
34882 var yy = this.y.redSqr();
34883 // YYYY = YY^2
34884 var yyyy = yy.redSqr();
34885 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34886 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34887 s = s.redIAdd(s);
34888 // M = 3 * XX + a
34889 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
34890 // T = M^2 - 2 * S
34891 var t = m.redSqr().redISub(s).redISub(s);
34892 // X3 = T
34893 nx = t;
34894 // Y3 = M * (S - T) - 8 * YYYY
34895 var yyyy8 = yyyy.redIAdd(yyyy);
34896 yyyy8 = yyyy8.redIAdd(yyyy8);
34897 yyyy8 = yyyy8.redIAdd(yyyy8);
34898 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34899 // Z3 = 2 * Y1
34900 nz = this.y.redAdd(this.y);
34901 } else {
34902 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
34903 // 3M + 5S
34904
34905 // delta = Z1^2
34906 var delta = this.z.redSqr();
34907 // gamma = Y1^2
34908 var gamma = this.y.redSqr();
34909 // beta = X1 * gamma
34910 var beta = this.x.redMul(gamma);
34911 // alpha = 3 * (X1 - delta) * (X1 + delta)
34912 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
34913 alpha = alpha.redAdd(alpha).redIAdd(alpha);
34914 // X3 = alpha^2 - 8 * beta
34915 var beta4 = beta.redIAdd(beta);
34916 beta4 = beta4.redIAdd(beta4);
34917 var beta8 = beta4.redAdd(beta4);
34918 nx = alpha.redSqr().redISub(beta8);
34919 // Z3 = (Y1 + Z1)^2 - gamma - delta
34920 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
34921 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
34922 var ggamma8 = gamma.redSqr();
34923 ggamma8 = ggamma8.redIAdd(ggamma8);
34924 ggamma8 = ggamma8.redIAdd(ggamma8);
34925 ggamma8 = ggamma8.redIAdd(ggamma8);
34926 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
34927 }
34928
34929 return this.curve.jpoint(nx, ny, nz);
34930 };
34931
34932 JPoint.prototype._dbl = function _dbl() {
34933 var a = this.curve.a;
34934
34935 // 4M + 6S + 10A
34936 var jx = this.x;
34937 var jy = this.y;
34938 var jz = this.z;
34939 var jz4 = jz.redSqr().redSqr();
34940
34941 var jx2 = jx.redSqr();
34942 var jy2 = jy.redSqr();
34943
34944 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34945
34946 var jxd4 = jx.redAdd(jx);
34947 jxd4 = jxd4.redIAdd(jxd4);
34948 var t1 = jxd4.redMul(jy2);
34949 var nx = c.redSqr().redISub(t1.redAdd(t1));
34950 var t2 = t1.redISub(nx);
34951
34952 var jyd8 = jy2.redSqr();
34953 jyd8 = jyd8.redIAdd(jyd8);
34954 jyd8 = jyd8.redIAdd(jyd8);
34955 jyd8 = jyd8.redIAdd(jyd8);
34956 var ny = c.redMul(t2).redISub(jyd8);
34957 var nz = jy.redAdd(jy).redMul(jz);
34958
34959 return this.curve.jpoint(nx, ny, nz);
34960 };
34961
34962 JPoint.prototype.trpl = function trpl() {
34963 if (!this.curve.zeroA)
34964 return this.dbl().add(this);
34965
34966 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
34967 // 5M + 10S + ...
34968
34969 // XX = X1^2
34970 var xx = this.x.redSqr();
34971 // YY = Y1^2
34972 var yy = this.y.redSqr();
34973 // ZZ = Z1^2
34974 var zz = this.z.redSqr();
34975 // YYYY = YY^2
34976 var yyyy = yy.redSqr();
34977 // M = 3 * XX + a * ZZ2; a = 0
34978 var m = xx.redAdd(xx).redIAdd(xx);
34979 // MM = M^2
34980 var mm = m.redSqr();
34981 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
34982 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34983 e = e.redIAdd(e);
34984 e = e.redAdd(e).redIAdd(e);
34985 e = e.redISub(mm);
34986 // EE = E^2
34987 var ee = e.redSqr();
34988 // T = 16*YYYY
34989 var t = yyyy.redIAdd(yyyy);
34990 t = t.redIAdd(t);
34991 t = t.redIAdd(t);
34992 t = t.redIAdd(t);
34993 // U = (M + E)^2 - MM - EE - T
34994 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
34995 // X3 = 4 * (X1 * EE - 4 * YY * U)
34996 var yyu4 = yy.redMul(u);
34997 yyu4 = yyu4.redIAdd(yyu4);
34998 yyu4 = yyu4.redIAdd(yyu4);
34999 var nx = this.x.redMul(ee).redISub(yyu4);
35000 nx = nx.redIAdd(nx);
35001 nx = nx.redIAdd(nx);
35002 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
35003 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
35004 ny = ny.redIAdd(ny);
35005 ny = ny.redIAdd(ny);
35006 ny = ny.redIAdd(ny);
35007 // Z3 = (Z1 + E)^2 - ZZ - EE
35008 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
35009
35010 return this.curve.jpoint(nx, ny, nz);
35011 };
35012
35013 JPoint.prototype.mul = function mul(k, kbase) {
35014 k = new BN(k, kbase);
35015
35016 return this.curve._wnafMul(this, k);
35017 };
35018
35019 JPoint.prototype.eq = function eq(p) {
35020 if (p.type === 'affine')
35021 return this.eq(p.toJ());
35022
35023 if (this === p)
35024 return true;
35025
35026 // x1 * z2^2 == x2 * z1^2
35027 var z2 = this.z.redSqr();
35028 var pz2 = p.z.redSqr();
35029 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
35030 return false;
35031
35032 // y1 * z2^3 == y2 * z1^3
35033 var z3 = z2.redMul(this.z);
35034 var pz3 = pz2.redMul(p.z);
35035 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
35036 };
35037
35038 JPoint.prototype.eqXToP = function eqXToP(x) {
35039 var zs = this.z.redSqr();
35040 var rx = x.toRed(this.curve.red).redMul(zs);
35041 if (this.x.cmp(rx) === 0)
35042 return true;
35043
35044 var xc = x.clone();
35045 var t = this.curve.redN.redMul(zs);
35046 for (;;) {
35047 xc.iadd(this.curve.n);
35048 if (xc.cmp(this.curve.p) >= 0)
35049 return false;
35050
35051 rx.redIAdd(t);
35052 if (this.x.cmp(rx) === 0)
35053 return true;
35054 }
35055 return false;
35056 };
35057
35058 JPoint.prototype.inspect = function inspect() {
35059 if (this.isInfinity())
35060 return '<EC JPoint Infinity>';
35061 return '<EC JPoint x: ' + this.x.toString(16, 2) +
35062 ' y: ' + this.y.toString(16, 2) +
35063 ' z: ' + this.z.toString(16, 2) + '>';
35064 };
35065
35066 JPoint.prototype.isInfinity = function isInfinity() {
35067 // XXX This code assumes that zero is always zero in red
35068 return this.z.cmpn(0) === 0;
35069 };
35070
35071 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
35072 'use strict';
35073
35074 var curves = exports;
35075
35076 var hash = require('hash.js');
35077 var elliptic = require('../elliptic');
35078
35079 var assert = elliptic.utils.assert;
35080
35081 function PresetCurve(options) {
35082 if (options.type === 'short')
35083 this.curve = new elliptic.curve.short(options);
35084 else if (options.type === 'edwards')
35085 this.curve = new elliptic.curve.edwards(options);
35086 else
35087 this.curve = new elliptic.curve.mont(options);
35088 this.g = this.curve.g;
35089 this.n = this.curve.n;
35090 this.hash = options.hash;
35091
35092 assert(this.g.validate(), 'Invalid curve');
35093 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
35094 }
35095 curves.PresetCurve = PresetCurve;
35096
35097 function defineCurve(name, options) {
35098 Object.defineProperty(curves, name, {
35099 configurable: true,
35100 enumerable: true,
35101 get: function() {
35102 var curve = new PresetCurve(options);
35103 Object.defineProperty(curves, name, {
35104 configurable: true,
35105 enumerable: true,
35106 value: curve
35107 });
35108 return curve;
35109 }
35110 });
35111 }
35112
35113 defineCurve('p192', {
35114 type: 'short',
35115 prime: 'p192',
35116 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
35117 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
35118 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
35119 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
35120 hash: hash.sha256,
35121 gRed: false,
35122 g: [
35123 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
35124 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
35125 ]
35126 });
35127
35128 defineCurve('p224', {
35129 type: 'short',
35130 prime: 'p224',
35131 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
35132 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
35133 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
35134 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
35135 hash: hash.sha256,
35136 gRed: false,
35137 g: [
35138 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
35139 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
35140 ]
35141 });
35142
35143 defineCurve('p256', {
35144 type: 'short',
35145 prime: null,
35146 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
35147 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
35148 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
35149 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
35150 hash: hash.sha256,
35151 gRed: false,
35152 g: [
35153 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
35154 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
35155 ]
35156 });
35157
35158 defineCurve('p384', {
35159 type: 'short',
35160 prime: null,
35161 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35162 'fffffffe ffffffff 00000000 00000000 ffffffff',
35163 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35164 'fffffffe ffffffff 00000000 00000000 fffffffc',
35165 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
35166 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
35167 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
35168 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
35169 hash: hash.sha384,
35170 gRed: false,
35171 g: [
35172 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
35173 '5502f25d bf55296c 3a545e38 72760ab7',
35174 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
35175 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
35176 ]
35177 });
35178
35179 defineCurve('p521', {
35180 type: 'short',
35181 prime: null,
35182 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35183 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35184 'ffffffff ffffffff ffffffff ffffffff ffffffff',
35185 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35186 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35187 'ffffffff ffffffff ffffffff ffffffff fffffffc',
35188 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
35189 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
35190 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
35191 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35192 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
35193 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
35194 hash: hash.sha512,
35195 gRed: false,
35196 g: [
35197 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
35198 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
35199 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
35200 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
35201 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
35202 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
35203 ]
35204 });
35205
35206 defineCurve('curve25519', {
35207 type: 'mont',
35208 prime: 'p25519',
35209 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35210 a: '76d06',
35211 b: '1',
35212 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35213 hash: hash.sha256,
35214 gRed: false,
35215 g: [
35216 '9'
35217 ]
35218 });
35219
35220 defineCurve('ed25519', {
35221 type: 'edwards',
35222 prime: 'p25519',
35223 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35224 a: '-1',
35225 c: '1',
35226 // -121665 * (121666^(-1)) (mod P)
35227 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
35228 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35229 hash: hash.sha256,
35230 gRed: false,
35231 g: [
35232 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
35233
35234 // 4/5
35235 '6666666666666666666666666666666666666666666666666666666666666658'
35236 ]
35237 });
35238
35239 var pre;
35240 try {
35241 pre = require('./precomputed/secp256k1');
35242 } catch (e) {
35243 pre = undefined;
35244 }
35245
35246 defineCurve('secp256k1', {
35247 type: 'short',
35248 prime: 'k256',
35249 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
35250 a: '0',
35251 b: '7',
35252 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
35253 h: '1',
35254 hash: hash.sha256,
35255
35256 // Precomputed endomorphism
35257 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
35258 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
35259 basis: [
35260 {
35261 a: '3086d221a7d46bcde86c90e49284eb15',
35262 b: '-e4437ed6010e88286f547fa90abfe4c3'
35263 },
35264 {
35265 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
35266 b: '3086d221a7d46bcde86c90e49284eb15'
35267 }
35268 ],
35269
35270 gRed: false,
35271 g: [
35272 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
35273 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
35274 pre
35275 ]
35276 });
35277
35278 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
35279 'use strict';
35280
35281 var BN = require('bn.js');
35282 var elliptic = require('../../elliptic');
35283 var utils = elliptic.utils;
35284 var assert = utils.assert;
35285
35286 var KeyPair = require('./key');
35287 var Signature = require('./signature');
35288
35289 function EC(options) {
35290 if (!(this instanceof EC))
35291 return new EC(options);
35292
35293 // Shortcut `elliptic.ec(curve-name)`
35294 if (typeof options === 'string') {
35295 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
35296
35297 options = elliptic.curves[options];
35298 }
35299
35300 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
35301 if (options instanceof elliptic.curves.PresetCurve)
35302 options = { curve: options };
35303
35304 this.curve = options.curve.curve;
35305 this.n = this.curve.n;
35306 this.nh = this.n.ushrn(1);
35307 this.g = this.curve.g;
35308
35309 // Point on curve
35310 this.g = options.curve.g;
35311 this.g.precompute(options.curve.n.bitLength() + 1);
35312
35313 // Hash for function for DRBG
35314 this.hash = options.hash || options.curve.hash;
35315 }
35316 module.exports = EC;
35317
35318 EC.prototype.keyPair = function keyPair(options) {
35319 return new KeyPair(this, options);
35320 };
35321
35322 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
35323 return KeyPair.fromPrivate(this, priv, enc);
35324 };
35325
35326 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
35327 return KeyPair.fromPublic(this, pub, enc);
35328 };
35329
35330 EC.prototype.genKeyPair = function genKeyPair(options) {
35331 if (!options)
35332 options = {};
35333
35334 // Instantiate Hmac_DRBG
35335 var drbg = new elliptic.hmacDRBG({
35336 hash: this.hash,
35337 pers: options.pers,
35338 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
35339 nonce: this.n.toArray()
35340 });
35341
35342 var bytes = this.n.byteLength();
35343 var ns2 = this.n.sub(new BN(2));
35344 do {
35345 var priv = new BN(drbg.generate(bytes));
35346 if (priv.cmp(ns2) > 0)
35347 continue;
35348
35349 priv.iaddn(1);
35350 return this.keyFromPrivate(priv);
35351 } while (true);
35352 };
35353
35354 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
35355 var delta = msg.byteLength() * 8 - this.n.bitLength();
35356 if (delta > 0)
35357 msg = msg.ushrn(delta);
35358 if (!truncOnly && msg.cmp(this.n) >= 0)
35359 return msg.sub(this.n);
35360 else
35361 return msg;
35362 };
35363
35364 EC.prototype.sign = function sign(msg, key, enc, options) {
35365 if (typeof enc === 'object') {
35366 options = enc;
35367 enc = null;
35368 }
35369 if (!options)
35370 options = {};
35371
35372 key = this.keyFromPrivate(key, enc);
35373 msg = this._truncateToN(new BN(msg, 16));
35374
35375 // Zero-extend key to provide enough entropy
35376 var bytes = this.n.byteLength();
35377 var bkey = key.getPrivate().toArray('be', bytes);
35378
35379 // Zero-extend nonce to have the same byte size as N
35380 var nonce = msg.toArray('be', bytes);
35381
35382 // Instantiate Hmac_DRBG
35383 var drbg = new elliptic.hmacDRBG({
35384 hash: this.hash,
35385 entropy: bkey,
35386 nonce: nonce,
35387 pers: options.pers,
35388 persEnc: options.persEnc
35389 });
35390
35391 // Number of bytes to generate
35392 var ns1 = this.n.sub(new BN(1));
35393
35394 for (var iter = 0; true; iter++) {
35395 var k = options.k ?
35396 options.k(iter) :
35397 new BN(drbg.generate(this.n.byteLength()));
35398 k = this._truncateToN(k, true);
35399 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
35400 continue;
35401
35402 var kp = this.g.mul(k);
35403 if (kp.isInfinity())
35404 continue;
35405
35406 var kpX = kp.getX();
35407 var r = kpX.umod(this.n);
35408 if (r.cmpn(0) === 0)
35409 continue;
35410
35411 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
35412 s = s.umod(this.n);
35413 if (s.cmpn(0) === 0)
35414 continue;
35415
35416 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
35417 (kpX.cmp(r) !== 0 ? 2 : 0);
35418
35419 // Use complement of `s`, if it is > `n / 2`
35420 if (options.canonical && s.cmp(this.nh) > 0) {
35421 s = this.n.sub(s);
35422 recoveryParam ^= 1;
35423 }
35424
35425 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
35426 }
35427 };
35428
35429 EC.prototype.verify = function verify(msg, signature, key, enc) {
35430 msg = this._truncateToN(new BN(msg, 16));
35431 key = this.keyFromPublic(key, enc);
35432 signature = new Signature(signature, 'hex');
35433
35434 // Perform primitive values validation
35435 var r = signature.r;
35436 var s = signature.s;
35437 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
35438 return false;
35439 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
35440 return false;
35441
35442 // Validate signature
35443 var sinv = s.invm(this.n);
35444 var u1 = sinv.mul(msg).umod(this.n);
35445 var u2 = sinv.mul(r).umod(this.n);
35446
35447 if (!this.curve._maxwellTrick) {
35448 var p = this.g.mulAdd(u1, key.getPublic(), u2);
35449 if (p.isInfinity())
35450 return false;
35451
35452 return p.getX().umod(this.n).cmp(r) === 0;
35453 }
35454
35455 // NOTE: Greg Maxwell's trick, inspired by:
35456 // https://git.io/vad3K
35457
35458 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
35459 if (p.isInfinity())
35460 return false;
35461
35462 // Compare `p.x` of Jacobian point with `r`,
35463 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
35464 // inverse of `p.z^2`
35465 return p.eqXToP(r);
35466 };
35467
35468 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
35469 assert((3 & j) === j, 'The recovery param is more than two bits');
35470 signature = new Signature(signature, enc);
35471
35472 var n = this.n;
35473 var e = new BN(msg);
35474 var r = signature.r;
35475 var s = signature.s;
35476
35477 // A set LSB signifies that the y-coordinate is odd
35478 var isYOdd = j & 1;
35479 var isSecondKey = j >> 1;
35480 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
35481 throw new Error('Unable to find sencond key candinate');
35482
35483 // 1.1. Let x = r + jn.
35484 if (isSecondKey)
35485 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
35486 else
35487 r = this.curve.pointFromX(r, isYOdd);
35488
35489 var rInv = signature.r.invm(n);
35490 var s1 = n.sub(e).mul(rInv).umod(n);
35491 var s2 = s.mul(rInv).umod(n);
35492
35493 // 1.6.1 Compute Q = r^-1 (sR - eG)
35494 // Q = r^-1 (sR + -eG)
35495 return this.g.mulAdd(s1, r, s2);
35496 };
35497
35498 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
35499 signature = new Signature(signature, enc);
35500 if (signature.recoveryParam !== null)
35501 return signature.recoveryParam;
35502
35503 for (var i = 0; i < 4; i++) {
35504 var Qprime;
35505 try {
35506 Qprime = this.recoverPubKey(e, signature, i);
35507 } catch (e) {
35508 continue;
35509 }
35510
35511 if (Qprime.eq(Q))
35512 return i;
35513 }
35514 throw new Error('Unable to find valid recovery factor');
35515 };
35516
35517 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
35518 'use strict';
35519
35520 var BN = require('bn.js');
35521 var elliptic = require('../../elliptic');
35522 var utils = elliptic.utils;
35523 var assert = utils.assert;
35524
35525 function KeyPair(ec, options) {
35526 this.ec = ec;
35527 this.priv = null;
35528 this.pub = null;
35529
35530 // KeyPair(ec, { priv: ..., pub: ... })
35531 if (options.priv)
35532 this._importPrivate(options.priv, options.privEnc);
35533 if (options.pub)
35534 this._importPublic(options.pub, options.pubEnc);
35535 }
35536 module.exports = KeyPair;
35537
35538 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
35539 if (pub instanceof KeyPair)
35540 return pub;
35541
35542 return new KeyPair(ec, {
35543 pub: pub,
35544 pubEnc: enc
35545 });
35546 };
35547
35548 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
35549 if (priv instanceof KeyPair)
35550 return priv;
35551
35552 return new KeyPair(ec, {
35553 priv: priv,
35554 privEnc: enc
35555 });
35556 };
35557
35558 KeyPair.prototype.validate = function validate() {
35559 var pub = this.getPublic();
35560
35561 if (pub.isInfinity())
35562 return { result: false, reason: 'Invalid public key' };
35563 if (!pub.validate())
35564 return { result: false, reason: 'Public key is not a point' };
35565 if (!pub.mul(this.ec.curve.n).isInfinity())
35566 return { result: false, reason: 'Public key * N != O' };
35567
35568 return { result: true, reason: null };
35569 };
35570
35571 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
35572 // compact is optional argument
35573 if (typeof compact === 'string') {
35574 enc = compact;
35575 compact = null;
35576 }
35577
35578 if (!this.pub)
35579 this.pub = this.ec.g.mul(this.priv);
35580
35581 if (!enc)
35582 return this.pub;
35583
35584 return this.pub.encode(enc, compact);
35585 };
35586
35587 KeyPair.prototype.getPrivate = function getPrivate(enc) {
35588 if (enc === 'hex')
35589 return this.priv.toString(16, 2);
35590 else
35591 return this.priv;
35592 };
35593
35594 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
35595 this.priv = new BN(key, enc || 16);
35596
35597 // Ensure that the priv won't be bigger than n, otherwise we may fail
35598 // in fixed multiplication method
35599 this.priv = this.priv.umod(this.ec.curve.n);
35600 };
35601
35602 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
35603 if (key.x || key.y) {
35604 // Montgomery points only have an `x` coordinate.
35605 // Weierstrass/Edwards points on the other hand have both `x` and
35606 // `y` coordinates.
35607 if (this.ec.curve.type === 'mont') {
35608 assert(key.x, 'Need x coordinate');
35609 } else if (this.ec.curve.type === 'short' ||
35610 this.ec.curve.type === 'edwards') {
35611 assert(key.x && key.y, 'Need both x and y coordinate');
35612 }
35613 this.pub = this.ec.curve.point(key.x, key.y);
35614 return;
35615 }
35616 this.pub = this.ec.curve.decodePoint(key, enc);
35617 };
35618
35619 // ECDH
35620 KeyPair.prototype.derive = function derive(pub) {
35621 return pub.mul(this.priv).getX();
35622 };
35623
35624 // ECDSA
35625 KeyPair.prototype.sign = function sign(msg, enc, options) {
35626 return this.ec.sign(msg, this, enc, options);
35627 };
35628
35629 KeyPair.prototype.verify = function verify(msg, signature) {
35630 return this.ec.verify(msg, signature, this);
35631 };
35632
35633 KeyPair.prototype.inspect = function inspect() {
35634 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
35635 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
35636 };
35637
35638 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
35639 'use strict';
35640
35641 var BN = require('bn.js');
35642
35643 var elliptic = require('../../elliptic');
35644 var utils = elliptic.utils;
35645 var assert = utils.assert;
35646
35647 function Signature(options, enc) {
35648 if (options instanceof Signature)
35649 return options;
35650
35651 if (this._importDER(options, enc))
35652 return;
35653
35654 assert(options.r && options.s, 'Signature without r or s');
35655 this.r = new BN(options.r, 16);
35656 this.s = new BN(options.s, 16);
35657 if (options.recoveryParam === undefined)
35658 this.recoveryParam = null;
35659 else
35660 this.recoveryParam = options.recoveryParam;
35661 }
35662 module.exports = Signature;
35663
35664 function Position() {
35665 this.place = 0;
35666 }
35667
35668 function getLength(buf, p) {
35669 var initial = buf[p.place++];
35670 if (!(initial & 0x80)) {
35671 return initial;
35672 }
35673 var octetLen = initial & 0xf;
35674 var val = 0;
35675 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
35676 val <<= 8;
35677 val |= buf[off];
35678 }
35679 p.place = off;
35680 return val;
35681 }
35682
35683 function rmPadding(buf) {
35684 var i = 0;
35685 var len = buf.length - 1;
35686 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
35687 i++;
35688 }
35689 if (i === 0) {
35690 return buf;
35691 }
35692 return buf.slice(i);
35693 }
35694
35695 Signature.prototype._importDER = function _importDER(data, enc) {
35696 data = utils.toArray(data, enc);
35697 var p = new Position();
35698 if (data[p.place++] !== 0x30) {
35699 return false;
35700 }
35701 var len = getLength(data, p);
35702 if ((len + p.place) !== data.length) {
35703 return false;
35704 }
35705 if (data[p.place++] !== 0x02) {
35706 return false;
35707 }
35708 var rlen = getLength(data, p);
35709 var r = data.slice(p.place, rlen + p.place);
35710 p.place += rlen;
35711 if (data[p.place++] !== 0x02) {
35712 return false;
35713 }
35714 var slen = getLength(data, p);
35715 if (data.length !== slen + p.place) {
35716 return false;
35717 }
35718 var s = data.slice(p.place, slen + p.place);
35719 if (r[0] === 0 && (r[1] & 0x80)) {
35720 r = r.slice(1);
35721 }
35722 if (s[0] === 0 && (s[1] & 0x80)) {
35723 s = s.slice(1);
35724 }
35725
35726 this.r = new BN(r);
35727 this.s = new BN(s);
35728 this.recoveryParam = null;
35729
35730 return true;
35731 };
35732
35733 function constructLength(arr, len) {
35734 if (len < 0x80) {
35735 arr.push(len);
35736 return;
35737 }
35738 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
35739 arr.push(octets | 0x80);
35740 while (--octets) {
35741 arr.push((len >>> (octets << 3)) & 0xff);
35742 }
35743 arr.push(len);
35744 }
35745
35746 Signature.prototype.toDER = function toDER(enc) {
35747 var r = this.r.toArray();
35748 var s = this.s.toArray();
35749
35750 // Pad values
35751 if (r[0] & 0x80)
35752 r = [ 0 ].concat(r);
35753 // Pad values
35754 if (s[0] & 0x80)
35755 s = [ 0 ].concat(s);
35756
35757 r = rmPadding(r);
35758 s = rmPadding(s);
35759
35760 while (!s[0] && !(s[1] & 0x80)) {
35761 s = s.slice(1);
35762 }
35763 var arr = [ 0x02 ];
35764 constructLength(arr, r.length);
35765 arr = arr.concat(r);
35766 arr.push(0x02);
35767 constructLength(arr, s.length);
35768 var backHalf = arr.concat(s);
35769 var res = [ 0x30 ];
35770 constructLength(res, backHalf.length);
35771 res = res.concat(backHalf);
35772 return utils.encode(res, enc);
35773 };
35774
35775 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
35776 'use strict';
35777
35778 var hash = require('hash.js');
35779 var elliptic = require('../../elliptic');
35780 var utils = elliptic.utils;
35781 var assert = utils.assert;
35782 var parseBytes = utils.parseBytes;
35783 var KeyPair = require('./key');
35784 var Signature = require('./signature');
35785
35786 function EDDSA(curve) {
35787 assert(curve === 'ed25519', 'only tested with ed25519 so far');
35788
35789 if (!(this instanceof EDDSA))
35790 return new EDDSA(curve);
35791
35792 var curve = elliptic.curves[curve].curve;
35793 this.curve = curve;
35794 this.g = curve.g;
35795 this.g.precompute(curve.n.bitLength() + 1);
35796
35797 this.pointClass = curve.point().constructor;
35798 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
35799 this.hash = hash.sha512;
35800 }
35801
35802 module.exports = EDDSA;
35803
35804 /**
35805 * @param {Array|String} message - message bytes
35806 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
35807 * @returns {Signature} - signature
35808 */
35809 EDDSA.prototype.sign = function sign(message, secret) {
35810 message = parseBytes(message);
35811 var key = this.keyFromSecret(secret);
35812 var r = this.hashInt(key.messagePrefix(), message);
35813 var R = this.g.mul(r);
35814 var Rencoded = this.encodePoint(R);
35815 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
35816 .mul(key.priv());
35817 var S = r.add(s_).umod(this.curve.n);
35818 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
35819 };
35820
35821 /**
35822 * @param {Array} message - message bytes
35823 * @param {Array|String|Signature} sig - sig bytes
35824 * @param {Array|String|Point|KeyPair} pub - public key
35825 * @returns {Boolean} - true if public key matches sig of message
35826 */
35827 EDDSA.prototype.verify = function verify(message, sig, pub) {
35828 message = parseBytes(message);
35829 sig = this.makeSignature(sig);
35830 var key = this.keyFromPublic(pub);
35831 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
35832 var SG = this.g.mul(sig.S());
35833 var RplusAh = sig.R().add(key.pub().mul(h));
35834 return RplusAh.eq(SG);
35835 };
35836
35837 EDDSA.prototype.hashInt = function hashInt() {
35838 var hash = this.hash();
35839 for (var i = 0; i < arguments.length; i++)
35840 hash.update(arguments[i]);
35841 return utils.intFromLE(hash.digest()).umod(this.curve.n);
35842 };
35843
35844 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
35845 return KeyPair.fromPublic(this, pub);
35846 };
35847
35848 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
35849 return KeyPair.fromSecret(this, secret);
35850 };
35851
35852 EDDSA.prototype.makeSignature = function makeSignature(sig) {
35853 if (sig instanceof Signature)
35854 return sig;
35855 return new Signature(this, sig);
35856 };
35857
35858 /**
35859 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
35860 *
35861 * EDDSA defines methods for encoding and decoding points and integers. These are
35862 * helper convenience methods, that pass along to utility functions implied
35863 * parameters.
35864 *
35865 */
35866 EDDSA.prototype.encodePoint = function encodePoint(point) {
35867 var enc = point.getY().toArray('le', this.encodingLength);
35868 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
35869 return enc;
35870 };
35871
35872 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
35873 bytes = utils.parseBytes(bytes);
35874
35875 var lastIx = bytes.length - 1;
35876 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
35877 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
35878
35879 var y = utils.intFromLE(normed);
35880 return this.curve.pointFromY(y, xIsOdd);
35881 };
35882
35883 EDDSA.prototype.encodeInt = function encodeInt(num) {
35884 return num.toArray('le', this.encodingLength);
35885 };
35886
35887 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
35888 return utils.intFromLE(bytes);
35889 };
35890
35891 EDDSA.prototype.isPoint = function isPoint(val) {
35892 return val instanceof this.pointClass;
35893 };
35894
35895 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
35896 'use strict';
35897
35898 var elliptic = require('../../elliptic');
35899 var utils = elliptic.utils;
35900 var assert = utils.assert;
35901 var parseBytes = utils.parseBytes;
35902 var cachedProperty = utils.cachedProperty;
35903
35904 /**
35905 * @param {EDDSA} eddsa - instance
35906 * @param {Object} params - public/private key parameters
35907 *
35908 * @param {Array<Byte>} [params.secret] - secret seed bytes
35909 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
35910 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
35911 *
35912 */
35913 function KeyPair(eddsa, params) {
35914 this.eddsa = eddsa;
35915 this._secret = parseBytes(params.secret);
35916 if (eddsa.isPoint(params.pub))
35917 this._pub = params.pub;
35918 else
35919 this._pubBytes = parseBytes(params.pub);
35920 }
35921
35922 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
35923 if (pub instanceof KeyPair)
35924 return pub;
35925 return new KeyPair(eddsa, { pub: pub });
35926 };
35927
35928 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
35929 if (secret instanceof KeyPair)
35930 return secret;
35931 return new KeyPair(eddsa, { secret: secret });
35932 };
35933
35934 KeyPair.prototype.secret = function secret() {
35935 return this._secret;
35936 };
35937
35938 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
35939 return this.eddsa.encodePoint(this.pub());
35940 });
35941
35942 cachedProperty(KeyPair, 'pub', function pub() {
35943 if (this._pubBytes)
35944 return this.eddsa.decodePoint(this._pubBytes);
35945 return this.eddsa.g.mul(this.priv());
35946 });
35947
35948 cachedProperty(KeyPair, 'privBytes', function privBytes() {
35949 var eddsa = this.eddsa;
35950 var hash = this.hash();
35951 var lastIx = eddsa.encodingLength - 1;
35952
35953 var a = hash.slice(0, eddsa.encodingLength);
35954 a[0] &= 248;
35955 a[lastIx] &= 127;
35956 a[lastIx] |= 64;
35957
35958 return a;
35959 });
35960
35961 cachedProperty(KeyPair, 'priv', function priv() {
35962 return this.eddsa.decodeInt(this.privBytes());
35963 });
35964
35965 cachedProperty(KeyPair, 'hash', function hash() {
35966 return this.eddsa.hash().update(this.secret()).digest();
35967 });
35968
35969 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
35970 return this.hash().slice(this.eddsa.encodingLength);
35971 });
35972
35973 KeyPair.prototype.sign = function sign(message) {
35974 assert(this._secret, 'KeyPair can only verify');
35975 return this.eddsa.sign(message, this);
35976 };
35977
35978 KeyPair.prototype.verify = function verify(message, sig) {
35979 return this.eddsa.verify(message, sig, this);
35980 };
35981
35982 KeyPair.prototype.getSecret = function getSecret(enc) {
35983 assert(this._secret, 'KeyPair is public only');
35984 return utils.encode(this.secret(), enc);
35985 };
35986
35987 KeyPair.prototype.getPublic = function getPublic(enc) {
35988 return utils.encode(this.pubBytes(), enc);
35989 };
35990
35991 module.exports = KeyPair;
35992
35993 },{"../../elliptic":39}],51:[function(require,module,exports){
35994 'use strict';
35995
35996 var BN = require('bn.js');
35997 var elliptic = require('../../elliptic');
35998 var utils = elliptic.utils;
35999 var assert = utils.assert;
36000 var cachedProperty = utils.cachedProperty;
36001 var parseBytes = utils.parseBytes;
36002
36003 /**
36004 * @param {EDDSA} eddsa - eddsa instance
36005 * @param {Array<Bytes>|Object} sig -
36006 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
36007 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
36008 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
36009 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
36010 */
36011 function Signature(eddsa, sig) {
36012 this.eddsa = eddsa;
36013
36014 if (typeof sig !== 'object')
36015 sig = parseBytes(sig);
36016
36017 if (Array.isArray(sig)) {
36018 sig = {
36019 R: sig.slice(0, eddsa.encodingLength),
36020 S: sig.slice(eddsa.encodingLength)
36021 };
36022 }
36023
36024 assert(sig.R && sig.S, 'Signature without R or S');
36025
36026 if (eddsa.isPoint(sig.R))
36027 this._R = sig.R;
36028 if (sig.S instanceof BN)
36029 this._S = sig.S;
36030
36031 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
36032 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
36033 }
36034
36035 cachedProperty(Signature, 'S', function S() {
36036 return this.eddsa.decodeInt(this.Sencoded());
36037 });
36038
36039 cachedProperty(Signature, 'R', function R() {
36040 return this.eddsa.decodePoint(this.Rencoded());
36041 });
36042
36043 cachedProperty(Signature, 'Rencoded', function Rencoded() {
36044 return this.eddsa.encodePoint(this.R());
36045 });
36046
36047 cachedProperty(Signature, 'Sencoded', function Sencoded() {
36048 return this.eddsa.encodeInt(this.S());
36049 });
36050
36051 Signature.prototype.toBytes = function toBytes() {
36052 return this.Rencoded().concat(this.Sencoded());
36053 };
36054
36055 Signature.prototype.toHex = function toHex() {
36056 return utils.encode(this.toBytes(), 'hex').toUpperCase();
36057 };
36058
36059 module.exports = Signature;
36060
36061 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
36062 'use strict';
36063
36064 var hash = require('hash.js');
36065 var elliptic = require('../elliptic');
36066 var utils = elliptic.utils;
36067 var assert = utils.assert;
36068
36069 function HmacDRBG(options) {
36070 if (!(this instanceof HmacDRBG))
36071 return new HmacDRBG(options);
36072 this.hash = options.hash;
36073 this.predResist = !!options.predResist;
36074
36075 this.outLen = this.hash.outSize;
36076 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
36077
36078 this.reseed = null;
36079 this.reseedInterval = null;
36080 this.K = null;
36081 this.V = null;
36082
36083 var entropy = utils.toArray(options.entropy, options.entropyEnc);
36084 var nonce = utils.toArray(options.nonce, options.nonceEnc);
36085 var pers = utils.toArray(options.pers, options.persEnc);
36086 assert(entropy.length >= (this.minEntropy / 8),
36087 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36088 this._init(entropy, nonce, pers);
36089 }
36090 module.exports = HmacDRBG;
36091
36092 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
36093 var seed = entropy.concat(nonce).concat(pers);
36094
36095 this.K = new Array(this.outLen / 8);
36096 this.V = new Array(this.outLen / 8);
36097 for (var i = 0; i < this.V.length; i++) {
36098 this.K[i] = 0x00;
36099 this.V[i] = 0x01;
36100 }
36101
36102 this._update(seed);
36103 this.reseed = 1;
36104 this.reseedInterval = 0x1000000000000; // 2^48
36105 };
36106
36107 HmacDRBG.prototype._hmac = function hmac() {
36108 return new hash.hmac(this.hash, this.K);
36109 };
36110
36111 HmacDRBG.prototype._update = function update(seed) {
36112 var kmac = this._hmac()
36113 .update(this.V)
36114 .update([ 0x00 ]);
36115 if (seed)
36116 kmac = kmac.update(seed);
36117 this.K = kmac.digest();
36118 this.V = this._hmac().update(this.V).digest();
36119 if (!seed)
36120 return;
36121
36122 this.K = this._hmac()
36123 .update(this.V)
36124 .update([ 0x01 ])
36125 .update(seed)
36126 .digest();
36127 this.V = this._hmac().update(this.V).digest();
36128 };
36129
36130 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
36131 // Optional entropy enc
36132 if (typeof entropyEnc !== 'string') {
36133 addEnc = add;
36134 add = entropyEnc;
36135 entropyEnc = null;
36136 }
36137
36138 entropy = utils.toBuffer(entropy, entropyEnc);
36139 add = utils.toBuffer(add, addEnc);
36140
36141 assert(entropy.length >= (this.minEntropy / 8),
36142 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36143
36144 this._update(entropy.concat(add || []));
36145 this.reseed = 1;
36146 };
36147
36148 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
36149 if (this.reseed > this.reseedInterval)
36150 throw new Error('Reseed is required');
36151
36152 // Optional encoding
36153 if (typeof enc !== 'string') {
36154 addEnc = add;
36155 add = enc;
36156 enc = null;
36157 }
36158
36159 // Optional additional data
36160 if (add) {
36161 add = utils.toArray(add, addEnc);
36162 this._update(add);
36163 }
36164
36165 var temp = [];
36166 while (temp.length < len) {
36167 this.V = this._hmac().update(this.V).digest();
36168 temp = temp.concat(this.V);
36169 }
36170
36171 var res = temp.slice(0, len);
36172 this._update(add);
36173 this.reseed++;
36174 return utils.encode(res, enc);
36175 };
36176
36177 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
36178 module.exports = {
36179 doubles: {
36180 step: 4,
36181 points: [
36182 [
36183 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
36184 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
36185 ],
36186 [
36187 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
36188 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
36189 ],
36190 [
36191 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
36192 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
36193 ],
36194 [
36195 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
36196 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
36197 ],
36198 [
36199 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
36200 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
36201 ],
36202 [
36203 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
36204 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
36205 ],
36206 [
36207 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
36208 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
36209 ],
36210 [
36211 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
36212 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
36213 ],
36214 [
36215 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
36216 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
36217 ],
36218 [
36219 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
36220 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
36221 ],
36222 [
36223 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
36224 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
36225 ],
36226 [
36227 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
36228 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
36229 ],
36230 [
36231 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
36232 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
36233 ],
36234 [
36235 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
36236 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
36237 ],
36238 [
36239 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
36240 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
36241 ],
36242 [
36243 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
36244 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
36245 ],
36246 [
36247 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
36248 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
36249 ],
36250 [
36251 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
36252 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
36253 ],
36254 [
36255 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
36256 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
36257 ],
36258 [
36259 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
36260 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
36261 ],
36262 [
36263 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
36264 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
36265 ],
36266 [
36267 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
36268 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
36269 ],
36270 [
36271 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
36272 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
36273 ],
36274 [
36275 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
36276 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
36277 ],
36278 [
36279 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
36280 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
36281 ],
36282 [
36283 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
36284 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
36285 ],
36286 [
36287 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
36288 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
36289 ],
36290 [
36291 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
36292 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
36293 ],
36294 [
36295 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
36296 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
36297 ],
36298 [
36299 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
36300 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
36301 ],
36302 [
36303 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
36304 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
36305 ],
36306 [
36307 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
36308 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
36309 ],
36310 [
36311 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
36312 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
36313 ],
36314 [
36315 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
36316 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
36317 ],
36318 [
36319 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
36320 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
36321 ],
36322 [
36323 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
36324 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
36325 ],
36326 [
36327 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
36328 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
36329 ],
36330 [
36331 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
36332 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
36333 ],
36334 [
36335 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
36336 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
36337 ],
36338 [
36339 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
36340 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
36341 ],
36342 [
36343 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
36344 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
36345 ],
36346 [
36347 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
36348 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
36349 ],
36350 [
36351 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
36352 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
36353 ],
36354 [
36355 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
36356 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
36357 ],
36358 [
36359 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
36360 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
36361 ],
36362 [
36363 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
36364 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
36365 ],
36366 [
36367 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
36368 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
36369 ],
36370 [
36371 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
36372 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
36373 ],
36374 [
36375 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
36376 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
36377 ],
36378 [
36379 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
36380 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
36381 ],
36382 [
36383 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
36384 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
36385 ],
36386 [
36387 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
36388 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
36389 ],
36390 [
36391 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
36392 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
36393 ],
36394 [
36395 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
36396 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
36397 ],
36398 [
36399 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
36400 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
36401 ],
36402 [
36403 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
36404 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
36405 ],
36406 [
36407 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
36408 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
36409 ],
36410 [
36411 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
36412 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
36413 ],
36414 [
36415 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
36416 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
36417 ],
36418 [
36419 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
36420 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
36421 ],
36422 [
36423 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
36424 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
36425 ],
36426 [
36427 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
36428 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
36429 ],
36430 [
36431 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
36432 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
36433 ],
36434 [
36435 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
36436 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
36437 ],
36438 [
36439 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
36440 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
36441 ]
36442 ]
36443 },
36444 naf: {
36445 wnd: 7,
36446 points: [
36447 [
36448 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
36449 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
36450 ],
36451 [
36452 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
36453 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
36454 ],
36455 [
36456 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
36457 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
36458 ],
36459 [
36460 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
36461 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
36462 ],
36463 [
36464 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
36465 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
36466 ],
36467 [
36468 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
36469 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
36470 ],
36471 [
36472 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
36473 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
36474 ],
36475 [
36476 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
36477 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
36478 ],
36479 [
36480 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
36481 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
36482 ],
36483 [
36484 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
36485 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
36486 ],
36487 [
36488 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
36489 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
36490 ],
36491 [
36492 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
36493 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
36494 ],
36495 [
36496 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
36497 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
36498 ],
36499 [
36500 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
36501 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
36502 ],
36503 [
36504 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
36505 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
36506 ],
36507 [
36508 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
36509 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
36510 ],
36511 [
36512 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
36513 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
36514 ],
36515 [
36516 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
36517 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
36518 ],
36519 [
36520 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
36521 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
36522 ],
36523 [
36524 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
36525 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
36526 ],
36527 [
36528 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
36529 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
36530 ],
36531 [
36532 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
36533 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
36534 ],
36535 [
36536 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
36537 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
36538 ],
36539 [
36540 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
36541 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
36542 ],
36543 [
36544 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
36545 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
36546 ],
36547 [
36548 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
36549 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
36550 ],
36551 [
36552 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
36553 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
36554 ],
36555 [
36556 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
36557 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
36558 ],
36559 [
36560 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
36561 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
36562 ],
36563 [
36564 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
36565 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
36566 ],
36567 [
36568 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
36569 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
36570 ],
36571 [
36572 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
36573 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
36574 ],
36575 [
36576 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
36577 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
36578 ],
36579 [
36580 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
36581 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
36582 ],
36583 [
36584 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
36585 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
36586 ],
36587 [
36588 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
36589 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
36590 ],
36591 [
36592 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
36593 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
36594 ],
36595 [
36596 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
36597 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
36598 ],
36599 [
36600 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
36601 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
36602 ],
36603 [
36604 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
36605 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
36606 ],
36607 [
36608 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
36609 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
36610 ],
36611 [
36612 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
36613 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
36614 ],
36615 [
36616 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
36617 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
36618 ],
36619 [
36620 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
36621 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
36622 ],
36623 [
36624 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
36625 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
36626 ],
36627 [
36628 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
36629 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
36630 ],
36631 [
36632 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
36633 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
36634 ],
36635 [
36636 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
36637 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
36638 ],
36639 [
36640 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
36641 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
36642 ],
36643 [
36644 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
36645 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
36646 ],
36647 [
36648 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
36649 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
36650 ],
36651 [
36652 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
36653 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
36654 ],
36655 [
36656 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
36657 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
36658 ],
36659 [
36660 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
36661 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
36662 ],
36663 [
36664 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
36665 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
36666 ],
36667 [
36668 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
36669 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
36670 ],
36671 [
36672 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
36673 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
36674 ],
36675 [
36676 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
36677 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
36678 ],
36679 [
36680 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
36681 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
36682 ],
36683 [
36684 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
36685 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
36686 ],
36687 [
36688 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
36689 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
36690 ],
36691 [
36692 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
36693 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
36694 ],
36695 [
36696 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
36697 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
36698 ],
36699 [
36700 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
36701 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
36702 ],
36703 [
36704 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
36705 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
36706 ],
36707 [
36708 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
36709 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
36710 ],
36711 [
36712 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
36713 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
36714 ],
36715 [
36716 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
36717 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
36718 ],
36719 [
36720 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
36721 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
36722 ],
36723 [
36724 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
36725 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
36726 ],
36727 [
36728 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
36729 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
36730 ],
36731 [
36732 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
36733 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
36734 ],
36735 [
36736 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
36737 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
36738 ],
36739 [
36740 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
36741 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
36742 ],
36743 [
36744 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
36745 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
36746 ],
36747 [
36748 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
36749 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
36750 ],
36751 [
36752 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
36753 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
36754 ],
36755 [
36756 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
36757 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
36758 ],
36759 [
36760 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
36761 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
36762 ],
36763 [
36764 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
36765 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
36766 ],
36767 [
36768 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
36769 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
36770 ],
36771 [
36772 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
36773 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
36774 ],
36775 [
36776 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
36777 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
36778 ],
36779 [
36780 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
36781 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
36782 ],
36783 [
36784 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
36785 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
36786 ],
36787 [
36788 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
36789 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
36790 ],
36791 [
36792 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
36793 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
36794 ],
36795 [
36796 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
36797 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
36798 ],
36799 [
36800 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
36801 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
36802 ],
36803 [
36804 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
36805 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
36806 ],
36807 [
36808 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
36809 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
36810 ],
36811 [
36812 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
36813 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
36814 ],
36815 [
36816 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
36817 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
36818 ],
36819 [
36820 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
36821 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
36822 ],
36823 [
36824 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
36825 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
36826 ],
36827 [
36828 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
36829 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
36830 ],
36831 [
36832 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
36833 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
36834 ],
36835 [
36836 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
36837 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
36838 ],
36839 [
36840 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
36841 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
36842 ],
36843 [
36844 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
36845 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
36846 ],
36847 [
36848 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
36849 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
36850 ],
36851 [
36852 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
36853 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
36854 ],
36855 [
36856 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
36857 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
36858 ],
36859 [
36860 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
36861 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
36862 ],
36863 [
36864 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
36865 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
36866 ],
36867 [
36868 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
36869 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
36870 ],
36871 [
36872 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
36873 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
36874 ],
36875 [
36876 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
36877 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
36878 ],
36879 [
36880 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
36881 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
36882 ],
36883 [
36884 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
36885 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
36886 ],
36887 [
36888 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
36889 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
36890 ],
36891 [
36892 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
36893 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
36894 ],
36895 [
36896 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
36897 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
36898 ],
36899 [
36900 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
36901 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
36902 ],
36903 [
36904 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
36905 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
36906 ],
36907 [
36908 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
36909 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
36910 ],
36911 [
36912 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
36913 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
36914 ],
36915 [
36916 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
36917 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
36918 ],
36919 [
36920 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
36921 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
36922 ],
36923 [
36924 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
36925 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
36926 ],
36927 [
36928 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
36929 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
36930 ],
36931 [
36932 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
36933 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
36934 ],
36935 [
36936 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
36937 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
36938 ],
36939 [
36940 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
36941 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
36942 ],
36943 [
36944 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
36945 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
36946 ],
36947 [
36948 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
36949 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
36950 ],
36951 [
36952 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
36953 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
36954 ]
36955 ]
36956 }
36957 };
36958
36959 },{}],54:[function(require,module,exports){
36960 'use strict';
36961
36962 var utils = exports;
36963 var BN = require('bn.js');
36964
36965 utils.assert = function assert(val, msg) {
36966 if (!val)
36967 throw new Error(msg || 'Assertion failed');
36968 };
36969
36970 function toArray(msg, enc) {
36971 if (Array.isArray(msg))
36972 return msg.slice();
36973 if (!msg)
36974 return [];
36975 var res = [];
36976 if (typeof msg !== 'string') {
36977 for (var i = 0; i < msg.length; i++)
36978 res[i] = msg[i] | 0;
36979 return res;
36980 }
36981 if (!enc) {
36982 for (var i = 0; i < msg.length; i++) {
36983 var c = msg.charCodeAt(i);
36984 var hi = c >> 8;
36985 var lo = c & 0xff;
36986 if (hi)
36987 res.push(hi, lo);
36988 else
36989 res.push(lo);
36990 }
36991 } else if (enc === 'hex') {
36992 msg = msg.replace(/[^a-z0-9]+/ig, '');
36993 if (msg.length % 2 !== 0)
36994 msg = '0' + msg;
36995 for (var i = 0; i < msg.length; i += 2)
36996 res.push(parseInt(msg[i] + msg[i + 1], 16));
36997 }
36998 return res;
36999 }
37000 utils.toArray = toArray;
37001
37002 function zero2(word) {
37003 if (word.length === 1)
37004 return '0' + word;
37005 else
37006 return word;
37007 }
37008 utils.zero2 = zero2;
37009
37010 function toHex(msg) {
37011 var res = '';
37012 for (var i = 0; i < msg.length; i++)
37013 res += zero2(msg[i].toString(16));
37014 return res;
37015 }
37016 utils.toHex = toHex;
37017
37018 utils.encode = function encode(arr, enc) {
37019 if (enc === 'hex')
37020 return toHex(arr);
37021 else
37022 return arr;
37023 };
37024
37025 // Represent num in a w-NAF form
37026 function getNAF(num, w) {
37027 var naf = [];
37028 var ws = 1 << (w + 1);
37029 var k = num.clone();
37030 while (k.cmpn(1) >= 0) {
37031 var z;
37032 if (k.isOdd()) {
37033 var mod = k.andln(ws - 1);
37034 if (mod > (ws >> 1) - 1)
37035 z = (ws >> 1) - mod;
37036 else
37037 z = mod;
37038 k.isubn(z);
37039 } else {
37040 z = 0;
37041 }
37042 naf.push(z);
37043
37044 // Optimization, shift by word if possible
37045 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
37046 for (var i = 1; i < shift; i++)
37047 naf.push(0);
37048 k.iushrn(shift);
37049 }
37050
37051 return naf;
37052 }
37053 utils.getNAF = getNAF;
37054
37055 // Represent k1, k2 in a Joint Sparse Form
37056 function getJSF(k1, k2) {
37057 var jsf = [
37058 [],
37059 []
37060 ];
37061
37062 k1 = k1.clone();
37063 k2 = k2.clone();
37064 var d1 = 0;
37065 var d2 = 0;
37066 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
37067
37068 // First phase
37069 var m14 = (k1.andln(3) + d1) & 3;
37070 var m24 = (k2.andln(3) + d2) & 3;
37071 if (m14 === 3)
37072 m14 = -1;
37073 if (m24 === 3)
37074 m24 = -1;
37075 var u1;
37076 if ((m14 & 1) === 0) {
37077 u1 = 0;
37078 } else {
37079 var m8 = (k1.andln(7) + d1) & 7;
37080 if ((m8 === 3 || m8 === 5) && m24 === 2)
37081 u1 = -m14;
37082 else
37083 u1 = m14;
37084 }
37085 jsf[0].push(u1);
37086
37087 var u2;
37088 if ((m24 & 1) === 0) {
37089 u2 = 0;
37090 } else {
37091 var m8 = (k2.andln(7) + d2) & 7;
37092 if ((m8 === 3 || m8 === 5) && m14 === 2)
37093 u2 = -m24;
37094 else
37095 u2 = m24;
37096 }
37097 jsf[1].push(u2);
37098
37099 // Second phase
37100 if (2 * d1 === u1 + 1)
37101 d1 = 1 - d1;
37102 if (2 * d2 === u2 + 1)
37103 d2 = 1 - d2;
37104 k1.iushrn(1);
37105 k2.iushrn(1);
37106 }
37107
37108 return jsf;
37109 }
37110 utils.getJSF = getJSF;
37111
37112 function cachedProperty(obj, name, computer) {
37113 var key = '_' + name;
37114 obj.prototype[name] = function cachedProperty() {
37115 return this[key] !== undefined ? this[key] :
37116 this[key] = computer.call(this);
37117 };
37118 }
37119 utils.cachedProperty = cachedProperty;
37120
37121 function parseBytes(bytes) {
37122 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
37123 bytes;
37124 }
37125 utils.parseBytes = parseBytes;
37126
37127 function intFromLE(bytes) {
37128 return new BN(bytes, 'hex', 'le');
37129 }
37130 utils.intFromLE = intFromLE;
37131
37132
37133 },{"bn.js":33}],55:[function(require,module,exports){
37134 module.exports={
37135 "_args": [
37136 [
37137 {
37138 "raw": "elliptic@^6.2.3",
37139 "scope": null,
37140 "escapedName": "elliptic",
37141 "name": "elliptic",
37142 "rawSpec": "^6.2.3",
37143 "spec": ">=6.2.3 <7.0.0",
37144 "type": "range"
37145 },
37146 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
37147 ]
37148 ],
37149 "_from": "elliptic@>=6.2.3 <7.0.0",
37150 "_id": "elliptic@6.3.3",
37151 "_inCache": true,
37152 "_location": "/elliptic",
37153 "_nodeVersion": "7.0.0",
37154 "_npmOperationalInternal": {
37155 "host": "packages-18-east.internal.npmjs.com",
37156 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
37157 },
37158 "_npmUser": {
37159 "name": "indutny",
37160 "email": "fedor@indutny.com"
37161 },
37162 "_npmVersion": "3.10.8",
37163 "_phantomChildren": {},
37164 "_requested": {
37165 "raw": "elliptic@^6.2.3",
37166 "scope": null,
37167 "escapedName": "elliptic",
37168 "name": "elliptic",
37169 "rawSpec": "^6.2.3",
37170 "spec": ">=6.2.3 <7.0.0",
37171 "type": "range"
37172 },
37173 "_requiredBy": [
37174 "/browserify-sign",
37175 "/create-ecdh",
37176 "/secp256k1"
37177 ],
37178 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
37179 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37180 "_shrinkwrap": null,
37181 "_spec": "elliptic@^6.2.3",
37182 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
37183 "author": {
37184 "name": "Fedor Indutny",
37185 "email": "fedor@indutny.com"
37186 },
37187 "bugs": {
37188 "url": "https://github.com/indutny/elliptic/issues"
37189 },
37190 "dependencies": {
37191 "bn.js": "^4.4.0",
37192 "brorand": "^1.0.1",
37193 "hash.js": "^1.0.0",
37194 "inherits": "^2.0.1"
37195 },
37196 "description": "EC cryptography",
37197 "devDependencies": {
37198 "brfs": "^1.4.3",
37199 "coveralls": "^2.11.3",
37200 "grunt": "^0.4.5",
37201 "grunt-browserify": "^5.0.0",
37202 "grunt-cli": "^1.2.0",
37203 "grunt-contrib-connect": "^1.0.0",
37204 "grunt-contrib-copy": "^1.0.0",
37205 "grunt-contrib-uglify": "^1.0.1",
37206 "grunt-mocha-istanbul": "^3.0.1",
37207 "grunt-saucelabs": "^8.6.2",
37208 "istanbul": "^0.4.2",
37209 "jscs": "^2.9.0",
37210 "jshint": "^2.6.0",
37211 "mocha": "^2.1.0"
37212 },
37213 "directories": {},
37214 "dist": {
37215 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37216 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
37217 },
37218 "files": [
37219 "lib"
37220 ],
37221 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
37222 "homepage": "https://github.com/indutny/elliptic",
37223 "keywords": [
37224 "EC",
37225 "Elliptic",
37226 "curve",
37227 "Cryptography"
37228 ],
37229 "license": "MIT",
37230 "main": "lib/elliptic.js",
37231 "maintainers": [
37232 {
37233 "name": "indutny",
37234 "email": "fedor@indutny.com"
37235 }
37236 ],
37237 "name": "elliptic",
37238 "optionalDependencies": {},
37239 "readme": "ERROR: No README data found!",
37240 "repository": {
37241 "type": "git",
37242 "url": "git+ssh://git@github.com/indutny/elliptic.git"
37243 },
37244 "scripts": {
37245 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37246 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37247 "lint": "npm run jscs && npm run jshint",
37248 "test": "npm run lint && npm run unit",
37249 "unit": "istanbul test _mocha --reporter=spec test/index.js",
37250 "version": "grunt dist && git add dist/"
37251 },
37252 "version": "6.3.3"
37253 }
37254
37255 },{}],56:[function(require,module,exports){
37256 (function (Buffer){
37257 'use strict';
37258
37259 var isHexPrefixed = require('is-hex-prefixed');
37260 var stripHexPrefix = require('strip-hex-prefix');
37261
37262 /**
37263 * Pads a `String` to have an even length
37264 * @param {String} value
37265 * @return {String} output
37266 */
37267 function padToEven(value) {
37268 var a = value; // eslint-disable-line
37269
37270 if (typeof a !== 'string') {
37271 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
37272 }
37273
37274 if (a.length % 2) {
37275 a = '0' + a;
37276 }
37277
37278 return a;
37279 }
37280
37281 /**
37282 * Converts a `Number` into a hex `String`
37283 * @param {Number} i
37284 * @return {String}
37285 */
37286 function intToHex(i) {
37287 var hex = i.toString(16); // eslint-disable-line
37288
37289 return '0x' + padToEven(hex);
37290 }
37291
37292 /**
37293 * Converts an `Number` to a `Buffer`
37294 * @param {Number} i
37295 * @return {Buffer}
37296 */
37297 function intToBuffer(i) {
37298 var hex = intToHex(i);
37299
37300 return new Buffer(hex.slice(2), 'hex');
37301 }
37302
37303 /**
37304 * Get the binary size of a string
37305 * @param {String} str
37306 * @return {Number}
37307 */
37308 function getBinarySize(str) {
37309 if (typeof str !== 'string') {
37310 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
37311 }
37312
37313 return Buffer.byteLength(str, 'utf8');
37314 }
37315
37316 /**
37317 * Returns TRUE if the first specified array contains all elements
37318 * from the second one. FALSE otherwise.
37319 *
37320 * @param {array} superset
37321 * @param {array} subset
37322 *
37323 * @returns {boolean}
37324 */
37325 function arrayContainsArray(superset, subset, some) {
37326 if (Array.isArray(superset) !== true) {
37327 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
37328 }
37329 if (Array.isArray(subset) !== true) {
37330 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
37331 }
37332
37333 return subset[Boolean(some) && 'some' || 'every'](function (value) {
37334 return superset.indexOf(value) >= 0;
37335 });
37336 }
37337
37338 /**
37339 * Should be called to get utf8 from it's hex representation
37340 *
37341 * @method toUtf8
37342 * @param {String} string in hex
37343 * @returns {String} ascii string representation of hex value
37344 */
37345 function toUtf8(hex) {
37346 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
37347
37348 return bufferValue.toString('utf8');
37349 }
37350
37351 /**
37352 * Should be called to get ascii from it's hex representation
37353 *
37354 * @method toAscii
37355 * @param {String} string in hex
37356 * @returns {String} ascii string representation of hex value
37357 */
37358 function toAscii(hex) {
37359 var str = ''; // eslint-disable-line
37360 var i = 0,
37361 l = hex.length; // eslint-disable-line
37362
37363 if (hex.substring(0, 2) === '0x') {
37364 i = 2;
37365 }
37366
37367 for (; i < l; i += 2) {
37368 var code = parseInt(hex.substr(i, 2), 16);
37369 str += String.fromCharCode(code);
37370 }
37371
37372 return str;
37373 }
37374
37375 /**
37376 * Should be called to get hex representation (prefixed by 0x) of utf8 string
37377 *
37378 * @method fromUtf8
37379 * @param {String} string
37380 * @param {Number} optional padding
37381 * @returns {String} hex representation of input string
37382 */
37383 function fromUtf8(stringValue) {
37384 var str = new Buffer(stringValue, 'utf8');
37385
37386 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
37387 }
37388
37389 /**
37390 * Should be called to get hex representation (prefixed by 0x) of ascii string
37391 *
37392 * @method fromAscii
37393 * @param {String} string
37394 * @param {Number} optional padding
37395 * @returns {String} hex representation of input string
37396 */
37397 function fromAscii(stringValue) {
37398 var hex = ''; // eslint-disable-line
37399 for (var i = 0; i < stringValue.length; i++) {
37400 // eslint-disable-line
37401 var code = stringValue.charCodeAt(i);
37402 var n = code.toString(16);
37403 hex += n.length < 2 ? '0' + n : n;
37404 }
37405
37406 return '0x' + hex;
37407 }
37408
37409 /**
37410 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
37411 *
37412 * @method getKeys get specific key from inner object array of objects
37413 * @param {String} params
37414 * @param {String} key
37415 * @param {Boolean} allowEmpty
37416 * @returns {Array} output just a simple array of output keys
37417 */
37418 function getKeys(params, key, allowEmpty) {
37419 if (!Array.isArray(params)) {
37420 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
37421 }
37422 if (typeof key !== 'string') {
37423 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
37424 }
37425
37426 var result = []; // eslint-disable-line
37427
37428 for (var i = 0; i < params.length; i++) {
37429 // eslint-disable-line
37430 var value = params[i][key]; // eslint-disable-line
37431 if (allowEmpty && !value) {
37432 value = '';
37433 } else if (typeof value !== 'string') {
37434 throw new Error('invalid abi');
37435 }
37436 result.push(value);
37437 }
37438
37439 return result;
37440 }
37441
37442 /**
37443 * Is the string a hex string.
37444 *
37445 * @method check if string is hex string of specific length
37446 * @param {String} value
37447 * @param {Number} length
37448 * @returns {Boolean} output the string is a hex string
37449 */
37450 function isHexString(value, length) {
37451 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
37452 return false;
37453 }
37454
37455 if (length && value.length !== 2 + 2 * length) {
37456 return false;
37457 }
37458
37459 return true;
37460 }
37461
37462 module.exports = {
37463 arrayContainsArray: arrayContainsArray,
37464 intToBuffer: intToBuffer,
37465 getBinarySize: getBinarySize,
37466 isHexPrefixed: isHexPrefixed,
37467 stripHexPrefix: stripHexPrefix,
37468 padToEven: padToEven,
37469 intToHex: intToHex,
37470 fromAscii: fromAscii,
37471 fromUtf8: fromUtf8,
37472 toAscii: toAscii,
37473 toUtf8: toUtf8,
37474 getKeys: getKeys,
37475 isHexString: isHexString
37476 };
37477 }).call(this,require("buffer").Buffer)
37478 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
37479 var hash = exports;
37480
37481 hash.utils = require('./hash/utils');
37482 hash.common = require('./hash/common');
37483 hash.sha = require('./hash/sha');
37484 hash.ripemd = require('./hash/ripemd');
37485 hash.hmac = require('./hash/hmac');
37486
37487 // Proxy hash functions to the main object
37488 hash.sha1 = hash.sha.sha1;
37489 hash.sha256 = hash.sha.sha256;
37490 hash.sha224 = hash.sha.sha224;
37491 hash.sha384 = hash.sha.sha384;
37492 hash.sha512 = hash.sha.sha512;
37493 hash.ripemd160 = hash.ripemd.ripemd160;
37494
37495 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
37496 var hash = require('../hash');
37497 var utils = hash.utils;
37498 var assert = utils.assert;
37499
37500 function BlockHash() {
37501 this.pending = null;
37502 this.pendingTotal = 0;
37503 this.blockSize = this.constructor.blockSize;
37504 this.outSize = this.constructor.outSize;
37505 this.hmacStrength = this.constructor.hmacStrength;
37506 this.padLength = this.constructor.padLength / 8;
37507 this.endian = 'big';
37508
37509 this._delta8 = this.blockSize / 8;
37510 this._delta32 = this.blockSize / 32;
37511 }
37512 exports.BlockHash = BlockHash;
37513
37514 BlockHash.prototype.update = function update(msg, enc) {
37515 // Convert message to array, pad it, and join into 32bit blocks
37516 msg = utils.toArray(msg, enc);
37517 if (!this.pending)
37518 this.pending = msg;
37519 else
37520 this.pending = this.pending.concat(msg);
37521 this.pendingTotal += msg.length;
37522
37523 // Enough data, try updating
37524 if (this.pending.length >= this._delta8) {
37525 msg = this.pending;
37526
37527 // Process pending data in blocks
37528 var r = msg.length % this._delta8;
37529 this.pending = msg.slice(msg.length - r, msg.length);
37530 if (this.pending.length === 0)
37531 this.pending = null;
37532
37533 msg = utils.join32(msg, 0, msg.length - r, this.endian);
37534 for (var i = 0; i < msg.length; i += this._delta32)
37535 this._update(msg, i, i + this._delta32);
37536 }
37537
37538 return this;
37539 };
37540
37541 BlockHash.prototype.digest = function digest(enc) {
37542 this.update(this._pad());
37543 assert(this.pending === null);
37544
37545 return this._digest(enc);
37546 };
37547
37548 BlockHash.prototype._pad = function pad() {
37549 var len = this.pendingTotal;
37550 var bytes = this._delta8;
37551 var k = bytes - ((len + this.padLength) % bytes);
37552 var res = new Array(k + this.padLength);
37553 res[0] = 0x80;
37554 for (var i = 1; i < k; i++)
37555 res[i] = 0;
37556
37557 // Append length
37558 len <<= 3;
37559 if (this.endian === 'big') {
37560 for (var t = 8; t < this.padLength; t++)
37561 res[i++] = 0;
37562
37563 res[i++] = 0;
37564 res[i++] = 0;
37565 res[i++] = 0;
37566 res[i++] = 0;
37567 res[i++] = (len >>> 24) & 0xff;
37568 res[i++] = (len >>> 16) & 0xff;
37569 res[i++] = (len >>> 8) & 0xff;
37570 res[i++] = len & 0xff;
37571 } else {
37572 res[i++] = len & 0xff;
37573 res[i++] = (len >>> 8) & 0xff;
37574 res[i++] = (len >>> 16) & 0xff;
37575 res[i++] = (len >>> 24) & 0xff;
37576 res[i++] = 0;
37577 res[i++] = 0;
37578 res[i++] = 0;
37579 res[i++] = 0;
37580
37581 for (var t = 8; t < this.padLength; t++)
37582 res[i++] = 0;
37583 }
37584
37585 return res;
37586 };
37587
37588 },{"../hash":57}],59:[function(require,module,exports){
37589 var hmac = exports;
37590
37591 var hash = require('../hash');
37592 var utils = hash.utils;
37593 var assert = utils.assert;
37594
37595 function Hmac(hash, key, enc) {
37596 if (!(this instanceof Hmac))
37597 return new Hmac(hash, key, enc);
37598 this.Hash = hash;
37599 this.blockSize = hash.blockSize / 8;
37600 this.outSize = hash.outSize / 8;
37601 this.inner = null;
37602 this.outer = null;
37603
37604 this._init(utils.toArray(key, enc));
37605 }
37606 module.exports = Hmac;
37607
37608 Hmac.prototype._init = function init(key) {
37609 // Shorten key, if needed
37610 if (key.length > this.blockSize)
37611 key = new this.Hash().update(key).digest();
37612 assert(key.length <= this.blockSize);
37613
37614 // Add padding to key
37615 for (var i = key.length; i < this.blockSize; i++)
37616 key.push(0);
37617
37618 for (var i = 0; i < key.length; i++)
37619 key[i] ^= 0x36;
37620 this.inner = new this.Hash().update(key);
37621
37622 // 0x36 ^ 0x5c = 0x6a
37623 for (var i = 0; i < key.length; i++)
37624 key[i] ^= 0x6a;
37625 this.outer = new this.Hash().update(key);
37626 };
37627
37628 Hmac.prototype.update = function update(msg, enc) {
37629 this.inner.update(msg, enc);
37630 return this;
37631 };
37632
37633 Hmac.prototype.digest = function digest(enc) {
37634 this.outer.update(this.inner.digest());
37635 return this.outer.digest(enc);
37636 };
37637
37638 },{"../hash":57}],60:[function(require,module,exports){
37639 var hash = require('../hash');
37640 var utils = hash.utils;
37641
37642 var rotl32 = utils.rotl32;
37643 var sum32 = utils.sum32;
37644 var sum32_3 = utils.sum32_3;
37645 var sum32_4 = utils.sum32_4;
37646 var BlockHash = hash.common.BlockHash;
37647
37648 function RIPEMD160() {
37649 if (!(this instanceof RIPEMD160))
37650 return new RIPEMD160();
37651
37652 BlockHash.call(this);
37653
37654 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
37655 this.endian = 'little';
37656 }
37657 utils.inherits(RIPEMD160, BlockHash);
37658 exports.ripemd160 = RIPEMD160;
37659
37660 RIPEMD160.blockSize = 512;
37661 RIPEMD160.outSize = 160;
37662 RIPEMD160.hmacStrength = 192;
37663 RIPEMD160.padLength = 64;
37664
37665 RIPEMD160.prototype._update = function update(msg, start) {
37666 var A = this.h[0];
37667 var B = this.h[1];
37668 var C = this.h[2];
37669 var D = this.h[3];
37670 var E = this.h[4];
37671 var Ah = A;
37672 var Bh = B;
37673 var Ch = C;
37674 var Dh = D;
37675 var Eh = E;
37676 for (var j = 0; j < 80; j++) {
37677 var T = sum32(
37678 rotl32(
37679 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
37680 s[j]),
37681 E);
37682 A = E;
37683 E = D;
37684 D = rotl32(C, 10);
37685 C = B;
37686 B = T;
37687 T = sum32(
37688 rotl32(
37689 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
37690 sh[j]),
37691 Eh);
37692 Ah = Eh;
37693 Eh = Dh;
37694 Dh = rotl32(Ch, 10);
37695 Ch = Bh;
37696 Bh = T;
37697 }
37698 T = sum32_3(this.h[1], C, Dh);
37699 this.h[1] = sum32_3(this.h[2], D, Eh);
37700 this.h[2] = sum32_3(this.h[3], E, Ah);
37701 this.h[3] = sum32_3(this.h[4], A, Bh);
37702 this.h[4] = sum32_3(this.h[0], B, Ch);
37703 this.h[0] = T;
37704 };
37705
37706 RIPEMD160.prototype._digest = function digest(enc) {
37707 if (enc === 'hex')
37708 return utils.toHex32(this.h, 'little');
37709 else
37710 return utils.split32(this.h, 'little');
37711 };
37712
37713 function f(j, x, y, z) {
37714 if (j <= 15)
37715 return x ^ y ^ z;
37716 else if (j <= 31)
37717 return (x & y) | ((~x) & z);
37718 else if (j <= 47)
37719 return (x | (~y)) ^ z;
37720 else if (j <= 63)
37721 return (x & z) | (y & (~z));
37722 else
37723 return x ^ (y | (~z));
37724 }
37725
37726 function K(j) {
37727 if (j <= 15)
37728 return 0x00000000;
37729 else if (j <= 31)
37730 return 0x5a827999;
37731 else if (j <= 47)
37732 return 0x6ed9eba1;
37733 else if (j <= 63)
37734 return 0x8f1bbcdc;
37735 else
37736 return 0xa953fd4e;
37737 }
37738
37739 function Kh(j) {
37740 if (j <= 15)
37741 return 0x50a28be6;
37742 else if (j <= 31)
37743 return 0x5c4dd124;
37744 else if (j <= 47)
37745 return 0x6d703ef3;
37746 else if (j <= 63)
37747 return 0x7a6d76e9;
37748 else
37749 return 0x00000000;
37750 }
37751
37752 var r = [
37753 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
37754 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
37755 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
37756 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
37757 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
37758 ];
37759
37760 var rh = [
37761 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
37762 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
37763 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
37764 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
37765 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
37766 ];
37767
37768 var s = [
37769 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
37770 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
37771 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
37772 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
37773 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
37774 ];
37775
37776 var sh = [
37777 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
37778 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
37779 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
37780 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
37781 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
37782 ];
37783
37784 },{"../hash":57}],61:[function(require,module,exports){
37785 var hash = require('../hash');
37786 var utils = hash.utils;
37787 var assert = utils.assert;
37788
37789 var rotr32 = utils.rotr32;
37790 var rotl32 = utils.rotl32;
37791 var sum32 = utils.sum32;
37792 var sum32_4 = utils.sum32_4;
37793 var sum32_5 = utils.sum32_5;
37794 var rotr64_hi = utils.rotr64_hi;
37795 var rotr64_lo = utils.rotr64_lo;
37796 var shr64_hi = utils.shr64_hi;
37797 var shr64_lo = utils.shr64_lo;
37798 var sum64 = utils.sum64;
37799 var sum64_hi = utils.sum64_hi;
37800 var sum64_lo = utils.sum64_lo;
37801 var sum64_4_hi = utils.sum64_4_hi;
37802 var sum64_4_lo = utils.sum64_4_lo;
37803 var sum64_5_hi = utils.sum64_5_hi;
37804 var sum64_5_lo = utils.sum64_5_lo;
37805 var BlockHash = hash.common.BlockHash;
37806
37807 var sha256_K = [
37808 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
37809 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37810 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
37811 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37812 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
37813 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37814 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
37815 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37816 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
37817 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37818 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
37819 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37820 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
37821 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37822 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
37823 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
37824 ];
37825
37826 var sha512_K = [
37827 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
37828 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37829 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
37830 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37831 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
37832 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37833 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
37834 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37835 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
37836 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37837 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
37838 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37839 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
37840 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37841 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
37842 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37843 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
37844 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37845 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
37846 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37847 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
37848 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37849 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
37850 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37851 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
37852 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37853 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
37854 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37855 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
37856 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37857 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
37858 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37859 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
37860 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37861 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
37862 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37863 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
37864 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37865 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
37866 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
37867 ];
37868
37869 var sha1_K = [
37870 0x5A827999, 0x6ED9EBA1,
37871 0x8F1BBCDC, 0xCA62C1D6
37872 ];
37873
37874 function SHA256() {
37875 if (!(this instanceof SHA256))
37876 return new SHA256();
37877
37878 BlockHash.call(this);
37879 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
37880 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
37881 this.k = sha256_K;
37882 this.W = new Array(64);
37883 }
37884 utils.inherits(SHA256, BlockHash);
37885 exports.sha256 = SHA256;
37886
37887 SHA256.blockSize = 512;
37888 SHA256.outSize = 256;
37889 SHA256.hmacStrength = 192;
37890 SHA256.padLength = 64;
37891
37892 SHA256.prototype._update = function _update(msg, start) {
37893 var W = this.W;
37894
37895 for (var i = 0; i < 16; i++)
37896 W[i] = msg[start + i];
37897 for (; i < W.length; i++)
37898 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
37899
37900 var a = this.h[0];
37901 var b = this.h[1];
37902 var c = this.h[2];
37903 var d = this.h[3];
37904 var e = this.h[4];
37905 var f = this.h[5];
37906 var g = this.h[6];
37907 var h = this.h[7];
37908
37909 assert(this.k.length === W.length);
37910 for (var i = 0; i < W.length; i++) {
37911 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
37912 var T2 = sum32(s0_256(a), maj32(a, b, c));
37913 h = g;
37914 g = f;
37915 f = e;
37916 e = sum32(d, T1);
37917 d = c;
37918 c = b;
37919 b = a;
37920 a = sum32(T1, T2);
37921 }
37922
37923 this.h[0] = sum32(this.h[0], a);
37924 this.h[1] = sum32(this.h[1], b);
37925 this.h[2] = sum32(this.h[2], c);
37926 this.h[3] = sum32(this.h[3], d);
37927 this.h[4] = sum32(this.h[4], e);
37928 this.h[5] = sum32(this.h[5], f);
37929 this.h[6] = sum32(this.h[6], g);
37930 this.h[7] = sum32(this.h[7], h);
37931 };
37932
37933 SHA256.prototype._digest = function digest(enc) {
37934 if (enc === 'hex')
37935 return utils.toHex32(this.h, 'big');
37936 else
37937 return utils.split32(this.h, 'big');
37938 };
37939
37940 function SHA224() {
37941 if (!(this instanceof SHA224))
37942 return new SHA224();
37943
37944 SHA256.call(this);
37945 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
37946 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
37947 }
37948 utils.inherits(SHA224, SHA256);
37949 exports.sha224 = SHA224;
37950
37951 SHA224.blockSize = 512;
37952 SHA224.outSize = 224;
37953 SHA224.hmacStrength = 192;
37954 SHA224.padLength = 64;
37955
37956 SHA224.prototype._digest = function digest(enc) {
37957 // Just truncate output
37958 if (enc === 'hex')
37959 return utils.toHex32(this.h.slice(0, 7), 'big');
37960 else
37961 return utils.split32(this.h.slice(0, 7), 'big');
37962 };
37963
37964 function SHA512() {
37965 if (!(this instanceof SHA512))
37966 return new SHA512();
37967
37968 BlockHash.call(this);
37969 this.h = [ 0x6a09e667, 0xf3bcc908,
37970 0xbb67ae85, 0x84caa73b,
37971 0x3c6ef372, 0xfe94f82b,
37972 0xa54ff53a, 0x5f1d36f1,
37973 0x510e527f, 0xade682d1,
37974 0x9b05688c, 0x2b3e6c1f,
37975 0x1f83d9ab, 0xfb41bd6b,
37976 0x5be0cd19, 0x137e2179 ];
37977 this.k = sha512_K;
37978 this.W = new Array(160);
37979 }
37980 utils.inherits(SHA512, BlockHash);
37981 exports.sha512 = SHA512;
37982
37983 SHA512.blockSize = 1024;
37984 SHA512.outSize = 512;
37985 SHA512.hmacStrength = 192;
37986 SHA512.padLength = 128;
37987
37988 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
37989 var W = this.W;
37990
37991 // 32 x 32bit words
37992 for (var i = 0; i < 32; i++)
37993 W[i] = msg[start + i];
37994 for (; i < W.length; i += 2) {
37995 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
37996 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
37997 var c1_hi = W[i - 14]; // i - 7
37998 var c1_lo = W[i - 13];
37999 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
38000 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
38001 var c3_hi = W[i - 32]; // i - 16
38002 var c3_lo = W[i - 31];
38003
38004 W[i] = sum64_4_hi(c0_hi, c0_lo,
38005 c1_hi, c1_lo,
38006 c2_hi, c2_lo,
38007 c3_hi, c3_lo);
38008 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
38009 c1_hi, c1_lo,
38010 c2_hi, c2_lo,
38011 c3_hi, c3_lo);
38012 }
38013 };
38014
38015 SHA512.prototype._update = function _update(msg, start) {
38016 this._prepareBlock(msg, start);
38017
38018 var W = this.W;
38019
38020 var ah = this.h[0];
38021 var al = this.h[1];
38022 var bh = this.h[2];
38023 var bl = this.h[3];
38024 var ch = this.h[4];
38025 var cl = this.h[5];
38026 var dh = this.h[6];
38027 var dl = this.h[7];
38028 var eh = this.h[8];
38029 var el = this.h[9];
38030 var fh = this.h[10];
38031 var fl = this.h[11];
38032 var gh = this.h[12];
38033 var gl = this.h[13];
38034 var hh = this.h[14];
38035 var hl = this.h[15];
38036
38037 assert(this.k.length === W.length);
38038 for (var i = 0; i < W.length; i += 2) {
38039 var c0_hi = hh;
38040 var c0_lo = hl;
38041 var c1_hi = s1_512_hi(eh, el);
38042 var c1_lo = s1_512_lo(eh, el);
38043 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
38044 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
38045 var c3_hi = this.k[i];
38046 var c3_lo = this.k[i + 1];
38047 var c4_hi = W[i];
38048 var c4_lo = W[i + 1];
38049
38050 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
38051 c1_hi, c1_lo,
38052 c2_hi, c2_lo,
38053 c3_hi, c3_lo,
38054 c4_hi, c4_lo);
38055 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
38056 c1_hi, c1_lo,
38057 c2_hi, c2_lo,
38058 c3_hi, c3_lo,
38059 c4_hi, c4_lo);
38060
38061 var c0_hi = s0_512_hi(ah, al);
38062 var c0_lo = s0_512_lo(ah, al);
38063 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
38064 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
38065
38066 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
38067 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
38068
38069 hh = gh;
38070 hl = gl;
38071
38072 gh = fh;
38073 gl = fl;
38074
38075 fh = eh;
38076 fl = el;
38077
38078 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
38079 el = sum64_lo(dl, dl, T1_hi, T1_lo);
38080
38081 dh = ch;
38082 dl = cl;
38083
38084 ch = bh;
38085 cl = bl;
38086
38087 bh = ah;
38088 bl = al;
38089
38090 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
38091 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
38092 }
38093
38094 sum64(this.h, 0, ah, al);
38095 sum64(this.h, 2, bh, bl);
38096 sum64(this.h, 4, ch, cl);
38097 sum64(this.h, 6, dh, dl);
38098 sum64(this.h, 8, eh, el);
38099 sum64(this.h, 10, fh, fl);
38100 sum64(this.h, 12, gh, gl);
38101 sum64(this.h, 14, hh, hl);
38102 };
38103
38104 SHA512.prototype._digest = function digest(enc) {
38105 if (enc === 'hex')
38106 return utils.toHex32(this.h, 'big');
38107 else
38108 return utils.split32(this.h, 'big');
38109 };
38110
38111 function SHA384() {
38112 if (!(this instanceof SHA384))
38113 return new SHA384();
38114
38115 SHA512.call(this);
38116 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
38117 0x629a292a, 0x367cd507,
38118 0x9159015a, 0x3070dd17,
38119 0x152fecd8, 0xf70e5939,
38120 0x67332667, 0xffc00b31,
38121 0x8eb44a87, 0x68581511,
38122 0xdb0c2e0d, 0x64f98fa7,
38123 0x47b5481d, 0xbefa4fa4 ];
38124 }
38125 utils.inherits(SHA384, SHA512);
38126 exports.sha384 = SHA384;
38127
38128 SHA384.blockSize = 1024;
38129 SHA384.outSize = 384;
38130 SHA384.hmacStrength = 192;
38131 SHA384.padLength = 128;
38132
38133 SHA384.prototype._digest = function digest(enc) {
38134 if (enc === 'hex')
38135 return utils.toHex32(this.h.slice(0, 12), 'big');
38136 else
38137 return utils.split32(this.h.slice(0, 12), 'big');
38138 };
38139
38140 function SHA1() {
38141 if (!(this instanceof SHA1))
38142 return new SHA1();
38143
38144 BlockHash.call(this);
38145 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
38146 0x10325476, 0xc3d2e1f0 ];
38147 this.W = new Array(80);
38148 }
38149
38150 utils.inherits(SHA1, BlockHash);
38151 exports.sha1 = SHA1;
38152
38153 SHA1.blockSize = 512;
38154 SHA1.outSize = 160;
38155 SHA1.hmacStrength = 80;
38156 SHA1.padLength = 64;
38157
38158 SHA1.prototype._update = function _update(msg, start) {
38159 var W = this.W;
38160
38161 for (var i = 0; i < 16; i++)
38162 W[i] = msg[start + i];
38163
38164 for(; i < W.length; i++)
38165 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
38166
38167 var a = this.h[0];
38168 var b = this.h[1];
38169 var c = this.h[2];
38170 var d = this.h[3];
38171 var e = this.h[4];
38172
38173 for (var i = 0; i < W.length; i++) {
38174 var s = ~~(i / 20);
38175 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
38176 e = d;
38177 d = c;
38178 c = rotl32(b, 30);
38179 b = a;
38180 a = t;
38181 }
38182
38183 this.h[0] = sum32(this.h[0], a);
38184 this.h[1] = sum32(this.h[1], b);
38185 this.h[2] = sum32(this.h[2], c);
38186 this.h[3] = sum32(this.h[3], d);
38187 this.h[4] = sum32(this.h[4], e);
38188 };
38189
38190 SHA1.prototype._digest = function digest(enc) {
38191 if (enc === 'hex')
38192 return utils.toHex32(this.h, 'big');
38193 else
38194 return utils.split32(this.h, 'big');
38195 };
38196
38197 function ch32(x, y, z) {
38198 return (x & y) ^ ((~x) & z);
38199 }
38200
38201 function maj32(x, y, z) {
38202 return (x & y) ^ (x & z) ^ (y & z);
38203 }
38204
38205 function p32(x, y, z) {
38206 return x ^ y ^ z;
38207 }
38208
38209 function s0_256(x) {
38210 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
38211 }
38212
38213 function s1_256(x) {
38214 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
38215 }
38216
38217 function g0_256(x) {
38218 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
38219 }
38220
38221 function g1_256(x) {
38222 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
38223 }
38224
38225 function ft_1(s, x, y, z) {
38226 if (s === 0)
38227 return ch32(x, y, z);
38228 if (s === 1 || s === 3)
38229 return p32(x, y, z);
38230 if (s === 2)
38231 return maj32(x, y, z);
38232 }
38233
38234 function ch64_hi(xh, xl, yh, yl, zh, zl) {
38235 var r = (xh & yh) ^ ((~xh) & zh);
38236 if (r < 0)
38237 r += 0x100000000;
38238 return r;
38239 }
38240
38241 function ch64_lo(xh, xl, yh, yl, zh, zl) {
38242 var r = (xl & yl) ^ ((~xl) & zl);
38243 if (r < 0)
38244 r += 0x100000000;
38245 return r;
38246 }
38247
38248 function maj64_hi(xh, xl, yh, yl, zh, zl) {
38249 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
38250 if (r < 0)
38251 r += 0x100000000;
38252 return r;
38253 }
38254
38255 function maj64_lo(xh, xl, yh, yl, zh, zl) {
38256 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
38257 if (r < 0)
38258 r += 0x100000000;
38259 return r;
38260 }
38261
38262 function s0_512_hi(xh, xl) {
38263 var c0_hi = rotr64_hi(xh, xl, 28);
38264 var c1_hi = rotr64_hi(xl, xh, 2); // 34
38265 var c2_hi = rotr64_hi(xl, xh, 7); // 39
38266
38267 var r = c0_hi ^ c1_hi ^ c2_hi;
38268 if (r < 0)
38269 r += 0x100000000;
38270 return r;
38271 }
38272
38273 function s0_512_lo(xh, xl) {
38274 var c0_lo = rotr64_lo(xh, xl, 28);
38275 var c1_lo = rotr64_lo(xl, xh, 2); // 34
38276 var c2_lo = rotr64_lo(xl, xh, 7); // 39
38277
38278 var r = c0_lo ^ c1_lo ^ c2_lo;
38279 if (r < 0)
38280 r += 0x100000000;
38281 return r;
38282 }
38283
38284 function s1_512_hi(xh, xl) {
38285 var c0_hi = rotr64_hi(xh, xl, 14);
38286 var c1_hi = rotr64_hi(xh, xl, 18);
38287 var c2_hi = rotr64_hi(xl, xh, 9); // 41
38288
38289 var r = c0_hi ^ c1_hi ^ c2_hi;
38290 if (r < 0)
38291 r += 0x100000000;
38292 return r;
38293 }
38294
38295 function s1_512_lo(xh, xl) {
38296 var c0_lo = rotr64_lo(xh, xl, 14);
38297 var c1_lo = rotr64_lo(xh, xl, 18);
38298 var c2_lo = rotr64_lo(xl, xh, 9); // 41
38299
38300 var r = c0_lo ^ c1_lo ^ c2_lo;
38301 if (r < 0)
38302 r += 0x100000000;
38303 return r;
38304 }
38305
38306 function g0_512_hi(xh, xl) {
38307 var c0_hi = rotr64_hi(xh, xl, 1);
38308 var c1_hi = rotr64_hi(xh, xl, 8);
38309 var c2_hi = shr64_hi(xh, xl, 7);
38310
38311 var r = c0_hi ^ c1_hi ^ c2_hi;
38312 if (r < 0)
38313 r += 0x100000000;
38314 return r;
38315 }
38316
38317 function g0_512_lo(xh, xl) {
38318 var c0_lo = rotr64_lo(xh, xl, 1);
38319 var c1_lo = rotr64_lo(xh, xl, 8);
38320 var c2_lo = shr64_lo(xh, xl, 7);
38321
38322 var r = c0_lo ^ c1_lo ^ c2_lo;
38323 if (r < 0)
38324 r += 0x100000000;
38325 return r;
38326 }
38327
38328 function g1_512_hi(xh, xl) {
38329 var c0_hi = rotr64_hi(xh, xl, 19);
38330 var c1_hi = rotr64_hi(xl, xh, 29); // 61
38331 var c2_hi = shr64_hi(xh, xl, 6);
38332
38333 var r = c0_hi ^ c1_hi ^ c2_hi;
38334 if (r < 0)
38335 r += 0x100000000;
38336 return r;
38337 }
38338
38339 function g1_512_lo(xh, xl) {
38340 var c0_lo = rotr64_lo(xh, xl, 19);
38341 var c1_lo = rotr64_lo(xl, xh, 29); // 61
38342 var c2_lo = shr64_lo(xh, xl, 6);
38343
38344 var r = c0_lo ^ c1_lo ^ c2_lo;
38345 if (r < 0)
38346 r += 0x100000000;
38347 return r;
38348 }
38349
38350 },{"../hash":57}],62:[function(require,module,exports){
38351 var utils = exports;
38352 var inherits = require('inherits');
38353
38354 function toArray(msg, enc) {
38355 if (Array.isArray(msg))
38356 return msg.slice();
38357 if (!msg)
38358 return [];
38359 var res = [];
38360 if (typeof msg === 'string') {
38361 if (!enc) {
38362 for (var i = 0; i < msg.length; i++) {
38363 var c = msg.charCodeAt(i);
38364 var hi = c >> 8;
38365 var lo = c & 0xff;
38366 if (hi)
38367 res.push(hi, lo);
38368 else
38369 res.push(lo);
38370 }
38371 } else if (enc === 'hex') {
38372 msg = msg.replace(/[^a-z0-9]+/ig, '');
38373 if (msg.length % 2 !== 0)
38374 msg = '0' + msg;
38375 for (var i = 0; i < msg.length; i += 2)
38376 res.push(parseInt(msg[i] + msg[i + 1], 16));
38377 }
38378 } else {
38379 for (var i = 0; i < msg.length; i++)
38380 res[i] = msg[i] | 0;
38381 }
38382 return res;
38383 }
38384 utils.toArray = toArray;
38385
38386 function toHex(msg) {
38387 var res = '';
38388 for (var i = 0; i < msg.length; i++)
38389 res += zero2(msg[i].toString(16));
38390 return res;
38391 }
38392 utils.toHex = toHex;
38393
38394 function htonl(w) {
38395 var res = (w >>> 24) |
38396 ((w >>> 8) & 0xff00) |
38397 ((w << 8) & 0xff0000) |
38398 ((w & 0xff) << 24);
38399 return res >>> 0;
38400 }
38401 utils.htonl = htonl;
38402
38403 function toHex32(msg, endian) {
38404 var res = '';
38405 for (var i = 0; i < msg.length; i++) {
38406 var w = msg[i];
38407 if (endian === 'little')
38408 w = htonl(w);
38409 res += zero8(w.toString(16));
38410 }
38411 return res;
38412 }
38413 utils.toHex32 = toHex32;
38414
38415 function zero2(word) {
38416 if (word.length === 1)
38417 return '0' + word;
38418 else
38419 return word;
38420 }
38421 utils.zero2 = zero2;
38422
38423 function zero8(word) {
38424 if (word.length === 7)
38425 return '0' + word;
38426 else if (word.length === 6)
38427 return '00' + word;
38428 else if (word.length === 5)
38429 return '000' + word;
38430 else if (word.length === 4)
38431 return '0000' + word;
38432 else if (word.length === 3)
38433 return '00000' + word;
38434 else if (word.length === 2)
38435 return '000000' + word;
38436 else if (word.length === 1)
38437 return '0000000' + word;
38438 else
38439 return word;
38440 }
38441 utils.zero8 = zero8;
38442
38443 function join32(msg, start, end, endian) {
38444 var len = end - start;
38445 assert(len % 4 === 0);
38446 var res = new Array(len / 4);
38447 for (var i = 0, k = start; i < res.length; i++, k += 4) {
38448 var w;
38449 if (endian === 'big')
38450 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
38451 else
38452 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
38453 res[i] = w >>> 0;
38454 }
38455 return res;
38456 }
38457 utils.join32 = join32;
38458
38459 function split32(msg, endian) {
38460 var res = new Array(msg.length * 4);
38461 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
38462 var m = msg[i];
38463 if (endian === 'big') {
38464 res[k] = m >>> 24;
38465 res[k + 1] = (m >>> 16) & 0xff;
38466 res[k + 2] = (m >>> 8) & 0xff;
38467 res[k + 3] = m & 0xff;
38468 } else {
38469 res[k + 3] = m >>> 24;
38470 res[k + 2] = (m >>> 16) & 0xff;
38471 res[k + 1] = (m >>> 8) & 0xff;
38472 res[k] = m & 0xff;
38473 }
38474 }
38475 return res;
38476 }
38477 utils.split32 = split32;
38478
38479 function rotr32(w, b) {
38480 return (w >>> b) | (w << (32 - b));
38481 }
38482 utils.rotr32 = rotr32;
38483
38484 function rotl32(w, b) {
38485 return (w << b) | (w >>> (32 - b));
38486 }
38487 utils.rotl32 = rotl32;
38488
38489 function sum32(a, b) {
38490 return (a + b) >>> 0;
38491 }
38492 utils.sum32 = sum32;
38493
38494 function sum32_3(a, b, c) {
38495 return (a + b + c) >>> 0;
38496 }
38497 utils.sum32_3 = sum32_3;
38498
38499 function sum32_4(a, b, c, d) {
38500 return (a + b + c + d) >>> 0;
38501 }
38502 utils.sum32_4 = sum32_4;
38503
38504 function sum32_5(a, b, c, d, e) {
38505 return (a + b + c + d + e) >>> 0;
38506 }
38507 utils.sum32_5 = sum32_5;
38508
38509 function assert(cond, msg) {
38510 if (!cond)
38511 throw new Error(msg || 'Assertion failed');
38512 }
38513 utils.assert = assert;
38514
38515 utils.inherits = inherits;
38516
38517 function sum64(buf, pos, ah, al) {
38518 var bh = buf[pos];
38519 var bl = buf[pos + 1];
38520
38521 var lo = (al + bl) >>> 0;
38522 var hi = (lo < al ? 1 : 0) + ah + bh;
38523 buf[pos] = hi >>> 0;
38524 buf[pos + 1] = lo;
38525 }
38526 exports.sum64 = sum64;
38527
38528 function sum64_hi(ah, al, bh, bl) {
38529 var lo = (al + bl) >>> 0;
38530 var hi = (lo < al ? 1 : 0) + ah + bh;
38531 return hi >>> 0;
38532 };
38533 exports.sum64_hi = sum64_hi;
38534
38535 function sum64_lo(ah, al, bh, bl) {
38536 var lo = al + bl;
38537 return lo >>> 0;
38538 };
38539 exports.sum64_lo = sum64_lo;
38540
38541 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
38542 var carry = 0;
38543 var lo = al;
38544 lo = (lo + bl) >>> 0;
38545 carry += lo < al ? 1 : 0;
38546 lo = (lo + cl) >>> 0;
38547 carry += lo < cl ? 1 : 0;
38548 lo = (lo + dl) >>> 0;
38549 carry += lo < dl ? 1 : 0;
38550
38551 var hi = ah + bh + ch + dh + carry;
38552 return hi >>> 0;
38553 };
38554 exports.sum64_4_hi = sum64_4_hi;
38555
38556 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
38557 var lo = al + bl + cl + dl;
38558 return lo >>> 0;
38559 };
38560 exports.sum64_4_lo = sum64_4_lo;
38561
38562 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38563 var carry = 0;
38564 var lo = al;
38565 lo = (lo + bl) >>> 0;
38566 carry += lo < al ? 1 : 0;
38567 lo = (lo + cl) >>> 0;
38568 carry += lo < cl ? 1 : 0;
38569 lo = (lo + dl) >>> 0;
38570 carry += lo < dl ? 1 : 0;
38571 lo = (lo + el) >>> 0;
38572 carry += lo < el ? 1 : 0;
38573
38574 var hi = ah + bh + ch + dh + eh + carry;
38575 return hi >>> 0;
38576 };
38577 exports.sum64_5_hi = sum64_5_hi;
38578
38579 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38580 var lo = al + bl + cl + dl + el;
38581
38582 return lo >>> 0;
38583 };
38584 exports.sum64_5_lo = sum64_5_lo;
38585
38586 function rotr64_hi(ah, al, num) {
38587 var r = (al << (32 - num)) | (ah >>> num);
38588 return r >>> 0;
38589 };
38590 exports.rotr64_hi = rotr64_hi;
38591
38592 function rotr64_lo(ah, al, num) {
38593 var r = (ah << (32 - num)) | (al >>> num);
38594 return r >>> 0;
38595 };
38596 exports.rotr64_lo = rotr64_lo;
38597
38598 function shr64_hi(ah, al, num) {
38599 return ah >>> num;
38600 };
38601 exports.shr64_hi = shr64_hi;
38602
38603 function shr64_lo(ah, al, num) {
38604 var r = (ah << (32 - num)) | (al >>> num);
38605 return r >>> 0;
38606 };
38607 exports.shr64_lo = shr64_lo;
38608
38609 },{"inherits":63}],63:[function(require,module,exports){
38610 arguments[4][9][0].apply(exports,arguments)
38611 },{"dup":9}],64:[function(require,module,exports){
38612 /**
38613 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
38614 * @param {String} str the string input value
38615 * @return {Boolean} a boolean if it is or is not hex prefixed
38616 * @throws if the str input is not a string
38617 */
38618 module.exports = function isHexPrefixed(str) {
38619 if (typeof str !== 'string') {
38620 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
38621 }
38622
38623 return str.slice(0, 2) === '0x';
38624 }
38625
38626 },{}],65:[function(require,module,exports){
38627 'use strict'
38628 module.exports = require('./lib/api')(require('./lib/keccak'))
38629
38630 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
38631 'use strict'
38632 var createKeccak = require('./keccak')
38633 var createShake = require('./shake')
38634
38635 module.exports = function (KeccakState) {
38636 var Keccak = createKeccak(KeccakState)
38637 var Shake = createShake(KeccakState)
38638
38639 return function (algorithm, options) {
38640 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
38641 switch (hash) {
38642 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
38643 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
38644 case 'keccak384': return new Keccak(832, 768, null, 384, options)
38645 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
38646
38647 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
38648 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
38649 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
38650 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
38651
38652 case 'shake128': return new Shake(1344, 256, 0x1f, options)
38653 case 'shake256': return new Shake(1088, 512, 0x1f, options)
38654
38655 default: throw new Error('Invald algorithm: ' + algorithm)
38656 }
38657 }
38658 }
38659
38660 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
38661 (function (Buffer){
38662 'use strict'
38663 var Transform = require('stream').Transform
38664 var inherits = require('inherits')
38665
38666 module.exports = function (KeccakState) {
38667 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
38668 Transform.call(this, options)
38669
38670 this._rate = rate
38671 this._capacity = capacity
38672 this._delimitedSuffix = delimitedSuffix
38673 this._hashBitLength = hashBitLength
38674 this._options = options
38675
38676 this._state = new KeccakState()
38677 this._state.initialize(rate, capacity)
38678 this._finalized = false
38679 }
38680
38681 inherits(Keccak, Transform)
38682
38683 Keccak.prototype._transform = function (chunk, encoding, callback) {
38684 var error = null
38685 try {
38686 this.update(chunk, encoding)
38687 } catch (err) {
38688 error = err
38689 }
38690
38691 callback(error)
38692 }
38693
38694 Keccak.prototype._flush = function (callback) {
38695 var error = null
38696 try {
38697 this.push(this.digest())
38698 } catch (err) {
38699 error = err
38700 }
38701
38702 callback(error)
38703 }
38704
38705 Keccak.prototype.update = function (data, encoding) {
38706 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38707 if (this._finalized) throw new Error('Digest already called')
38708 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38709
38710 this._state.absorb(data)
38711
38712 return this
38713 }
38714
38715 Keccak.prototype.digest = function (encoding) {
38716 if (this._finalized) throw new Error('Digest already called')
38717 this._finalized = true
38718
38719 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
38720 var digest = this._state.squeeze(this._hashBitLength / 8)
38721 if (encoding !== undefined) digest = digest.toString(encoding)
38722
38723 this._resetState()
38724
38725 return digest
38726 }
38727
38728 // remove result from memory
38729 Keccak.prototype._resetState = function () {
38730 this._state.initialize(this._rate, this._capacity)
38731 return this
38732 }
38733
38734 // because sometimes we need hash right now and little later
38735 Keccak.prototype._clone = function () {
38736 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
38737 this._state.copy(clone._state)
38738 clone._finalized = this._finalized
38739
38740 return clone
38741 }
38742
38743 return Keccak
38744 }
38745
38746 }).call(this,require("buffer").Buffer)
38747 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
38748 (function (Buffer){
38749 'use strict'
38750 var Transform = require('stream').Transform
38751 var inherits = require('inherits')
38752
38753 module.exports = function (KeccakState) {
38754 function Shake (rate, capacity, delimitedSuffix, options) {
38755 Transform.call(this, options)
38756
38757 this._rate = rate
38758 this._capacity = capacity
38759 this._delimitedSuffix = delimitedSuffix
38760 this._options = options
38761
38762 this._state = new KeccakState()
38763 this._state.initialize(rate, capacity)
38764 this._finalized = false
38765 }
38766
38767 inherits(Shake, Transform)
38768
38769 Shake.prototype._transform = function (chunk, encoding, callback) {
38770 var error = null
38771 try {
38772 this.update(chunk, encoding)
38773 } catch (err) {
38774 error = err
38775 }
38776
38777 callback(error)
38778 }
38779
38780 Shake.prototype._flush = function () {}
38781
38782 Shake.prototype._read = function (size) {
38783 this.push(this.squeeze(size))
38784 }
38785
38786 Shake.prototype.update = function (data, encoding) {
38787 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38788 if (this._finalized) throw new Error('Squeeze already called')
38789 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38790
38791 this._state.absorb(data)
38792
38793 return this
38794 }
38795
38796 Shake.prototype.squeeze = function (dataByteLength, encoding) {
38797 if (!this._finalized) {
38798 this._finalized = true
38799 this._state.absorbLastFewBits(this._delimitedSuffix)
38800 }
38801
38802 var data = this._state.squeeze(dataByteLength)
38803 if (encoding !== undefined) data = data.toString(encoding)
38804
38805 return data
38806 }
38807
38808 Shake.prototype._resetState = function () {
38809 this._state.initialize(this._rate, this._capacity)
38810 return this
38811 }
38812
38813 Shake.prototype._clone = function () {
38814 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
38815 this._state.copy(clone._state)
38816 clone._finalized = this._finalized
38817
38818 return clone
38819 }
38820
38821 return Shake
38822 }
38823
38824 }).call(this,require("buffer").Buffer)
38825 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
38826 'use strict'
38827 var P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]
38828
38829 exports.p1600 = function (s) {
38830 for (var round = 0; round < 24; ++round) {
38831 // theta
38832 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
38833 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
38834 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
38835 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
38836 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
38837 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
38838 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
38839 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
38840 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
38841 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
38842
38843 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
38844 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
38845 var t1slo0 = s[0] ^ lo
38846 var t1shi0 = s[1] ^ hi
38847 var t1slo5 = s[10] ^ lo
38848 var t1shi5 = s[11] ^ hi
38849 var t1slo10 = s[20] ^ lo
38850 var t1shi10 = s[21] ^ hi
38851 var t1slo15 = s[30] ^ lo
38852 var t1shi15 = s[31] ^ hi
38853 var t1slo20 = s[40] ^ lo
38854 var t1shi20 = s[41] ^ hi
38855 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
38856 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
38857 var t1slo1 = s[2] ^ lo
38858 var t1shi1 = s[3] ^ hi
38859 var t1slo6 = s[12] ^ lo
38860 var t1shi6 = s[13] ^ hi
38861 var t1slo11 = s[22] ^ lo
38862 var t1shi11 = s[23] ^ hi
38863 var t1slo16 = s[32] ^ lo
38864 var t1shi16 = s[33] ^ hi
38865 var t1slo21 = s[42] ^ lo
38866 var t1shi21 = s[43] ^ hi
38867 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
38868 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
38869 var t1slo2 = s[4] ^ lo
38870 var t1shi2 = s[5] ^ hi
38871 var t1slo7 = s[14] ^ lo
38872 var t1shi7 = s[15] ^ hi
38873 var t1slo12 = s[24] ^ lo
38874 var t1shi12 = s[25] ^ hi
38875 var t1slo17 = s[34] ^ lo
38876 var t1shi17 = s[35] ^ hi
38877 var t1slo22 = s[44] ^ lo
38878 var t1shi22 = s[45] ^ hi
38879 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
38880 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
38881 var t1slo3 = s[6] ^ lo
38882 var t1shi3 = s[7] ^ hi
38883 var t1slo8 = s[16] ^ lo
38884 var t1shi8 = s[17] ^ hi
38885 var t1slo13 = s[26] ^ lo
38886 var t1shi13 = s[27] ^ hi
38887 var t1slo18 = s[36] ^ lo
38888 var t1shi18 = s[37] ^ hi
38889 var t1slo23 = s[46] ^ lo
38890 var t1shi23 = s[47] ^ hi
38891 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
38892 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
38893 var t1slo4 = s[8] ^ lo
38894 var t1shi4 = s[9] ^ hi
38895 var t1slo9 = s[18] ^ lo
38896 var t1shi9 = s[19] ^ hi
38897 var t1slo14 = s[28] ^ lo
38898 var t1shi14 = s[29] ^ hi
38899 var t1slo19 = s[38] ^ lo
38900 var t1shi19 = s[39] ^ hi
38901 var t1slo24 = s[48] ^ lo
38902 var t1shi24 = s[49] ^ hi
38903
38904 // rho & pi
38905 var t2slo0 = t1slo0
38906 var t2shi0 = t1shi0
38907 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
38908 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
38909 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
38910 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
38911 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
38912 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
38913 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
38914 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
38915 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
38916 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
38917 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
38918 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
38919 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
38920 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
38921 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
38922 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
38923 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
38924 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
38925 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
38926 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
38927 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
38928 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
38929 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
38930 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
38931 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
38932 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
38933 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
38934 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
38935 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
38936 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
38937 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
38938 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
38939 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
38940 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
38941 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
38942 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
38943 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
38944 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
38945 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
38946 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
38947 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
38948 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
38949 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
38950 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
38951 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
38952 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
38953 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
38954 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
38955
38956 // chi
38957 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
38958 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
38959 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
38960 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
38961 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
38962 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
38963 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
38964 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
38965 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
38966 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
38967 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
38968 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
38969 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
38970 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
38971 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
38972 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
38973 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
38974 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
38975 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
38976 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
38977 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
38978 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
38979 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
38980 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
38981 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
38982 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
38983 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
38984 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
38985 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
38986 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
38987 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
38988 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
38989 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
38990 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
38991 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
38992 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
38993 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
38994 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
38995 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
38996 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
38997 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
38998 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
38999 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
39000 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
39001 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
39002 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
39003 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
39004 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
39005 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
39006 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
39007
39008 // iota
39009 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
39010 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
39011 }
39012 }
39013
39014 },{}],70:[function(require,module,exports){
39015 (function (Buffer){
39016 'use strict'
39017 var keccakState = require('./keccak-state-unroll')
39018
39019 function Keccak () {
39020 // much faster than `new Array(50)`
39021 this.state = [
39022 0, 0, 0, 0, 0,
39023 0, 0, 0, 0, 0,
39024 0, 0, 0, 0, 0,
39025 0, 0, 0, 0, 0,
39026 0, 0, 0, 0, 0
39027 ]
39028
39029 this.blockSize = null
39030 this.count = 0
39031 this.squeezing = false
39032 }
39033
39034 Keccak.prototype.initialize = function (rate, capacity) {
39035 for (var i = 0; i < 50; ++i) this.state[i] = 0
39036 this.blockSize = rate / 8
39037 this.count = 0
39038 this.squeezing = false
39039 }
39040
39041 Keccak.prototype.absorb = function (data) {
39042 for (var i = 0; i < data.length; ++i) {
39043 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
39044 this.count += 1
39045 if (this.count === this.blockSize) {
39046 keccakState.p1600(this.state)
39047 this.count = 0
39048 }
39049 }
39050 }
39051
39052 Keccak.prototype.absorbLastFewBits = function (bits) {
39053 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
39054 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
39055 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
39056 keccakState.p1600(this.state)
39057 this.count = 0
39058 this.squeezing = true
39059 }
39060
39061 Keccak.prototype.squeeze = function (length) {
39062 if (!this.squeezing) this.absorbLastFewBits(0x01)
39063
39064 var output = Buffer.allocUnsafe(length)
39065 for (var i = 0; i < length; ++i) {
39066 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
39067 this.count += 1
39068 if (this.count === this.blockSize) {
39069 keccakState.p1600(this.state)
39070 this.count = 0
39071 }
39072 }
39073
39074 return output
39075 }
39076
39077 Keccak.prototype.copy = function (dest) {
39078 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
39079 dest.blockSize = this.blockSize
39080 dest.count = this.count
39081 dest.squeezing = this.squeezing
39082 }
39083
39084 module.exports = Keccak
39085
39086 }).call(this,require("buffer").Buffer)
39087 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
39088 (function (Buffer){
39089 /*
39090 CryptoJS v3.1.2
39091 code.google.com/p/crypto-js
39092 (c) 2009-2013 by Jeff Mott. All rights reserved.
39093 code.google.com/p/crypto-js/wiki/License
39094 */
39095 /** @preserve
39096 (c) 2012 by Cédric Mesnil. All rights reserved.
39097
39098 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39099
39100 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
39101 - 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.
39102
39103 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.
39104 */
39105
39106 // constants table
39107 var zl = [
39108 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
39109 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
39110 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
39111 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
39112 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
39113 ]
39114
39115 var zr = [
39116 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
39117 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
39118 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
39119 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
39120 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
39121 ]
39122
39123 var sl = [
39124 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
39125 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
39126 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
39127 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
39128 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
39129 ]
39130
39131 var sr = [
39132 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
39133 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
39134 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
39135 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
39136 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
39137 ]
39138
39139 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
39140 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
39141
39142 function bytesToWords (bytes) {
39143 var words = []
39144 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
39145 words[b >>> 5] |= bytes[i] << (24 - b % 32)
39146 }
39147 return words
39148 }
39149
39150 function wordsToBytes (words) {
39151 var bytes = []
39152 for (var b = 0; b < words.length * 32; b += 8) {
39153 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
39154 }
39155 return bytes
39156 }
39157
39158 function processBlock (H, M, offset) {
39159 // swap endian
39160 for (var i = 0; i < 16; i++) {
39161 var offset_i = offset + i
39162 var M_offset_i = M[offset_i]
39163
39164 // Swap
39165 M[offset_i] = (
39166 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
39167 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
39168 )
39169 }
39170
39171 // Working variables
39172 var al, bl, cl, dl, el
39173 var ar, br, cr, dr, er
39174
39175 ar = al = H[0]
39176 br = bl = H[1]
39177 cr = cl = H[2]
39178 dr = dl = H[3]
39179 er = el = H[4]
39180
39181 // computation
39182 var t
39183 for (i = 0; i < 80; i += 1) {
39184 t = (al + M[offset + zl[i]]) | 0
39185 if (i < 16) {
39186 t += f1(bl, cl, dl) + hl[0]
39187 } else if (i < 32) {
39188 t += f2(bl, cl, dl) + hl[1]
39189 } else if (i < 48) {
39190 t += f3(bl, cl, dl) + hl[2]
39191 } else if (i < 64) {
39192 t += f4(bl, cl, dl) + hl[3]
39193 } else {// if (i<80) {
39194 t += f5(bl, cl, dl) + hl[4]
39195 }
39196 t = t | 0
39197 t = rotl(t, sl[i])
39198 t = (t + el) | 0
39199 al = el
39200 el = dl
39201 dl = rotl(cl, 10)
39202 cl = bl
39203 bl = t
39204
39205 t = (ar + M[offset + zr[i]]) | 0
39206 if (i < 16) {
39207 t += f5(br, cr, dr) + hr[0]
39208 } else if (i < 32) {
39209 t += f4(br, cr, dr) + hr[1]
39210 } else if (i < 48) {
39211 t += f3(br, cr, dr) + hr[2]
39212 } else if (i < 64) {
39213 t += f2(br, cr, dr) + hr[3]
39214 } else {// if (i<80) {
39215 t += f1(br, cr, dr) + hr[4]
39216 }
39217
39218 t = t | 0
39219 t = rotl(t, sr[i])
39220 t = (t + er) | 0
39221 ar = er
39222 er = dr
39223 dr = rotl(cr, 10)
39224 cr = br
39225 br = t
39226 }
39227
39228 // intermediate hash value
39229 t = (H[1] + cl + dr) | 0
39230 H[1] = (H[2] + dl + er) | 0
39231 H[2] = (H[3] + el + ar) | 0
39232 H[3] = (H[4] + al + br) | 0
39233 H[4] = (H[0] + bl + cr) | 0
39234 H[0] = t
39235 }
39236
39237 function f1 (x, y, z) {
39238 return ((x) ^ (y) ^ (z))
39239 }
39240
39241 function f2 (x, y, z) {
39242 return (((x) & (y)) | ((~x) & (z)))
39243 }
39244
39245 function f3 (x, y, z) {
39246 return (((x) | (~(y))) ^ (z))
39247 }
39248
39249 function f4 (x, y, z) {
39250 return (((x) & (z)) | ((y) & (~(z))))
39251 }
39252
39253 function f5 (x, y, z) {
39254 return ((x) ^ ((y) | (~(z))))
39255 }
39256
39257 function rotl (x, n) {
39258 return (x << n) | (x >>> (32 - n))
39259 }
39260
39261 function ripemd160 (message) {
39262 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
39263
39264 if (typeof message === 'string') {
39265 message = new Buffer(message, 'utf8')
39266 }
39267
39268 var m = bytesToWords(message)
39269
39270 var nBitsLeft = message.length * 8
39271 var nBitsTotal = message.length * 8
39272
39273 // Add padding
39274 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
39275 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
39276 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
39277 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
39278 )
39279
39280 for (var i = 0; i < m.length; i += 16) {
39281 processBlock(H, m, i)
39282 }
39283
39284 // swap endian
39285 for (i = 0; i < 5; i++) {
39286 // shortcut
39287 var H_i = H[i]
39288
39289 // Swap
39290 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
39291 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
39292 }
39293
39294 var digestbytes = wordsToBytes(H)
39295 return new Buffer(digestbytes)
39296 }
39297
39298 module.exports = ripemd160
39299
39300 }).call(this,require("buffer").Buffer)
39301 },{"buffer":5}],72:[function(require,module,exports){
39302 (function (Buffer){
39303 const assert = require('assert')
39304 /**
39305 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
39306 * This function takes in a data, convert it to buffer if not, and a length for recursion
39307 *
39308 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39309 * @returns {Buffer} - returns buffer of encoded data
39310 **/
39311 exports.encode = function (input) {
39312 if (input instanceof Array) {
39313 var output = []
39314 for (var i = 0; i < input.length; i++) {
39315 output.push(exports.encode(input[i]))
39316 }
39317 var buf = Buffer.concat(output)
39318 return Buffer.concat([encodeLength(buf.length, 192), buf])
39319 } else {
39320 input = toBuffer(input)
39321 if (input.length === 1 && input[0] < 128) {
39322 return input
39323 } else {
39324 return Buffer.concat([encodeLength(input.length, 128), input])
39325 }
39326 }
39327 }
39328
39329 function safeParseInt (v, base) {
39330 if (v.slice(0, 2) === '00') {
39331 throw (new Error('invalid RLP: extra zeros'))
39332 }
39333
39334 return parseInt(v, base)
39335 }
39336
39337 function encodeLength (len, offset) {
39338 if (len < 56) {
39339 return new Buffer([len + offset])
39340 } else {
39341 var hexLength = intToHex(len)
39342 var lLength = hexLength.length / 2
39343 var firstByte = intToHex(offset + 55 + lLength)
39344 return new Buffer(firstByte + hexLength, 'hex')
39345 }
39346 }
39347
39348 /**
39349 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
39350 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39351 * @returns {Array} - returns decode Array of Buffers containg the original message
39352 **/
39353 exports.decode = function (input, stream) {
39354 if (!input || input.length === 0) {
39355 return new Buffer([])
39356 }
39357
39358 input = toBuffer(input)
39359 var decoded = _decode(input)
39360
39361 if (stream) {
39362 return decoded
39363 }
39364
39365 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
39366 return decoded.data
39367 }
39368
39369 exports.getLength = function (input) {
39370 if (!input || input.length === 0) {
39371 return new Buffer([])
39372 }
39373
39374 input = toBuffer(input)
39375 var firstByte = input[0]
39376 if (firstByte <= 0x7f) {
39377 return input.length
39378 } else if (firstByte <= 0xb7) {
39379 return firstByte - 0x7f
39380 } else if (firstByte <= 0xbf) {
39381 return firstByte - 0xb6
39382 } else if (firstByte <= 0xf7) {
39383 // a list between 0-55 bytes long
39384 return firstByte - 0xbf
39385 } else {
39386 // a list over 55 bytes long
39387 var llength = firstByte - 0xf6
39388 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39389 return llength + length
39390 }
39391 }
39392
39393 function _decode (input) {
39394 var length, llength, data, innerRemainder, d
39395 var decoded = []
39396 var firstByte = input[0]
39397
39398 if (firstByte <= 0x7f) {
39399 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
39400 return {
39401 data: input.slice(0, 1),
39402 remainder: input.slice(1)
39403 }
39404 } else if (firstByte <= 0xb7) {
39405 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
39406 // The range of the first byte is [0x80, 0xb7]
39407 length = firstByte - 0x7f
39408
39409 // set 0x80 null to 0
39410 if (firstByte === 0x80) {
39411 data = new Buffer([])
39412 } else {
39413 data = input.slice(1, length)
39414 }
39415
39416 if (length === 2 && data[0] < 0x80) {
39417 throw new Error('invalid rlp encoding: byte must be less 0x80')
39418 }
39419
39420 return {
39421 data: data,
39422 remainder: input.slice(length)
39423 }
39424 } else if (firstByte <= 0xbf) {
39425 llength = firstByte - 0xb6
39426 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39427 data = input.slice(llength, length + llength)
39428 if (data.length < length) {
39429 throw (new Error('invalid RLP'))
39430 }
39431
39432 return {
39433 data: data,
39434 remainder: input.slice(length + llength)
39435 }
39436 } else if (firstByte <= 0xf7) {
39437 // a list between 0-55 bytes long
39438 length = firstByte - 0xbf
39439 innerRemainder = input.slice(1, length)
39440 while (innerRemainder.length) {
39441 d = _decode(innerRemainder)
39442 decoded.push(d.data)
39443 innerRemainder = d.remainder
39444 }
39445
39446 return {
39447 data: decoded,
39448 remainder: input.slice(length)
39449 }
39450 } else {
39451 // a list over 55 bytes long
39452 llength = firstByte - 0xf6
39453 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39454 var totalLength = llength + length
39455 if (totalLength > input.length) {
39456 throw new Error('invalid rlp: total length is larger than the data')
39457 }
39458
39459 innerRemainder = input.slice(llength, totalLength)
39460 if (innerRemainder.length === 0) {
39461 throw new Error('invalid rlp, List has a invalid length')
39462 }
39463
39464 while (innerRemainder.length) {
39465 d = _decode(innerRemainder)
39466 decoded.push(d.data)
39467 innerRemainder = d.remainder
39468 }
39469 return {
39470 data: decoded,
39471 remainder: input.slice(totalLength)
39472 }
39473 }
39474 }
39475
39476 function isHexPrefixed (str) {
39477 return str.slice(0, 2) === '0x'
39478 }
39479
39480 // Removes 0x from a given String
39481 function stripHexPrefix (str) {
39482 if (typeof str !== 'string') {
39483 return str
39484 }
39485 return isHexPrefixed(str) ? str.slice(2) : str
39486 }
39487
39488 function intToHex (i) {
39489 var hex = i.toString(16)
39490 if (hex.length % 2) {
39491 hex = '0' + hex
39492 }
39493
39494 return hex
39495 }
39496
39497 function padToEven (a) {
39498 if (a.length % 2) a = '0' + a
39499 return a
39500 }
39501
39502 function intToBuffer (i) {
39503 var hex = intToHex(i)
39504 return new Buffer(hex, 'hex')
39505 }
39506
39507 function toBuffer (v) {
39508 if (!Buffer.isBuffer(v)) {
39509 if (typeof v === 'string') {
39510 if (isHexPrefixed(v)) {
39511 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
39512 } else {
39513 v = new Buffer(v)
39514 }
39515 } else if (typeof v === 'number') {
39516 if (!v) {
39517 v = new Buffer([])
39518 } else {
39519 v = intToBuffer(v)
39520 }
39521 } else if (v === null || v === undefined) {
39522 v = new Buffer([])
39523 } else if (v.toArray) {
39524 // converts a BN to a Buffer
39525 v = new Buffer(v.toArray())
39526 } else {
39527 throw new Error('invalid type')
39528 }
39529 }
39530 return v
39531 }
39532
39533 }).call(this,require("buffer").Buffer)
39534 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
39535 'use strict'
39536 module.exports = require('./lib')(require('./lib/elliptic'))
39537
39538 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
39539 (function (Buffer){
39540 'use strict'
39541 var toString = Object.prototype.toString
39542
39543 // TypeError
39544 exports.isArray = function (value, message) {
39545 if (!Array.isArray(value)) throw TypeError(message)
39546 }
39547
39548 exports.isBoolean = function (value, message) {
39549 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
39550 }
39551
39552 exports.isBuffer = function (value, message) {
39553 if (!Buffer.isBuffer(value)) throw TypeError(message)
39554 }
39555
39556 exports.isFunction = function (value, message) {
39557 if (toString.call(value) !== '[object Function]') throw TypeError(message)
39558 }
39559
39560 exports.isNumber = function (value, message) {
39561 if (toString.call(value) !== '[object Number]') throw TypeError(message)
39562 }
39563
39564 exports.isObject = function (value, message) {
39565 if (toString.call(value) !== '[object Object]') throw TypeError(message)
39566 }
39567
39568 // RangeError
39569 exports.isBufferLength = function (buffer, length, message) {
39570 if (buffer.length !== length) throw RangeError(message)
39571 }
39572
39573 exports.isBufferLength2 = function (buffer, length1, length2, message) {
39574 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
39575 }
39576
39577 exports.isLengthGTZero = function (value, message) {
39578 if (value.length === 0) throw RangeError(message)
39579 }
39580
39581 exports.isNumberInInterval = function (number, x, y, message) {
39582 if (number <= x || number >= y) throw RangeError(message)
39583 }
39584
39585 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
39586 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
39587 (function (Buffer){
39588 'use strict'
39589 var bip66 = require('bip66')
39590
39591 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
39592 // begin
39593 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
39594 // private key
39595 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39596 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39597 // middle
39598 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39599 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39600 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39601 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39602 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39603 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39604 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39605 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39606 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
39607 // public key
39608 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39609 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39610 0x00
39611 ])
39612
39613 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
39614 // begin
39615 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
39616 // private key
39617 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39618 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39619 // middle
39620 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39621 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39622 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39623 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39624 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39625 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39626 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
39627 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
39628 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39629 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39630 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
39631 // public key
39632 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39633 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39634 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39635 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39636 0x00
39637 ])
39638
39639 var ZERO_BUFFER_32 = new Buffer([
39640 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39641 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
39642 ])
39643
39644 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
39645 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
39646 privateKey.copy(result, compressed ? 8 : 9)
39647 publicKey.copy(result, compressed ? 181 : 214)
39648 return result
39649 }
39650
39651 exports.privateKeyImport = function (privateKey) {
39652 var length = privateKey.length
39653
39654 // sequence header
39655 var index = 0
39656 if (length < index + 1 || privateKey[index] !== 0x30) return
39657 index += 1
39658
39659 // sequence length constructor
39660 if (length < index + 1 || !(privateKey[index] & 0x80)) return
39661
39662 var lenb = privateKey[index] & 0x7f
39663 index += 1
39664 if (lenb < 1 || lenb > 2) return
39665 if (length < index + lenb) return
39666
39667 // sequence length
39668 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
39669 index += lenb
39670 if (length < index + len) return
39671
39672 // sequence element 0: version number (=1)
39673 if (length < index + 3 ||
39674 privateKey[index] !== 0x02 ||
39675 privateKey[index + 1] !== 0x01 ||
39676 privateKey[index + 2] !== 0x01) {
39677 return
39678 }
39679 index += 3
39680
39681 // sequence element 1: octet string, up to 32 bytes
39682 if (length < index + 2 ||
39683 privateKey[index] !== 0x04 ||
39684 privateKey[index + 1] > 0x20 ||
39685 length < index + 2 + privateKey[index + 1]) {
39686 return
39687 }
39688
39689 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
39690 }
39691
39692 exports.signatureExport = function (sigObj) {
39693 var r = Buffer.concat([new Buffer([0]), sigObj.r])
39694 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
39695
39696 var s = Buffer.concat([new Buffer([0]), sigObj.s])
39697 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
39698
39699 return bip66.encode(r.slice(posR), s.slice(posS))
39700 }
39701
39702 exports.signatureImport = function (sig) {
39703 var r = new Buffer(ZERO_BUFFER_32)
39704 var s = new Buffer(ZERO_BUFFER_32)
39705
39706 try {
39707 var sigObj = bip66.decode(sig)
39708 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
39709 if (sigObj.r.length > 32) throw new Error('R length is too long')
39710 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
39711 if (sigObj.s.length > 32) throw new Error('S length is too long')
39712 } catch (err) {
39713 return
39714 }
39715
39716 sigObj.r.copy(r, 32 - sigObj.r.length)
39717 sigObj.s.copy(s, 32 - sigObj.s.length)
39718
39719 return { r: r, s: s }
39720 }
39721
39722 exports.signatureImportLax = function (sig) {
39723 var r = new Buffer(ZERO_BUFFER_32)
39724 var s = new Buffer(ZERO_BUFFER_32)
39725
39726 var length = sig.length
39727 var index = 0
39728
39729 // sequence tag byte
39730 if (sig[index++] !== 0x30) return
39731
39732 // sequence length byte
39733 var lenbyte = sig[index++]
39734 if (lenbyte & 0x80) {
39735 index += lenbyte - 0x80
39736 if (index > length) return
39737 }
39738
39739 // sequence tag byte for r
39740 if (sig[index++] !== 0x02) return
39741
39742 // length for r
39743 var rlen = sig[index++]
39744 if (rlen & 0x80) {
39745 lenbyte = rlen - 0x80
39746 if (index + lenbyte > length) return
39747 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39748 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
39749 }
39750 if (rlen > length - index) return
39751 var rindex = index
39752 index += rlen
39753
39754 // sequence tag byte for s
39755 if (sig[index++] !== 0x02) return
39756
39757 // length for s
39758 var slen = sig[index++]
39759 if (slen & 0x80) {
39760 lenbyte = slen - 0x80
39761 if (index + lenbyte > length) return
39762 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39763 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
39764 }
39765 if (slen > length - index) return
39766 var sindex = index
39767 index += slen
39768
39769 // ignore leading zeros in r
39770 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
39771 // copy r value
39772 if (rlen > 32) return
39773 var rvalue = sig.slice(rindex, rindex + rlen)
39774 rvalue.copy(r, 32 - rvalue.length)
39775
39776 // ignore leading zeros in s
39777 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
39778 // copy s value
39779 if (slen > 32) return
39780 var svalue = sig.slice(sindex, sindex + slen)
39781 svalue.copy(s, 32 - svalue.length)
39782
39783 return { r: r, s: s }
39784 }
39785
39786 }).call(this,require("buffer").Buffer)
39787 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
39788 (function (Buffer){
39789 'use strict'
39790 var createHash = require('create-hash')
39791 var BN = require('bn.js')
39792 var EC = require('elliptic').ec
39793
39794 var messages = require('../messages.json')
39795
39796 var ec = new EC('secp256k1')
39797 var ecparams = ec.curve
39798
39799 function loadCompressedPublicKey (first, xBuffer) {
39800 var x = new BN(xBuffer)
39801
39802 // overflow
39803 if (x.cmp(ecparams.p) >= 0) return null
39804 x = x.toRed(ecparams.red)
39805
39806 // compute corresponding Y
39807 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
39808 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
39809
39810 return ec.keyPair({ pub: { x: x, y: y } })
39811 }
39812
39813 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
39814 var x = new BN(xBuffer)
39815 var y = new BN(yBuffer)
39816
39817 // overflow
39818 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
39819
39820 x = x.toRed(ecparams.red)
39821 y = y.toRed(ecparams.red)
39822
39823 // is odd flag
39824 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
39825
39826 // x*x*x + b = y*y
39827 var x3 = x.redSqr().redIMul(x)
39828 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
39829
39830 return ec.keyPair({ pub: { x: x, y: y } })
39831 }
39832
39833 function loadPublicKey (publicKey) {
39834 var first = publicKey[0]
39835 switch (first) {
39836 case 0x02:
39837 case 0x03:
39838 if (publicKey.length !== 33) return null
39839 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
39840 case 0x04:
39841 case 0x06:
39842 case 0x07:
39843 if (publicKey.length !== 65) return null
39844 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
39845 default:
39846 return null
39847 }
39848 }
39849
39850 exports.privateKeyVerify = function (privateKey) {
39851 var bn = new BN(privateKey)
39852 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
39853 }
39854
39855 exports.privateKeyExport = function (privateKey, compressed) {
39856 var d = new BN(privateKey)
39857 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
39858
39859 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39860 }
39861
39862 exports.privateKeyTweakAdd = function (privateKey, tweak) {
39863 var bn = new BN(tweak)
39864 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39865
39866 bn.iadd(new BN(privateKey))
39867 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
39868 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
39869
39870 return bn.toArrayLike(Buffer, 'be', 32)
39871 }
39872
39873 exports.privateKeyTweakMul = function (privateKey, tweak) {
39874 var bn = new BN(tweak)
39875 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
39876
39877 bn.imul(new BN(privateKey))
39878 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
39879
39880 return bn.toArrayLike(Buffer, 'be', 32)
39881 }
39882
39883 exports.publicKeyCreate = function (privateKey, compressed) {
39884 var d = new BN(privateKey)
39885 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
39886
39887 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39888 }
39889
39890 exports.publicKeyConvert = function (publicKey, compressed) {
39891 var pair = loadPublicKey(publicKey)
39892 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39893
39894 return new Buffer(pair.getPublic(compressed, true))
39895 }
39896
39897 exports.publicKeyVerify = function (publicKey) {
39898 return loadPublicKey(publicKey) !== null
39899 }
39900
39901 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
39902 var pair = loadPublicKey(publicKey)
39903 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39904
39905 tweak = new BN(tweak)
39906 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
39907
39908 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
39909 }
39910
39911 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
39912 var pair = loadPublicKey(publicKey)
39913 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39914
39915 tweak = new BN(tweak)
39916 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
39917
39918 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
39919 }
39920
39921 exports.publicKeyCombine = function (publicKeys, compressed) {
39922 var pairs = new Array(publicKeys.length)
39923 for (var i = 0; i < publicKeys.length; ++i) {
39924 pairs[i] = loadPublicKey(publicKeys[i])
39925 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
39926 }
39927
39928 var point = pairs[0].pub
39929 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
39930 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
39931
39932 return new Buffer(point.encode(true, compressed))
39933 }
39934
39935 exports.signatureNormalize = function (signature) {
39936 var r = new BN(signature.slice(0, 32))
39937 var s = new BN(signature.slice(32, 64))
39938 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39939
39940 var result = new Buffer(signature)
39941 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
39942
39943 return result
39944 }
39945
39946 exports.signatureExport = function (signature) {
39947 var r = signature.slice(0, 32)
39948 var s = signature.slice(32, 64)
39949 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39950
39951 return { r: r, s: s }
39952 }
39953
39954 exports.signatureImport = function (sigObj) {
39955 var r = new BN(sigObj.r)
39956 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
39957
39958 var s = new BN(sigObj.s)
39959 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
39960
39961 return Buffer.concat([
39962 r.toArrayLike(Buffer, 'be', 32),
39963 s.toArrayLike(Buffer, 'be', 32)
39964 ])
39965 }
39966
39967 exports.sign = function (message, privateKey, noncefn, data) {
39968 if (typeof noncefn === 'function') {
39969 var getNonce = noncefn
39970 noncefn = function (counter) {
39971 var nonce = getNonce(message, privateKey, null, data, counter)
39972 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
39973
39974 return new BN(nonce)
39975 }
39976 }
39977
39978 var d = new BN(privateKey)
39979 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
39980
39981 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
39982 return {
39983 signature: Buffer.concat([
39984 result.r.toArrayLike(Buffer, 'be', 32),
39985 result.s.toArrayLike(Buffer, 'be', 32)
39986 ]),
39987 recovery: result.recoveryParam
39988 }
39989 }
39990
39991 exports.verify = function (message, signature, publicKey) {
39992 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
39993
39994 var sigr = new BN(sigObj.r)
39995 var sigs = new BN(sigObj.s)
39996 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39997 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
39998
39999 var pair = loadPublicKey(publicKey)
40000 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40001
40002 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
40003 }
40004
40005 exports.recover = function (message, signature, recovery, compressed) {
40006 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
40007
40008 var sigr = new BN(sigObj.r)
40009 var sigs = new BN(sigObj.s)
40010 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
40011
40012 try {
40013 if (sigr.isZero() || sigs.isZero()) throw new Error()
40014
40015 var point = ec.recoverPubKey(message, sigObj, recovery)
40016 return new Buffer(point.encode(true, compressed))
40017 } catch (err) {
40018 throw new Error(messages.ECDSA_RECOVER_FAIL)
40019 }
40020 }
40021
40022 exports.ecdh = function (publicKey, privateKey) {
40023 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
40024 return createHash('sha256').update(shared).digest()
40025 }
40026
40027 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
40028 var pair = loadPublicKey(publicKey)
40029 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
40030
40031 var scalar = new BN(privateKey)
40032 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
40033
40034 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
40035 }
40036
40037 }).call(this,require("buffer").Buffer)
40038 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
40039 'use strict'
40040 var assert = require('./assert')
40041 var der = require('./der')
40042 var messages = require('./messages.json')
40043
40044 function initCompressedValue (value, defaultValue) {
40045 if (value === undefined) return defaultValue
40046
40047 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
40048 return value
40049 }
40050
40051 module.exports = function (secp256k1) {
40052 return {
40053 privateKeyVerify: function (privateKey) {
40054 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40055 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
40056 },
40057
40058 privateKeyExport: function (privateKey, compressed) {
40059 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40060 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40061
40062 compressed = initCompressedValue(compressed, true)
40063 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
40064
40065 return der.privateKeyExport(privateKey, publicKey, compressed)
40066 },
40067
40068 privateKeyImport: function (privateKey) {
40069 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40070
40071 privateKey = der.privateKeyImport(privateKey)
40072 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
40073
40074 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
40075 },
40076
40077 privateKeyTweakAdd: function (privateKey, tweak) {
40078 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40079 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40080
40081 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40082 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40083
40084 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
40085 },
40086
40087 privateKeyTweakMul: function (privateKey, tweak) {
40088 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40089 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40090
40091 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40092 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40093
40094 return secp256k1.privateKeyTweakMul(privateKey, tweak)
40095 },
40096
40097 publicKeyCreate: function (privateKey, compressed) {
40098 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40099 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40100
40101 compressed = initCompressedValue(compressed, true)
40102
40103 return secp256k1.publicKeyCreate(privateKey, compressed)
40104 },
40105
40106 publicKeyConvert: function (publicKey, compressed) {
40107 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40108 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40109
40110 compressed = initCompressedValue(compressed, true)
40111
40112 return secp256k1.publicKeyConvert(publicKey, compressed)
40113 },
40114
40115 publicKeyVerify: function (publicKey) {
40116 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40117 return secp256k1.publicKeyVerify(publicKey)
40118 },
40119
40120 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
40121 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40122 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40123
40124 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40125 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40126
40127 compressed = initCompressedValue(compressed, true)
40128
40129 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
40130 },
40131
40132 publicKeyTweakMul: function (publicKey, tweak, compressed) {
40133 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40134 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40135
40136 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40137 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40138
40139 compressed = initCompressedValue(compressed, true)
40140
40141 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
40142 },
40143
40144 publicKeyCombine: function (publicKeys, compressed) {
40145 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
40146 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
40147 for (var i = 0; i < publicKeys.length; ++i) {
40148 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
40149 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40150 }
40151
40152 compressed = initCompressedValue(compressed, true)
40153
40154 return secp256k1.publicKeyCombine(publicKeys, compressed)
40155 },
40156
40157 signatureNormalize: function (signature) {
40158 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40159 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40160
40161 return secp256k1.signatureNormalize(signature)
40162 },
40163
40164 signatureExport: function (signature) {
40165 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40166 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40167
40168 var sigObj = secp256k1.signatureExport(signature)
40169 return der.signatureExport(sigObj)
40170 },
40171
40172 signatureImport: function (sig) {
40173 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40174 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40175
40176 var sigObj = der.signatureImport(sig)
40177 if (sigObj) return secp256k1.signatureImport(sigObj)
40178
40179 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40180 },
40181
40182 signatureImportLax: function (sig) {
40183 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40184 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40185
40186 var sigObj = der.signatureImportLax(sig)
40187 if (sigObj) return secp256k1.signatureImport(sigObj)
40188
40189 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40190 },
40191
40192 sign: function (message, privateKey, options) {
40193 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40194 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40195
40196 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40197 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40198
40199 var data = null
40200 var noncefn = null
40201 if (options !== undefined) {
40202 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
40203
40204 if (options.data !== undefined) {
40205 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
40206 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
40207 data = options.data
40208 }
40209
40210 if (options.noncefn !== undefined) {
40211 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
40212 noncefn = options.noncefn
40213 }
40214 }
40215
40216 return secp256k1.sign(message, privateKey, noncefn, data)
40217 },
40218
40219 verify: function (message, signature, publicKey) {
40220 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40221 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40222
40223 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40224 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40225
40226 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40227 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40228
40229 return secp256k1.verify(message, signature, publicKey)
40230 },
40231
40232 recover: function (message, signature, recovery, compressed) {
40233 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40234 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40235
40236 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40237 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40238
40239 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
40240 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
40241
40242 compressed = initCompressedValue(compressed, true)
40243
40244 return secp256k1.recover(message, signature, recovery, compressed)
40245 },
40246
40247 ecdh: function (publicKey, privateKey) {
40248 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40249 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40250
40251 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40252 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40253
40254 return secp256k1.ecdh(publicKey, privateKey)
40255 },
40256
40257 ecdhUnsafe: function (publicKey, privateKey, compressed) {
40258 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40259 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40260
40261 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40262 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40263
40264 compressed = initCompressedValue(compressed, true)
40265
40266 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
40267 }
40268 }
40269 }
40270
40271 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
40272 module.exports={
40273 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
40274 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
40275 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
40276 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
40277 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40278 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
40279 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
40280 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
40281 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
40282 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
40283 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
40284 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
40285 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
40286 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
40287 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40288 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
40289 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
40290 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
40291 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
40292 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
40293 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
40294 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
40295 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
40296 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
40297 "MSG32_TYPE_INVALID": "message should be a Buffer",
40298 "MSG32_LENGTH_INVALID": "message length is invalid",
40299 "OPTIONS_TYPE_INVALID": "options should be an Object",
40300 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
40301 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
40302 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
40303 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
40304 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
40305 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
40306 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
40307 }
40308
40309 },{}],79:[function(require,module,exports){
40310 (function (Buffer){
40311 // prototype class for hash functions
40312 function Hash (blockSize, finalSize) {
40313 this._block = new Buffer(blockSize)
40314 this._finalSize = finalSize
40315 this._blockSize = blockSize
40316 this._len = 0
40317 this._s = 0
40318 }
40319
40320 Hash.prototype.update = function (data, enc) {
40321 if (typeof data === 'string') {
40322 enc = enc || 'utf8'
40323 data = new Buffer(data, enc)
40324 }
40325
40326 var l = this._len += data.length
40327 var s = this._s || 0
40328 var f = 0
40329 var buffer = this._block
40330
40331 while (s < l) {
40332 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
40333 var ch = (t - f)
40334
40335 for (var i = 0; i < ch; i++) {
40336 buffer[(s % this._blockSize) + i] = data[i + f]
40337 }
40338
40339 s += ch
40340 f += ch
40341
40342 if ((s % this._blockSize) === 0) {
40343 this._update(buffer)
40344 }
40345 }
40346 this._s = s
40347
40348 return this
40349 }
40350
40351 Hash.prototype.digest = function (enc) {
40352 // Suppose the length of the message M, in bits, is l
40353 var l = this._len * 8
40354
40355 // Append the bit 1 to the end of the message
40356 this._block[this._len % this._blockSize] = 0x80
40357
40358 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
40359 this._block.fill(0, this._len % this._blockSize + 1)
40360
40361 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
40362 this._update(this._block)
40363 this._block.fill(0)
40364 }
40365
40366 // to this append the block which is equal to the number l written in binary
40367 // TODO: handle case where l is > Math.pow(2, 29)
40368 this._block.writeInt32BE(l, this._blockSize - 4)
40369
40370 var hash = this._update(this._block) || this._hash()
40371
40372 return enc ? hash.toString(enc) : hash
40373 }
40374
40375 Hash.prototype._update = function () {
40376 throw new Error('_update must be implemented by subclass')
40377 }
40378
40379 module.exports = Hash
40380
40381 }).call(this,require("buffer").Buffer)
40382 },{"buffer":5}],80:[function(require,module,exports){
40383 var exports = module.exports = function SHA (algorithm) {
40384 algorithm = algorithm.toLowerCase()
40385
40386 var Algorithm = exports[algorithm]
40387 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
40388
40389 return new Algorithm()
40390 }
40391
40392 exports.sha = require('./sha')
40393 exports.sha1 = require('./sha1')
40394 exports.sha224 = require('./sha224')
40395 exports.sha256 = require('./sha256')
40396 exports.sha384 = require('./sha384')
40397 exports.sha512 = require('./sha512')
40398
40399 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
40400 (function (Buffer){
40401 /*
40402 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
40403 * in FIPS PUB 180-1
40404 * This source code is derived from sha1.js of the same repository.
40405 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
40406 * operation was added.
40407 */
40408
40409 var inherits = require('inherits')
40410 var Hash = require('./hash')
40411
40412 var K = [
40413 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40414 ]
40415
40416 var W = new Array(80)
40417
40418 function Sha () {
40419 this.init()
40420 this._w = W
40421
40422 Hash.call(this, 64, 56)
40423 }
40424
40425 inherits(Sha, Hash)
40426
40427 Sha.prototype.init = function () {
40428 this._a = 0x67452301
40429 this._b = 0xefcdab89
40430 this._c = 0x98badcfe
40431 this._d = 0x10325476
40432 this._e = 0xc3d2e1f0
40433
40434 return this
40435 }
40436
40437 function rotl5 (num) {
40438 return (num << 5) | (num >>> 27)
40439 }
40440
40441 function rotl30 (num) {
40442 return (num << 30) | (num >>> 2)
40443 }
40444
40445 function ft (s, b, c, d) {
40446 if (s === 0) return (b & c) | ((~b) & d)
40447 if (s === 2) return (b & c) | (b & d) | (c & d)
40448 return b ^ c ^ d
40449 }
40450
40451 Sha.prototype._update = function (M) {
40452 var W = this._w
40453
40454 var a = this._a | 0
40455 var b = this._b | 0
40456 var c = this._c | 0
40457 var d = this._d | 0
40458 var e = this._e | 0
40459
40460 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40461 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
40462
40463 for (var j = 0; j < 80; ++j) {
40464 var s = ~~(j / 20)
40465 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40466
40467 e = d
40468 d = c
40469 c = rotl30(b)
40470 b = a
40471 a = t
40472 }
40473
40474 this._a = (a + this._a) | 0
40475 this._b = (b + this._b) | 0
40476 this._c = (c + this._c) | 0
40477 this._d = (d + this._d) | 0
40478 this._e = (e + this._e) | 0
40479 }
40480
40481 Sha.prototype._hash = function () {
40482 var H = new Buffer(20)
40483
40484 H.writeInt32BE(this._a | 0, 0)
40485 H.writeInt32BE(this._b | 0, 4)
40486 H.writeInt32BE(this._c | 0, 8)
40487 H.writeInt32BE(this._d | 0, 12)
40488 H.writeInt32BE(this._e | 0, 16)
40489
40490 return H
40491 }
40492
40493 module.exports = Sha
40494
40495 }).call(this,require("buffer").Buffer)
40496 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
40497 (function (Buffer){
40498 /*
40499 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
40500 * in FIPS PUB 180-1
40501 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
40502 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40503 * Distributed under the BSD License
40504 * See http://pajhome.org.uk/crypt/md5 for details.
40505 */
40506
40507 var inherits = require('inherits')
40508 var Hash = require('./hash')
40509
40510 var K = [
40511 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40512 ]
40513
40514 var W = new Array(80)
40515
40516 function Sha1 () {
40517 this.init()
40518 this._w = W
40519
40520 Hash.call(this, 64, 56)
40521 }
40522
40523 inherits(Sha1, Hash)
40524
40525 Sha1.prototype.init = function () {
40526 this._a = 0x67452301
40527 this._b = 0xefcdab89
40528 this._c = 0x98badcfe
40529 this._d = 0x10325476
40530 this._e = 0xc3d2e1f0
40531
40532 return this
40533 }
40534
40535 function rotl1 (num) {
40536 return (num << 1) | (num >>> 31)
40537 }
40538
40539 function rotl5 (num) {
40540 return (num << 5) | (num >>> 27)
40541 }
40542
40543 function rotl30 (num) {
40544 return (num << 30) | (num >>> 2)
40545 }
40546
40547 function ft (s, b, c, d) {
40548 if (s === 0) return (b & c) | ((~b) & d)
40549 if (s === 2) return (b & c) | (b & d) | (c & d)
40550 return b ^ c ^ d
40551 }
40552
40553 Sha1.prototype._update = function (M) {
40554 var W = this._w
40555
40556 var a = this._a | 0
40557 var b = this._b | 0
40558 var c = this._c | 0
40559 var d = this._d | 0
40560 var e = this._e | 0
40561
40562 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40563 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
40564
40565 for (var j = 0; j < 80; ++j) {
40566 var s = ~~(j / 20)
40567 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40568
40569 e = d
40570 d = c
40571 c = rotl30(b)
40572 b = a
40573 a = t
40574 }
40575
40576 this._a = (a + this._a) | 0
40577 this._b = (b + this._b) | 0
40578 this._c = (c + this._c) | 0
40579 this._d = (d + this._d) | 0
40580 this._e = (e + this._e) | 0
40581 }
40582
40583 Sha1.prototype._hash = function () {
40584 var H = new Buffer(20)
40585
40586 H.writeInt32BE(this._a | 0, 0)
40587 H.writeInt32BE(this._b | 0, 4)
40588 H.writeInt32BE(this._c | 0, 8)
40589 H.writeInt32BE(this._d | 0, 12)
40590 H.writeInt32BE(this._e | 0, 16)
40591
40592 return H
40593 }
40594
40595 module.exports = Sha1
40596
40597 }).call(this,require("buffer").Buffer)
40598 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
40599 (function (Buffer){
40600 /**
40601 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40602 * in FIPS 180-2
40603 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40604 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40605 *
40606 */
40607
40608 var inherits = require('inherits')
40609 var Sha256 = require('./sha256')
40610 var Hash = require('./hash')
40611
40612 var W = new Array(64)
40613
40614 function Sha224 () {
40615 this.init()
40616
40617 this._w = W // new Array(64)
40618
40619 Hash.call(this, 64, 56)
40620 }
40621
40622 inherits(Sha224, Sha256)
40623
40624 Sha224.prototype.init = function () {
40625 this._a = 0xc1059ed8
40626 this._b = 0x367cd507
40627 this._c = 0x3070dd17
40628 this._d = 0xf70e5939
40629 this._e = 0xffc00b31
40630 this._f = 0x68581511
40631 this._g = 0x64f98fa7
40632 this._h = 0xbefa4fa4
40633
40634 return this
40635 }
40636
40637 Sha224.prototype._hash = function () {
40638 var H = new Buffer(28)
40639
40640 H.writeInt32BE(this._a, 0)
40641 H.writeInt32BE(this._b, 4)
40642 H.writeInt32BE(this._c, 8)
40643 H.writeInt32BE(this._d, 12)
40644 H.writeInt32BE(this._e, 16)
40645 H.writeInt32BE(this._f, 20)
40646 H.writeInt32BE(this._g, 24)
40647
40648 return H
40649 }
40650
40651 module.exports = Sha224
40652
40653 }).call(this,require("buffer").Buffer)
40654 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
40655 (function (Buffer){
40656 /**
40657 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40658 * in FIPS 180-2
40659 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40660 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40661 *
40662 */
40663
40664 var inherits = require('inherits')
40665 var Hash = require('./hash')
40666
40667 var K = [
40668 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
40669 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
40670 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
40671 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
40672 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
40673 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
40674 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
40675 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
40676 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
40677 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
40678 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
40679 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
40680 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
40681 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
40682 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
40683 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
40684 ]
40685
40686 var W = new Array(64)
40687
40688 function Sha256 () {
40689 this.init()
40690
40691 this._w = W // new Array(64)
40692
40693 Hash.call(this, 64, 56)
40694 }
40695
40696 inherits(Sha256, Hash)
40697
40698 Sha256.prototype.init = function () {
40699 this._a = 0x6a09e667
40700 this._b = 0xbb67ae85
40701 this._c = 0x3c6ef372
40702 this._d = 0xa54ff53a
40703 this._e = 0x510e527f
40704 this._f = 0x9b05688c
40705 this._g = 0x1f83d9ab
40706 this._h = 0x5be0cd19
40707
40708 return this
40709 }
40710
40711 function ch (x, y, z) {
40712 return z ^ (x & (y ^ z))
40713 }
40714
40715 function maj (x, y, z) {
40716 return (x & y) | (z & (x | y))
40717 }
40718
40719 function sigma0 (x) {
40720 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
40721 }
40722
40723 function sigma1 (x) {
40724 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
40725 }
40726
40727 function gamma0 (x) {
40728 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
40729 }
40730
40731 function gamma1 (x) {
40732 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
40733 }
40734
40735 Sha256.prototype._update = function (M) {
40736 var W = this._w
40737
40738 var a = this._a | 0
40739 var b = this._b | 0
40740 var c = this._c | 0
40741 var d = this._d | 0
40742 var e = this._e | 0
40743 var f = this._f | 0
40744 var g = this._g | 0
40745 var h = this._h | 0
40746
40747 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40748 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
40749
40750 for (var j = 0; j < 64; ++j) {
40751 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
40752 var T2 = (sigma0(a) + maj(a, b, c)) | 0
40753
40754 h = g
40755 g = f
40756 f = e
40757 e = (d + T1) | 0
40758 d = c
40759 c = b
40760 b = a
40761 a = (T1 + T2) | 0
40762 }
40763
40764 this._a = (a + this._a) | 0
40765 this._b = (b + this._b) | 0
40766 this._c = (c + this._c) | 0
40767 this._d = (d + this._d) | 0
40768 this._e = (e + this._e) | 0
40769 this._f = (f + this._f) | 0
40770 this._g = (g + this._g) | 0
40771 this._h = (h + this._h) | 0
40772 }
40773
40774 Sha256.prototype._hash = function () {
40775 var H = new Buffer(32)
40776
40777 H.writeInt32BE(this._a, 0)
40778 H.writeInt32BE(this._b, 4)
40779 H.writeInt32BE(this._c, 8)
40780 H.writeInt32BE(this._d, 12)
40781 H.writeInt32BE(this._e, 16)
40782 H.writeInt32BE(this._f, 20)
40783 H.writeInt32BE(this._g, 24)
40784 H.writeInt32BE(this._h, 28)
40785
40786 return H
40787 }
40788
40789 module.exports = Sha256
40790
40791 }).call(this,require("buffer").Buffer)
40792 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
40793 (function (Buffer){
40794 var inherits = require('inherits')
40795 var SHA512 = require('./sha512')
40796 var Hash = require('./hash')
40797
40798 var W = new Array(160)
40799
40800 function Sha384 () {
40801 this.init()
40802 this._w = W
40803
40804 Hash.call(this, 128, 112)
40805 }
40806
40807 inherits(Sha384, SHA512)
40808
40809 Sha384.prototype.init = function () {
40810 this._ah = 0xcbbb9d5d
40811 this._bh = 0x629a292a
40812 this._ch = 0x9159015a
40813 this._dh = 0x152fecd8
40814 this._eh = 0x67332667
40815 this._fh = 0x8eb44a87
40816 this._gh = 0xdb0c2e0d
40817 this._hh = 0x47b5481d
40818
40819 this._al = 0xc1059ed8
40820 this._bl = 0x367cd507
40821 this._cl = 0x3070dd17
40822 this._dl = 0xf70e5939
40823 this._el = 0xffc00b31
40824 this._fl = 0x68581511
40825 this._gl = 0x64f98fa7
40826 this._hl = 0xbefa4fa4
40827
40828 return this
40829 }
40830
40831 Sha384.prototype._hash = function () {
40832 var H = new Buffer(48)
40833
40834 function writeInt64BE (h, l, offset) {
40835 H.writeInt32BE(h, offset)
40836 H.writeInt32BE(l, offset + 4)
40837 }
40838
40839 writeInt64BE(this._ah, this._al, 0)
40840 writeInt64BE(this._bh, this._bl, 8)
40841 writeInt64BE(this._ch, this._cl, 16)
40842 writeInt64BE(this._dh, this._dl, 24)
40843 writeInt64BE(this._eh, this._el, 32)
40844 writeInt64BE(this._fh, this._fl, 40)
40845
40846 return H
40847 }
40848
40849 module.exports = Sha384
40850
40851 }).call(this,require("buffer").Buffer)
40852 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
40853 (function (Buffer){
40854 var inherits = require('inherits')
40855 var Hash = require('./hash')
40856
40857 var K = [
40858 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
40859 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
40860 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
40861 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
40862 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
40863 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
40864 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
40865 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
40866 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
40867 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
40868 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
40869 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
40870 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
40871 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
40872 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
40873 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
40874 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
40875 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
40876 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
40877 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
40878 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
40879 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
40880 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
40881 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
40882 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
40883 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
40884 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
40885 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
40886 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
40887 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
40888 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
40889 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
40890 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
40891 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
40892 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
40893 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
40894 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
40895 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
40896 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
40897 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
40898 ]
40899
40900 var W = new Array(160)
40901
40902 function Sha512 () {
40903 this.init()
40904 this._w = W
40905
40906 Hash.call(this, 128, 112)
40907 }
40908
40909 inherits(Sha512, Hash)
40910
40911 Sha512.prototype.init = function () {
40912 this._ah = 0x6a09e667
40913 this._bh = 0xbb67ae85
40914 this._ch = 0x3c6ef372
40915 this._dh = 0xa54ff53a
40916 this._eh = 0x510e527f
40917 this._fh = 0x9b05688c
40918 this._gh = 0x1f83d9ab
40919 this._hh = 0x5be0cd19
40920
40921 this._al = 0xf3bcc908
40922 this._bl = 0x84caa73b
40923 this._cl = 0xfe94f82b
40924 this._dl = 0x5f1d36f1
40925 this._el = 0xade682d1
40926 this._fl = 0x2b3e6c1f
40927 this._gl = 0xfb41bd6b
40928 this._hl = 0x137e2179
40929
40930 return this
40931 }
40932
40933 function Ch (x, y, z) {
40934 return z ^ (x & (y ^ z))
40935 }
40936
40937 function maj (x, y, z) {
40938 return (x & y) | (z & (x | y))
40939 }
40940
40941 function sigma0 (x, xl) {
40942 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
40943 }
40944
40945 function sigma1 (x, xl) {
40946 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
40947 }
40948
40949 function Gamma0 (x, xl) {
40950 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
40951 }
40952
40953 function Gamma0l (x, xl) {
40954 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
40955 }
40956
40957 function Gamma1 (x, xl) {
40958 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
40959 }
40960
40961 function Gamma1l (x, xl) {
40962 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
40963 }
40964
40965 function getCarry (a, b) {
40966 return (a >>> 0) < (b >>> 0) ? 1 : 0
40967 }
40968
40969 Sha512.prototype._update = function (M) {
40970 var W = this._w
40971
40972 var ah = this._ah | 0
40973 var bh = this._bh | 0
40974 var ch = this._ch | 0
40975 var dh = this._dh | 0
40976 var eh = this._eh | 0
40977 var fh = this._fh | 0
40978 var gh = this._gh | 0
40979 var hh = this._hh | 0
40980
40981 var al = this._al | 0
40982 var bl = this._bl | 0
40983 var cl = this._cl | 0
40984 var dl = this._dl | 0
40985 var el = this._el | 0
40986 var fl = this._fl | 0
40987 var gl = this._gl | 0
40988 var hl = this._hl | 0
40989
40990 for (var i = 0; i < 32; i += 2) {
40991 W[i] = M.readInt32BE(i * 4)
40992 W[i + 1] = M.readInt32BE(i * 4 + 4)
40993 }
40994 for (; i < 160; i += 2) {
40995 var xh = W[i - 15 * 2]
40996 var xl = W[i - 15 * 2 + 1]
40997 var gamma0 = Gamma0(xh, xl)
40998 var gamma0l = Gamma0l(xl, xh)
40999
41000 xh = W[i - 2 * 2]
41001 xl = W[i - 2 * 2 + 1]
41002 var gamma1 = Gamma1(xh, xl)
41003 var gamma1l = Gamma1l(xl, xh)
41004
41005 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
41006 var Wi7h = W[i - 7 * 2]
41007 var Wi7l = W[i - 7 * 2 + 1]
41008
41009 var Wi16h = W[i - 16 * 2]
41010 var Wi16l = W[i - 16 * 2 + 1]
41011
41012 var Wil = (gamma0l + Wi7l) | 0
41013 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
41014 Wil = (Wil + gamma1l) | 0
41015 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
41016 Wil = (Wil + Wi16l) | 0
41017 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
41018
41019 W[i] = Wih
41020 W[i + 1] = Wil
41021 }
41022
41023 for (var j = 0; j < 160; j += 2) {
41024 Wih = W[j]
41025 Wil = W[j + 1]
41026
41027 var majh = maj(ah, bh, ch)
41028 var majl = maj(al, bl, cl)
41029
41030 var sigma0h = sigma0(ah, al)
41031 var sigma0l = sigma0(al, ah)
41032 var sigma1h = sigma1(eh, el)
41033 var sigma1l = sigma1(el, eh)
41034
41035 // t1 = h + sigma1 + ch + K[j] + W[j]
41036 var Kih = K[j]
41037 var Kil = K[j + 1]
41038
41039 var chh = Ch(eh, fh, gh)
41040 var chl = Ch(el, fl, gl)
41041
41042 var t1l = (hl + sigma1l) | 0
41043 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
41044 t1l = (t1l + chl) | 0
41045 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
41046 t1l = (t1l + Kil) | 0
41047 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
41048 t1l = (t1l + Wil) | 0
41049 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
41050
41051 // t2 = sigma0 + maj
41052 var t2l = (sigma0l + majl) | 0
41053 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
41054
41055 hh = gh
41056 hl = gl
41057 gh = fh
41058 gl = fl
41059 fh = eh
41060 fl = el
41061 el = (dl + t1l) | 0
41062 eh = (dh + t1h + getCarry(el, dl)) | 0
41063 dh = ch
41064 dl = cl
41065 ch = bh
41066 cl = bl
41067 bh = ah
41068 bl = al
41069 al = (t1l + t2l) | 0
41070 ah = (t1h + t2h + getCarry(al, t1l)) | 0
41071 }
41072
41073 this._al = (this._al + al) | 0
41074 this._bl = (this._bl + bl) | 0
41075 this._cl = (this._cl + cl) | 0
41076 this._dl = (this._dl + dl) | 0
41077 this._el = (this._el + el) | 0
41078 this._fl = (this._fl + fl) | 0
41079 this._gl = (this._gl + gl) | 0
41080 this._hl = (this._hl + hl) | 0
41081
41082 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
41083 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
41084 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
41085 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
41086 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
41087 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
41088 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
41089 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
41090 }
41091
41092 Sha512.prototype._hash = function () {
41093 var H = new Buffer(64)
41094
41095 function writeInt64BE (h, l, offset) {
41096 H.writeInt32BE(h, offset)
41097 H.writeInt32BE(l, offset + 4)
41098 }
41099
41100 writeInt64BE(this._ah, this._al, 0)
41101 writeInt64BE(this._bh, this._bl, 8)
41102 writeInt64BE(this._ch, this._cl, 16)
41103 writeInt64BE(this._dh, this._dl, 24)
41104 writeInt64BE(this._eh, this._el, 32)
41105 writeInt64BE(this._fh, this._fl, 40)
41106 writeInt64BE(this._gh, this._gl, 48)
41107 writeInt64BE(this._hh, this._hl, 56)
41108
41109 return H
41110 }
41111
41112 module.exports = Sha512
41113
41114 }).call(this,require("buffer").Buffer)
41115 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
41116 var isHexPrefixed = require('is-hex-prefixed');
41117
41118 /**
41119 * Removes '0x' from a given `String` is present
41120 * @param {String} str the string value
41121 * @return {String|Optional} a string by pass if necessary
41122 */
41123 module.exports = function stripHexPrefix(str) {
41124 if (typeof str !== 'string') {
41125 return str;
41126 }
41127
41128 return isHexPrefixed(str) ? str.slice(2) : str;
41129 }
41130
41131 },{"is-hex-prefixed":64}]},{},[31])(31)
41132 });</script>
41133 <script>function convertRippleAdrr(address) {
41134 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
41135 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
41136 )
41137 }
41138
41139 function convertRipplePriv(priv) {
41140 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
41141 }
41142
41143 </script>
41144 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
41145
41146 //// base.js
41147
41148 /** @fileOverview Javascript cryptography implementation.
41149 *
41150 * Crush to remove comments, shorten variable names and
41151 * generally reduce transmission size.
41152 *
41153 * @author Emily Stark
41154 * @author Mike Hamburg
41155 * @author Dan Boneh
41156 */
41157
41158 "use strict";
41159 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
41160 /*global document, window, escape, unescape, module, require, Uint32Array */
41161
41162 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
41163 var sjcl = {
41164 /** @namespace Symmetric ciphers. */
41165 cipher: {},
41166
41167 /** @namespace Hash functions. Right now only SHA256 is implemented. */
41168 hash: {},
41169
41170 /** @namespace Key exchange functions. Right now only SRP is implemented. */
41171 keyexchange: {},
41172
41173 /** @namespace Block cipher modes of operation. */
41174 mode: {},
41175
41176 /** @namespace Miscellaneous. HMAC and PBKDF2. */
41177 misc: {},
41178
41179 /**
41180 * @namespace Bit array encoders and decoders.
41181 *
41182 * @description
41183 * The members of this namespace are functions which translate between
41184 * SJCL's bitArrays and other objects (usually strings). Because it
41185 * isn't always clear which direction is encoding and which is decoding,
41186 * the method names are "fromBits" and "toBits".
41187 */
41188 codec: {},
41189
41190 /** @namespace Exceptions. */
41191 exception: {
41192 /** @constructor Ciphertext is corrupt. */
41193 corrupt: function(message) {
41194 this.toString = function() { return "CORRUPT: "+this.message; };
41195 this.message = message;
41196 },
41197
41198 /** @constructor Invalid parameter. */
41199 invalid: function(message) {
41200 this.toString = function() { return "INVALID: "+this.message; };
41201 this.message = message;
41202 },
41203
41204 /** @constructor Bug or missing feature in SJCL. @constructor */
41205 bug: function(message) {
41206 this.toString = function() { return "BUG: "+this.message; };
41207 this.message = message;
41208 },
41209
41210 /** @constructor Something isn't ready. */
41211 notReady: function(message) {
41212 this.toString = function() { return "NOT READY: "+this.message; };
41213 this.message = message;
41214 }
41215 }
41216 };
41217
41218 if(typeof module !== 'undefined' && module.exports){
41219 module.exports = sjcl;
41220 }
41221 if (typeof define === "function") {
41222 define([], function () {
41223 return sjcl;
41224 });
41225 }
41226
41227
41228 //// bitArray.js
41229
41230 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
41231 *
41232 * @author Emily Stark
41233 * @author Mike Hamburg
41234 * @author Dan Boneh
41235 */
41236
41237 /** @namespace Arrays of bits, encoded as arrays of Numbers.
41238 *
41239 * @description
41240 * <p>
41241 * These objects are the currency accepted by SJCL's crypto functions.
41242 * </p>
41243 *
41244 * <p>
41245 * Most of our crypto primitives operate on arrays of 4-byte words internally,
41246 * but many of them can take arguments that are not a multiple of 4 bytes.
41247 * This library encodes arrays of bits (whose size need not be a multiple of 8
41248 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
41249 * array of words, 32 bits at a time. Since the words are double-precision
41250 * floating point numbers, they fit some extra data. We use this (in a private,
41251 * possibly-changing manner) to encode the number of bits actually present
41252 * in the last word of the array.
41253 * </p>
41254 *
41255 * <p>
41256 * Because bitwise ops clear this out-of-band data, these arrays can be passed
41257 * to ciphers like AES which want arrays of words.
41258 * </p>
41259 */
41260 sjcl.bitArray = {
41261 /**
41262 * Array slices in units of bits.
41263 * @param {bitArray} a The array to slice.
41264 * @param {Number} bstart The offset to the start of the slice, in bits.
41265 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
41266 * slice until the end of the array.
41267 * @return {bitArray} The requested slice.
41268 */
41269 bitSlice: function (a, bstart, bend) {
41270 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
41271 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
41272 },
41273
41274 /**
41275 * Extract a number packed into a bit array.
41276 * @param {bitArray} a The array to slice.
41277 * @param {Number} bstart The offset to the start of the slice, in bits.
41278 * @param {Number} length The length of the number to extract.
41279 * @return {Number} The requested slice.
41280 */
41281 extract: function(a, bstart, blength) {
41282 // FIXME: this Math.floor is not necessary at all, but for some reason
41283 // seems to suppress a bug in the Chromium JIT.
41284 var x, sh = Math.floor((-bstart-blength) & 31);
41285 if ((bstart + blength - 1 ^ bstart) & -32) {
41286 // it crosses a boundary
41287 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
41288 } else {
41289 // within a single word
41290 x = a[bstart/32|0] >>> sh;
41291 }
41292 return x & ((1<<blength) - 1);
41293 },
41294
41295 /**
41296 * Concatenate two bit arrays.
41297 * @param {bitArray} a1 The first array.
41298 * @param {bitArray} a2 The second array.
41299 * @return {bitArray} The concatenation of a1 and a2.
41300 */
41301 concat: function (a1, a2) {
41302 if (a1.length === 0 || a2.length === 0) {
41303 return a1.concat(a2);
41304 }
41305
41306 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
41307 if (shift === 32) {
41308 return a1.concat(a2);
41309 } else {
41310 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
41311 }
41312 },
41313
41314 /**
41315 * Find the length of an array of bits.
41316 * @param {bitArray} a The array.
41317 * @return {Number} The length of a, in bits.
41318 */
41319 bitLength: function (a) {
41320 var l = a.length, x;
41321 if (l === 0) { return 0; }
41322 x = a[l - 1];
41323 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
41324 },
41325
41326 /**
41327 * Truncate an array.
41328 * @param {bitArray} a The array.
41329 * @param {Number} len The length to truncate to, in bits.
41330 * @return {bitArray} A new array, truncated to len bits.
41331 */
41332 clamp: function (a, len) {
41333 if (a.length * 32 < len) { return a; }
41334 a = a.slice(0, Math.ceil(len / 32));
41335 var l = a.length;
41336 len = len & 31;
41337 if (l > 0 && len) {
41338 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
41339 }
41340 return a;
41341 },
41342
41343 /**
41344 * Make a partial word for a bit array.
41345 * @param {Number} len The number of bits in the word.
41346 * @param {Number} x The bits.
41347 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
41348 * @return {Number} The partial word.
41349 */
41350 partial: function (len, x, _end) {
41351 if (len === 32) { return x; }
41352 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
41353 },
41354
41355 /**
41356 * Get the number of bits used by a partial word.
41357 * @param {Number} x The partial word.
41358 * @return {Number} The number of bits used by the partial word.
41359 */
41360 getPartial: function (x) {
41361 return Math.round(x/0x10000000000) || 32;
41362 },
41363
41364 /**
41365 * Compare two arrays for equality in a predictable amount of time.
41366 * @param {bitArray} a The first array.
41367 * @param {bitArray} b The second array.
41368 * @return {boolean} true if a == b; false otherwise.
41369 */
41370 equal: function (a, b) {
41371 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
41372 return false;
41373 }
41374 var x = 0, i;
41375 for (i=0; i<a.length; i++) {
41376 x |= a[i]^b[i];
41377 }
41378 return (x === 0);
41379 },
41380
41381 /** Shift an array right.
41382 * @param {bitArray} a The array to shift.
41383 * @param {Number} shift The number of bits to shift.
41384 * @param {Number} [carry=0] A byte to carry in
41385 * @param {bitArray} [out=[]] An array to prepend to the output.
41386 * @private
41387 */
41388 _shiftRight: function (a, shift, carry, out) {
41389 var i, last2=0, shift2;
41390 if (out === undefined) { out = []; }
41391
41392 for (; shift >= 32; shift -= 32) {
41393 out.push(carry);
41394 carry = 0;
41395 }
41396 if (shift === 0) {
41397 return out.concat(a);
41398 }
41399
41400 for (i=0; i<a.length; i++) {
41401 out.push(carry | a[i]>>>shift);
41402 carry = a[i] << (32-shift);
41403 }
41404 last2 = a.length ? a[a.length-1] : 0;
41405 shift2 = sjcl.bitArray.getPartial(last2);
41406 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
41407 return out;
41408 },
41409
41410 /** xor a block of 4 words together.
41411 * @private
41412 */
41413 _xor4: function(x,y) {
41414 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
41415 },
41416
41417 /** byteswap a word array inplace.
41418 * (does not handle partial words)
41419 * @param {sjcl.bitArray} a word array
41420 * @return {sjcl.bitArray} byteswapped array
41421 */
41422 byteswapM: function(a) {
41423 var i, v, m = 0xff00;
41424 for (i = 0; i < a.length; ++i) {
41425 v = a[i];
41426 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
41427 }
41428 return a;
41429 }
41430 };
41431
41432
41433 //// codecString.js
41434
41435 /** @fileOverview Bit array codec implementations.
41436 *
41437 * @author Emily Stark
41438 * @author Mike Hamburg
41439 * @author Dan Boneh
41440 */
41441
41442 /** @namespace UTF-8 strings */
41443 sjcl.codec.utf8String = {
41444 /** Convert from a bitArray to a UTF-8 string. */
41445 fromBits: function (arr) {
41446 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
41447 for (i=0; i<bl/8; i++) {
41448 if ((i&3) === 0) {
41449 tmp = arr[i/4];
41450 }
41451 out += String.fromCharCode(tmp >>> 24);
41452 tmp <<= 8;
41453 }
41454 return decodeURIComponent(escape(out));
41455 },
41456
41457 /** Convert from a UTF-8 string to a bitArray. */
41458 toBits: function (str) {
41459 str = unescape(encodeURIComponent(str));
41460 var out = [], i, tmp=0;
41461 for (i=0; i<str.length; i++) {
41462 tmp = tmp << 8 | str.charCodeAt(i);
41463 if ((i&3) === 3) {
41464 out.push(tmp);
41465 tmp = 0;
41466 }
41467 }
41468 if (i&3) {
41469 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
41470 }
41471 return out;
41472 }
41473 };
41474
41475
41476 //// codecHex.js
41477
41478 /** @fileOverview Bit array codec implementations.
41479 *
41480 * @author Emily Stark
41481 * @author Mike Hamburg
41482 * @author Dan Boneh
41483 */
41484
41485 /** @namespace Hexadecimal */
41486 sjcl.codec.hex = {
41487 /** Convert from a bitArray to a hex string. */
41488 fromBits: function (arr) {
41489 var out = "", i;
41490 for (i=0; i<arr.length; i++) {
41491 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
41492 }
41493 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
41494 },
41495 /** Convert from a hex string to a bitArray. */
41496 toBits: function (str) {
41497 var i, out=[], len;
41498 str = str.replace(/\s|0x/g, "");
41499 len = str.length;
41500 str = str + "00000000";
41501 for (i=0; i<str.length; i+=8) {
41502 out.push(parseInt(str.substr(i,8),16)^0);
41503 }
41504 return sjcl.bitArray.clamp(out, len*4);
41505 }
41506 };
41507
41508
41509 //// sha512.js
41510
41511 /** @fileOverview Javascript SHA-512 implementation.
41512 *
41513 * This implementation was written for CryptoJS by Jeff Mott and adapted for
41514 * SJCL by Stefan Thomas.
41515 *
41516 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
41517 * Released with New BSD License
41518 *
41519 * @author Emily Stark
41520 * @author Mike Hamburg
41521 * @author Dan Boneh
41522 * @author Jeff Mott
41523 * @author Stefan Thomas
41524 */
41525
41526 /**
41527 * Context for a SHA-512 operation in progress.
41528 * @constructor
41529 * @class Secure Hash Algorithm, 512 bits.
41530 */
41531 sjcl.hash.sha512 = function (hash) {
41532 if (!this._key[0]) { this._precompute(); }
41533 if (hash) {
41534 this._h = hash._h.slice(0);
41535 this._buffer = hash._buffer.slice(0);
41536 this._length = hash._length;
41537 } else {
41538 this.reset();
41539 }
41540 };
41541
41542 /**
41543 * Hash a string or an array of words.
41544 * @static
41545 * @param {bitArray|String} data the data to hash.
41546 * @return {bitArray} The hash value, an array of 16 big-endian words.
41547 */
41548 sjcl.hash.sha512.hash = function (data) {
41549 return (new sjcl.hash.sha512()).update(data).finalize();
41550 };
41551
41552 sjcl.hash.sha512.prototype = {
41553 /**
41554 * The hash's block size, in bits.
41555 * @constant
41556 */
41557 blockSize: 1024,
41558
41559 /**
41560 * Reset the hash state.
41561 * @return this
41562 */
41563 reset:function () {
41564 this._h = this._init.slice(0);
41565 this._buffer = [];
41566 this._length = 0;
41567 return this;
41568 },
41569
41570 /**
41571 * Input several words to the hash.
41572 * @param {bitArray|String} data the data to hash.
41573 * @return this
41574 */
41575 update: function (data) {
41576 if (typeof data === "string") {
41577 data = sjcl.codec.utf8String.toBits(data);
41578 }
41579 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
41580 ol = this._length,
41581 nl = this._length = ol + sjcl.bitArray.bitLength(data);
41582 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
41583 this._block(b.splice(0,32));
41584 }
41585 return this;
41586 },
41587
41588 /**
41589 * Complete hashing and output the hash value.
41590 * @return {bitArray} The hash value, an array of 16 big-endian words.
41591 */
41592 finalize:function () {
41593 var i, b = this._buffer, h = this._h;
41594
41595 // Round out and push the buffer
41596 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
41597
41598 // Round out the buffer to a multiple of 32 words, less the 4 length words.
41599 for (i = b.length + 4; i & 31; i++) {
41600 b.push(0);
41601 }
41602
41603 // append the length
41604 b.push(0);
41605 b.push(0);
41606 b.push(Math.floor(this._length / 0x100000000));
41607 b.push(this._length | 0);
41608
41609 while (b.length) {
41610 this._block(b.splice(0,32));
41611 }
41612
41613 this.reset();
41614 return h;
41615 },
41616
41617 /**
41618 * The SHA-512 initialization vector, to be precomputed.
41619 * @private
41620 */
41621 _init:[],
41622
41623 /**
41624 * Least significant 24 bits of SHA512 initialization values.
41625 *
41626 * Javascript only has 53 bits of precision, so we compute the 40 most
41627 * significant bits and add the remaining 24 bits as constants.
41628 *
41629 * @private
41630 */
41631 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
41632
41633 /*
41634 _init:
41635 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
41636 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
41637 */
41638
41639 /**
41640 * The SHA-512 hash key, to be precomputed.
41641 * @private
41642 */
41643 _key:[],
41644
41645 /**
41646 * Least significant 24 bits of SHA512 key values.
41647 * @private
41648 */
41649 _keyr:
41650 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
41651 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
41652 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
41653 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
41654 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
41655 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
41656 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
41657 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
41658 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
41659 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
41660
41661 /*
41662 _key:
41663 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
41664 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
41665 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
41666 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
41667 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
41668 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
41669 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
41670 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
41671 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
41672 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
41673 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
41674 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
41675 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
41676 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
41677 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
41678 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
41679 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
41680 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
41681 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
41682 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
41683 */
41684
41685 /**
41686 * Function to precompute _init and _key.
41687 * @private
41688 */
41689 _precompute: function () {
41690 // XXX: This code is for precomputing the SHA256 constants, change for
41691 // SHA512 and re-enable.
41692 var i = 0, prime = 2, factor;
41693
41694 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
41695 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
41696
41697 outer: for (; i<80; prime++) {
41698 for (factor=2; factor*factor <= prime; factor++) {
41699 if (prime % factor === 0) {
41700 // not a prime
41701 continue outer;
41702 }
41703 }
41704
41705 if (i<8) {
41706 this._init[i*2] = frac(Math.pow(prime, 1/2));
41707 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
41708 }
41709 this._key[i*2] = frac(Math.pow(prime, 1/3));
41710 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
41711 i++;
41712 }
41713 },
41714
41715 /**
41716 * Perform one cycle of SHA-512.
41717 * @param {bitArray} words one block of words.
41718 * @private
41719 */
41720 _block:function (words) {
41721 var i, wrh, wrl,
41722 w = words.slice(0),
41723 h = this._h,
41724 k = this._key,
41725 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
41726 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
41727 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
41728 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
41729
41730 // Working variables
41731 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
41732 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
41733 eh = h4h, el = h4l, fh = h5h, fl = h5l,
41734 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
41735
41736 for (i=0; i<80; i++) {
41737 // load up the input word for this round
41738 if (i<16) {
41739 wrh = w[i * 2];
41740 wrl = w[i * 2 + 1];
41741 } else {
41742 // Gamma0
41743 var gamma0xh = w[(i-15) * 2];
41744 var gamma0xl = w[(i-15) * 2 + 1];
41745 var gamma0h =
41746 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
41747 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
41748 (gamma0xh >>> 7);
41749 var gamma0l =
41750 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
41751 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
41752 ((gamma0xh << 25) | (gamma0xl >>> 7));
41753
41754 // Gamma1
41755 var gamma1xh = w[(i-2) * 2];
41756 var gamma1xl = w[(i-2) * 2 + 1];
41757 var gamma1h =
41758 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
41759 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
41760 (gamma1xh >>> 6);
41761 var gamma1l =
41762 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
41763 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
41764 ((gamma1xh << 26) | (gamma1xl >>> 6));
41765
41766 // Shortcuts
41767 var wr7h = w[(i-7) * 2];
41768 var wr7l = w[(i-7) * 2 + 1];
41769
41770 var wr16h = w[(i-16) * 2];
41771 var wr16l = w[(i-16) * 2 + 1];
41772
41773 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
41774 wrl = gamma0l + wr7l;
41775 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
41776 wrl += gamma1l;
41777 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
41778 wrl += wr16l;
41779 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
41780 }
41781
41782 w[i*2] = wrh |= 0;
41783 w[i*2 + 1] = wrl |= 0;
41784
41785 // Ch
41786 var chh = (eh & fh) ^ (~eh & gh);
41787 var chl = (el & fl) ^ (~el & gl);
41788
41789 // Maj
41790 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
41791 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
41792
41793 // Sigma0
41794 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
41795 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
41796
41797 // Sigma1
41798 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
41799 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
41800
41801 // K(round)
41802 var krh = k[i*2];
41803 var krl = k[i*2+1];
41804
41805 // t1 = h + sigma1 + ch + K(round) + W(round)
41806 var t1l = hl + sigma1l;
41807 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
41808 t1l += chl;
41809 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
41810 t1l += krl;
41811 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
41812 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
41813 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
41814
41815 // t2 = sigma0 + maj
41816 var t2l = sigma0l + majl;
41817 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
41818
41819 // Update working variables
41820 hh = gh;
41821 hl = gl;
41822 gh = fh;
41823 gl = fl;
41824 fh = eh;
41825 fl = el;
41826 el = (dl + t1l) | 0;
41827 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41828 dh = ch;
41829 dl = cl;
41830 ch = bh;
41831 cl = bl;
41832 bh = ah;
41833 bl = al;
41834 al = (t1l + t2l) | 0;
41835 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
41836 }
41837
41838 // Intermediate hash
41839 h0l = h[1] = (h0l + al) | 0;
41840 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
41841 h1l = h[3] = (h1l + bl) | 0;
41842 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
41843 h2l = h[5] = (h2l + cl) | 0;
41844 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
41845 h3l = h[7] = (h3l + dl) | 0;
41846 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41847 h4l = h[9] = (h4l + el) | 0;
41848 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
41849 h5l = h[11] = (h5l + fl) | 0;
41850 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
41851 h6l = h[13] = (h6l + gl) | 0;
41852 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
41853 h7l = h[15] = (h7l + hl) | 0;
41854 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
41855 }
41856 };
41857
41858
41859 //// hmac.js
41860
41861 /** @fileOverview HMAC implementation.
41862 *
41863 * @author Emily Stark
41864 * @author Mike Hamburg
41865 * @author Dan Boneh
41866 */
41867
41868 /** HMAC with the specified hash function.
41869 * @constructor
41870 * @param {bitArray} key the key for HMAC.
41871 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
41872 */
41873 sjcl.misc.hmac = function (key, Hash) {
41874 this._hash = Hash = Hash || sjcl.hash.sha256;
41875 var exKey = [[],[]], i,
41876 bs = Hash.prototype.blockSize / 32;
41877 this._baseHash = [new Hash(), new Hash()];
41878
41879 if (key.length > bs) {
41880 key = Hash.hash(key);
41881 }
41882
41883 for (i=0; i<bs; i++) {
41884 exKey[0][i] = key[i]^0x36363636;
41885 exKey[1][i] = key[i]^0x5C5C5C5C;
41886 }
41887
41888 this._baseHash[0].update(exKey[0]);
41889 this._baseHash[1].update(exKey[1]);
41890 this._resultHash = new Hash(this._baseHash[0]);
41891 };
41892
41893 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
41894 * @param {bitArray|String} data The data to mac.
41895 */
41896 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
41897 if (!this._updated) {
41898 this.update(data);
41899 return this.digest(data);
41900 } else {
41901 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
41902 }
41903 };
41904
41905 sjcl.misc.hmac.prototype.reset = function () {
41906 this._resultHash = new this._hash(this._baseHash[0]);
41907 this._updated = false;
41908 };
41909
41910 sjcl.misc.hmac.prototype.update = function (data) {
41911 this._updated = true;
41912 this._resultHash.update(data);
41913 };
41914
41915 sjcl.misc.hmac.prototype.digest = function () {
41916 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
41917
41918 this.reset();
41919
41920 return result;
41921 };
41922
41923
41924 //// pbkdf2.js
41925
41926
41927 /** @fileOverview Password-based key-derivation function, version 2.0.
41928 *
41929 * @author Emily Stark
41930 * @author Mike Hamburg
41931 * @author Dan Boneh
41932 */
41933
41934 /** Password-Based Key-Derivation Function, version 2.0.
41935 *
41936 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
41937 *
41938 * This is the method specified by RSA's PKCS #5 standard.
41939 *
41940 * @param {bitArray|String} password The password.
41941 * @param {bitArray|String} salt The salt. Should have lots of entropy.
41942 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
41943 * @param {Number} [length] The length of the derived key. Defaults to the
41944 output size of the hash function.
41945 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
41946 * @return {bitArray} the derived key.
41947 */
41948 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
41949 count = count || 1000;
41950
41951 if (length < 0 || count < 0) {
41952 throw sjcl.exception.invalid("invalid params to pbkdf2");
41953 }
41954
41955 if (typeof password === "string") {
41956 password = sjcl.codec.utf8String.toBits(password);
41957 }
41958
41959 if (typeof salt === "string") {
41960 salt = sjcl.codec.utf8String.toBits(salt);
41961 }
41962
41963 Prff = Prff || sjcl.misc.hmac;
41964
41965 var prf = new Prff(password),
41966 u, ui, i, j, k, out = [], b = sjcl.bitArray;
41967
41968 for (k = 1; 32 * out.length < (length || 1); k++) {
41969 u = ui = prf.encrypt(b.concat(salt,[k]));
41970
41971 for (i=1; i<count; i++) {
41972 ui = prf.encrypt(ui);
41973 for (j=0; j<ui.length; j++) {
41974 u[j] ^= ui[j];
41975 }
41976 }
41977
41978 out = out.concat(u);
41979 }
41980
41981 if (length) { out = b.clamp(out, length); }
41982
41983 return out;
41984 };
41985
41986
41987 //// sha256.js
41988
41989 /** @fileOverview Javascript SHA-256 implementation.
41990 *
41991 * An older version of this implementation is available in the public
41992 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
41993 * Stanford University 2008-2010 and BSD-licensed for liability
41994 * reasons.
41995 *
41996 * Special thanks to Aldo Cortesi for pointing out several bugs in
41997 * this code.
41998 *
41999 * @author Emily Stark
42000 * @author Mike Hamburg
42001 * @author Dan Boneh
42002 */
42003
42004 /**
42005 * Context for a SHA-256 operation in progress.
42006 * @constructor
42007 * @class Secure Hash Algorithm, 256 bits.
42008 */
42009 sjcl.hash.sha256 = function (hash) {
42010 if (!this._key[0]) { this._precompute(); }
42011 if (hash) {
42012 this._h = hash._h.slice(0);
42013 this._buffer = hash._buffer.slice(0);
42014 this._length = hash._length;
42015 } else {
42016 this.reset();
42017 }
42018 };
42019
42020 /**
42021 * Hash a string or an array of words.
42022 * @static
42023 * @param {bitArray|String} data the data to hash.
42024 * @return {bitArray} The hash value, an array of 16 big-endian words.
42025 */
42026 sjcl.hash.sha256.hash = function (data) {
42027 return (new sjcl.hash.sha256()).update(data).finalize();
42028 };
42029
42030 sjcl.hash.sha256.prototype = {
42031 /**
42032 * The hash's block size, in bits.
42033 * @constant
42034 */
42035 blockSize: 512,
42036
42037 /**
42038 * Reset the hash state.
42039 * @return this
42040 */
42041 reset:function () {
42042 this._h = this._init.slice(0);
42043 this._buffer = [];
42044 this._length = 0;
42045 return this;
42046 },
42047
42048 /**
42049 * Input several words to the hash.
42050 * @param {bitArray|String} data the data to hash.
42051 * @return this
42052 */
42053 update: function (data) {
42054 if (typeof data === "string") {
42055 data = sjcl.codec.utf8String.toBits(data);
42056 }
42057 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
42058 ol = this._length,
42059 nl = this._length = ol + sjcl.bitArray.bitLength(data);
42060 for (i = 512+ol & -512; i <= nl; i+= 512) {
42061 this._block(b.splice(0,16));
42062 }
42063 return this;
42064 },
42065
42066 /**
42067 * Complete hashing and output the hash value.
42068 * @return {bitArray} The hash value, an array of 8 big-endian words.
42069 */
42070 finalize:function () {
42071 var i, b = this._buffer, h = this._h;
42072
42073 // Round out and push the buffer
42074 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
42075
42076 // Round out the buffer to a multiple of 16 words, less the 2 length words.
42077 for (i = b.length + 2; i & 15; i++) {
42078 b.push(0);
42079 }
42080
42081 // append the length
42082 b.push(Math.floor(this._length / 0x100000000));
42083 b.push(this._length | 0);
42084
42085 while (b.length) {
42086 this._block(b.splice(0,16));
42087 }
42088
42089 this.reset();
42090 return h;
42091 },
42092
42093 /**
42094 * The SHA-256 initialization vector, to be precomputed.
42095 * @private
42096 */
42097 _init:[],
42098 /*
42099 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
42100 */
42101
42102 /**
42103 * The SHA-256 hash key, to be precomputed.
42104 * @private
42105 */
42106 _key:[],
42107 /*
42108 _key:
42109 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
42110 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
42111 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
42112 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
42113 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
42114 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
42115 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
42116 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
42117 */
42118
42119
42120 /**
42121 * Function to precompute _init and _key.
42122 * @private
42123 */
42124 _precompute: function () {
42125 var i = 0, prime = 2, factor;
42126
42127 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
42128
42129 outer: for (; i<64; prime++) {
42130 for (factor=2; factor*factor <= prime; factor++) {
42131 if (prime % factor === 0) {
42132 // not a prime
42133 continue outer;
42134 }
42135 }
42136
42137 if (i<8) {
42138 this._init[i] = frac(Math.pow(prime, 1/2));
42139 }
42140 this._key[i] = frac(Math.pow(prime, 1/3));
42141 i++;
42142 }
42143 },
42144
42145 /**
42146 * Perform one cycle of SHA-256.
42147 * @param {bitArray} words one block of words.
42148 * @private
42149 */
42150 _block:function (words) {
42151 var i, tmp, a, b,
42152 w = words.slice(0),
42153 h = this._h,
42154 k = this._key,
42155 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
42156 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
42157
42158 /* Rationale for placement of |0 :
42159 * If a value can overflow is original 32 bits by a factor of more than a few
42160 * million (2^23 ish), there is a possibility that it might overflow the
42161 * 53-bit mantissa and lose precision.
42162 *
42163 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
42164 * propagates around the loop, and on the hash state h[]. I don't believe
42165 * that the clamps on h4 and on h0 are strictly necessary, but it's close
42166 * (for h4 anyway), and better safe than sorry.
42167 *
42168 * The clamps on h[] are necessary for the output to be correct even in the
42169 * common case and for short inputs.
42170 */
42171 for (i=0; i<64; i++) {
42172 // load up the input word for this round
42173 if (i<16) {
42174 tmp = w[i];
42175 } else {
42176 a = w[(i+1 ) & 15];
42177 b = w[(i+14) & 15];
42178 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
42179 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
42180 w[i&15] + w[(i+9) & 15]) | 0;
42181 }
42182
42183 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
42184
42185 // shift register
42186 h7 = h6; h6 = h5; h5 = h4;
42187 h4 = h3 + tmp | 0;
42188 h3 = h2; h2 = h1; h1 = h0;
42189
42190 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
42191 }
42192
42193 h[0] = h[0]+h0 | 0;
42194 h[1] = h[1]+h1 | 0;
42195 h[2] = h[2]+h2 | 0;
42196 h[3] = h[3]+h3 | 0;
42197 h[4] = h[4]+h4 | 0;
42198 h[5] = h[5]+h5 | 0;
42199 h[6] = h[6]+h6 | 0;
42200 h[7] = h[7]+h7 | 0;
42201 }
42202 };
42203 </script>
42204 <script>// An extremely basic translation library
42205 //
42206 // Example usage:
42207 //
42208 // Set some html to be translated. Do this using the 'data-translate' attribute:
42209 //
42210 // <div data-translate>Test</div>
42211 // <div data-translate-html><em>keep em tag</em></div>
42212 // <input data-translate-placeholder placeholder="Example placeholder">
42213 // <span data-translate-title title="Example title"></span>
42214 //
42215 // Obtain all the phrases to be translated via js debug console:
42216 //
42217 // Translate.phrasesAsJson();
42218 //
42219 // Use that template to translate the phrases into another language.
42220 // Leave the key the same. Change the value to the new language.
42221 //
42222 // Create a js file to load the new phrases. In this example for Spanish,
42223 // es.js will contain the following code:
42224 //
42225 // Translate.loadForeignPhrases("es", {
42226 // "Test": "Test in Spanish",
42227 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
42228 // "Example placeholder": "Example placeholder in Spanish"
42229 // "Example title": "Example title in Spanish"
42230 // });
42231 //
42232 // In your UI put a listener for clicking on the Spanish button:
42233 //
42234 // mySpanishButton.addEventListener("click", function() {
42235 // Translate.setLanguage("es");
42236 // });
42237 // myEnglishButton.addEventListener("click", function() {
42238 // Translate.setLanguage("en");
42239 // });
42240
42241 Translate = new (function() {
42242
42243 var defaultLanguage = "en";
42244
42245 var allPhrases = {};
42246 allPhrases[defaultLanguage] = {};
42247
42248 // Node types
42249
42250 var text = {
42251 selector: "[data-translate]",
42252 getKey: function() {
42253 return this.textContent.trim().replace(/\s+/g, " ");
42254 },
42255 setPhrase: function(p) {
42256 this.textContent = p;
42257 },
42258 }
42259
42260 var html = {
42261 selector: "[data-translate-html]",
42262 getKey: function() {
42263 return this.innerHTML.trim().replace(/\s+/g, " ");
42264 },
42265 setPhrase: function(p) {
42266 this.innerHTML = p;
42267 },
42268 }
42269
42270 var placeholder = {
42271 selector: "[data-translate-placeholder]",
42272 getKey: function() {
42273 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
42274 },
42275 setPhrase: function(p) {
42276 this.setAttribute("placeholder", p);
42277 },
42278 }
42279
42280 var title = {
42281 selector: "[data-translate-title]",
42282 getKey: function() {
42283 return this.getAttribute("title").trim().replace(/\s+/g, " ");
42284 },
42285 setPhrase: function(p) {
42286 this.setAttribute("title", p);
42287 },
42288 }
42289
42290 // Get elements to be translated
42291 var allEls = getEls(text)
42292 .concat(getEls(html))
42293 .concat(getEls(placeholder))
42294 .concat(getEls(title));
42295
42296 // Provides access to phrases from a non-default language.
42297 // See phrases_en.js for example usage.
42298 this.loadForeignPhrases = function(language, phrases) {
42299 allPhrases[language] = phrases;
42300 }
42301
42302 // Displays a different language, eg "en" or "fr"
42303 this.setLanguage = function(language) {
42304 for (var i=0; i<allEls.length; i++) {
42305 var el = allEls[i];
42306 var key = el.key;
42307 if (!(language in allPhrases)) {
42308 console.log(language + " not in allPhrases");
42309 return;
42310 }
42311 if (!(key in allPhrases[language])) {
42312 console.log(language + " does not contain phrase: " + key);
42313 return;
42314 }
42315 var phrase = allPhrases[language][key];
42316 el.setPhrase(phrase);
42317 }
42318 }
42319
42320 // Converts the phrases to a key-pair json file.
42321 // This is a good way to export phrases for use in translation tools.
42322 this.phrasesAsJson = function(language) {
42323 var keys = [];
42324 for (var i=0; i<allEls.length; i++) {
42325 var el = allEls[i];
42326 var key = el.key;
42327 keys.push(key);
42328 }
42329 keys.sort();
42330 var output = {};
42331 for (var i=0; i<keys.length; i++) {
42332 var key = keys[i];
42333 var translated = "";
42334 if (language in allPhrases && key in allPhrases[language]) {
42335 translated = allPhrases[language][key];
42336 }
42337 output[key] = translated;
42338 }
42339 return JSON.stringify(output, null, 2);
42340 }
42341
42342 function getEls(nodeType) {
42343 var nodes = document.querySelectorAll(nodeType.selector);
42344 var els = [];
42345 for (var i=0; i<nodes.length; i++) {
42346 var node = nodes[i];
42347 node.getKey = nodeType.getKey;
42348 node.setPhrase = nodeType.setPhrase;
42349 node.key = node.getKey();
42350 allPhrases[defaultLanguage][node.key] = node.key;
42351 els.push(node);
42352 }
42353 return els;
42354 }
42355
42356 })();
42357 </script>
42358 <script>Translate.loadForeignPhrases("en",
42359 {
42360 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
42361 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
42362 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
42363 "<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).",
42364 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
42365 "Account": "Account",
42366 "Address": "Address",
42367 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
42368 "BIP32 Derivation Path": "BIP32 Derivation Path",
42369 "BIP32 Extended Key": "BIP32 Extended Key",
42370 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
42371 "BIP32 Root Key": "BIP32 Root Key",
42372 "BIP39 Mnemonic": "BIP39 Mnemonic",
42373 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
42374 "BIP39 Seed": "BIP39 Seed",
42375 "Base 10": "Base 10",
42376 "Base 6": "Base 6",
42377 "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.",
42378 "Binary": "Binary",
42379 "Bitcoin Core": "Bitcoin Core",
42380 "Bits Per Event": "Bits Per Event",
42381 "Block Explorers": "Block Explorers",
42382 "Can be used with": "Can be used with",
42383 "Card": "Card",
42384 "Coin": "Coin",
42385 "Dice": "Dice",
42386 "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.",
42387 "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.",
42388 "Entropy": "Entropy",
42389 "Entropy Type": "Entropy Type",
42390 "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.",
42391 "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>.",
42392 "Event Count": "Event Count",
42393 "External / Internal": "External / Internal",
42394 "Filtered Entropy": "Filtered Entropy",
42395 "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>",
42396 "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>.",
42397 "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>.",
42398 "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>",
42399 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
42400 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
42401 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
42402 "Get the source code from the repository": "Get the source code from the repository",
42403 "Hex": "Hex",
42404 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
42405 "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.",
42406 "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.",
42407 "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.",
42408 "Libraries": "Libraries",
42409 "Mnemonic Language": "Mnemonic Language",
42410 "Mnemonic Length": "Mnemonic Length",
42411 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
42412 "More info": "More info",
42413 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
42414 "Mycelium Wallet": "Mycelium Wallet",
42415 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
42416 "Offline Usage": "Offline Usage",
42417 "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.",
42418 "Path": "Path",
42419 "Private Key": "Private Key",
42420 "Private Keys": "Private Keys",
42421 "Public Key": "Public Key",
42422 "Purpose": "Purpose",
42423 "Raw Binary": "Raw Binary",
42424 "Read more": "Read more",
42425 "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>",
42426 "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>",
42427 "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>",
42428 "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>",
42429 "Show": "Show",
42430 "Show more rows": "Show more rows",
42431 "Strength": "Strength",
42432 "Supply my own source of entropy": "Supply my own source of entropy",
42433 "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.",
42434 "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>.",
42435 "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.",
42436 "This project is 100% open-source code": "This project is 100% open-source code",
42437 "Toggle": "Toggle",
42438 "Total Bits": "Total Bits",
42439 "Use hardened addresses": "Use hardened addresses",
42440 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
42441 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
42442 "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>.",
42443 "Valid entropy values include:": "Valid entropy values include:",
42444 "Warning": "Warning",
42445 "Word Count": "Word Count",
42446 "You are not a good source of entropy.": "You are not a good source of entropy.",
42447 "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).",
42448 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
42449 "words": "words"
42450 }
42451 );
42452 </script>
42453 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42454 WORDLISTS["english"] = [
42455 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
42456 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
42457 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
42458 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
42459 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
42460 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
42461 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
42462 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
42463 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
42464 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
42465 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
42466 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
42467 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
42468 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
42469 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
42470 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
42471 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
42472 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
42473 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
42474 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
42475 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
42476 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
42477 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
42478 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
42479 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
42480 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
42481 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
42482 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
42483 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
42484 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
42485 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
42486 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
42487 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
42488 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
42489 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
42490 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
42491 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
42492 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
42493 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
42494 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42495 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
42496 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
42497 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
42498 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
42499 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
42500 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
42501 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
42502 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
42503 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
42504 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
42505 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
42506 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
42507 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
42508 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
42509 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
42510 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
42511 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
42512 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
42513 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
42514 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
42515 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
42516 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
42517 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
42518 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
42519 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
42520 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
42521 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
42522 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
42523 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
42524 "film","filter","final","find","fine","finger","finish","fire","firm","first",
42525 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
42526 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
42527 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
42528 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
42529 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
42530 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
42531 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
42532 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
42533 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
42534 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
42535 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
42536 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
42537 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
42538 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
42539 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
42540 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
42541 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
42542 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
42543 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
42544 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
42545 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
42546 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
42547 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
42548 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
42549 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
42550 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
42551 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
42552 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
42553 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
42554 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
42555 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
42556 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
42557 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
42558 "liar","liberty","library","license","life","lift","light","like","limb","limit",
42559 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
42560 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
42561 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
42562 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
42563 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
42564 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
42565 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
42566 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
42567 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
42568 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
42569 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
42570 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
42571 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
42572 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
42573 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
42574 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
42575 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
42576 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
42577 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
42578 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
42579 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
42580 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
42581 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
42582 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
42583 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
42584 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
42585 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
42586 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
42587 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
42588 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
42589 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
42590 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
42591 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
42592 "prize","problem","process","produce","profit","program","project","promote","proof","property",
42593 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
42594 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
42595 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
42596 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
42597 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
42598 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
42599 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
42600 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
42601 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
42602 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
42603 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
42604 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
42605 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
42606 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
42607 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
42608 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
42609 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
42610 "scrub","sea","search","season","seat","second","secret","section","security","seed",
42611 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
42612 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
42613 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
42614 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
42615 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
42616 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
42617 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
42618 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
42619 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
42620 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
42621 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
42622 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
42623 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
42624 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
42625 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
42626 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
42627 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
42628 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
42629 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
42630 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
42631 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
42632 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
42633 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
42634 "thank","that","theme","then","theory","there","they","thing","this","thought",
42635 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
42636 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
42637 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
42638 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
42639 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
42640 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
42641 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
42642 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
42643 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
42644 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
42645 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
42646 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
42647 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
42648 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
42649 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
42650 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
42651 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
42652 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
42653 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
42654 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
42655 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
42656 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
42657 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
42658 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
42659 "yellow","you","young","youth","zebra","zero","zone","zoo"]
42660 </script>
42661 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42662 WORDLISTS["japanese"] = [
42663 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
42664 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
42665 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
42666 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
42667 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
42668 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
42669 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
42670 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
42671 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
42672 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
42673 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
42674 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
42675 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
42676 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
42677 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
42678 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
42679 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
42680 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
42681 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
42682 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
42683 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
42684 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
42685 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
42686 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
42687 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
42688 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
42689 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
42690 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
42691 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
42692 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
42693 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
42694 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
42695 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
42696 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
42697 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
42698 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
42699 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
42700 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
42701 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
42702 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
42703 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
42704 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
42705 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
42706 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
42707 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
42708 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
42709 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
42710 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
42711 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
42712 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
42713 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
42714 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
42715 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
42716 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
42717 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
42718 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
42719 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
42720 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
42721 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
42722 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
42723 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
42724 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
42725 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
42726 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
42727 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
42728 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
42729 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
42730 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
42731 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
42732 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
42733 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
42734 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
42735 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
42736 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
42737 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
42738 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
42739 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
42740 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
42741 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
42742 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
42743 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
42744 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
42745 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
42746 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
42747 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
42748 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
42749 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
42750 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
42751 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
42752 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
42753 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
42754 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
42755 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
42756 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
42757 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
42758 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
42759 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
42760 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
42761 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
42762 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
42763 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
42764 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
42765 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
42766 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
42767 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
42768 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
42769 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
42770 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
42771 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
42772 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
42773 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
42774 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
42775 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
42776 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
42777 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
42778 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
42779 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
42780 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
42781 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
42782 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
42783 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
42784 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
42785 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
42786 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
42787 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
42788 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
42789 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
42790 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
42791 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
42792 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
42793 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
42794 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
42795 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
42796 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
42797 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
42798 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
42799 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
42800 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
42801 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
42802 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
42803 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
42804 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
42805 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
42806 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
42807 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
42808 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
42809 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
42810 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
42811 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
42812 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
42813 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
42814 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
42815 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
42816 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
42817 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
42818 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
42819 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
42820 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
42821 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
42822 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
42823 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
42824 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
42825 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
42826 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
42827 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
42828 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
42829 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
42830 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
42831 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
42832 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
42833 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
42834 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
42835 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
42836 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
42837 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
42838 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
42839 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
42840 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
42841 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
42842 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
42843 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
42844 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
42845 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
42846 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
42847 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
42848 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
42849 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
42850 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
42851 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
42852 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
42853 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
42854 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
42855 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
42856 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
42857 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
42858 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
42859 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
42860 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
42861 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
42862 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
42863 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
42864 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
42865 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
42866 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
42867 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
42868 </script>
42869 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42870 WORDLISTS["spanish"] = [
42871 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
42872 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
42873 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
42874 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
42875 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
42876 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
42877 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
42878 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
42879 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
42880 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
42881 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
42882 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
42883 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
42884 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
42885 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
42886 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
42887 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
42888 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
42889 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
42890 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
42891 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
42892 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
42893 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
42894 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
42895 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
42896 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
42897 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
42898 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
42899 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
42900 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
42901 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
42902 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
42903 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
42904 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
42905 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
42906 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
42907 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
42908 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
42909 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
42910 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
42911 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
42912 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
42913 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
42914 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
42915 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
42916 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
42917 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
42918 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
42919 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
42920 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
42921 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
42922 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
42923 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
42924 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
42925 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
42926 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
42927 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
42928 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
42929 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
42930 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
42931 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
42932 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
42933 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
42934 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
42935 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
42936 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
42937 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
42938 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
42939 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
42940 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
42941 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
42942 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
42943 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
42944 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
42945 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
42946 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
42947 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
42948 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
42949 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
42950 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
42951 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
42952 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
42953 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
42954 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
42955 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
42956 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
42957 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
42958 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
42959 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
42960 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
42961 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
42962 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
42963 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
42964 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
42965 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
42966 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
42967 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
42968 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
42969 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
42970 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
42971 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
42972 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
42973 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
42974 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
42975 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
42976 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
42977 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
42978 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
42979 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
42980 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
42981 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
42982 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
42983 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
42984 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
42985 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
42986 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
42987 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
42988 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
42989 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
42990 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
42991 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
42992 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
42993 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
42994 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
42995 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
42996 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
42997 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
42998 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
42999 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
43000 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
43001 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
43002 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
43003 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
43004 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
43005 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
43006 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
43007 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
43008 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
43009 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
43010 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
43011 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
43012 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
43013 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
43014 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
43015 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
43016 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
43017 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
43018 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
43019 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
43020 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
43021 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
43022 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
43023 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
43024 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
43025 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
43026 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
43027 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
43028 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
43029 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
43030 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
43031 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
43032 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
43033 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
43034 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
43035 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
43036 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
43037 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
43038 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
43039 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
43040 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
43041 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
43042 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
43043 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
43044 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
43045 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
43046 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
43047 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
43048 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
43049 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
43050 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
43051 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
43052 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
43053 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
43054 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
43055 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
43056 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
43057 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
43058 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
43059 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
43060 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
43061 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
43062 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
43063 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
43064 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
43065 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
43066 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
43067 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
43068 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
43069 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
43070 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
43071 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
43072 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
43073 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
43074 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
43075 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
43076 </script>
43077 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43078 WORDLISTS["chinese_simplified"] = [
43079 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
43080 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
43081 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
43082 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
43083 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
43084 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
43085 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
43086 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
43087 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
43088 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
43089 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
43090 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43091 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
43092 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
43093 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
43094 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
43095 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
43096 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
43097 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
43098 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
43099 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
43100 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
43101 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
43102 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
43103 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
43104 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
43105 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
43106 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
43107 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
43108 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
43109 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
43110 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
43111 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
43112 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
43113 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
43114 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
43115 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
43116 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
43117 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
43118 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
43119 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
43120 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
43121 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
43122 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
43123 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
43124 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
43125 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
43126 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
43127 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
43128 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
43129 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
43130 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
43131 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
43132 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
43133 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
43134 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
43135 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
43136 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
43137 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
43138 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
43139 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
43140 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
43141 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
43142 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
43143 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
43144 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
43145 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
43146 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
43147 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
43148 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
43149 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
43150 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
43151 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
43152 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
43153 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
43154 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43155 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
43156 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
43157 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
43158 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
43159 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
43160 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
43161 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
43162 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
43163 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
43164 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
43165 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
43166 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
43167 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
43168 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
43169 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
43170 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
43171 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43172 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
43173 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
43174 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
43175 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
43176 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
43177 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
43178 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
43179 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
43180 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
43181 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
43182 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
43183 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
43184 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
43185 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
43186 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
43187 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43188 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43189 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
43190 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
43191 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
43192 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
43193 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
43194 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
43195 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
43196 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
43197 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
43198 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
43199 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
43200 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43201 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
43202 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
43203 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
43204 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
43205 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
43206 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
43207 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
43208 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
43209 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
43210 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
43211 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
43212 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
43213 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
43214 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
43215 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
43216 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
43217 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
43218 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
43219 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
43220 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
43221 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
43222 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
43223 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
43224 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
43225 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
43226 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
43227 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
43228 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
43229 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
43230 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
43231 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
43232 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
43233 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
43234 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
43235 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
43236 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
43237 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
43238 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
43239 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
43240 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
43241 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
43242 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
43243 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
43244 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
43245 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
43246 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
43247 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
43248 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
43249 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
43250 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
43251 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
43252 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
43253 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
43254 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
43255 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
43256 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
43257 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
43258 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
43259 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
43260 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
43261 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
43262 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
43263 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
43264 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
43265 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
43266 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
43267 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
43268 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
43269 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
43270 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
43271 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
43272 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
43273 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
43274 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
43275 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
43276 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
43277 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
43278 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
43279 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
43280 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
43281 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
43282 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
43283 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
43284 </script>
43285 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43286 WORDLISTS["chinese_traditional"] = [
43287 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
43288 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
43289 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
43290 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
43291 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
43292 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
43293 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
43294 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
43295 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
43296 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
43297 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
43298 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43299 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
43300 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
43301 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
43302 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
43303 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
43304 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
43305 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
43306 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
43307 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
43308 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
43309 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
43310 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
43311 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
43312 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
43313 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
43314 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
43315 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
43316 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
43317 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
43318 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
43319 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
43320 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
43321 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
43322 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
43323 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
43324 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
43325 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
43326 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
43327 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
43328 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
43329 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
43330 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
43331 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
43332 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
43333 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
43334 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
43335 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
43336 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
43337 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
43338 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
43339 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
43340 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
43341 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
43342 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
43343 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
43344 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
43345 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
43346 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
43347 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
43348 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
43349 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
43350 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
43351 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
43352 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
43353 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
43354 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
43355 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
43356 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
43357 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
43358 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
43359 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
43360 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
43361 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
43362 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43363 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
43364 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
43365 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
43366 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
43367 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
43368 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
43369 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
43370 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
43371 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
43372 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
43373 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
43374 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
43375 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
43376 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
43377 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
43378 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
43379 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43380 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
43381 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
43382 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
43383 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
43384 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
43385 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
43386 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
43387 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
43388 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
43389 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
43390 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
43391 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
43392 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
43393 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
43394 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
43395 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43396 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43397 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
43398 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
43399 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
43400 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
43401 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
43402 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
43403 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
43404 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
43405 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
43406 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
43407 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
43408 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43409 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
43410 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
43411 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
43412 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
43413 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
43414 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
43415 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
43416 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
43417 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
43418 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
43419 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
43420 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
43421 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
43422 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
43423 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
43424 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
43425 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
43426 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
43427 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
43428 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
43429 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
43430 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
43431 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
43432 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
43433 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
43434 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
43435 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
43436 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
43437 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
43438 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
43439 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
43440 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
43441 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
43442 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
43443 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
43444 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
43445 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
43446 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
43447 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
43448 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
43449 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
43450 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
43451 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
43452 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
43453 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
43454 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
43455 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
43456 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
43457 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
43458 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
43459 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
43460 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
43461 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
43462 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
43463 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
43464 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
43465 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
43466 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
43467 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
43468 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
43469 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
43470 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
43471 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
43472 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
43473 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
43474 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
43475 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
43476 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
43477 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
43478 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
43479 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
43480 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
43481 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
43482 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
43483 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
43484 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
43485 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
43486 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
43487 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
43488 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
43489 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
43490 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
43491 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
43492 </script>
43493 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43494 WORDLISTS["french"] = [
43495 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
43496 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
43497 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
43498 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
43499 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
43500 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
43501 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
43502 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
43503 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
43504 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
43505 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
43506 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
43507 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
43508 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
43509 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
43510 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
43511 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
43512 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
43513 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
43514 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
43515 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
43516 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
43517 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
43518 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
43519 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
43520 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
43521 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
43522 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
43523 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
43524 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
43525 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
43526 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
43527 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
43528 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
43529 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
43530 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
43531 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
43532 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
43533 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
43534 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
43535 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
43536 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
43537 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
43538 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
43539 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
43540 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
43541 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
43542 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
43543 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
43544 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
43545 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
43546 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
43547 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
43548 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
43549 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
43550 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
43551 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
43552 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
43553 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
43554 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
43555 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
43556 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
43557 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
43558 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
43559 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
43560 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
43561 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
43562 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
43563 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
43564 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
43565 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
43566 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
43567 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
43568 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
43569 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
43570 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
43571 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
43572 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
43573 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
43574 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
43575 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
43576 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
43577 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
43578 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
43579 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
43580 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
43581 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
43582 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
43583 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
43584 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
43585 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
43586 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
43587 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
43588 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
43589 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
43590 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
43591 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
43592 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
43593 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
43594 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
43595 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
43596 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
43597 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
43598 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
43599 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
43600 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
43601 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
43602 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
43603 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
43604 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
43605 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
43606 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
43607 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
43608 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
43609 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
43610 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
43611 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
43612 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
43613 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
43614 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
43615 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
43616 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
43617 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
43618 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
43619 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
43620 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
43621 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
43622 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
43623 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
43624 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
43625 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
43626 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
43627 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
43628 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
43629 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
43630 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
43631 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
43632 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
43633 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
43634 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
43635 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
43636 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
43637 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
43638 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
43639 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
43640 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
43641 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
43642 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
43643 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
43644 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
43645 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
43646 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
43647 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
43648 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
43649 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
43650 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
43651 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
43652 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
43653 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
43654 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
43655 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
43656 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
43657 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
43658 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
43659 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
43660 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
43661 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
43662 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
43663 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
43664 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
43665 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
43666 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
43667 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
43668 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
43669 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
43670 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
43671 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
43672 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
43673 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
43674 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
43675 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
43676 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
43677 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
43678 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
43679 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
43680 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
43681 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
43682 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
43683 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
43684 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
43685 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
43686 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
43687 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
43688 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
43689 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
43690 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
43691 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
43692 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
43693 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
43694 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
43695 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
43696 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
43697 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
43698 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
43699 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
43700 </script>
43701 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43702 WORDLISTS["italian"] = [
43703 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
43704 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
43705 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
43706 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
43707 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
43708 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
43709 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
43710 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
43711 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
43712 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
43713 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
43714 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
43715 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
43716 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
43717 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
43718 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
43719 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
43720 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
43721 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
43722 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
43723 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
43724 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
43725 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
43726 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
43727 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
43728 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
43729 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
43730 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
43731 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
43732 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
43733 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
43734 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
43735 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
43736 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
43737 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
43738 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
43739 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
43740 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
43741 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
43742 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
43743 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
43744 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
43745 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
43746 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
43747 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
43748 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
43749 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
43750 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
43751 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
43752 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
43753 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
43754 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
43755 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
43756 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
43757 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
43758 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
43759 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
43760 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
43761 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
43762 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
43763 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
43764 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
43765 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
43766 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
43767 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
43768 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
43769 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
43770 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
43771 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
43772 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
43773 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
43774 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
43775 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
43776 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
43777 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
43778 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
43779 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
43780 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
43781 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
43782 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
43783 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
43784 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
43785 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
43786 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
43787 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
43788 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
43789 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
43790 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
43791 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
43792 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
43793 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
43794 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
43795 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
43796 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
43797 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
43798 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
43799 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
43800 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
43801 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
43802 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
43803 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
43804 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
43805 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
43806 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
43807 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
43808 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
43809 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
43810 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
43811 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
43812 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
43813 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
43814 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
43815 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
43816 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
43817 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
43818 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
43819 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
43820 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
43821 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
43822 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
43823 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
43824 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
43825 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
43826 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
43827 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
43828 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
43829 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
43830 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
43831 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
43832 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
43833 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
43834 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
43835 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
43836 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
43837 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
43838 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
43839 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
43840 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
43841 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
43842 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
43843 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
43844 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
43845 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
43846 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
43847 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
43848 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
43849 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
43850 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
43851 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
43852 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
43853 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
43854 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
43855 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
43856 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
43857 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
43858 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
43859 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
43860 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
43861 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
43862 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
43863 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
43864 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
43865 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
43866 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
43867 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
43868 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
43869 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
43870 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
43871 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
43872 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
43873 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
43874 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
43875 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
43876 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
43877 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
43878 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
43879 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
43880 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
43881 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
43882 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
43883 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
43884 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
43885 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
43886 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
43887 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
43888 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
43889 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
43890 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
43891 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
43892 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
43893 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
43894 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
43895 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
43896 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
43897 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
43898 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
43899 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
43900 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
43901 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
43902 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
43903 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
43904 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
43905 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
43906 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
43907 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
43908 </script>
43909 <script>/*
43910 * Copyright (c) 2013 Pavol Rusnak
43911 *
43912 * Permission is hereby granted, free of charge, to any person obtaining a copy of
43913 * this software and associated documentation files (the "Software"), to deal in
43914 * the Software without restriction, including without limitation the rights to
43915 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
43916 * of the Software, and to permit persons to whom the Software is furnished to do
43917 * so, subject to the following conditions:
43918 *
43919 * The above copyright notice and this permission notice shall be included in all
43920 * copies or substantial portions of the Software.
43921 *
43922 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43923 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43924 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43925 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43926 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43927 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43928 */
43929
43930 /*
43931 * Javascript port from python by Ian Coleman
43932 *
43933 * Requires code from sjcl
43934 * https://github.com/bitwiseshiftleft/sjcl
43935 */
43936
43937 var Mnemonic = function(language) {
43938
43939 var PBKDF2_ROUNDS = 2048;
43940 var RADIX = 2048;
43941
43942 var self = this;
43943 var wordlist = [];
43944
43945 var hmacSHA512 = function(key) {
43946 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
43947 this.encrypt = function() {
43948 return hasher.encrypt.apply(hasher, arguments);
43949 };
43950 };
43951
43952 function init() {
43953 wordlist = WORDLISTS[language];
43954 if (wordlist.length != RADIX) {
43955 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
43956 throw err;
43957 }
43958 }
43959
43960 self.generate = function(strength) {
43961 strength = strength || 128;
43962 var r = strength % 32;
43963 if (r > 0) {
43964 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
43965 }
43966 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
43967 if (!hasStrongCrypto) {
43968 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
43969 }
43970 var buffer = new Uint8Array(strength / 8);
43971 var data = crypto.getRandomValues(buffer);
43972 return self.toMnemonic(data);
43973 }
43974
43975 self.toMnemonic = function(byteArray) {
43976 if (byteArray.length % 4 > 0) {
43977 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
43978 }
43979
43980 //h = hashlib.sha256(data).hexdigest()
43981 var data = byteArrayToWordArray(byteArray);
43982 var hash = sjcl.hash.sha256.hash(data);
43983 var h = sjcl.codec.hex.fromBits(hash);
43984
43985 // b is a binary string, eg '00111010101100...'
43986 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
43987 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
43988 //
43989 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
43990 // c = bin(int(h, 16))[2:].zfill(256)
43991 // d = c[:len(data) * 8 / 32]
43992 var a = byteArrayToBinaryString(byteArray);
43993 var c = zfill(hexStringToBinaryString(h), 256);
43994 var d = c.substring(0, byteArray.length * 8 / 32);
43995 // b = line1 + line2
43996 var b = a + d;
43997
43998 var result = [];
43999 var blen = b.length / 11;
44000 for (var i=0; i<blen; i++) {
44001 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
44002 result.push(wordlist[idx]);
44003 }
44004 return self.joinWords(result);
44005 }
44006
44007 self.check = function(mnemonic) {
44008 var mnemonic = self.splitWords(mnemonic);
44009 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
44010 return false
44011 }
44012 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
44013 var idx = [];
44014 for (var i=0; i<mnemonic.length; i++) {
44015 var word = mnemonic[i];
44016 var wordIndex = wordlist.indexOf(word);
44017 if (wordIndex == -1) {
44018 return false;
44019 }
44020 var binaryIndex = zfill(wordIndex.toString(2), 11);
44021 idx.push(binaryIndex);
44022 }
44023 var b = idx.join('');
44024 var l = b.length;
44025 //d = b[:l / 33 * 32]
44026 //h = b[-l / 33:]
44027 var d = b.substring(0, l / 33 * 32);
44028 var h = b.substring(l - l / 33, l);
44029 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
44030 var nd = binaryStringToWordArray(d);
44031 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
44032 var ndHash = sjcl.hash.sha256.hash(nd);
44033 var ndHex = sjcl.codec.hex.fromBits(ndHash);
44034 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
44035 var nh = ndBstr.substring(0,l/33);
44036 return h == nh;
44037 }
44038
44039 self.toSeed = function(mnemonic, passphrase) {
44040 passphrase = passphrase || '';
44041 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
44042 var mnemonicNormalized = self.normalizeString(mnemonic);
44043 passphrase = self.normalizeString(passphrase)
44044 passphrase = "mnemonic" + passphrase;
44045 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
44046 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
44047 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
44048 var hashHex = sjcl.codec.hex.fromBits(result);
44049 return hashHex;
44050 }
44051
44052 self.splitWords = function(mnemonic) {
44053 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
44054 }
44055
44056 self.joinWords = function(words) {
44057 // Set space correctly depending on the language
44058 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
44059 var space = " ";
44060 if (language == "japanese") {
44061 space = "\u3000"; // ideographic space
44062 }
44063 return words.join(space);
44064 }
44065
44066 self.normalizeString = function(str) {
44067 if (typeof str.normalize == "function") {
44068 return str.normalize("NFKD");
44069 }
44070 else {
44071 // TODO decide how to handle this in the future.
44072 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
44073 return str;
44074 }
44075 }
44076
44077 function byteArrayToWordArray(data) {
44078 var a = [];
44079 for (var i=0; i<data.length/4; i++) {
44080 v = 0;
44081 v += data[i*4 + 0] << 8 * 3;
44082 v += data[i*4 + 1] << 8 * 2;
44083 v += data[i*4 + 2] << 8 * 1;
44084 v += data[i*4 + 3] << 8 * 0;
44085 a.push(v);
44086 }
44087 return a;
44088 }
44089
44090 function byteArrayToBinaryString(data) {
44091 var bin = "";
44092 for (var i=0; i<data.length; i++) {
44093 bin += zfill(data[i].toString(2), 8);
44094 }
44095 return bin;
44096 }
44097
44098 function hexStringToBinaryString(hexString) {
44099 binaryString = "";
44100 for (var i=0; i<hexString.length; i++) {
44101 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
44102 }
44103 return binaryString;
44104 }
44105
44106 function binaryStringToWordArray(binary) {
44107 var aLen = binary.length / 32;
44108 var a = [];
44109 for (var i=0; i<aLen; i++) {
44110 var valueStr = binary.substring(0,32);
44111 var value = parseInt(valueStr, 2);
44112 a.push(value);
44113 binary = binary.slice(32);
44114 }
44115 return a;
44116 }
44117
44118 // Pad a numeric string on the left with zero digits until the given width
44119 // is reached.
44120 // Note this differs to the python implementation because it does not
44121 // handle numbers starting with a sign.
44122 function zfill(source, length) {
44123 source = source.toString();
44124 while (source.length < length) {
44125 source = '0' + source;
44126 }
44127 return source;
44128 }
44129
44130 init();
44131
44132 }
44133 </script>
44134 <script>/*
44135 JavaScript BigInteger library version 0.9.1
44136 http://silentmatt.com/biginteger/
44137
44138 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
44139 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
44140 Licensed under the MIT license.
44141
44142 Support for arbitrary internal representation base was added by
44143 Vitaly Magerya.
44144 */
44145
44146 /*
44147 File: biginteger.js
44148
44149 Exports:
44150
44151 <BigInteger>
44152 */
44153 (function(exports) {
44154 "use strict";
44155 /*
44156 Class: BigInteger
44157 An arbitrarily-large integer.
44158
44159 <BigInteger> objects should be considered immutable. None of the "built-in"
44160 methods modify *this* or their arguments. All properties should be
44161 considered private.
44162
44163 All the methods of <BigInteger> instances can be called "statically". The
44164 static versions are convenient if you don't already have a <BigInteger>
44165 object.
44166
44167 As an example, these calls are equivalent.
44168
44169 > BigInteger(4).multiply(5); // returns BigInteger(20);
44170 > BigInteger.multiply(4, 5); // returns BigInteger(20);
44171
44172 > var a = 42;
44173 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
44174 */
44175
44176 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
44177
44178 /*
44179 Constructor: BigInteger()
44180 Convert a value to a <BigInteger>.
44181
44182 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
44183 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
44184 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
44185 without a radix argument.
44186
44187 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
44188 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
44189 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
44190 > var n3 = BigInteger(n2); // Return n2, unchanged
44191
44192 The constructor form only takes an array and a sign. *n* must be an
44193 array of numbers in little-endian order, where each digit is between 0
44194 and BigInteger.base. The second parameter sets the sign: -1 for
44195 negative, +1 for positive, or 0 for zero. The array is *not copied and
44196 may be modified*. If the array contains only zeros, the sign parameter
44197 is ignored and is forced to zero.
44198
44199 > new BigInteger([5], -1): create a new BigInteger with value -5
44200
44201 Parameters:
44202
44203 n - Value to convert to a <BigInteger>.
44204
44205 Returns:
44206
44207 A <BigInteger> value.
44208
44209 See Also:
44210
44211 <parse>, <BigInteger>
44212 */
44213 function BigInteger(n, s, token) {
44214 if (token !== CONSTRUCT) {
44215 if (n instanceof BigInteger) {
44216 return n;
44217 }
44218 else if (typeof n === "undefined") {
44219 return ZERO;
44220 }
44221 return BigInteger.parse(n);
44222 }
44223
44224 n = n || []; // Provide the nullary constructor for subclasses.
44225 while (n.length && !n[n.length - 1]) {
44226 --n.length;
44227 }
44228 this._d = n;
44229 this._s = n.length ? (s || 1) : 0;
44230 }
44231
44232 BigInteger._construct = function(n, s) {
44233 return new BigInteger(n, s, CONSTRUCT);
44234 };
44235
44236 // Base-10 speedup hacks in parse, toString, exp10 and log functions
44237 // require base to be a power of 10. 10^7 is the largest such power
44238 // that won't cause a precision loss when digits are multiplied.
44239 var BigInteger_base = 10000000;
44240 var BigInteger_base_log10 = 7;
44241
44242 BigInteger.base = BigInteger_base;
44243 BigInteger.base_log10 = BigInteger_base_log10;
44244
44245 var ZERO = new BigInteger([], 0, CONSTRUCT);
44246 // Constant: ZERO
44247 // <BigInteger> 0.
44248 BigInteger.ZERO = ZERO;
44249
44250 var ONE = new BigInteger([1], 1, CONSTRUCT);
44251 // Constant: ONE
44252 // <BigInteger> 1.
44253 BigInteger.ONE = ONE;
44254
44255 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
44256 // Constant: M_ONE
44257 // <BigInteger> -1.
44258 BigInteger.M_ONE = M_ONE;
44259
44260 // Constant: _0
44261 // Shortcut for <ZERO>.
44262 BigInteger._0 = ZERO;
44263
44264 // Constant: _1
44265 // Shortcut for <ONE>.
44266 BigInteger._1 = ONE;
44267
44268 /*
44269 Constant: small
44270 Array of <BigIntegers> from 0 to 36.
44271
44272 These are used internally for parsing, but useful when you need a "small"
44273 <BigInteger>.
44274
44275 See Also:
44276
44277 <ZERO>, <ONE>, <_0>, <_1>
44278 */
44279 BigInteger.small = [
44280 ZERO,
44281 ONE,
44282 /* Assuming BigInteger_base > 36 */
44283 new BigInteger( [2], 1, CONSTRUCT),
44284 new BigInteger( [3], 1, CONSTRUCT),
44285 new BigInteger( [4], 1, CONSTRUCT),
44286 new BigInteger( [5], 1, CONSTRUCT),
44287 new BigInteger( [6], 1, CONSTRUCT),
44288 new BigInteger( [7], 1, CONSTRUCT),
44289 new BigInteger( [8], 1, CONSTRUCT),
44290 new BigInteger( [9], 1, CONSTRUCT),
44291 new BigInteger([10], 1, CONSTRUCT),
44292 new BigInteger([11], 1, CONSTRUCT),
44293 new BigInteger([12], 1, CONSTRUCT),
44294 new BigInteger([13], 1, CONSTRUCT),
44295 new BigInteger([14], 1, CONSTRUCT),
44296 new BigInteger([15], 1, CONSTRUCT),
44297 new BigInteger([16], 1, CONSTRUCT),
44298 new BigInteger([17], 1, CONSTRUCT),
44299 new BigInteger([18], 1, CONSTRUCT),
44300 new BigInteger([19], 1, CONSTRUCT),
44301 new BigInteger([20], 1, CONSTRUCT),
44302 new BigInteger([21], 1, CONSTRUCT),
44303 new BigInteger([22], 1, CONSTRUCT),
44304 new BigInteger([23], 1, CONSTRUCT),
44305 new BigInteger([24], 1, CONSTRUCT),
44306 new BigInteger([25], 1, CONSTRUCT),
44307 new BigInteger([26], 1, CONSTRUCT),
44308 new BigInteger([27], 1, CONSTRUCT),
44309 new BigInteger([28], 1, CONSTRUCT),
44310 new BigInteger([29], 1, CONSTRUCT),
44311 new BigInteger([30], 1, CONSTRUCT),
44312 new BigInteger([31], 1, CONSTRUCT),
44313 new BigInteger([32], 1, CONSTRUCT),
44314 new BigInteger([33], 1, CONSTRUCT),
44315 new BigInteger([34], 1, CONSTRUCT),
44316 new BigInteger([35], 1, CONSTRUCT),
44317 new BigInteger([36], 1, CONSTRUCT)
44318 ];
44319
44320 // Used for parsing/radix conversion
44321 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
44322
44323 /*
44324 Method: toString
44325 Convert a <BigInteger> to a string.
44326
44327 When *base* is greater than 10, letters are upper case.
44328
44329 Parameters:
44330
44331 base - Optional base to represent the number in (default is base 10).
44332 Must be between 2 and 36 inclusive, or an Error will be thrown.
44333
44334 Returns:
44335
44336 The string representation of the <BigInteger>.
44337 */
44338 BigInteger.prototype.toString = function(base) {
44339 base = +base || 10;
44340 if (base < 2 || base > 36) {
44341 throw new Error("illegal radix " + base + ".");
44342 }
44343 if (this._s === 0) {
44344 return "0";
44345 }
44346 if (base === 10) {
44347 var str = this._s < 0 ? "-" : "";
44348 str += this._d[this._d.length - 1].toString();
44349 for (var i = this._d.length - 2; i >= 0; i--) {
44350 var group = this._d[i].toString();
44351 while (group.length < BigInteger_base_log10) group = '0' + group;
44352 str += group;
44353 }
44354 return str;
44355 }
44356 else {
44357 var numerals = BigInteger.digits;
44358 base = BigInteger.small[base];
44359 var sign = this._s;
44360
44361 var n = this.abs();
44362 var digits = [];
44363 var digit;
44364
44365 while (n._s !== 0) {
44366 var divmod = n.divRem(base);
44367 n = divmod[0];
44368 digit = divmod[1];
44369 // TODO: This could be changed to unshift instead of reversing at the end.
44370 // Benchmark both to compare speeds.
44371 digits.push(numerals[digit.valueOf()]);
44372 }
44373 return (sign < 0 ? "-" : "") + digits.reverse().join("");
44374 }
44375 };
44376
44377 // Verify strings for parsing
44378 BigInteger.radixRegex = [
44379 /^$/,
44380 /^$/,
44381 /^[01]*$/,
44382 /^[012]*$/,
44383 /^[0-3]*$/,
44384 /^[0-4]*$/,
44385 /^[0-5]*$/,
44386 /^[0-6]*$/,
44387 /^[0-7]*$/,
44388 /^[0-8]*$/,
44389 /^[0-9]*$/,
44390 /^[0-9aA]*$/,
44391 /^[0-9abAB]*$/,
44392 /^[0-9abcABC]*$/,
44393 /^[0-9a-dA-D]*$/,
44394 /^[0-9a-eA-E]*$/,
44395 /^[0-9a-fA-F]*$/,
44396 /^[0-9a-gA-G]*$/,
44397 /^[0-9a-hA-H]*$/,
44398 /^[0-9a-iA-I]*$/,
44399 /^[0-9a-jA-J]*$/,
44400 /^[0-9a-kA-K]*$/,
44401 /^[0-9a-lA-L]*$/,
44402 /^[0-9a-mA-M]*$/,
44403 /^[0-9a-nA-N]*$/,
44404 /^[0-9a-oA-O]*$/,
44405 /^[0-9a-pA-P]*$/,
44406 /^[0-9a-qA-Q]*$/,
44407 /^[0-9a-rA-R]*$/,
44408 /^[0-9a-sA-S]*$/,
44409 /^[0-9a-tA-T]*$/,
44410 /^[0-9a-uA-U]*$/,
44411 /^[0-9a-vA-V]*$/,
44412 /^[0-9a-wA-W]*$/,
44413 /^[0-9a-xA-X]*$/,
44414 /^[0-9a-yA-Y]*$/,
44415 /^[0-9a-zA-Z]*$/
44416 ];
44417
44418 /*
44419 Function: parse
44420 Parse a string into a <BigInteger>.
44421
44422 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
44423 *base* is not provided, it will be guessed based on the leading characters
44424 of *s* as follows:
44425
44426 - "0x" or "0X": *base* = 16
44427 - "0c" or "0C": *base* = 8
44428 - "0b" or "0B": *base* = 2
44429 - else: *base* = 10
44430
44431 If no base is provided, or *base* is 10, the number can be in exponential
44432 form. For example, these are all valid:
44433
44434 > BigInteger.parse("1e9"); // Same as "1000000000"
44435 > BigInteger.parse("1.234*10^3"); // Same as 1234
44436 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
44437
44438 If any characters fall outside the range defined by the radix, an exception
44439 will be thrown.
44440
44441 Parameters:
44442
44443 s - The string to parse.
44444 base - Optional radix (default is to guess based on *s*).
44445
44446 Returns:
44447
44448 a <BigInteger> instance.
44449 */
44450 BigInteger.parse = function(s, base) {
44451 // Expands a number in exponential form to decimal form.
44452 // expandExponential("-13.441*10^5") === "1344100";
44453 // expandExponential("1.12300e-1") === "0.112300";
44454 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
44455 function expandExponential(str) {
44456 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
44457
44458 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
44459 c = +c;
44460 var l = c < 0;
44461 var i = n.length + c;
44462 x = (l ? n : f).length;
44463 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
44464 var z = (new Array(c + 1)).join("0");
44465 var r = n + f;
44466 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
44467 });
44468 }
44469
44470 s = s.toString();
44471 if (typeof base === "undefined" || +base === 10) {
44472 s = expandExponential(s);
44473 }
44474
44475 var prefixRE;
44476 if (typeof base === "undefined") {
44477 prefixRE = '0[xcb]';
44478 }
44479 else if (base == 16) {
44480 prefixRE = '0x';
44481 }
44482 else if (base == 8) {
44483 prefixRE = '0c';
44484 }
44485 else if (base == 2) {
44486 prefixRE = '0b';
44487 }
44488 else {
44489 prefixRE = '';
44490 }
44491 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
44492 if (parts) {
44493 var sign = parts[1] || "+";
44494 var baseSection = parts[2] || "";
44495 var digits = parts[3] || "";
44496
44497 if (typeof base === "undefined") {
44498 // Guess base
44499 if (baseSection === "0x" || baseSection === "0X") { // Hex
44500 base = 16;
44501 }
44502 else if (baseSection === "0c" || baseSection === "0C") { // Octal
44503 base = 8;
44504 }
44505 else if (baseSection === "0b" || baseSection === "0B") { // Binary
44506 base = 2;
44507 }
44508 else {
44509 base = 10;
44510 }
44511 }
44512 else if (base < 2 || base > 36) {
44513 throw new Error("Illegal radix " + base + ".");
44514 }
44515
44516 base = +base;
44517
44518 // Check for digits outside the range
44519 if (!(BigInteger.radixRegex[base].test(digits))) {
44520 throw new Error("Bad digit for radix " + base);
44521 }
44522
44523 // Strip leading zeros, and convert to array
44524 digits = digits.replace(/^0+/, "").split("");
44525 if (digits.length === 0) {
44526 return ZERO;
44527 }
44528
44529 // Get the sign (we know it's not zero)
44530 sign = (sign === "-") ? -1 : 1;
44531
44532 // Optimize 10
44533 if (base == 10) {
44534 var d = [];
44535 while (digits.length >= BigInteger_base_log10) {
44536 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
44537 }
44538 d.push(parseInt(digits.join(''), 10));
44539 return new BigInteger(d, sign, CONSTRUCT);
44540 }
44541
44542 // Do the conversion
44543 var d = ZERO;
44544 base = BigInteger.small[base];
44545 var small = BigInteger.small;
44546 for (var i = 0; i < digits.length; i++) {
44547 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
44548 }
44549 return new BigInteger(d._d, sign, CONSTRUCT);
44550 }
44551 else {
44552 throw new Error("Invalid BigInteger format: " + s);
44553 }
44554 };
44555
44556 /*
44557 Function: add
44558 Add two <BigIntegers>.
44559
44560 Parameters:
44561
44562 n - The number to add to *this*. Will be converted to a <BigInteger>.
44563
44564 Returns:
44565
44566 The numbers added together.
44567
44568 See Also:
44569
44570 <subtract>, <multiply>, <quotient>, <next>
44571 */
44572 BigInteger.prototype.add = function(n) {
44573 if (this._s === 0) {
44574 return BigInteger(n);
44575 }
44576
44577 n = BigInteger(n);
44578 if (n._s === 0) {
44579 return this;
44580 }
44581 if (this._s !== n._s) {
44582 n = n.negate();
44583 return this.subtract(n);
44584 }
44585
44586 var a = this._d;
44587 var b = n._d;
44588 var al = a.length;
44589 var bl = b.length;
44590 var sum = new Array(Math.max(al, bl) + 1);
44591 var size = Math.min(al, bl);
44592 var carry = 0;
44593 var digit;
44594
44595 for (var i = 0; i < size; i++) {
44596 digit = a[i] + b[i] + carry;
44597 sum[i] = digit % BigInteger_base;
44598 carry = (digit / BigInteger_base) | 0;
44599 }
44600 if (bl > al) {
44601 a = b;
44602 al = bl;
44603 }
44604 for (i = size; carry && i < al; i++) {
44605 digit = a[i] + carry;
44606 sum[i] = digit % BigInteger_base;
44607 carry = (digit / BigInteger_base) | 0;
44608 }
44609 if (carry) {
44610 sum[i] = carry;
44611 }
44612
44613 for ( ; i < al; i++) {
44614 sum[i] = a[i];
44615 }
44616
44617 return new BigInteger(sum, this._s, CONSTRUCT);
44618 };
44619
44620 /*
44621 Function: negate
44622 Get the additive inverse of a <BigInteger>.
44623
44624 Returns:
44625
44626 A <BigInteger> with the same magnatude, but with the opposite sign.
44627
44628 See Also:
44629
44630 <abs>
44631 */
44632 BigInteger.prototype.negate = function() {
44633 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
44634 };
44635
44636 /*
44637 Function: abs
44638 Get the absolute value of a <BigInteger>.
44639
44640 Returns:
44641
44642 A <BigInteger> with the same magnatude, but always positive (or zero).
44643
44644 See Also:
44645
44646 <negate>
44647 */
44648 BigInteger.prototype.abs = function() {
44649 return (this._s < 0) ? this.negate() : this;
44650 };
44651
44652 /*
44653 Function: subtract
44654 Subtract two <BigIntegers>.
44655
44656 Parameters:
44657
44658 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
44659
44660 Returns:
44661
44662 The *n* subtracted from *this*.
44663
44664 See Also:
44665
44666 <add>, <multiply>, <quotient>, <prev>
44667 */
44668 BigInteger.prototype.subtract = function(n) {
44669 if (this._s === 0) {
44670 return BigInteger(n).negate();
44671 }
44672
44673 n = BigInteger(n);
44674 if (n._s === 0) {
44675 return this;
44676 }
44677 if (this._s !== n._s) {
44678 n = n.negate();
44679 return this.add(n);
44680 }
44681
44682 var m = this;
44683 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
44684 if (this._s < 0) {
44685 m = new BigInteger(n._d, 1, CONSTRUCT);
44686 n = new BigInteger(this._d, 1, CONSTRUCT);
44687 }
44688
44689 // Both are positive => a - b
44690 var sign = m.compareAbs(n);
44691 if (sign === 0) {
44692 return ZERO;
44693 }
44694 else if (sign < 0) {
44695 // swap m and n
44696 var t = n;
44697 n = m;
44698 m = t;
44699 }
44700
44701 // a > b
44702 var a = m._d;
44703 var b = n._d;
44704 var al = a.length;
44705 var bl = b.length;
44706 var diff = new Array(al); // al >= bl since a > b
44707 var borrow = 0;
44708 var i;
44709 var digit;
44710
44711 for (i = 0; i < bl; i++) {
44712 digit = a[i] - borrow - b[i];
44713 if (digit < 0) {
44714 digit += BigInteger_base;
44715 borrow = 1;
44716 }
44717 else {
44718 borrow = 0;
44719 }
44720 diff[i] = digit;
44721 }
44722 for (i = bl; i < al; i++) {
44723 digit = a[i] - borrow;
44724 if (digit < 0) {
44725 digit += BigInteger_base;
44726 }
44727 else {
44728 diff[i++] = digit;
44729 break;
44730 }
44731 diff[i] = digit;
44732 }
44733 for ( ; i < al; i++) {
44734 diff[i] = a[i];
44735 }
44736
44737 return new BigInteger(diff, sign, CONSTRUCT);
44738 };
44739
44740 (function() {
44741 function addOne(n, sign) {
44742 var a = n._d;
44743 var sum = a.slice();
44744 var carry = true;
44745 var i = 0;
44746
44747 while (true) {
44748 var digit = (a[i] || 0) + 1;
44749 sum[i] = digit % BigInteger_base;
44750 if (digit <= BigInteger_base - 1) {
44751 break;
44752 }
44753 ++i;
44754 }
44755
44756 return new BigInteger(sum, sign, CONSTRUCT);
44757 }
44758
44759 function subtractOne(n, sign) {
44760 var a = n._d;
44761 var sum = a.slice();
44762 var borrow = true;
44763 var i = 0;
44764
44765 while (true) {
44766 var digit = (a[i] || 0) - 1;
44767 if (digit < 0) {
44768 sum[i] = digit + BigInteger_base;
44769 }
44770 else {
44771 sum[i] = digit;
44772 break;
44773 }
44774 ++i;
44775 }
44776
44777 return new BigInteger(sum, sign, CONSTRUCT);
44778 }
44779
44780 /*
44781 Function: next
44782 Get the next <BigInteger> (add one).
44783
44784 Returns:
44785
44786 *this* + 1.
44787
44788 See Also:
44789
44790 <add>, <prev>
44791 */
44792 BigInteger.prototype.next = function() {
44793 switch (this._s) {
44794 case 0:
44795 return ONE;
44796 case -1:
44797 return subtractOne(this, -1);
44798 // case 1:
44799 default:
44800 return addOne(this, 1);
44801 }
44802 };
44803
44804 /*
44805 Function: prev
44806 Get the previous <BigInteger> (subtract one).
44807
44808 Returns:
44809
44810 *this* - 1.
44811
44812 See Also:
44813
44814 <next>, <subtract>
44815 */
44816 BigInteger.prototype.prev = function() {
44817 switch (this._s) {
44818 case 0:
44819 return M_ONE;
44820 case -1:
44821 return addOne(this, -1);
44822 // case 1:
44823 default:
44824 return subtractOne(this, 1);
44825 }
44826 };
44827 })();
44828
44829 /*
44830 Function: compareAbs
44831 Compare the absolute value of two <BigIntegers>.
44832
44833 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
44834
44835 Parameters:
44836
44837 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44838
44839 Returns:
44840
44841 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
44842
44843 See Also:
44844
44845 <compare>, <abs>
44846 */
44847 BigInteger.prototype.compareAbs = function(n) {
44848 if (this === n) {
44849 return 0;
44850 }
44851
44852 if (!(n instanceof BigInteger)) {
44853 if (!isFinite(n)) {
44854 return(isNaN(n) ? n : -1);
44855 }
44856 n = BigInteger(n);
44857 }
44858
44859 if (this._s === 0) {
44860 return (n._s !== 0) ? -1 : 0;
44861 }
44862 if (n._s === 0) {
44863 return 1;
44864 }
44865
44866 var l = this._d.length;
44867 var nl = n._d.length;
44868 if (l < nl) {
44869 return -1;
44870 }
44871 else if (l > nl) {
44872 return 1;
44873 }
44874
44875 var a = this._d;
44876 var b = n._d;
44877 for (var i = l-1; i >= 0; i--) {
44878 if (a[i] !== b[i]) {
44879 return a[i] < b[i] ? -1 : 1;
44880 }
44881 }
44882
44883 return 0;
44884 };
44885
44886 /*
44887 Function: compare
44888 Compare two <BigIntegers>.
44889
44890 Parameters:
44891
44892 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44893
44894 Returns:
44895
44896 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
44897
44898 See Also:
44899
44900 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
44901 */
44902 BigInteger.prototype.compare = function(n) {
44903 if (this === n) {
44904 return 0;
44905 }
44906
44907 n = BigInteger(n);
44908
44909 if (this._s === 0) {
44910 return -n._s;
44911 }
44912
44913 if (this._s === n._s) { // both positive or both negative
44914 var cmp = this.compareAbs(n);
44915 return cmp * this._s;
44916 }
44917 else {
44918 return this._s;
44919 }
44920 };
44921
44922 /*
44923 Function: isUnit
44924 Return true iff *this* is either 1 or -1.
44925
44926 Returns:
44927
44928 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
44929
44930 See Also:
44931
44932 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
44933 <BigInteger.ONE>, <BigInteger.M_ONE>
44934 */
44935 BigInteger.prototype.isUnit = function() {
44936 return this === ONE ||
44937 this === M_ONE ||
44938 (this._d.length === 1 && this._d[0] === 1);
44939 };
44940
44941 /*
44942 Function: multiply
44943 Multiply two <BigIntegers>.
44944
44945 Parameters:
44946
44947 n - The number to multiply *this* by. Will be converted to a
44948 <BigInteger>.
44949
44950 Returns:
44951
44952 The numbers multiplied together.
44953
44954 See Also:
44955
44956 <add>, <subtract>, <quotient>, <square>
44957 */
44958 BigInteger.prototype.multiply = function(n) {
44959 // TODO: Consider adding Karatsuba multiplication for large numbers
44960 if (this._s === 0) {
44961 return ZERO;
44962 }
44963
44964 n = BigInteger(n);
44965 if (n._s === 0) {
44966 return ZERO;
44967 }
44968 if (this.isUnit()) {
44969 if (this._s < 0) {
44970 return n.negate();
44971 }
44972 return n;
44973 }
44974 if (n.isUnit()) {
44975 if (n._s < 0) {
44976 return this.negate();
44977 }
44978 return this;
44979 }
44980 if (this === n) {
44981 return this.square();
44982 }
44983
44984 var r = (this._d.length >= n._d.length);
44985 var a = (r ? this : n)._d; // a will be longer than b
44986 var b = (r ? n : this)._d;
44987 var al = a.length;
44988 var bl = b.length;
44989
44990 var pl = al + bl;
44991 var partial = new Array(pl);
44992 var i;
44993 for (i = 0; i < pl; i++) {
44994 partial[i] = 0;
44995 }
44996
44997 for (i = 0; i < bl; i++) {
44998 var carry = 0;
44999 var bi = b[i];
45000 var jlimit = al + i;
45001 var digit;
45002 for (var j = i; j < jlimit; j++) {
45003 digit = partial[j] + bi * a[j - i] + carry;
45004 carry = (digit / BigInteger_base) | 0;
45005 partial[j] = (digit % BigInteger_base) | 0;
45006 }
45007 if (carry) {
45008 digit = partial[j] + carry;
45009 carry = (digit / BigInteger_base) | 0;
45010 partial[j] = digit % BigInteger_base;
45011 }
45012 }
45013 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
45014 };
45015
45016 // Multiply a BigInteger by a single-digit native number
45017 // Assumes that this and n are >= 0
45018 // This is not really intended to be used outside the library itself
45019 BigInteger.prototype.multiplySingleDigit = function(n) {
45020 if (n === 0 || this._s === 0) {
45021 return ZERO;
45022 }
45023 if (n === 1) {
45024 return this;
45025 }
45026
45027 var digit;
45028 if (this._d.length === 1) {
45029 digit = this._d[0] * n;
45030 if (digit >= BigInteger_base) {
45031 return new BigInteger([(digit % BigInteger_base)|0,
45032 (digit / BigInteger_base)|0], 1, CONSTRUCT);
45033 }
45034 return new BigInteger([digit], 1, CONSTRUCT);
45035 }
45036
45037 if (n === 2) {
45038 return this.add(this);
45039 }
45040 if (this.isUnit()) {
45041 return new BigInteger([n], 1, CONSTRUCT);
45042 }
45043
45044 var a = this._d;
45045 var al = a.length;
45046
45047 var pl = al + 1;
45048 var partial = new Array(pl);
45049 for (var i = 0; i < pl; i++) {
45050 partial[i] = 0;
45051 }
45052
45053 var carry = 0;
45054 for (var j = 0; j < al; j++) {
45055 digit = n * a[j] + carry;
45056 carry = (digit / BigInteger_base) | 0;
45057 partial[j] = (digit % BigInteger_base) | 0;
45058 }
45059 if (carry) {
45060 partial[j] = carry;
45061 }
45062
45063 return new BigInteger(partial, 1, CONSTRUCT);
45064 };
45065
45066 /*
45067 Function: square
45068 Multiply a <BigInteger> by itself.
45069
45070 This is slightly faster than regular multiplication, since it removes the
45071 duplicated multiplcations.
45072
45073 Returns:
45074
45075 > this.multiply(this)
45076
45077 See Also:
45078 <multiply>
45079 */
45080 BigInteger.prototype.square = function() {
45081 // Normally, squaring a 10-digit number would take 100 multiplications.
45082 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
45083 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
45084 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
45085
45086 if (this._s === 0) {
45087 return ZERO;
45088 }
45089 if (this.isUnit()) {
45090 return ONE;
45091 }
45092
45093 var digits = this._d;
45094 var length = digits.length;
45095 var imult1 = new Array(length + length + 1);
45096 var product, carry, k;
45097 var i;
45098
45099 // Calculate diagonal
45100 for (i = 0; i < length; i++) {
45101 k = i * 2;
45102 product = digits[i] * digits[i];
45103 carry = (product / BigInteger_base) | 0;
45104 imult1[k] = product % BigInteger_base;
45105 imult1[k + 1] = carry;
45106 }
45107
45108 // Calculate repeating part
45109 for (i = 0; i < length; i++) {
45110 carry = 0;
45111 k = i * 2 + 1;
45112 for (var j = i + 1; j < length; j++, k++) {
45113 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
45114 carry = (product / BigInteger_base) | 0;
45115 imult1[k] = product % BigInteger_base;
45116 }
45117 k = length + i;
45118 var digit = carry + imult1[k];
45119 carry = (digit / BigInteger_base) | 0;
45120 imult1[k] = digit % BigInteger_base;
45121 imult1[k + 1] += carry;
45122 }
45123
45124 return new BigInteger(imult1, 1, CONSTRUCT);
45125 };
45126
45127 /*
45128 Function: quotient
45129 Divide two <BigIntegers> and truncate towards zero.
45130
45131 <quotient> throws an exception if *n* is zero.
45132
45133 Parameters:
45134
45135 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45136
45137 Returns:
45138
45139 The *this* / *n*, truncated to an integer.
45140
45141 See Also:
45142
45143 <add>, <subtract>, <multiply>, <divRem>, <remainder>
45144 */
45145 BigInteger.prototype.quotient = function(n) {
45146 return this.divRem(n)[0];
45147 };
45148
45149 /*
45150 Function: divide
45151 Deprecated synonym for <quotient>.
45152 */
45153 BigInteger.prototype.divide = BigInteger.prototype.quotient;
45154
45155 /*
45156 Function: remainder
45157 Calculate the remainder of two <BigIntegers>.
45158
45159 <remainder> throws an exception if *n* is zero.
45160
45161 Parameters:
45162
45163 n - The remainder after *this* is divided *this* by *n*. Will be
45164 converted to a <BigInteger>.
45165
45166 Returns:
45167
45168 *this* % *n*.
45169
45170 See Also:
45171
45172 <divRem>, <quotient>
45173 */
45174 BigInteger.prototype.remainder = function(n) {
45175 return this.divRem(n)[1];
45176 };
45177
45178 /*
45179 Function: divRem
45180 Calculate the integer quotient and remainder of two <BigIntegers>.
45181
45182 <divRem> throws an exception if *n* is zero.
45183
45184 Parameters:
45185
45186 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45187
45188 Returns:
45189
45190 A two-element array containing the quotient and the remainder.
45191
45192 > a.divRem(b)
45193
45194 is exactly equivalent to
45195
45196 > [a.quotient(b), a.remainder(b)]
45197
45198 except it is faster, because they are calculated at the same time.
45199
45200 See Also:
45201
45202 <quotient>, <remainder>
45203 */
45204 BigInteger.prototype.divRem = function(n) {
45205 n = BigInteger(n);
45206 if (n._s === 0) {
45207 throw new Error("Divide by zero");
45208 }
45209 if (this._s === 0) {
45210 return [ZERO, ZERO];
45211 }
45212 if (n._d.length === 1) {
45213 return this.divRemSmall(n._s * n._d[0]);
45214 }
45215
45216 // Test for easy cases -- |n1| <= |n2|
45217 switch (this.compareAbs(n)) {
45218 case 0: // n1 == n2
45219 return [this._s === n._s ? ONE : M_ONE, ZERO];
45220 case -1: // |n1| < |n2|
45221 return [ZERO, this];
45222 }
45223
45224 var sign = this._s * n._s;
45225 var a = n.abs();
45226 var b_digits = this._d;
45227 var b_index = b_digits.length;
45228 var digits = n._d.length;
45229 var quot = [];
45230 var guess;
45231
45232 var part = new BigInteger([], 0, CONSTRUCT);
45233
45234 while (b_index) {
45235 part._d.unshift(b_digits[--b_index]);
45236 part = new BigInteger(part._d, 1, CONSTRUCT);
45237
45238 if (part.compareAbs(n) < 0) {
45239 quot.push(0);
45240 continue;
45241 }
45242 if (part._s === 0) {
45243 guess = 0;
45244 }
45245 else {
45246 var xlen = part._d.length, ylen = a._d.length;
45247 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
45248 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
45249 if (part._d.length > a._d.length) {
45250 // The length of part._d can either match a._d length,
45251 // or exceed it by one.
45252 highx = (highx+1)*BigInteger_base;
45253 }
45254 guess = Math.ceil(highx/highy);
45255 }
45256 do {
45257 var check = a.multiplySingleDigit(guess);
45258 if (check.compareAbs(part) <= 0) {
45259 break;
45260 }
45261 guess--;
45262 } while (guess);
45263
45264 quot.push(guess);
45265 if (!guess) {
45266 continue;
45267 }
45268 var diff = part.subtract(check);
45269 part._d = diff._d.slice();
45270 }
45271
45272 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
45273 new BigInteger(part._d, this._s, CONSTRUCT)];
45274 };
45275
45276 // Throws an exception if n is outside of (-BigInteger.base, -1] or
45277 // [1, BigInteger.base). It's not necessary to call this, since the
45278 // other division functions will call it if they are able to.
45279 BigInteger.prototype.divRemSmall = function(n) {
45280 var r;
45281 n = +n;
45282 if (n === 0) {
45283 throw new Error("Divide by zero");
45284 }
45285
45286 var n_s = n < 0 ? -1 : 1;
45287 var sign = this._s * n_s;
45288 n = Math.abs(n);
45289
45290 if (n < 1 || n >= BigInteger_base) {
45291 throw new Error("Argument out of range");
45292 }
45293
45294 if (this._s === 0) {
45295 return [ZERO, ZERO];
45296 }
45297
45298 if (n === 1 || n === -1) {
45299 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
45300 }
45301
45302 // 2 <= n < BigInteger_base
45303
45304 // divide a single digit by a single digit
45305 if (this._d.length === 1) {
45306 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
45307 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
45308 if (sign < 0) {
45309 q = q.negate();
45310 }
45311 if (this._s < 0) {
45312 r = r.negate();
45313 }
45314 return [q, r];
45315 }
45316
45317 var digits = this._d.slice();
45318 var quot = new Array(digits.length);
45319 var part = 0;
45320 var diff = 0;
45321 var i = 0;
45322 var guess;
45323
45324 while (digits.length) {
45325 part = part * BigInteger_base + digits[digits.length - 1];
45326 if (part < n) {
45327 quot[i++] = 0;
45328 digits.pop();
45329 diff = BigInteger_base * diff + part;
45330 continue;
45331 }
45332 if (part === 0) {
45333 guess = 0;
45334 }
45335 else {
45336 guess = (part / n) | 0;
45337 }
45338
45339 var check = n * guess;
45340 diff = part - check;
45341 quot[i++] = guess;
45342 if (!guess) {
45343 digits.pop();
45344 continue;
45345 }
45346
45347 digits.pop();
45348 part = diff;
45349 }
45350
45351 r = new BigInteger([diff], 1, CONSTRUCT);
45352 if (this._s < 0) {
45353 r = r.negate();
45354 }
45355 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
45356 };
45357
45358 /*
45359 Function: isEven
45360 Return true iff *this* is divisible by two.
45361
45362 Note that <BigInteger.ZERO> is even.
45363
45364 Returns:
45365
45366 true if *this* is even, false otherwise.
45367
45368 See Also:
45369
45370 <isOdd>
45371 */
45372 BigInteger.prototype.isEven = function() {
45373 var digits = this._d;
45374 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
45375 };
45376
45377 /*
45378 Function: isOdd
45379 Return true iff *this* is not divisible by two.
45380
45381 Returns:
45382
45383 true if *this* is odd, false otherwise.
45384
45385 See Also:
45386
45387 <isEven>
45388 */
45389 BigInteger.prototype.isOdd = function() {
45390 return !this.isEven();
45391 };
45392
45393 /*
45394 Function: sign
45395 Get the sign of a <BigInteger>.
45396
45397 Returns:
45398
45399 * -1 if *this* < 0
45400 * 0 if *this* == 0
45401 * +1 if *this* > 0
45402
45403 See Also:
45404
45405 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
45406 */
45407 BigInteger.prototype.sign = function() {
45408 return this._s;
45409 };
45410
45411 /*
45412 Function: isPositive
45413 Return true iff *this* > 0.
45414
45415 Returns:
45416
45417 true if *this*.compare(<BigInteger.ZERO>) == 1.
45418
45419 See Also:
45420
45421 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
45422 */
45423 BigInteger.prototype.isPositive = function() {
45424 return this._s > 0;
45425 };
45426
45427 /*
45428 Function: isNegative
45429 Return true iff *this* < 0.
45430
45431 Returns:
45432
45433 true if *this*.compare(<BigInteger.ZERO>) == -1.
45434
45435 See Also:
45436
45437 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
45438 */
45439 BigInteger.prototype.isNegative = function() {
45440 return this._s < 0;
45441 };
45442
45443 /*
45444 Function: isZero
45445 Return true iff *this* == 0.
45446
45447 Returns:
45448
45449 true if *this*.compare(<BigInteger.ZERO>) == 0.
45450
45451 See Also:
45452
45453 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
45454 */
45455 BigInteger.prototype.isZero = function() {
45456 return this._s === 0;
45457 };
45458
45459 /*
45460 Function: exp10
45461 Multiply a <BigInteger> by a power of 10.
45462
45463 This is equivalent to, but faster than
45464
45465 > if (n >= 0) {
45466 > return this.multiply(BigInteger("1e" + n));
45467 > }
45468 > else { // n <= 0
45469 > return this.quotient(BigInteger("1e" + -n));
45470 > }
45471
45472 Parameters:
45473
45474 n - The power of 10 to multiply *this* by. *n* is converted to a
45475 javascipt number and must be no greater than <BigInteger.MAX_EXP>
45476 (0x7FFFFFFF), or an exception will be thrown.
45477
45478 Returns:
45479
45480 *this* * (10 ** *n*), truncated to an integer if necessary.
45481
45482 See Also:
45483
45484 <pow>, <multiply>
45485 */
45486 BigInteger.prototype.exp10 = function(n) {
45487 n = +n;
45488 if (n === 0) {
45489 return this;
45490 }
45491 if (Math.abs(n) > Number(MAX_EXP)) {
45492 throw new Error("exponent too large in BigInteger.exp10");
45493 }
45494 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
45495 if (this._s === 0) {
45496 return ZERO;
45497 }
45498 if (n > 0) {
45499 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45500
45501 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45502 k._d.unshift(0);
45503 }
45504 if (n == 0)
45505 return k;
45506 k._s = 1;
45507 k = k.multiplySingleDigit(Math.pow(10, n));
45508 return (this._s < 0 ? k.negate() : k);
45509 } else if (-n >= this._d.length*BigInteger_base_log10) {
45510 return ZERO;
45511 } else {
45512 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45513
45514 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45515 k._d.shift();
45516 }
45517 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
45518 }
45519 };
45520
45521 /*
45522 Function: pow
45523 Raise a <BigInteger> to a power.
45524
45525 In this implementation, 0**0 is 1.
45526
45527 Parameters:
45528
45529 n - The exponent to raise *this* by. *n* must be no greater than
45530 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
45531
45532 Returns:
45533
45534 *this* raised to the *nth* power.
45535
45536 See Also:
45537
45538 <modPow>
45539 */
45540 BigInteger.prototype.pow = function(n) {
45541 if (this.isUnit()) {
45542 if (this._s > 0) {
45543 return this;
45544 }
45545 else {
45546 return BigInteger(n).isOdd() ? this : this.negate();
45547 }
45548 }
45549
45550 n = BigInteger(n);
45551 if (n._s === 0) {
45552 return ONE;
45553 }
45554 else if (n._s < 0) {
45555 if (this._s === 0) {
45556 throw new Error("Divide by zero");
45557 }
45558 else {
45559 return ZERO;
45560 }
45561 }
45562 if (this._s === 0) {
45563 return ZERO;
45564 }
45565 if (n.isUnit()) {
45566 return this;
45567 }
45568
45569 if (n.compareAbs(MAX_EXP) > 0) {
45570 throw new Error("exponent too large in BigInteger.pow");
45571 }
45572 var x = this;
45573 var aux = ONE;
45574 var two = BigInteger.small[2];
45575
45576 while (n.isPositive()) {
45577 if (n.isOdd()) {
45578 aux = aux.multiply(x);
45579 if (n.isUnit()) {
45580 return aux;
45581 }
45582 }
45583 x = x.square();
45584 n = n.quotient(two);
45585 }
45586
45587 return aux;
45588 };
45589
45590 /*
45591 Function: modPow
45592 Raise a <BigInteger> to a power (mod m).
45593
45594 Because it is reduced by a modulus, <modPow> is not limited by
45595 <BigInteger.MAX_EXP> like <pow>.
45596
45597 Parameters:
45598
45599 exponent - The exponent to raise *this* by. Must be positive.
45600 modulus - The modulus.
45601
45602 Returns:
45603
45604 *this* ^ *exponent* (mod *modulus*).
45605
45606 See Also:
45607
45608 <pow>, <mod>
45609 */
45610 BigInteger.prototype.modPow = function(exponent, modulus) {
45611 var result = ONE;
45612 var base = this;
45613
45614 while (exponent.isPositive()) {
45615 if (exponent.isOdd()) {
45616 result = result.multiply(base).remainder(modulus);
45617 }
45618
45619 exponent = exponent.quotient(BigInteger.small[2]);
45620 if (exponent.isPositive()) {
45621 base = base.square().remainder(modulus);
45622 }
45623 }
45624
45625 return result;
45626 };
45627
45628 /*
45629 Function: log
45630 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
45631
45632 This is equivalent to
45633
45634 > Math.log(this.toJSValue())
45635
45636 but handles values outside of the native number range.
45637
45638 Returns:
45639
45640 log( *this* )
45641
45642 See Also:
45643
45644 <toJSValue>
45645 */
45646 BigInteger.prototype.log = function() {
45647 switch (this._s) {
45648 case 0: return -Infinity;
45649 case -1: return NaN;
45650 default: // Fall through.
45651 }
45652
45653 var l = this._d.length;
45654
45655 if (l*BigInteger_base_log10 < 30) {
45656 return Math.log(this.valueOf());
45657 }
45658
45659 var N = Math.ceil(30/BigInteger_base_log10);
45660 var firstNdigits = this._d.slice(l - N);
45661 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
45662 };
45663
45664 /*
45665 Function: valueOf
45666 Convert a <BigInteger> to a native JavaScript integer.
45667
45668 This is called automatically by JavaScipt to convert a <BigInteger> to a
45669 native value.
45670
45671 Returns:
45672
45673 > parseInt(this.toString(), 10)
45674
45675 See Also:
45676
45677 <toString>, <toJSValue>
45678 */
45679 BigInteger.prototype.valueOf = function() {
45680 return parseInt(this.toString(), 10);
45681 };
45682
45683 /*
45684 Function: toJSValue
45685 Convert a <BigInteger> to a native JavaScript integer.
45686
45687 This is the same as valueOf, but more explicitly named.
45688
45689 Returns:
45690
45691 > parseInt(this.toString(), 10)
45692
45693 See Also:
45694
45695 <toString>, <valueOf>
45696 */
45697 BigInteger.prototype.toJSValue = function() {
45698 return parseInt(this.toString(), 10);
45699 };
45700
45701 var MAX_EXP = BigInteger(0x7FFFFFFF);
45702 // Constant: MAX_EXP
45703 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
45704 BigInteger.MAX_EXP = MAX_EXP;
45705
45706 (function() {
45707 function makeUnary(fn) {
45708 return function(a) {
45709 return fn.call(BigInteger(a));
45710 };
45711 }
45712
45713 function makeBinary(fn) {
45714 return function(a, b) {
45715 return fn.call(BigInteger(a), BigInteger(b));
45716 };
45717 }
45718
45719 function makeTrinary(fn) {
45720 return function(a, b, c) {
45721 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
45722 };
45723 }
45724
45725 (function() {
45726 var i, fn;
45727 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
45728 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
45729 var trinary = ["modPow"];
45730
45731 for (i = 0; i < unary.length; i++) {
45732 fn = unary[i];
45733 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
45734 }
45735
45736 for (i = 0; i < binary.length; i++) {
45737 fn = binary[i];
45738 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
45739 }
45740
45741 for (i = 0; i < trinary.length; i++) {
45742 fn = trinary[i];
45743 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
45744 }
45745
45746 BigInteger.exp10 = function(x, n) {
45747 return BigInteger(x).exp10(n);
45748 };
45749 })();
45750 })();
45751
45752 exports.BigInteger = BigInteger;
45753 })(typeof exports !== 'undefined' ? exports : this);
45754 </script>
45755 <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){
45756 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;
45757
45758 },{}],2:[function(require,module,exports){
45759 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;
45760
45761 },{"./scoring":6}],3:[function(require,module,exports){
45762 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(","),
45763 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(","),
45764 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(","),
45765 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(","),
45766 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;
45767
45768 },{}],4:[function(require,module,exports){
45769 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;
45770
45771 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
45772 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;
45773
45774 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
45775 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;
45776
45777 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
45778 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;
45779
45780 },{}]},{},[4])(4)
45781 });
45782
45783 </script>
45784 <script>/*
45785 * Detects entropy from a string.
45786 *
45787 * Formats include:
45788 * binary [0-1]
45789 * base 6 [0-5]
45790 * dice 6 [1-6]
45791 * decimal [0-9]
45792 * hexadecimal [0-9A-F]
45793 * card [A2-9TJQK][CDHS]
45794 *
45795 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
45796 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
45797 * entropy.
45798 */
45799
45800 window.Entropy = new (function() {
45801
45802 var TWO = new BigInteger(2);
45803
45804 // matchers returns an array of the matched events for each type of entropy.
45805 // eg
45806 // matchers.binary("010") returns ["0", "1", "0"]
45807 // matchers.binary("a10") returns ["1", "0"]
45808 // matchers.hex("a10") returns ["a", "1", "0"]
45809 var matchers = {
45810 binary: function(str) {
45811 return str.match(/[0-1]/gi) || [];
45812 },
45813 base6: function(str) {
45814 return str.match(/[0-5]/gi) || [];
45815 },
45816 dice: function(str) {
45817 return str.match(/[1-6]/gi) || []; // ie dice numbers
45818 },
45819 base10: function(str) {
45820 return str.match(/[0-9]/gi) || [];
45821 },
45822 hex: function(str) {
45823 return str.match(/[0-9A-F]/gi) || [];
45824 },
45825 card: function(str) {
45826 // Format is NumberSuit, eg
45827 // AH ace of hearts
45828 // 8C eight of clubs
45829 // TD ten of diamonds
45830 // JS jack of spades
45831 // QH queen of hearts
45832 // KC king of clubs
45833 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
45834 }
45835 }
45836
45837 // Convert array of cards from ["ac", "4d", "ks"]
45838 // to numbers between 0 and 51 [0, 16, 51]
45839 function convertCardsToInts(cards) {
45840 var ints = [];
45841 var values = "a23456789tjqk";
45842 var suits = "cdhs";
45843 for (var i=0; i<cards.length; i++) {
45844 var card = cards[i].toLowerCase();
45845 var value = card[0];
45846 var suit = card[1];
45847 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
45848 ints.push(asInt);
45849 }
45850 return ints;
45851 }
45852
45853 this.fromString = function(rawEntropyStr) {
45854 // Find type of entropy being used (binary, hex, dice etc)
45855 var base = getBase(rawEntropyStr);
45856 // Convert dice to base6 entropy (ie 1-6 to 0-5)
45857 // This is done by changing all 6s to 0s
45858 if (base.str == "dice") {
45859 var newParts = [];
45860 var newInts = [];
45861 for (var i=0; i<base.parts.length; i++) {
45862 var c = base.parts[i];
45863 if ("12345".indexOf(c) > -1) {
45864 newParts[i] = base.parts[i];
45865 newInts[i] = base.ints[i];
45866 }
45867 else {
45868 newParts[i] = "0";
45869 newInts[i] = 0;
45870 }
45871 }
45872 base.str = "base 6 (dice)";
45873 base.ints = newInts;
45874 base.parts = newParts;
45875 base.matcher = matchers.base6;
45876 }
45877 // Detect empty entropy
45878 if (base.parts.length == 0) {
45879 return {
45880 binaryStr: "",
45881 cleanStr: "",
45882 cleanHtml: "",
45883 base: base,
45884 };
45885 }
45886 // Convert base.ints to BigInteger.
45887 // Due to using unusual bases, eg cards of base52, this is not as simple as
45888 // using BigInteger.parse()
45889 var entropyInt = BigInteger.ZERO;
45890 for (var i=base.ints.length-1; i>=0; i--) {
45891 var thisInt = BigInteger.parse(base.ints[i]);
45892 var power = (base.ints.length - 1) - i;
45893 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
45894 entropyInt = entropyInt.add(additionalEntropy);
45895 }
45896 // Convert entropy to binary
45897 var entropyBin = entropyInt.toString(2);
45898 // If the first integer is small, it must be padded with zeros.
45899 // Otherwise the chance of the first bit being 1 is 100%, which is
45900 // obviously incorrect.
45901 // This is not perfect for non-2^n bases.
45902 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
45903 while (entropyBin.length < expectedBits) {
45904 entropyBin = "0" + entropyBin;
45905 }
45906 // Calculate the number of bits per event
45907 var bitsPerEvent = Math.log2(base.asInt);
45908 // Cards binary must be handled differently, since they're not replaced
45909 if (base.asInt == 52) {
45910 var cardEntropy = processCardEntropy(base.parts);
45911 entropyBin = cardEntropy.binaryStr;
45912 bitsPerEvent = cardEntropy.bitsPerEvent;
45913 }
45914 // Supply a 'filtered' entropy string for display purposes
45915 var entropyClean = base.parts.join("");
45916 var entropyHtml = base.parts.join("");
45917 if (base.asInt == 52) {
45918 entropyClean = base.parts.join(" ").toUpperCase();
45919 entropyClean = entropyClean.replace(/C/g, "\u2663");
45920 entropyClean = entropyClean.replace(/D/g, "\u2666");
45921 entropyClean = entropyClean.replace(/H/g, "\u2665");
45922 entropyClean = entropyClean.replace(/S/g, "\u2660");
45923 entropyHtml = base.parts.join(" ").toUpperCase();
45924 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
45925 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
45926 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
45927 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
45928 }
45929 // Return the result
45930 var e = {
45931 binaryStr: entropyBin,
45932 cleanStr: entropyClean,
45933 cleanHtml: entropyHtml,
45934 bitsPerEvent: bitsPerEvent,
45935 base: base,
45936 }
45937 return e;
45938 }
45939
45940 function getSortedDeck() {
45941 var s = [];
45942 var suits = "CDHS";
45943 var values = "A23456789TJQK";
45944 for (var i=0; i<suits.length; i++) {
45945 for (var j=0; j<values.length; j++) {
45946 s.push(values[j]+suits[i]);
45947 }
45948 }
45949 return s;
45950 }
45951
45952 function getBase(str) {
45953 // Need to get the lowest base for the supplied entropy.
45954 // This prevents interpreting, say, dice rolls as hexadecimal.
45955 var binaryMatches = matchers.binary(str);
45956 var hexMatches = matchers.hex(str);
45957 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
45958 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
45959 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
45960 return {
45961 ints: ints,
45962 parts: binaryMatches,
45963 matcher: matchers.binary,
45964 asInt: 2,
45965 str: "binary",
45966 }
45967 }
45968 var cardMatches = matchers.card(str);
45969 if (cardMatches.length >= hexMatches.length / 2) {
45970 var ints = convertCardsToInts(cardMatches);
45971 return {
45972 ints: ints,
45973 parts: cardMatches,
45974 matcher: matchers.card,
45975 asInt: 52,
45976 str: "card",
45977 }
45978 }
45979 var diceMatches = matchers.dice(str);
45980 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
45981 var ints = diceMatches.map(function(i) { return parseInt(i) });
45982 return {
45983 ints: ints,
45984 parts: diceMatches,
45985 matcher: matchers.dice,
45986 asInt: 6,
45987 str: "dice",
45988 }
45989 }
45990 var base6Matches = matchers.base6(str);
45991 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
45992 var ints = base6Matches.map(function(i) { return parseInt(i) });
45993 return {
45994 ints: ints,
45995 parts: base6Matches,
45996 matcher: matchers.base6,
45997 asInt: 6,
45998 str: "base 6",
45999 }
46000 }
46001 var base10Matches = matchers.base10(str);
46002 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
46003 var ints = base10Matches.map(function(i) { return parseInt(i) });
46004 return {
46005 ints: ints,
46006 parts: base10Matches,
46007 matcher: matchers.base10,
46008 asInt: 10,
46009 str: "base 10",
46010 }
46011 }
46012 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
46013 return {
46014 ints: ints,
46015 parts: hexMatches,
46016 matcher: matchers.hex,
46017 asInt: 16,
46018 str: "hexadecimal",
46019 }
46020 }
46021
46022 // Assume cards are NOT replaced.
46023 // Additional entropy decreases as more cards are used. This means
46024 // total possible entropy is measured using n!, not base^n.
46025 // eg the second last card can be only one of two, not one of fifty two
46026 // so the added entropy for that card is only one bit at most
46027 function processCardEntropy(cards) {
46028 // Track how many instances of each card have been used, and thus
46029 // how many decks are in use.
46030 var cardCounts = {};
46031 var numberOfDecks = 0;
46032 // Work out number of decks by max(duplicates)
46033 for (var i=0; i<cards.length; i++) {
46034 // Get the card that was drawn
46035 var cardLower = cards[i];
46036 var card = cardLower.toUpperCase();
46037 // Initialize the count for this card if needed
46038 if (!(card in cardCounts)) {
46039 cardCounts[card] = 0;
46040 }
46041 cardCounts[card] += 1;
46042 // See if this is max(duplicates)
46043 if (cardCounts[card] > numberOfDecks) {
46044 numberOfDecks = cardCounts[card];
46045 }
46046 }
46047 // Work out the total number of bits for this many decks
46048 // See http://crypto.stackexchange.com/q/41886
46049 var gainedBits = 0;
46050 // Equivalent of Math.log2(factorial(52*numberOfDecks))
46051 // which becomes infinity for numberOfDecks > 4
46052 for (var i=1; i<=52*numberOfDecks; i++) {
46053 gainedBits = gainedBits + Math.log2(i);
46054 }
46055 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
46056 var maxBits = gainedBits - lostBits;
46057 // Convert the drawn cards to a binary representation.
46058 // The exact technique for doing this is unclear.
46059 // See
46060 // http://crypto.stackexchange.com/a/41896
46061 // "I even doubt that this is well defined (only the average entropy
46062 // is, I believe)."
46063 // See
46064 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
46065 // "The binary representation can be the first log(permutations,2) bits
46066 // of the sha-2 hash of the normalized deck string."
46067 //
46068 // In this specific implementation, the first N bits of the hash of the
46069 // normalized cards string is being used. Uppercase, no spaces; eg
46070 // sha256("AH8DQSTC2H")
46071 var totalCards = numberOfDecks * 52;
46072 var percentUsed = cards.length / totalCards;
46073 // Calculate the average number of bits of entropy for the number of
46074 // cards drawn.
46075 var numberOfBits = Math.floor(maxBits * percentUsed);
46076 // Create a normalized string of the selected cards
46077 var normalizedCards = cards.join("").toUpperCase();
46078 // Convert to binary using the SHA256 hash of the normalized cards.
46079 // If the number of bits is more than 256, multiple hashes
46080 // are used until the required number of bits is reached.
46081 var entropyBin = "";
46082 var iterations = 0;
46083 while (entropyBin.length < numberOfBits) {
46084 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
46085 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
46086 for (var i=0; i<hashHex.length; i++) {
46087 var decimal = parseInt(hashHex[i], 16);
46088 var binary = decimal.toString(2);
46089 while (binary.length < 4) {
46090 binary = "0" + binary;
46091 }
46092 entropyBin = entropyBin + binary;
46093 }
46094 iterations = iterations + 1;
46095 }
46096 // Truncate to the appropriate number of bits.
46097 entropyBin = entropyBin.substring(0, numberOfBits);
46098 // Get the number of bits per event
46099 bitsPerEvent = maxBits / totalCards;
46100 return {
46101 binaryStr: entropyBin,
46102 bitsPerEvent: bitsPerEvent,
46103 }
46104 }
46105
46106 // Polyfill for Math.log2
46107 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
46108 Math.log2 = Math.log2 || function(x) {
46109 // The polyfill isn't good enough because of the poor accuracy of
46110 // Math.LOG2E
46111 // log2(8) gave 2.9999999999999996 which when floored causes issues.
46112 // So instead use the BigInteger library to get it right.
46113 return BigInteger.log(x) / BigInteger.log(2);
46114 };
46115
46116 // Depends on BigInteger
46117 function factorial(n) {
46118 if (n == 0) {
46119 return 1;
46120 }
46121 f = BigInteger.ONE;
46122 for (var i=1; i<=n; i++) {
46123 f = f.multiply(new BigInteger(i));
46124 }
46125 return f;
46126 }
46127
46128 })();
46129 </script>
46130 <script>(function() {
46131
46132 // mnemonics is populated as required by getLanguage
46133 var mnemonics = { "english": new Mnemonic("english") };
46134 var mnemonic = mnemonics["english"];
46135 var seed = null;
46136 var bip32RootKey = null;
46137 var bip32ExtendedKey = null;
46138 var network = bitcoinjs.bitcoin.networks.bitcoin;
46139 var addressRowTemplate = $("#address-row-template");
46140
46141 var showIndex = true;
46142 var showAddress = true;
46143 var showPubKey = true;
46144 var showPrivKey = true;
46145 var showQr = false;
46146 var litecoinUseLtub = false;
46147
46148 var entropyChangeTimeoutEvent = null;
46149 var phraseChangeTimeoutEvent = null;
46150 var rootKeyChangedTimeoutEvent = null;
46151
46152 var generationProcesses = [];
46153
46154 var DOM = {};
46155 DOM.network = $(".network");
46156 DOM.bip32Client = $("#bip32-client");
46157 DOM.phraseNetwork = $("#network-phrase");
46158 DOM.useEntropy = $(".use-entropy");
46159 DOM.entropyContainer = $(".entropy-container");
46160 DOM.entropy = $(".entropy");
46161 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
46162 DOM.entropyType = DOM.entropyContainer.find(".type");
46163 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
46164 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
46165 DOM.entropyBits = DOM.entropyContainer.find(".bits");
46166 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
46167 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
46168 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
46169 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
46170 DOM.phrase = $(".phrase");
46171 DOM.passphrase = $(".passphrase");
46172 DOM.generateContainer = $(".generate-container");
46173 DOM.generate = $(".generate");
46174 DOM.seed = $(".seed");
46175 DOM.rootKey = $(".root-key");
46176 DOM.litecoinLtubContainer = $(".litecoin-ltub-container");
46177 DOM.litecoinUseLtub = $(".litecoin-use-ltub");
46178 DOM.extendedPrivKey = $(".extended-priv-key");
46179 DOM.extendedPubKey = $(".extended-pub-key");
46180 DOM.bip32tab = $("#bip32-tab");
46181 DOM.bip44tab = $("#bip44-tab");
46182 DOM.bip49tab = $("#bip49-tab");
46183 DOM.bip32panel = $("#bip32");
46184 DOM.bip44panel = $("#bip44");
46185 DOM.bip49panel = $("#bip49");
46186 DOM.bip32path = $("#bip32-path");
46187 DOM.bip44path = $("#bip44-path");
46188 DOM.bip44purpose = $("#bip44 .purpose");
46189 DOM.bip44coin = $("#bip44 .coin");
46190 DOM.bip44account = $("#bip44 .account");
46191 DOM.bip44accountXprv = $("#bip44 .account-xprv");
46192 DOM.bip44accountXpub = $("#bip44 .account-xpub");
46193 DOM.bip44change = $("#bip44 .change");
46194 DOM.bip49unavailable = $("#bip49 .unavailable");
46195 DOM.bip49available = $("#bip49 .available");
46196 DOM.bip49path = $("#bip49-path");
46197 DOM.bip49purpose = $("#bip49 .purpose");
46198 DOM.bip49coin = $("#bip49 .coin");
46199 DOM.bip49account = $("#bip49 .account");
46200 DOM.bip49accountXprv = $("#bip49 .account-xprv");
46201 DOM.bip49accountXpub = $("#bip49 .account-xpub");
46202 DOM.bip49change = $("#bip49 .change");
46203 DOM.generatedStrength = $(".generate-container .strength");
46204 DOM.hardenedAddresses = $(".hardened-addresses");
46205 DOM.useP2wpkhNestedInP2sh = $(".p2wpkh-nested-in-p2sh");
46206 DOM.addresses = $(".addresses");
46207 DOM.rowsToAdd = $(".rows-to-add");
46208 DOM.more = $(".more");
46209 DOM.feedback = $(".feedback");
46210 DOM.tab = $(".derivation-type a");
46211 DOM.indexToggle = $(".index-toggle");
46212 DOM.addressToggle = $(".address-toggle");
46213 DOM.publicKeyToggle = $(".public-key-toggle");
46214 DOM.privateKeyToggle = $(".private-key-toggle");
46215 DOM.languages = $(".languages a");
46216 DOM.qrContainer = $(".qr-container");
46217 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
46218 DOM.qrImage = DOM.qrContainer.find(".qr-image");
46219 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
46220 DOM.showQrEls = $("[data-show-qr]");
46221
46222 function init() {
46223 // Events
46224 DOM.network.on("change", networkChanged);
46225 DOM.bip32Client.on("change", bip32ClientChanged);
46226 DOM.useEntropy.on("change", setEntropyVisibility);
46227 DOM.entropy.on("input", delayedEntropyChanged);
46228 DOM.entropyMnemonicLength.on("change", entropyChanged);
46229 DOM.phrase.on("input", delayedPhraseChanged);
46230 DOM.passphrase.on("input", delayedPhraseChanged);
46231 DOM.generate.on("click", generateClicked);
46232 DOM.more.on("click", showMore);
46233 DOM.rootKey.on("input", delayedRootKeyChanged);
46234 DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
46235 DOM.bip32path.on("input", calcForDerivationPath);
46236 DOM.bip44account.on("input", calcForDerivationPath);
46237 DOM.bip44change.on("input", calcForDerivationPath);
46238 DOM.bip49account.on("input", calcForDerivationPath);
46239 DOM.bip49change.on("input", calcForDerivationPath);
46240 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
46241 DOM.hardenedAddresses.on("change", calcForDerivationPath);
46242 DOM.useP2wpkhNestedInP2sh.on("change", calcForDerivationPath);
46243 DOM.indexToggle.on("click", toggleIndexes);
46244 DOM.addressToggle.on("click", toggleAddresses);
46245 DOM.publicKeyToggle.on("click", togglePublicKeys);
46246 DOM.privateKeyToggle.on("click", togglePrivateKeys);
46247 DOM.languages.on("click", languageChanged);
46248 setQrEvents(DOM.showQrEls);
46249 disableForms();
46250 hidePending();
46251 hideValidationError();
46252 populateNetworkSelect();
46253 populateClientSelect();
46254 }
46255
46256 // Event handlers
46257
46258 function networkChanged(e) {
46259 clearDerivedKeys();
46260 clearAddressesList();
46261 DOM.litecoinLtubContainer.addClass("hidden");
46262 var networkIndex = e.target.value;
46263 var network = networks[networkIndex];
46264 network.onSelect();
46265 if (network.p2wpkhNestedInP2shAvailable) {
46266 showP2wpkhNestedInP2shAvailable();
46267 }
46268 else {
46269 showP2wpkhNestedInP2shUnavailable();
46270 }
46271 if (seed != null) {
46272 phraseChanged();
46273 }
46274 else {
46275 rootKeyChanged();
46276 }
46277 }
46278
46279 function bip32ClientChanged(e) {
46280 var clientIndex = DOM.bip32Client.val();
46281 if (clientIndex == "custom") {
46282 DOM.bip32path.prop("readonly", false);
46283 }
46284 else {
46285 DOM.bip32path.prop("readonly", true);
46286 clients[clientIndex].onSelect();
46287 if (seed != null) {
46288 phraseChanged();
46289 }
46290 else {
46291 rootKeyChanged();
46292 }
46293 }
46294 }
46295
46296 function setEntropyVisibility() {
46297 if (isUsingOwnEntropy()) {
46298 DOM.entropyContainer.removeClass("hidden");
46299 DOM.generateContainer.addClass("hidden");
46300 DOM.phrase.prop("readonly", true);
46301 DOM.entropy.focus();
46302 entropyChanged();
46303 }
46304 else {
46305 DOM.entropyContainer.addClass("hidden");
46306 DOM.generateContainer.removeClass("hidden");
46307 DOM.phrase.prop("readonly", false);
46308 hidePending();
46309 }
46310 }
46311
46312 function delayedPhraseChanged() {
46313 hideValidationError();
46314 seed = null;
46315 bip32RootKey = null;
46316 bip32ExtendedKey = null;
46317 clearAddressesList();
46318 showPending();
46319 if (phraseChangeTimeoutEvent != null) {
46320 clearTimeout(phraseChangeTimeoutEvent);
46321 }
46322 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
46323 }
46324
46325 function phraseChanged() {
46326 showPending();
46327 setMnemonicLanguage();
46328 // Get the mnemonic phrase
46329 var phrase = DOM.phrase.val();
46330 var errorText = findPhraseErrors(phrase);
46331 if (errorText) {
46332 showValidationError(errorText);
46333 return;
46334 }
46335 // Calculate and display
46336 var passphrase = DOM.passphrase.val();
46337 calcBip32RootKeyFromSeed(phrase, passphrase);
46338 calcForDerivationPath();
46339 }
46340
46341 function delayedEntropyChanged() {
46342 hideValidationError();
46343 showPending();
46344 if (entropyChangeTimeoutEvent != null) {
46345 clearTimeout(entropyChangeTimeoutEvent);
46346 }
46347 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
46348 }
46349
46350 function entropyChanged() {
46351 // If blank entropy, clear mnemonic, addresses, errors
46352 if (DOM.entropy.val().trim().length == 0) {
46353 clearDisplay();
46354 clearEntropyFeedback();
46355 DOM.phrase.val("");
46356 showValidationError("Blank entropy");
46357 return;
46358 }
46359 // Get the current phrase to detect changes
46360 var phrase = DOM.phrase.val();
46361 // Set the phrase from the entropy
46362 setMnemonicFromEntropy();
46363 // Recalc addresses if the phrase has changed
46364 var newPhrase = DOM.phrase.val();
46365 if (newPhrase != phrase) {
46366 if (newPhrase.length == 0) {
46367 clearDisplay();
46368 }
46369 else {
46370 phraseChanged();
46371 }
46372 }
46373 else {
46374 hidePending();
46375 }
46376 }
46377
46378 function delayedRootKeyChanged() {
46379 // Warn if there is an existing mnemonic or passphrase.
46380 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
46381 if (!confirm("This will clear existing mnemonic and passphrase")) {
46382 DOM.rootKey.val(bip32RootKey);
46383 return
46384 }
46385 }
46386 hideValidationError();
46387 showPending();
46388 // Clear existing mnemonic and passphrase
46389 DOM.phrase.val("");
46390 DOM.passphrase.val("");
46391 seed = null;
46392 if (rootKeyChangedTimeoutEvent != null) {
46393 clearTimeout(rootKeyChangedTimeoutEvent);
46394 }
46395 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
46396 }
46397
46398 function rootKeyChanged() {
46399 showPending();
46400 hideValidationError();
46401 var rootKeyBase58 = DOM.rootKey.val();
46402 var errorText = validateRootKey(rootKeyBase58);
46403 if (errorText) {
46404 showValidationError(errorText);
46405 return;
46406 }
46407 // Calculate and display
46408 calcBip32RootKeyFromBase58(rootKeyBase58);
46409 calcForDerivationPath();
46410 }
46411
46412 function litecoinUseLtubChanged() {
46413 litecoinUseLtub = DOM.litecoinUseLtub.prop("checked");
46414 if (litecoinUseLtub) {
46415 network = bitcoinjs.bitcoin.networks.litecoinLtub;
46416 }
46417 else {
46418 network = bitcoinjs.bitcoin.networks.litecoin;
46419 }
46420 phraseChanged();
46421 }
46422
46423 function calcForDerivationPath() {
46424 clearDerivedKeys();
46425 clearAddressesList();
46426 showPending();
46427 // Don't show bip49 if it's selected but network doesn't support it
46428 if (bip49TabSelected() && !networkHasBip49()) {
46429 return;
46430 }
46431 // Get the derivation path
46432 var derivationPath = getDerivationPath();
46433 var errorText = findDerivationPathErrors(derivationPath);
46434 if (errorText) {
46435 showValidationError(errorText);
46436 return;
46437 }
46438 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
46439 if (bip44TabSelected()) {
46440 displayBip44Info();
46441 }
46442 if (bip49TabSelected()) {
46443 displayBip49Info();
46444 }
46445 displayBip32Info();
46446 }
46447
46448 function generateClicked() {
46449 if (isUsingOwnEntropy()) {
46450 return;
46451 }
46452 clearDisplay();
46453 showPending();
46454 setTimeout(function() {
46455 setMnemonicLanguage();
46456 var phrase = generateRandomPhrase();
46457 if (!phrase) {
46458 return;
46459 }
46460 phraseChanged();
46461 }, 50);
46462 }
46463
46464 function languageChanged() {
46465 setTimeout(function() {
46466 setMnemonicLanguage();
46467 if (DOM.phrase.val().length > 0) {
46468 var newPhrase = convertPhraseToNewLanguage();
46469 DOM.phrase.val(newPhrase);
46470 phraseChanged();
46471 }
46472 else {
46473 DOM.generate.trigger("click");
46474 }
46475 }, 50);
46476 }
46477
46478 function toggleIndexes() {
46479 showIndex = !showIndex;
46480 $("td.index span").toggleClass("invisible");
46481 }
46482
46483 function toggleAddresses() {
46484 showAddress = !showAddress;
46485 $("td.address span").toggleClass("invisible");
46486 }
46487
46488 function togglePublicKeys() {
46489 showPubKey = !showPubKey;
46490 $("td.pubkey span").toggleClass("invisible");
46491 }
46492
46493 function togglePrivateKeys() {
46494 showPrivKey = !showPrivKey;
46495 $("td.privkey span").toggleClass("invisible");
46496 }
46497
46498 // Private methods
46499
46500 function generateRandomPhrase() {
46501 if (!hasStrongRandom()) {
46502 var errorText = "This browser does not support strong randomness";
46503 showValidationError(errorText);
46504 return;
46505 }
46506 var numWords = parseInt(DOM.generatedStrength.val());
46507 var strength = numWords / 3 * 32;
46508 var words = mnemonic.generate(strength);
46509 DOM.phrase.val(words);
46510 return words;
46511 }
46512
46513 function calcBip32RootKeyFromSeed(phrase, passphrase) {
46514 seed = mnemonic.toSeed(phrase, passphrase);
46515 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
46516 }
46517
46518 function calcBip32RootKeyFromBase58(rootKeyBase58) {
46519 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46520 }
46521
46522 function calcBip32ExtendedKey(path) {
46523 // Check there's a root key to derive from
46524 if (!bip32RootKey) {
46525 return bip32RootKey;
46526 }
46527 var extendedKey = bip32RootKey;
46528 // Derive the key from the path
46529 var pathBits = path.split("/");
46530 for (var i=0; i<pathBits.length; i++) {
46531 var bit = pathBits[i];
46532 var index = parseInt(bit);
46533 if (isNaN(index)) {
46534 continue;
46535 }
46536 var hardened = bit[bit.length-1] == "'";
46537 var isPriv = !(extendedKey.isNeutered());
46538 var invalidDerivationPath = hardened && !isPriv;
46539 if (invalidDerivationPath) {
46540 extendedKey = null;
46541 }
46542 else if (hardened) {
46543 extendedKey = extendedKey.deriveHardened(index);
46544 }
46545 else {
46546 extendedKey = extendedKey.derive(index);
46547 }
46548 }
46549 return extendedKey
46550 }
46551
46552 function showValidationError(errorText) {
46553 DOM.feedback
46554 .text(errorText)
46555 .show();
46556 }
46557
46558 function hideValidationError() {
46559 DOM.feedback
46560 .text("")
46561 .hide();
46562 }
46563
46564 function findPhraseErrors(phrase) {
46565 // Preprocess the words
46566 phrase = mnemonic.normalizeString(phrase);
46567 var words = phraseToWordArray(phrase);
46568 // Detect blank phrase
46569 if (words.length == 0) {
46570 return "Blank mnemonic";
46571 }
46572 // Check each word
46573 for (var i=0; i<words.length; i++) {
46574 var word = words[i];
46575 var language = getLanguage();
46576 if (WORDLISTS[language].indexOf(word) == -1) {
46577 console.log("Finding closest match to " + word);
46578 var nearestWord = findNearestWord(word);
46579 return word + " not in wordlist, did you mean " + nearestWord + "?";
46580 }
46581 }
46582 // Check the words are valid
46583 var properPhrase = wordArrayToPhrase(words);
46584 var isValid = mnemonic.check(properPhrase);
46585 if (!isValid) {
46586 return "Invalid mnemonic";
46587 }
46588 return false;
46589 }
46590
46591 function validateRootKey(rootKeyBase58) {
46592 try {
46593 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
46594 }
46595 catch (e) {
46596 return "Invalid root key";
46597 }
46598 return "";
46599 }
46600
46601 function getDerivationPath() {
46602 if (bip44TabSelected()) {
46603 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46604 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46605 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46606 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
46607 var path = "m/";
46608 path += purpose + "'/";
46609 path += coin + "'/";
46610 path += account + "'/";
46611 path += change;
46612 DOM.bip44path.val(path);
46613 var derivationPath = DOM.bip44path.val();
46614 console.log("Using derivation path from BIP44 tab: " + derivationPath);
46615 return derivationPath;
46616 }
46617 if (bip49TabSelected()) {
46618 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46619 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46620 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46621 var change = parseIntNoNaN(DOM.bip49change.val(), 0);
46622 var path = "m/";
46623 path += purpose + "'/";
46624 path += coin + "'/";
46625 path += account + "'/";
46626 path += change;
46627 DOM.bip49path.val(path);
46628 var derivationPath = DOM.bip49path.val();
46629 console.log("Using derivation path from BIP49 tab: " + derivationPath);
46630 return derivationPath;
46631 }
46632 else if (bip32TabSelected()) {
46633 var derivationPath = DOM.bip32path.val();
46634 console.log("Using derivation path from BIP32 tab: " + derivationPath);
46635 return derivationPath;
46636 }
46637 else {
46638 console.log("Unknown derivation path");
46639 }
46640 }
46641
46642 function findDerivationPathErrors(path) {
46643 // TODO is not perfect but is better than nothing
46644 // Inspired by
46645 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
46646 // and
46647 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
46648 var maxDepth = 255; // TODO verify this!!
46649 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
46650 if (path[0] != "m") {
46651 return "First character must be 'm'";
46652 }
46653 if (path.length > 1) {
46654 if (path[1] != "/") {
46655 return "Separator must be '/'";
46656 }
46657 var indexes = path.split("/");
46658 if (indexes.length > maxDepth) {
46659 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
46660 }
46661 for (var depth = 1; depth<indexes.length; depth++) {
46662 var index = indexes[depth];
46663 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
46664 if (invalidChars.length > 0) {
46665 return "Invalid characters " + invalidChars + " found at depth " + depth;
46666 }
46667 var indexValue = parseInt(index.replace("'", ""));
46668 if (isNaN(depth)) {
46669 return "Invalid number at depth " + depth;
46670 }
46671 if (indexValue > maxIndexValue) {
46672 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
46673 }
46674 }
46675 }
46676 // Check root key exists or else derivation path is useless!
46677 if (!bip32RootKey) {
46678 return "No root key";
46679 }
46680 // Check no hardened derivation path when using xpub keys
46681 var hardenedPath = path.indexOf("'") > -1;
46682 var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked");
46683 var hardened = hardenedPath || hardenedAddresses;
46684 var isXpubkey = bip32RootKey.isNeutered();
46685 if (hardened && isXpubkey) {
46686 return "Hardened derivation path is invalid with xpub key";
46687 }
46688 return false;
46689 }
46690
46691 function displayBip44Info() {
46692 // Get the derivation path for the account
46693 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46694 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46695 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46696 var path = "m/";
46697 path += purpose + "'/";
46698 path += coin + "'/";
46699 path += account + "'/";
46700 // Calculate the account extended keys
46701 var accountExtendedKey = calcBip32ExtendedKey(path);
46702 var accountXprv = accountExtendedKey.toBase58();
46703 var accountXpub = accountExtendedKey.neutered().toBase58();
46704 // Display the extended keys
46705 DOM.bip44accountXprv.val(accountXprv);
46706 DOM.bip44accountXpub.val(accountXpub);
46707 }
46708
46709 function displayBip49Info() {
46710 // Get the derivation path for the account
46711 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46712 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46713 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46714 var path = "m/";
46715 path += purpose + "'/";
46716 path += coin + "'/";
46717 path += account + "'/";
46718 // Calculate the account extended keys
46719 var accountExtendedKey = calcBip32ExtendedKey(path);
46720 var accountXprv = accountExtendedKey.toBase58();
46721 var accountXpub = accountExtendedKey.neutered().toBase58();
46722 // Display the extended keys
46723 DOM.bip49accountXprv.val(accountXprv);
46724 DOM.bip49accountXpub.val(accountXpub);
46725 }
46726
46727 function displayBip32Info() {
46728 // Display the key
46729 DOM.seed.val(seed);
46730 var rootKey = bip32RootKey.toBase58();
46731 DOM.rootKey.val(rootKey);
46732 var xprvkeyB58 = "NA";
46733 if (!bip32ExtendedKey.isNeutered()) {
46734 xprvkeyB58 = bip32ExtendedKey.toBase58();
46735 }
46736 var extendedPrivKey = xprvkeyB58;
46737 DOM.extendedPrivKey.val(extendedPrivKey);
46738 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
46739 DOM.extendedPubKey.val(extendedPubKey);
46740 // Display the addresses and privkeys
46741 clearAddressesList();
46742 displayAddresses(0, 20);
46743 }
46744
46745 function displayAddresses(start, total) {
46746 generationProcesses.push(new (function() {
46747
46748 var rows = [];
46749
46750 this.stop = function() {
46751 for (var i=0; i<rows.length; i++) {
46752 rows[i].shouldGenerate = false;
46753 }
46754 hidePending();
46755 }
46756
46757 for (var i=0; i<total; i++) {
46758 var index = i + start;
46759 var isLast = i == total - 1;
46760 rows.push(new TableRow(index, isLast));
46761 }
46762
46763 })());
46764 }
46765
46766 function TableRow(index, isLast) {
46767
46768 var self = this;
46769 this.shouldGenerate = true;
46770 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
46771 var isP2wpkhNestedInP2sh = bip49TabSelected() || (bip32TabSelected() && useP2wpkhNestedInP2sh());
46772 var p2wpkhNestedInP2shAvailable = networkHasBip49();
46773
46774 function init() {
46775 calculateValues();
46776 }
46777
46778 function calculateValues() {
46779 setTimeout(function() {
46780 if (!self.shouldGenerate) {
46781 return;
46782 }
46783 var key = "NA";
46784 if (useHardenedAddresses) {
46785 key = bip32ExtendedKey.deriveHardened(index);
46786 }
46787 else {
46788 key = bip32ExtendedKey.derive(index);
46789 }
46790 var address = key.getAddress().toString();
46791 var privkey = "NA";
46792 if (!key.isNeutered()) {
46793 privkey = key.keyPair.toWIF(network);
46794 }
46795 var pubkey = key.getPublicKeyBuffer().toString('hex');
46796 var indexText = getDerivationPath() + "/" + index;
46797 if (useHardenedAddresses) {
46798 indexText = indexText + "'";
46799 }
46800 // Ethereum values are different
46801 if (networks[DOM.network.val()].name == "ETH - Ethereum") {
46802 var privKeyBuffer = key.keyPair.d.toBuffer();
46803 privkey = privKeyBuffer.toString('hex');
46804 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
46805 var hexAddress = addressBuffer.toString('hex');
46806 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
46807 address = ethUtil.addHexPrefix(checksumAddress);
46808 privkey = ethUtil.addHexPrefix(privkey);
46809 pubkey = ethUtil.addHexPrefix(pubkey);
46810 }
46811 // Ripple values are different
46812 if (networks[DOM.network.val()].name == "XRP - Ripple") {
46813 privkey = convertRipplePriv(privkey);
46814 address = convertRippleAdrr(address);
46815 }
46816 // BIP49 addresses are different
46817 if (isP2wpkhNestedInP2sh) {
46818 if (!p2wpkhNestedInP2shAvailable) {
46819 return;
46820 }
46821 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
46822 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
46823 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
46824 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
46825 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
46826 }
46827 addAddressToList(indexText, address, pubkey, privkey);
46828 if (isLast) {
46829 hidePending();
46830 }
46831 }, 50)
46832 }
46833
46834 init();
46835
46836 }
46837
46838 function showMore() {
46839 var start = DOM.addresses.children().length;
46840 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
46841 if (isNaN(rowsToAdd)) {
46842 rowsToAdd = 20;
46843 DOM.rowsToAdd.val("20");
46844 }
46845 if (rowsToAdd > 200) {
46846 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
46847 msg += "Do you want to continue?";
46848 if (!confirm(msg)) {
46849 return;
46850 }
46851 }
46852 displayAddresses(start, rowsToAdd);
46853 }
46854
46855 function clearDisplay() {
46856 clearAddressesList();
46857 clearKeys();
46858 hideValidationError();
46859 }
46860
46861 function clearAddressesList() {
46862 DOM.addresses.empty();
46863 stopGenerating();
46864 }
46865
46866 function stopGenerating() {
46867 while (generationProcesses.length > 0) {
46868 var generation = generationProcesses.shift();
46869 generation.stop();
46870 }
46871 }
46872
46873 function clearKeys() {
46874 clearRootKey();
46875 clearDerivedKeys();
46876 }
46877
46878 function clearRootKey() {
46879 DOM.rootKey.val("");
46880 }
46881
46882 function clearDerivedKeys() {
46883 DOM.extendedPrivKey.val("");
46884 DOM.extendedPubKey.val("");
46885 DOM.bip44accountXprv.val("");
46886 DOM.bip44accountXpub.val("");
46887 }
46888
46889 function addAddressToList(indexText, address, pubkey, privkey) {
46890 var row = $(addressRowTemplate.html());
46891 // Elements
46892 var indexCell = row.find(".index span");
46893 var addressCell = row.find(".address span");
46894 var pubkeyCell = row.find(".pubkey span");
46895 var privkeyCell = row.find(".privkey span");
46896 // Content
46897 indexCell.text(indexText);
46898 addressCell.text(address);
46899 pubkeyCell.text(pubkey);
46900 privkeyCell.text(privkey);
46901 // Visibility
46902 if (!showIndex) {
46903 indexCell.addClass("invisible");
46904 }
46905 if (!showAddress) {
46906 addressCell.addClass("invisible");
46907 }
46908 if (!showPubKey) {
46909 pubkeyCell.addClass("invisible");
46910 }
46911 if (!showPrivKey) {
46912 privkeyCell.addClass("invisible");
46913 }
46914 DOM.addresses.append(row);
46915 var rowShowQrEls = row.find("[data-show-qr]");
46916 setQrEvents(rowShowQrEls);
46917 }
46918
46919 function hasStrongRandom() {
46920 return 'crypto' in window && window['crypto'] !== null;
46921 }
46922
46923 function disableForms() {
46924 $("form").on("submit", function(e) {
46925 e.preventDefault();
46926 });
46927 }
46928
46929 function parseIntNoNaN(val, defaultVal) {
46930 var v = parseInt(val);
46931 if (isNaN(v)) {
46932 return defaultVal;
46933 }
46934 return v;
46935 }
46936
46937 function showPending() {
46938 DOM.feedback
46939 .text("Calculating...")
46940 .show();
46941 }
46942
46943 function findNearestWord(word) {
46944 var language = getLanguage();
46945 var words = WORDLISTS[language];
46946 var minDistance = 99;
46947 var closestWord = words[0];
46948 for (var i=0; i<words.length; i++) {
46949 var comparedTo = words[i];
46950 if (comparedTo.indexOf(word) == 0) {
46951 return comparedTo;
46952 }
46953 var distance = Levenshtein.get(word, comparedTo);
46954 if (distance < minDistance) {
46955 closestWord = comparedTo;
46956 minDistance = distance;
46957 }
46958 }
46959 return closestWord;
46960 }
46961
46962 function hidePending() {
46963 DOM.feedback
46964 .text("")
46965 .hide();
46966 }
46967
46968 function populateNetworkSelect() {
46969 for (var i=0; i<networks.length; i++) {
46970 var network = networks[i];
46971 var option = $("<option>");
46972 option.attr("value", i);
46973 option.text(network.name);
46974 if (network.name == "BTC - Bitcoin") {
46975 option.prop("selected", true);
46976 }
46977 DOM.phraseNetwork.append(option);
46978 }
46979 }
46980
46981 function populateClientSelect() {
46982 for (var i=0; i<clients.length; i++) {
46983 var client = clients[i];
46984 var option = $("<option>");
46985 option.attr("value", i);
46986 option.text(client.name);
46987 DOM.bip32Client.append(option);
46988 }
46989 }
46990
46991 function getLanguage() {
46992 var defaultLanguage = "english";
46993 // Try to get from existing phrase
46994 var language = getLanguageFromPhrase();
46995 // Try to get from url if not from phrase
46996 if (language.length == 0) {
46997 language = getLanguageFromUrl();
46998 }
46999 // Default to English if no other option
47000 if (language.length == 0) {
47001 language = defaultLanguage;
47002 }
47003 return language;
47004 }
47005
47006 function getLanguageFromPhrase(phrase) {
47007 // Check if how many words from existing phrase match a language.
47008 var language = "";
47009 if (!phrase) {
47010 phrase = DOM.phrase.val();
47011 }
47012 if (phrase.length > 0) {
47013 var words = phraseToWordArray(phrase);
47014 var languageMatches = {};
47015 for (l in WORDLISTS) {
47016 // Track how many words match in this language
47017 languageMatches[l] = 0;
47018 for (var i=0; i<words.length; i++) {
47019 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
47020 if (wordInLanguage) {
47021 languageMatches[l]++;
47022 }
47023 }
47024 // Find languages with most word matches.
47025 // This is made difficult due to commonalities between Chinese
47026 // simplified vs traditional.
47027 var mostMatches = 0;
47028 var mostMatchedLanguages = [];
47029 for (var l in languageMatches) {
47030 var numMatches = languageMatches[l];
47031 if (numMatches > mostMatches) {
47032 mostMatches = numMatches;
47033 mostMatchedLanguages = [l];
47034 }
47035 else if (numMatches == mostMatches) {
47036 mostMatchedLanguages.push(l);
47037 }
47038 }
47039 }
47040 if (mostMatchedLanguages.length > 0) {
47041 // Use first language and warn if multiple detected
47042 language = mostMatchedLanguages[0];
47043 if (mostMatchedLanguages.length > 1) {
47044 console.warn("Multiple possible languages");
47045 console.warn(mostMatchedLanguages);
47046 }
47047 }
47048 }
47049 return language;
47050 }
47051
47052 function getLanguageFromUrl() {
47053 for (var language in WORDLISTS) {
47054 if (window.location.hash.indexOf(language) > -1) {
47055 return language;
47056 }
47057 }
47058 return "";
47059 }
47060
47061 function setMnemonicLanguage() {
47062 var language = getLanguage();
47063 // Load the bip39 mnemonic generator for this language if required
47064 if (!(language in mnemonics)) {
47065 mnemonics[language] = new Mnemonic(language);
47066 }
47067 mnemonic = mnemonics[language];
47068 }
47069
47070 function convertPhraseToNewLanguage() {
47071 var oldLanguage = getLanguageFromPhrase();
47072 var newLanguage = getLanguageFromUrl();
47073 var oldPhrase = DOM.phrase.val();
47074 var oldWords = phraseToWordArray(oldPhrase);
47075 var newWords = [];
47076 for (var i=0; i<oldWords.length; i++) {
47077 var oldWord = oldWords[i];
47078 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
47079 var newWord = WORDLISTS[newLanguage][index];
47080 newWords.push(newWord);
47081 }
47082 newPhrase = wordArrayToPhrase(newWords);
47083 return newPhrase;
47084 }
47085
47086 // TODO look at jsbip39 - mnemonic.splitWords
47087 function phraseToWordArray(phrase) {
47088 var words = phrase.split(/\s/g);
47089 var noBlanks = [];
47090 for (var i=0; i<words.length; i++) {
47091 var word = words[i];
47092 if (word.length > 0) {
47093 noBlanks.push(word);
47094 }
47095 }
47096 return noBlanks;
47097 }
47098
47099 // TODO look at jsbip39 - mnemonic.joinWords
47100 function wordArrayToPhrase(words) {
47101 var phrase = words.join(" ");
47102 var language = getLanguageFromPhrase(phrase);
47103 if (language == "japanese") {
47104 phrase = words.join("\u3000");
47105 }
47106 return phrase;
47107 }
47108
47109 function isUsingOwnEntropy() {
47110 return DOM.useEntropy.prop("checked");
47111 }
47112
47113 function setMnemonicFromEntropy() {
47114 clearEntropyFeedback();
47115 // Get entropy value
47116 var entropyStr = DOM.entropy.val();
47117 // Work out minimum base for entropy
47118 var entropy = Entropy.fromString(entropyStr);
47119 if (entropy.binaryStr.length == 0) {
47120 return;
47121 }
47122 // Show entropy details
47123 showEntropyFeedback(entropy);
47124 // Use entropy hash if not using raw entropy
47125 var bits = entropy.binaryStr;
47126 var mnemonicLength = DOM.entropyMnemonicLength.val();
47127 if (mnemonicLength != "raw") {
47128 // Get bits by hashing entropy with SHA256
47129 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
47130 var hex = sjcl.codec.hex.fromBits(hash);
47131 bits = BigInteger.parse(hex, 16).toString(2);
47132 while (bits.length % 256 != 0) {
47133 bits = "0" + bits;
47134 }
47135 // Truncate hash to suit number of words
47136 mnemonicLength = parseInt(mnemonicLength);
47137 var numberOfBits = 32 * mnemonicLength / 3;
47138 bits = bits.substring(0, numberOfBits);
47139 }
47140 // Discard trailing entropy
47141 var bitsToUse = Math.floor(bits.length / 32) * 32;
47142 var start = bits.length - bitsToUse;
47143 var binaryStr = bits.substring(start);
47144 // Convert entropy string to numeric array
47145 var entropyArr = [];
47146 for (var i=0; i<binaryStr.length / 8; i++) {
47147 var byteAsBits = binaryStr.substring(i*8, i*8+8);
47148 var entropyByte = parseInt(byteAsBits, 2);
47149 entropyArr.push(entropyByte)
47150 }
47151 // Convert entropy array to mnemonic
47152 var phrase = mnemonic.toMnemonic(entropyArr);
47153 // Set the mnemonic in the UI
47154 DOM.phrase.val(phrase);
47155 }
47156
47157 function clearEntropyFeedback() {
47158 DOM.entropyCrackTime.text("...");
47159 DOM.entropyType.text("");
47160 DOM.entropyWordCount.text("0");
47161 DOM.entropyEventCount.text("0");
47162 DOM.entropyBitsPerEvent.text("0");
47163 DOM.entropyBits.text("0");
47164 DOM.entropyFiltered.html("&nbsp;");
47165 DOM.entropyBinary.html("&nbsp;");
47166 }
47167
47168 function showEntropyFeedback(entropy) {
47169 var numberOfBits = entropy.binaryStr.length;
47170 var timeToCrack = "unknown";
47171 try {
47172 var z = zxcvbn(entropy.base.parts.join(""));
47173 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
47174 if (z.feedback.warning != "") {
47175 timeToCrack = timeToCrack + " - " + z.feedback.warning;
47176 };
47177 }
47178 catch (e) {
47179 console.log("Error detecting entropy strength with zxcvbn:");
47180 console.log(e);
47181 }
47182 var entropyTypeStr = getEntropyTypeStr(entropy);
47183 var wordCount = Math.floor(numberOfBits / 32) * 3;
47184 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
47185 DOM.entropyFiltered.html(entropy.cleanHtml);
47186 DOM.entropyType.text(entropyTypeStr);
47187 DOM.entropyCrackTime.text(timeToCrack);
47188 DOM.entropyEventCount.text(entropy.base.ints.length);
47189 DOM.entropyBits.text(numberOfBits);
47190 DOM.entropyWordCount.text(wordCount);
47191 DOM.entropyBinary.text(entropy.binaryStr);
47192 DOM.entropyBitsPerEvent.text(bitsPerEvent);
47193 }
47194
47195 function getEntropyTypeStr(entropy) {
47196 var typeStr = entropy.base.str;
47197 // Add some detail if these are cards
47198 if (entropy.base.asInt == 52) {
47199 var cardDetail = []; // array of message strings
47200 // Detect duplicates
47201 var dupes = [];
47202 var dupeTracker = {};
47203 for (var i=0; i<entropy.base.parts.length; i++) {
47204 var card = entropy.base.parts[i];
47205 var cardUpper = card.toUpperCase();
47206 if (cardUpper in dupeTracker) {
47207 dupes.push(card);
47208 }
47209 dupeTracker[cardUpper] = true;
47210 }
47211 if (dupes.length > 0) {
47212 var dupeWord = "duplicates";
47213 if (dupes.length == 1) {
47214 dupeWord = "duplicate";
47215 }
47216 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
47217 if (dupes.length > 3) {
47218 msg += "...";
47219 }
47220 cardDetail.push(msg);
47221 }
47222 // Detect full deck
47223 var uniqueCards = [];
47224 for (var uniqueCard in dupeTracker) {
47225 uniqueCards.push(uniqueCard);
47226 }
47227 if (uniqueCards.length == 52) {
47228 cardDetail.unshift("full deck");
47229 }
47230 // Detect missing cards
47231 var values = "A23456789TJQK";
47232 var suits = "CDHS";
47233 var missingCards = [];
47234 for (var i=0; i<suits.length; i++) {
47235 for (var j=0; j<values.length; j++) {
47236 var card = values[j] + suits[i];
47237 if (!(card in dupeTracker)) {
47238 missingCards.push(card);
47239 }
47240 }
47241 }
47242 // Display missing cards if six or less, ie clearly going for full deck
47243 if (missingCards.length > 0 && missingCards.length <= 6) {
47244 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
47245 if (missingCards.length > 3) {
47246 msg += "...";
47247 }
47248 cardDetail.push(msg);
47249 }
47250 // Add card details to typeStr
47251 if (cardDetail.length > 0) {
47252 typeStr += " (" + cardDetail.join(", ") + ")";
47253 }
47254 }
47255 return typeStr;
47256 }
47257
47258 function setQrEvents(els) {
47259 els.on("mouseenter", createQr);
47260 els.on("mouseleave", destroyQr);
47261 els.on("click", toggleQr);
47262 }
47263
47264 function createQr(e) {
47265 var content = e.target.textContent || e.target.value;
47266 if (content) {
47267 var size = 130;
47268 DOM.qrImage.qrcode({width: size, height: size, text: content});
47269 if (!showQr) {
47270 DOM.qrHider.addClass("hidden");
47271 }
47272 else {
47273 DOM.qrHider.removeClass("hidden");
47274 }
47275 DOM.qrContainer.removeClass("hidden");
47276 }
47277 }
47278
47279 function destroyQr() {
47280 DOM.qrImage.text("");
47281 DOM.qrContainer.addClass("hidden");
47282 }
47283
47284 function toggleQr() {
47285 showQr = !showQr;
47286 DOM.qrHider.toggleClass("hidden");
47287 DOM.qrHint.toggleClass("hidden");
47288 }
47289
47290 function bip44TabSelected() {
47291 return DOM.bip44tab.hasClass("active");
47292 }
47293
47294 function bip32TabSelected() {
47295 return DOM.bip32tab.hasClass("active");
47296 }
47297
47298 function useP2wpkhNestedInP2sh() {
47299 return DOM.useP2wpkhNestedInP2sh.prop("checked");
47300 }
47301
47302 function networkHasBip49() {
47303 return networks[DOM.network.val()].p2wpkhNestedInP2shAvailable;
47304 }
47305
47306 function bip49TabSelected() {
47307 return DOM.bip49tab.hasClass("active");
47308 }
47309
47310 function setHdCoin(coinValue) {
47311 DOM.bip44coin.val(coinValue);
47312 DOM.bip49coin.val(coinValue);
47313 }
47314
47315 function showP2wpkhNestedInP2shAvailable() {
47316 DOM.bip49unavailable.addClass("hidden");
47317 DOM.bip49available.removeClass("hidden");
47318 DOM.useP2wpkhNestedInP2sh.prop("disabled", false);
47319 }
47320
47321 function showP2wpkhNestedInP2shUnavailable() {
47322 DOM.bip49available.addClass("hidden");
47323 DOM.bip49unavailable.removeClass("hidden");
47324 DOM.useP2wpkhNestedInP2sh.prop("disabled", true);
47325 DOM.useP2wpkhNestedInP2sh.prop("checked", false);
47326 }
47327
47328 var networks = [
47329 {
47330 name: "BCH - Bitcoin Cash",
47331 p2wpkhNestedInP2shAvailable: false,
47332 onSelect: function() {
47333 network = bitcoinjs.bitcoin.networks.bitcoin;
47334 setHdCoin(145);
47335 },
47336 },
47337 {
47338 name: "BTC - Bitcoin",
47339 p2wpkhNestedInP2shAvailable: true,
47340 onSelect: function() {
47341 network = bitcoinjs.bitcoin.networks.bitcoin;
47342 setHdCoin(0);
47343 },
47344 },
47345 {
47346 name: "BTC - Bitcoin Testnet",
47347 p2wpkhNestedInP2shAvailable: true,
47348 onSelect: function() {
47349 network = bitcoinjs.bitcoin.networks.testnet;
47350 setHdCoin(1);
47351 },
47352 },
47353 {
47354 name: "CLAM - Clams",
47355 p2wpkhNestedInP2shAvailable: false,
47356 onSelect: function() {
47357 network = bitcoinjs.bitcoin.networks.clam;
47358 setHdCoin(23);
47359 },
47360 },
47361 {
47362 name: "CRW - Crown",
47363 p2wpkhNestedInP2shAvailable: false,
47364 onSelect: function() {
47365 network = bitcoinjs.bitcoin.networks.crown;
47366 setHdCoin(72);
47367 },
47368 },
47369 {
47370 name: "DASH - Dash",
47371 p2wpkhNestedInP2shAvailable: false,
47372 onSelect: function() {
47373 network = bitcoinjs.bitcoin.networks.dash;
47374 setHdCoin(5);
47375 },
47376 },
47377 {
47378 name: "DASH - Dash Testnet",
47379 p2wpkhNestedInP2shAvailable: false,
47380 onSelect: function() {
47381 network = bitcoinjs.bitcoin.networks.dashtn;
47382 setHdCoin(1);
47383 },
47384 },
47385 {
47386 name: "DOGE - Dogecoin",
47387 p2wpkhNestedInP2shAvailable: false,
47388 onSelect: function() {
47389 network = bitcoinjs.bitcoin.networks.dogecoin;
47390 setHdCoin(3);
47391 },
47392 },
47393 {
47394 name: "ETH - Ethereum",
47395 p2wpkhNestedInP2shAvailable: false,
47396 onSelect: function() {
47397 network = bitcoinjs.bitcoin.networks.bitcoin;
47398 setHdCoin(60);
47399 },
47400 },
47401 {
47402 name: "GAME - GameCredits",
47403 p2wpkhNestedInP2shAvailable: false,
47404 onSelect: function() {
47405 network = bitcoinjs.bitcoin.networks.game;
47406 setHdCoin(101);
47407 },
47408 },
47409 {
47410 name: "JBS - Jumbucks",
47411 p2wpkhNestedInP2shAvailable: false,
47412 onSelect: function() {
47413 network = bitcoinjs.bitcoin.networks.jumbucks;
47414 setHdCoin(26);
47415 },
47416 },
47417 {
47418 name: "LTC - Litecoin",
47419 p2wpkhNestedInP2shAvailable: false,
47420 onSelect: function() {
47421 network = bitcoinjs.bitcoin.networks.litecoin;
47422 setHdCoin(2);
47423 DOM.litecoinLtubContainer.removeClass("hidden");
47424 },
47425 },
47426 {
47427 name: "MAZA - Maza",
47428 p2wpkhNestedInP2shAvailable: false,
47429 onSelect: function() {
47430 network = bitcoinjs.bitcoin.networks.maza;
47431 setHdCoin(13);
47432 },
47433 },
47434
47435 {
47436 name: "NMC - Namecoin",
47437 p2wpkhNestedInP2shAvailable: false,
47438 onSelect: function() {
47439 network = bitcoinjs.bitcoin.networks.namecoin;
47440 setHdCoin(7);
47441 },
47442 },
47443 {
47444 name: "PIVX - PIVX",
47445 p2wpkhNestedInP2shAvailable: false,
47446 onSelect: function() {
47447 network = bitcoinjs.bitcoin.networks.pivx;
47448 setHdCoin(119);
47449 },
47450 },
47451 {
47452 name: "PIVX - PIVX Testnet",
47453 p2wpkhNestedInP2shAvailable: false,
47454 onSelect: function() {
47455 network = bitcoinjs.bitcoin.networks.pivxtestnet;
47456 setHdCoin(1);
47457 },
47458 },
47459 {
47460 name: "PPC - Peercoin",
47461 p2wpkhNestedInP2shAvailable: false,
47462 onSelect: function() {
47463 network = bitcoinjs.bitcoin.networks.peercoin;
47464 setHdCoin(6);
47465 },
47466 },
47467 {
47468 name: "SDC - ShadowCash",
47469 p2wpkhNestedInP2shAvailable: false,
47470 onSelect: function() {
47471 network = bitcoinjs.bitcoin.networks.shadow;
47472 setHdCoin(35);
47473 },
47474 },
47475 {
47476 name: "SDC - ShadowCash Testnet",
47477 p2wpkhNestedInP2shAvailable: false,
47478 onSelect: function() {
47479 network = bitcoinjs.bitcoin.networks.shadowtn;
47480 setHdCoin(1);
47481 },
47482 },
47483 {
47484 name: "SLM - Slimcoin",
47485 p2wpkhNestedInP2shAvailable: false,
47486 onSelect: function() {
47487 network = bitcoinjs.bitcoin.networks.slimcoin;
47488 setHdCoin(63);
47489 },
47490 },
47491 {
47492 name: "SLM - Slimcoin Testnet",
47493 p2wpkhNestedInP2shAvailable: false,
47494 onSelect: function() {
47495 network = bitcoinjs.bitcoin.networks.slimcointn;
47496 setHdCoin(111);
47497 },
47498 },
47499 {
47500 name: "VIA - Viacoin",
47501 p2wpkhNestedInP2shAvailable: false,
47502 onSelect: function() {
47503 network = bitcoinjs.bitcoin.networks.viacoin;
47504 setHdCoin(14);
47505 },
47506 },
47507 {
47508 name: "VIA - Viacoin Testnet",
47509 p2wpkhNestedInP2shAvailable: false,
47510 onSelect: function() {
47511 network = bitcoinjs.bitcoin.networks.viacointestnet;
47512 setHdCoin(1);
47513 },
47514 },
47515 {
47516 name: "XMY - Myriadcoin",
47517 p2wpkhNestedInP2shAvailable: false,
47518 onSelect: function() {
47519 network = bitcoinjs.bitcoin.networks.myriadcoin;
47520 setHdCoin(90);
47521 },
47522 },
47523 {
47524 name: "XRP - Ripple",
47525 p2wpkhNestedInP2shAvailable: false,
47526 onSelect: function() {
47527 network = bitcoinjs.bitcoin.networks.bitcoin;
47528 setHdCoin(144);
47529 },
47530 }
47531 ]
47532
47533 var clients = [
47534 {
47535 name: "Bitcoin Core",
47536 onSelect: function() {
47537 DOM.bip32path.val("m/0'/0'");
47538 DOM.hardenedAddresses.prop('checked', true);
47539 },
47540 },
47541 {
47542 name: "blockchain.info",
47543 onSelect: function() {
47544 DOM.bip32path.val("m/44'/0'/0'");
47545 DOM.hardenedAddresses.prop('checked', false);
47546 },
47547 },
47548 {
47549 name: "MultiBit HD",
47550 onSelect: function() {
47551 DOM.bip32path.val("m/0'/0");
47552 DOM.hardenedAddresses.prop('checked', false);
47553 },
47554 }
47555 ]
47556
47557 init();
47558
47559 })();
47560 </script>
47561 </body>
47562 </html>