]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blame - bip39-standalone.html
Release v0.2.2
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
CommitLineData
ebd8d4e8
IC
1<!DOCTYPE html>
2<html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
ab78acc6 6 <style>/*!
ebd8d4e8
IC
7 * Bootstrap v3.2.0 (http://getbootstrap.com)
8 * Copyright 2011-2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
ab78acc6
IC
10 *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}</style>
11 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" />
b630f83d 14 <meta content="Ian Coleman" name="author" />
18f16009 15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
3af2954a 16
ab78acc6
IC
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 }
d5dc92fd
IC
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 }
0515eeec
IC
48 .phrase {
49 word-break: keep-all;
50 }
2a6dd137 51 .generate-container .strength {
b0818b31
IC
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
ea87f1d3 56 .languages a {
0515eeec
IC
57 padding-left: 10px;
58 }
ea87f1d3
IC
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
d737abf6
IC
63 .monospace {
64 font-family: monospace;
65 }
2a6dd137
IC
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 }
e00964cc
IC
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 }
52da415f
IC
100 .qr-hint,
101 .qr-warning {
e00964cc 102 padding: 2px;
52da415f
IC
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
e00964cc 109 }
920eb591
IC
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
ab78acc6
IC
115 </style>
116 </head>
117 <body>
118 <div class="container">
3af2954a 119
ab78acc6 120 <h1 class="text-center">Mnemonic Code Converter</h1>
f128bd58 121 <p class="version">v0.2.2</p>
ab78acc6
IC
122 <hr>
123 <div class="row">
124 <div class="col-md-12">
125 <h2>Mnemonic</h2>
126 <form class="form-horizontal" role="form">
ab78acc6 127 <div class="form-group">
c6624d51
IC
128 <div class="col-sm-2"></div>
129 <div class="col-sm-10">
ea87f1d3
IC
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>
c6624d51
IC
135 </div>
136 </div>
137 <div class="form-group generate-container">
b0818b31 138 <label class="col-sm-2 control-label"></label>
ab78acc6 139 <div class="col-sm-10">
b0818b31
IC
140 <div class="form-inline">
141 <div class="input-group-inline">
ea87f1d3 142 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
b0818b31 143 <button class="btn generate">Generate</button>
b0818b31
IC
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>
ea87f1d3 154 <span data-translate>words</span>
b0818b31
IC
155 </div>
156 </div>
ab78acc6 157 </div>
0515eeec 158 </div>
c6624d51 159 <div class="entropy-container hidden">
2a6dd137 160 <div class="form-group text-danger">
ea87f1d3 161 <label class="col-sm-2 control-label" data-translate>Warning</label>
2a6dd137 162 <div class="col-sm-10 form-control-static">
ea87f1d3
IC
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>
18abe53b
IC
165 </div>
166 </div>
2a6dd137 167 <div class="form-group">
ea87f1d3 168 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
2a6dd137 169 <div class="col-sm-7">
ea87f1d3 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>
95f04905 171 <div class="row">
f1e5d484
IC
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>
ea87f1d3 174 <label class="col-sm-3 control-label" data-translate>Event Count</label>
95f04905
IC
175 <div class="event-count col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
ea87f1d3 178 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
95f04905 179 <div class="type col-sm-3 form-control-static"></div>
ea87f1d3 180 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
95f04905
IC
181 <div class="bits-per-event col-sm-3 form-control-static"></div>
182 </div>
183 <div class="row">
f1e5d484 184 <label class="col-sm-3 control-label" data-translate>Raw Entropy Words</label>
95f04905 185 <div class="word-count col-sm-3 form-control-static"></div>
52da415f 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>
95f04905
IC
187 <div class="bits col-sm-3 form-control-static"></div>
188 </div>
ea87f1d3 189 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
2a6dd137 190 <div class="filtered col-sm-9 form-control-static"></div>
ea87f1d3 191 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
2a6dd137 192 <div class="binary col-sm-9 form-control-static"></div>
ea87f1d3 193 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
2a6dd137 194 <div class="col-sm-9">
18abe53b 195 <select class="mnemonic-length form-control">
5ed50bd9 196 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
ea87f1d3 197 <option value="12">12 <span data-translate>Words</span></option>
5ed50bd9 198 <option value="15">15 <span data-translate>Words</option>
ea87f1d3
IC
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>
18abe53b 202 </select>
c6624d51 203 </div>
18abe53b 204 </div>
2a6dd137 205 <div class="col-sm-3">
ea87f1d3 206 <p data-translate>Valid entropy values include:</p>
2a6dd137 207 <ul>
ea87f1d3
IC
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>
2a6dd137
IC
214 </ul>
215 </div>
c6624d51
IC
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">
ea87f1d3 223 <span data-translate>Supply my own source of entropy</span>
c6624d51
IC
224 </label>
225 </div>
226 </div>
227 <div class="form-group">
ea87f1d3 228 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
0515eeec 229 <div class="col-sm-10 languages">
ea87f1d3
IC
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>
0515eeec 239 </div>
ab78acc6
IC
240 </div>
241 <div class="form-group">
ea87f1d3 242 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
ab78acc6 243 <div class="col-sm-10">
e00964cc 244 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
ab78acc6
IC
245 </div>
246 </div>
247 <div class="form-group">
ea87f1d3 248 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
ab78acc6
IC
249 <div class="col-sm-10">
250 <textarea id="passphrase" class="passphrase form-control"></textarea>
251 </div>
252 </div>
73161a92 253 <div class="form-group">
ea87f1d3 254 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
73161a92 255 <div class="col-sm-10">
e00964cc 256 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
73161a92
IC
257 </div>
258 </div>
ab78acc6 259 <div class="form-group">
ea87f1d3 260 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
ab78acc6
IC
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">
ea87f1d3 268 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
ab78acc6 269 <div class="col-sm-10">
e00964cc 270 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
ab78acc6
IC
271 </div>
272 </div>
273 </form>
274 </div>
275 </div>
3af2954a 276
ab78acc6 277 <hr>
3af2954a 278
ab78acc6
IC
279 <div class="row">
280 <div class="col-md-12">
281 <h2>Derivation Path</h2>
282 <ul class="derivation-type nav nav-tabs" role="tablist">
9987f0c1
IC
283 <li id="bip32-tab">
284 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
285 </li>
d5dc92fd 286 <li id="bip44-tab" class="active">
ab78acc6
IC
287 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
288 </li>
9987f0c1
IC
289 <li id="bip49-tab">
290 <a href="#bip49" role="tab" data-toggle="tab">BIP49</a>
ab78acc6
IC
291 </li>
292 </ul>
293 <div class="derivation-type tab-content">
d5dc92fd 294 <div id="bip44" class="tab-pane active">
ab78acc6
IC
295 <form class="form-horizontal" role="form">
296 <br>
297 <div class="col-sm-2"></div>
298 <div class="col-sm-10">
ea87f1d3
IC
299 <p data-translate-html>
300 For more info see the
301 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
302 </p>
ab78acc6
IC
303 </div>
304 <div class="form-group">
305 <label for="purpose" class="col-sm-2 control-label">
ea87f1d3 306 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
ab78acc6
IC
307 </label>
308 <div class="col-sm-10">
9987f0c1 309 <input id="purpose" type="text" class="purpose form-control" value="44" readonly>
ab78acc6
IC
310 </div>
311 </div>
312 <div class="form-group">
313 <label for="coin" class="col-sm-2 control-label">
ea87f1d3 314 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
ab78acc6
IC
315 </label>
316 <div class="col-sm-10">
9987f0c1 317 <input id="coin" type="text" class="coin form-control" value="0" readonly>
ab78acc6
IC
318 </div>
319 </div>
320 <div class="form-group">
321 <label for="account" class="col-sm-2 control-label">
ea87f1d3 322 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
ab78acc6
IC
323 </label>
324 <div class="col-sm-10">
325 <input id="account" type="text" class="account form-control" value="0">
326 </div>
327 </div>
328 <div class="form-group">
329 <label for="change" class="col-sm-2 control-label">
ea87f1d3 330 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
ab78acc6
IC
331 </label>
332 <div class="col-sm-10">
333 <input id="change" type="text" class="change form-control" value="0">
334 </div>
335 </div>
20083ab9
IC
336 <div class="form-group">
337 <label class="col-sm-2 control-label">
338 </label>
339 <div class="col-sm-10">
f3bfd2a5 340 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
20083ab9
IC
341 </div>
342 </div>
343 <div class="form-group">
344 <label for="account-xprv" class="col-sm-2 control-label">
345 <span data-translate>Account Extended Private Key</span>
346 </label>
347 <div class="col-sm-10">
348 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
349 </div>
350 </div>
351 <div class="form-group">
352 <label for="account-xpub" class="col-sm-2 control-label">
353 <span data-translate>Account Extended Public Key</span>
354 </label>
355 <div class="col-sm-10">
356 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
357 </div>
358 </div>
359 <div class="form-group">
360 <label class="col-sm-2 control-label">
361 </label>
362 <div class="col-sm-10">
363 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
364 </div>
365 </div>
ab78acc6 366 <div class="form-group">
ea87f1d3 367 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
ab78acc6
IC
368 <div class="col-sm-10">
369 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
370 </div>
371 </div>
372 </form>
373 </div>
374 <div id="bip32" class="tab-pane">
375 <form class="form-horizontal" role="form">
376 <br>
377 <div class="col-sm-2"></div>
378 <div class="col-sm-10">
ea87f1d3
IC
379 <p data-translate>
380 For more info see the
381 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
382 </p>
ab78acc6 383 </div>
56530adc
IC
384 <div class="form-group">
385 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
386 <div class="col-sm-10">
387 <select id="bip32-client" class="client form-control">
388 <option value="custom">Custom derivation path</option>
389 <!-- populated by javascript -->
390 </select>
391 </div>
392 </div>
ab78acc6 393 <div class="form-group">
ea87f1d3 394 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
ab78acc6
IC
395 <div class="col-sm-10">
396 <input id="bip32-path" type="text" class="path form-control" value="m/0">
397 </div>
398 </div>
1975bfbc
IC
399 <div class="form-group">
400 <div class="col-sm-2"></div>
401 <label class="col-sm-10">
402 <input class="hardened-addresses" type="checkbox">
ea87f1d3 403 <span data-translate>Use hardened addresses</span>
1975bfbc
IC
404 </label>
405 </div>
1975bfbc 406 <div class="form-group">
ea87f1d3 407 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
1975bfbc 408 <div class="col-sm-10">
ea87f1d3 409 <p class="form-control no-border" data-translate-html>
1975bfbc 410 Use path <code>m/0'/0'</code> with hardened addresses.
c866242d 411 </p>
ea87f1d3
IC
412 <p class="form-control no-border" data-translate-html>
413 For more info see the
414 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
1975bfbc
IC
415 </p>
416 </div>
417 </div>
56530adc
IC
418 <div class="form-group">
419 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
420 <div class="col-sm-10">
421 <p class="form-control no-border">
422 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
423 </p>
424 <p class="form-control no-border">
425 <span data-translate>For more info see</span>
426 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
427 </p>
428 </div>
429 </div>
aa51da11 430 <div class="form-group">
ea87f1d3 431 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
aa51da11
IC
432 <div class="col-sm-10">
433 <p class="form-control no-border">
ea87f1d3
IC
434 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
435 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
c866242d
IC
436 </p>
437 <p class="form-control no-border">
ea87f1d3
IC
438 <span data-translate>Can be used with</span>:
439 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
aa51da11
IC
440 </p>
441 </div>
442 </div>
ab78acc6
IC
443 </form>
444 </div>
9987f0c1
IC
445 <div id="bip49" class="tab-pane">
446 <form class="form-horizontal" role="form">
447 <br>
448 <div class="unavailable hidden">
449 <div class="form-group">
450 <div class="col-sm-2"></div>
451 <div class="col-sm-10">
452 <p data-translate>BIP49 is unavailable for this coin.</p>
453 </div>
454 </div>
455 </div>
456 <div class="available">
457 <div class="col-sm-2"></div>
458 <div class="col-sm-10">
459 <p data-translate-html>
460 For more info see the
461 <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">BIP49 spec</a>.
462 </p>
463 </div>
464 <div class="form-group">
465 <label for="purpose" class="col-sm-2 control-label">
466 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
467 </label>
468 <div class="col-sm-10">
469 <input id="purpose" type="text" class="purpose form-control" value="49" readonly>
470 </div>
471 </div>
472 <div class="form-group">
473 <label for="coin" class="col-sm-2 control-label">
474 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
475 </label>
476 <div class="col-sm-10">
477 <input id="coin" type="text" class="coin form-control" value="0" readonly>
478 </div>
479 </div>
480 <div class="form-group">
481 <label for="account" class="col-sm-2 control-label">
482 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
483 </label>
484 <div class="col-sm-10">
485 <input id="account" type="text" class="account form-control" value="0">
486 </div>
487 </div>
488 <div class="form-group">
489 <label for="change" class="col-sm-2 control-label">
490 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
491 </label>
492 <div class="col-sm-10">
493 <input id="change" type="text" class="change form-control" value="0">
494 </div>
495 </div>
496 <div class="form-group">
497 <label class="col-sm-2 control-label">
498 </label>
499 <div class="col-sm-10">
500 <p data-translate>The account extended keys can be used for importing to most BIP49 compatible wallets.</p>
501 </div>
502 </div>
503 <div class="form-group">
504 <label for="account-xprv" class="col-sm-2 control-label">
505 <span data-translate>Account Extended Private Key</span>
506 </label>
507 <div class="col-sm-10">
508 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
509 </div>
510 </div>
511 <div class="form-group">
512 <label for="account-xpub" class="col-sm-2 control-label">
513 <span data-translate>Account Extended Public Key</span>
514 </label>
515 <div class="col-sm-10">
516 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
517 </div>
518 </div>
519 <div class="form-group">
520 <label class="col-sm-2 control-label">
521 </label>
522 <div class="col-sm-10">
523 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
524 </div>
525 </div>
526 <div class="form-group">
527 <label for="bip49-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
528 <div class="col-sm-10">
529 <input id="bip49-path" type="text" class="path form-control" value="m/49'/0'/0'/0" readonly="readonly">
530 </div>
531 </div>
532 </div>
533 </form>
534 </div>
ab78acc6
IC
535 </div>
536 <form class="form-horizontal" role="form">
537 <div class="form-group">
20083ab9 538 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
ab78acc6 539 <div class="col-sm-10">
e00964cc 540 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
ab78acc6
IC
541 </div>
542 </div>
543 <div class="form-group">
20083ab9 544 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
ab78acc6 545 <div class="col-sm-10">
e00964cc 546 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
ab78acc6
IC
547 </div>
548 </div>
549 </form>
550 </div>
551 </div>
3af2954a 552
ab78acc6 553 <hr>
3af2954a 554
ab78acc6
IC
555 <div class="row">
556 <div class="col-md-12">
557 <h2>Derived Addresses</h2>
ea87f1d3 558 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
ab78acc6
IC
559 <table class="table table-striped">
560 <thead>
561 <th>
562 <div class="input-group">
ea87f1d3
IC
563 <span data-translate>Path</span>&nbsp;&nbsp;
564 <button class="index-toggle" data-translate>Toggle</button>
ab78acc6
IC
565 </div>
566 </th>
567 <th>
568 <div class="input-group">
ea87f1d3
IC
569 <span data-translate>Address</span>&nbsp;&nbsp;
570 <button class="address-toggle" data-translate>Toggle</button>
ab78acc6
IC
571 </div>
572 </th>
1b12b2f5
IC
573 <th>
574 <div class="input-group">
ea87f1d3
IC
575 <span data-translate>Public Key</span>&nbsp;&nbsp;
576 <button class="public-key-toggle" data-translate>Toggle</button>
1b12b2f5
IC
577 </div>
578 </th>
ab78acc6
IC
579 <th>
580 <div class="input-group">
ea87f1d3
IC
581 <span data-translate>Private Key</span>&nbsp;&nbsp;
582 <button class="private-key-toggle" data-translate>Toggle</button>
ab78acc6
IC
583 </div>
584 </th>
585 </thead>
d737abf6 586 <tbody class="addresses monospace">
c866242d
IC
587 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
588 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
589 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
590 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
591 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
ab78acc6
IC
592 </tbody>
593 </table>
594 </div>
595 </div>
ea87f1d3 596 <span data-translate>Show more rows</span>:
ab78acc6 597 <input type="number" class="rows-to-add" value="20">
ea87f1d3 598 <button class="more" data-translate>Show</button>
3af2954a 599
ab78acc6 600 <hr>
3af2954a 601
ab78acc6
IC
602 <div class="row">
603 <div class="col-md-12">
ea87f1d3
IC
604 <h2 data-translate>More info</h2>
605 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
606 <p data-translate-html>
ab78acc6
IC
607 Read more at the
608 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
609 </p>
ea87f1d3
IC
610 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
611 <p data-translate-html>
ab78acc6
IC
612 Read more at the
613 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
ea87f1d3
IC
614 </p>
615 <p data-translate-html>
616 See the demo at
ab78acc6
IC
617 <a href="http://bip32.org/" target="_blank">bip32.org</a>
618 </p>
ea87f1d3
IC
619 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
620 <p data-translate-html>
ab78acc6
IC
621 Read more at the
622 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
623 </p>
ea87f1d3 624 <h3 data-translate>Private Keys</h3>
ab78acc6 625 <p>
ea87f1d3
IC
626 <span data-translate-html>
627 Use private keys at
628 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
629 </span>
630 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
ab78acc6 631 </p>
ea87f1d3 632 <h3 id="entropy-notes" data-translate>Entropy</h3>
c6624d51 633 <p>
ea87f1d3
IC
634 <span data-translate-html>
635 Entropy values must be sourced from a
636 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
637 </span>
638 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
639 <span data-translate-html>
640 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
641 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
642 random enough for the needs of this tool.
643 </span>
c6624d51 644 </p>
434caecd
IC
645 <p>
646 <strong><span data-translate>Do not store entropy.</span></strong>
647 </p>
648 <p>
649 <span data-translate>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
650 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
651 <span data-translate-html><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
652 </p>
c6624d51 653 <p>
ea87f1d3
IC
654 <span data-translate-html>
655 The random mnemonic generator on this page uses a
656 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
657 </span>
658 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
659 <span data-translate>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
660 <span data-translate>In that case you might choose to use your own source of entropy.</span>
c6624d51
IC
661 </p>
662 <p>
ea87f1d3 663 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
c6624d51 664 </p>
52da415f
IC
665 <h3 data-translate>License</h3>
666 <p>
667 <span data-translate-html>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
668 </span>
669 </p>
670 <p data-translate>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.</p>
ab78acc6
IC
671 </div>
672 </div>
3af2954a 673
ab78acc6 674 <hr>
3af2954a 675
ab78acc6
IC
676 <div class="row">
677 <div class="col-md-12">
3af2954a 678
ea87f1d3 679 <h2 data-translate>Offline Usage</h2>
3af2954a 680
ea87f1d3 681 <p data-translate>
ab78acc6
IC
682 You can use this tool without having to be online.
683 </p>
ea87f1d3 684 <p data-translate>
ab78acc6
IC
685 In your browser, select file save-as, and save this page
686 as a file.
687 </p>
ea87f1d3 688 <p data-translate>
ab78acc6
IC
689 Double-click that file to open it in a browser
690 on any offline computer.
691 </p>
692 <p>
ea87f1d3
IC
693 <span data-translate>Alternatively, download the file from the repository</span>
694 -
695 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
696 </p>
3af2954a 697
ab78acc6
IC
698 </div>
699 </div>
3af2954a 700
ab78acc6 701 <hr>
3af2954a 702
ab78acc6
IC
703 <div class="row">
704 <div class="col-md-12">
3af2954a 705
ea87f1d3 706 <h2 data-translate>This project is 100% open-source code</h2>
3af2954a 707
ab78acc6 708 <p>
ea87f1d3
IC
709 <span data-translate>Get the source code from the repository</span>
710 -
b630f83d
IC
711 <a href="https://github.com/iancoleman/bip39" target="_blank">
712 https://github.com/iancoleman/bip39
ab78acc6
IC
713 </a>
714 </p>
3af2954a 715
ea87f1d3 716 <h3 data-translate>Libraries</h3>
3af2954a 717
ab78acc6
IC
718 <p>
719 <span>BitcoinJS - </span>
720 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
721 https://github.com/bitcoinjs/bitcoinjs-lib
722 </a>
723 </p>
3af2954a 724
ab78acc6
IC
725 <p>
726 <span>jsBIP39 - </span>
727 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
728 https://github.com/iancoleman/jsbip39
729 </a>
730 </p>
3af2954a 731
ab78acc6
IC
732 <p>
733 <span>sjcl - </span>
734 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
735 https://github.com/bitwiseshiftleft/sjcl
736 </a>
737 </p>
3af2954a 738
ab78acc6
IC
739 <p>
740 <span>jQuery - </span>
741 <a href="https://jquery.com/" target="_blank">
742 https://jquery.com/
743 </a>
744 </p>
3af2954a 745
ab78acc6
IC
746 <p>
747 <span>Twitter Bootstrap - </span>
748 <a href="http://getbootstrap.com/" target="_blank">
749 http://getbootstrap.com/
750 </a>
751 </p>
3af2954a 752
ab78acc6
IC
753 </div>
754 </div>
3af2954a 755
ab78acc6 756 </div>
3af2954a 757
e00964cc 758 <div class="qr-container hidden">
52da415f
IC
759 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
760 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
761 <div class="qr-hider hidden">
762 <div class="qr-image"></div>
763 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
764 </div>
e00964cc
IC
765 </div>
766
ab78acc6
IC
767 <div class="feedback-container">
768 <div class="feedback">Loading...</div>
769 </div>
3af2954a 770
ab78acc6
IC
771 <script type="text/template" id="address-row-template">
772 <tr>
773 <td class="index"><span></span></td>
e00964cc
IC
774 <td class="address"><span data-show-qr></span></td>
775 <td class="pubkey"><span data-show-qr></span></td>
776 <td class="privkey"><span data-show-qr></span></td>
ab78acc6
IC
777 </tr>
778 </script>
8b095871
IC
779 <script>// From
780// https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
781// Required for ethereumjs-utils.js when run in phantomjs-2.1.1
782// but is not required in any modern browsers.
783// For more information, see
784// https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
785
786//----------------------------------------------------------------------
787//
788// ECMAScript 2015 Polyfills
789//
790//----------------------------------------------------------------------
563e401a 791
8b095871
IC
792(function (global) {
793 "use strict";
794
795 // Set this to always override native implementations, for testing
796 // the polyfill in browsers with partial/full ES2015 support.
797 var OVERRIDE_NATIVE_FOR_TESTING = false;
798
799 var undefined = (void 0); // Paranoia
800
801 // Helpers
802
803 function strict(o) {
804 return o === global ? undefined : o;
805 }
806
807 function hook(o, p, f) {
808 var op = o[p];
809 console.assert(typeof op === 'function', 'Hooking a non-function');
810 o[p] = function() {
811 var o = strict(this);
812 var r = f.apply(o, arguments);
813 return r !== undefined ? r : op.apply(o, arguments);
814 };
815 }
816
817 function isSymbol(s) {
818 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
819 }
820
821 function getPropertyDescriptor(target, name) {
822 var desc = Object.getOwnPropertyDescriptor(target, name);
823 var proto = Object.getPrototypeOf(target);
824 while (!desc && proto) {
825 desc = Object.getOwnPropertyDescriptor(proto, name);
826 proto = Object.getPrototypeOf(proto);
563e401a 827 }
8b095871
IC
828 return desc;
829 }
563e401a 830
8b095871
IC
831 var enqueue = (function(nativePromise, nativeSetImmediate) {
832 if (nativePromise)
833 return function(job) { nativePromise.resolve().then(function() { job(); }); };
834 if (nativeSetImmediate)
835 return function(job) { nativeSetImmediate(job); };
836 return function(job) { setTimeout(job, 0); };
837 }(global['Promise'], global['setImmediate']));
563e401a 838
8b095871
IC
839 function define(o, p, v, override) {
840 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
841 return;
842
843 if (typeof v === 'function') {
844 // Sanity check that functions are appropriately named (where possible)
845 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
846 Object.defineProperty(o, p, {
847 value: v,
848 configurable: true,
849 enumerable: false,
850 writable: true
851 });
563e401a 852 } else {
8b095871
IC
853 Object.defineProperty(o, p, {
854 value: v,
855 configurable: false,
856 enumerable: false,
857 writable: false
858 });
563e401a 859 }
8b095871 860 }
563e401a 861
8b095871
IC
862 function set_internal(o, p, v) {
863 Object.defineProperty(o, p, {
864 value: v,
865 configurable: false,
866 enumerable: false,
867 writable: true
868 });
869 }
563e401a 870
8b095871
IC
871 // Snapshot intrinsic functions
872 var $isNaN = global.isNaN,
873 $parseInt = global.parseInt,
874 $parseFloat = global.parseFloat;
875
876 var E = Math.E,
877 LOG10E = Math.LOG10E,
878 LOG2E = Math.LOG2E,
879 abs = Math.abs,
880 ceil = Math.ceil,
881 exp = Math.exp,
882 floor = Math.floor,
883 log = Math.log,
884 max = Math.max,
885 min = Math.min,
886 pow = Math.pow,
887 random = Math.random,
888 sqrt = Math.sqrt;
889
890 var orig_match = String.prototype.match,
891 orig_replace = String.prototype.replace,
892 orig_search = String.prototype.search,
893 orig_split = String.prototype.split;
894
895 // These are used for implementing the polyfills, but not exported.
896
897 // Inspired by https://gist.github.com/1638059
898 /** @constructor */
899 function EphemeronTable() {
900 var secretKey = ObjectCreate(null);
901
902 function conceal(o) {
903 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
904 Object.defineProperty(o, 'valueOf', {
905 value: (function(secretKey) {
906 return function (k) {
907 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
908 };
909 }(secretKey)),
910 configurable: true,
911 writeable: true,
912 enumerable: false
913 });
914 return secrets;
915 }
563e401a 916
8b095871
IC
917 function reveal(o) {
918 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
919 return v === o ? null : v;
920 }
921
922 return {
923 clear: function() {
924 secretKey = ObjectCreate(null);
925 },
926 remove: function(key) {
927 var secrets = reveal(key);
928 if (secrets && HasOwnProperty(secrets, 'value')) {
929 delete secrets.value;
930 return true;
931 }
932 return false;
933 },
934 get: function(key, defaultValue) {
935 var secrets = reveal(key);
936 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
937 },
938 has: function(key) {
939 var secrets = reveal(key);
940 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
941 },
942 set: function(key, value) {
943 var secrets = reveal(key) || conceal(key);
944 secrets.value = value;
563e401a 945 }
8b095871
IC
946 };
947 }
563e401a 948
8b095871 949 var empty = Object.create(null);
563e401a 950
8b095871
IC
951 //----------------------------------------------------------------------
952 //
953 // ECMAScript 2015
954 // http://www.ecma-international.org/ecma-262/6.0/
955 //
956 //----------------------------------------------------------------------
563e401a 957
8b095871
IC
958 // ---------------------------------------
959 // 19.4 Symbol Objects
960 // ---------------------------------------
563e401a 961
8b095871
IC
962 // NOTE: Symbols are defined here - out of spec order - since we need the
963 // properties and prototype to be populated for other polyfills.
563e401a 964
8b095871 965 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
563e401a 966
8b095871
IC
967 var symbolForKey;
968 (function() {
969 var secret = Object.create(null);
970 var symbolMap = {};
971 symbolForKey = function(k) {
972 return symbolMap[k];
973 };
563e401a 974
8b095871 975 var GlobalSymbolRegistry = [];
563e401a 976
8b095871
IC
977 function unique(bits) {
978 return Array(bits + 1).join('x').replace(/x/g, function() {
979 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
980 });
981 }
563e401a 982
8b095871
IC
983 // 19.4.1 The Symbol Constructor
984 // 19.4.1.1 Symbol ( description=undefined )
985 function Symbol(description) {
986 if (!(this instanceof Symbol)) return new Symbol(description, secret);
987 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
563e401a 988
8b095871
IC
989 var descString = description === undefined ? undefined : String(description);
990
991 set_internal(this, '[[SymbolData]]', unique(128));
992 set_internal(this, '[[Description]]', descString);
993
994 symbolMap[this] = this;
995 return this;
996 }
997
998 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
999 global.Symbol = Symbol;
1000
1001 // 19.4.2 Properties of the Symbol Constructor
1002
1003 // 19.4.2.1 Symbol.for (key)
1004 define(Symbol, 'for', function for_(key) {
1005 var stringKey = String(key);
1006 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1007 var e = GlobalSymbolRegistry[i];
1008 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
563e401a 1009 }
8b095871
IC
1010 var newSymbol = Symbol(key);
1011 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
1012 return newSymbol;
1013 });
563e401a 1014
8b095871
IC
1015 // 19.4.2.2 Symbol.hasInstance
1016 // 19.4.2.3 Symbol.isConcatSpreadable
563e401a 1017
8b095871
IC
1018 // 19.4.2.4 Symbol.iterator
1019 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
563e401a 1020
8b095871
IC
1021 // 19.4.2.5 Symbol.keyFor (sym)
1022 define(Symbol, 'keyFor', function keyFor(sym) {
1023 if (!(sym instanceof Symbol)) throw TypeError();
1024 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
1025 var e = GlobalSymbolRegistry[i];
1026 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
1027 }
1028 return undefined;
1029 });
563e401a 1030
8b095871
IC
1031 // 19.4.2.6 Symbol.match
1032 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
563e401a 1033
8b095871 1034 // 19.4.2.7 Symbol.prototype
563e401a 1035
8b095871
IC
1036 // 19.4.2.8 Symbol.replace
1037 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
563e401a 1038
8b095871
IC
1039 // 19.4.2.9 Symbol.search
1040 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
563e401a 1041
8b095871 1042 // 19.4.2.10 Symbol.species
563e401a 1043
8b095871
IC
1044 // 19.4.2.11 Symbol.search
1045 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
563e401a 1046
8b095871 1047 // 19.4.2.12 Symbol.toPrimitive
563e401a 1048
8b095871
IC
1049 // 19.4.2.13 Symbol.toStringTag
1050 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
1051
1052 // 19.4.2.14 Symbol.unscopables
1053
1054 // 19.4.3 Properties of the Symbol Prototype Object
1055 // 19.4.3.1 Symbol.prototype.constructor
1056
1057 // 19.4.3.2 Symbol.prototype.toString ( )
1058 Object.defineProperty(Symbol.prototype, 'toString', {
1059 value: function toString() {
1060 var s = strict(this);
1061 var desc = s['[[Description]]'];
1062 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
1063 },
1064 configurable: true, writeable: true, enumerable: false });
1065
1066 // 19.4.3.3 Symbol.prototype.valueOf ( )
1067 Object.defineProperty(Symbol.prototype, 'valueOf', {
1068 value: function valueOf() {
1069 // To prevent automatic string conversion:
1070 throw TypeError();
1071
1072 // Spec has approximately the following:
1073 //var s = strict(this);
1074 //if (Type(s) === 'symbol') return s;
1075 //if (Type(s) !== 'object') throw TypeError();
1076 //if (!('[[SymbolData]]' in s)) throw TypeError();
1077 //return s['[[SymbolData]]'];
1078 },
1079 configurable: true, writeable: true, enumerable: false });
1080
1081 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1082 // (Done later to polyfill partial implementations)
1083
1084 // 19.4.4 Properties of Symbol Instances
1085 }());
1086
1087 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
1088
1089 // Defined here so that other prototypes can reference it
1090 // 25.1.2 The %IteratorPrototype% Object
1091 var $IteratorPrototype$ = {};
1092
1093 //----------------------------------------
1094 // 6 ECMAScript Data Types and Values
1095 //----------------------------------------
1096
1097 // 6.1 ECMAScript Language Types
1098
1099 // "Type(x)" is used as shorthand for "the type of x"...
1100 function Type(v) {
1101 switch (typeof v) {
1102 case 'undefined': return 'undefined';
1103 case 'boolean': return 'boolean';
1104 case 'number': return 'number';
1105 case 'string': return 'string';
1106 case 'symbol': return 'symbol';
1107 default:
1108 if (v === null) return 'null';
1109 if (v instanceof global.Symbol) return 'symbol';
1110 return 'object';
563e401a 1111 }
8b095871 1112 }
563e401a 1113
8b095871
IC
1114 // 6.1.5.1 Well-Known Symbols
1115 var $$iterator = global.Symbol.iterator,
1116 $$match = global.Symbol.match,
1117 $$replace = global.Symbol.replace,
1118 $$search = global.Symbol.search,
1119 $$split = global.Symbol.split,
1120 $$toStringTag = global.Symbol.toStringTag;
563e401a 1121
8b095871
IC
1122 //----------------------------------------
1123 // 7 Abstract Operations
1124 //----------------------------------------
1125
1126 //----------------------------------------
1127 // 7.1 Type Conversion
1128 //----------------------------------------
1129
1130 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1131 // just use valueOf()
1132
1133 // 7.1.2 ToBoolean ( argument )
1134 // just use Boolean()
1135
1136 // 7.1.3 ToNumber ( argument )
1137 // just use Number()
1138
1139 // 7.1.4 ToInteger ( argument )
1140 function ToInteger(n) {
1141 n = Number(n);
1142 if ($isNaN(n)) return 0;
1143 if (n === 0 || n === Infinity || n === -Infinity) return n;
1144 return ((n < 0) ? -1 : 1) * floor(abs(n));
563e401a 1145 }
8b095871
IC
1146
1147 // 7.1.5 ToInt32 ( argument )
1148 function ToInt32(v) { return v >> 0; }
1149
1150 // 7.1.6 ToUint32 ( argument )
1151 function ToUint32(v) { return v >>> 0; }
1152
1153 // 7.1.7 ToInt16 ( argument )
1154 function ToInt16(v) { return (v << 16) >> 16; }
1155
1156 // 7.1.8 ToUint16 ( argument )
1157 function ToUint16(v) { return v & 0xFFFF; }
1158
1159 // 7.1.9 ToInt8 ( argument )
1160 function ToInt8(v) { return (v << 24) >> 24; }
1161
1162 // 7.1.10 ToUint8 ( argument )
1163 function ToUint8(v) { return v & 0xFF; }
1164
1165 // 7.1.11 ToUint8Clamp ( argument )
1166 function ToUint8Clamp(argument) {
1167 var number = Number(argument);
1168 if ($isNaN(number)) return 0;
1169 if (number <= 0) return 0;
1170 if (number >= 255) return 255;
1171 var f = floor(number);
1172 if ((f + 0.5) < number) return f + 1;
1173 if (number < (f + 0.5)) return f;
1174 if (f % 2) return f + 1;
1175 return f;
563e401a 1176 }
8b095871
IC
1177
1178 // 7.1.12 ToString ( argument )
1179 // just use String()
1180
1181 // 7.1.13 ToObject ( argument )
1182 function ToObject(v) {
1183 if (v === null || v === undefined) throw TypeError();
1184 return Object(v);
563e401a 1185 }
563e401a 1186
8b095871
IC
1187 // 7.1.14 ToPropertyKey ( argument )
1188 function ToPropertyKey(v) {
1189 return String(v);
1190 }
3af2954a 1191
8b095871
IC
1192 // 7.1.15 ToLength ( argument )
1193 function ToLength(v) {
1194 var len = ToInteger(v);
1195 if (len <= 0) return 0;
1196 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1197 return min(len, 0x20000000000000 - 1); // 2^53-1
ab78acc6 1198 }
3af2954a 1199
8b095871 1200 // 7.1.16 CanonicalNumericIndexString ( argument )
3af2954a 1201
8b095871
IC
1202 //----------------------------------------
1203 // 7.2 Testing and Comparison Operations
1204 //----------------------------------------
3af2954a 1205
8b095871
IC
1206 // 7.2.1 RequireObjectCoercible ( argument )
1207 // 7.2.2 IsArray ( argument )
3af2954a 1208
8b095871
IC
1209 // 7.2.3 IsCallable ( argument )
1210 function IsCallable(o) { return typeof o === 'function'; }
3af2954a 1211
8b095871
IC
1212 // 7.2.4 IsConstructor ( argument )
1213 function IsConstructor(o) {
1214 // Hacks for Safari 7 TypedArray XXXConstructor objects
1215 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1216 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1217 // TODO: Can this be improved on?
1218 return typeof o === 'function';
3af2954a 1219 }
8b095871
IC
1220
1221 // 7.2.5 IsExtensible (O)
1222 // 7.2.6 IsInteger ( argument )
1223
1224 // 7.2.7 IsPropertyKey ( argument )
1225 function IsPropertyKey(argument) {
1226 if (Type(argument) === 'string') return true;
1227 if (Type(argument) === 'symbol') return true;
1228 return false;
3af2954a
IC
1229 }
1230
8b095871
IC
1231 // 7.2.8 IsRegExp ( argument )
1232 // 7.2.5 IsConstructor ( argument )
3af2954a 1233
8b095871
IC
1234 // 7.2.9 SameValue(x, y)
1235 function SameValue(x, y) {
1236 if (typeof x !== typeof y) return false;
1237 switch (typeof x) {
1238 case 'undefined':
1239 return true;
1240 case 'number':
1241 if (x !== x && y !== y) return true;
1242 if (x === 0 && y === 0) return 1/x === 1/y;
1243 return x === y;
1244 case 'boolean':
1245 case 'string':
1246 case 'object':
1247 default:
1248 return x === y;
1249 }
1250 }
3af2954a 1251
8b095871
IC
1252 // 7.2.10 SameValueZero(x, y)
1253 function SameValueZero(x, y) {
1254 if (typeof x !== typeof y) return false;
1255 switch (typeof x) {
1256 case 'undefined':
1257 return true;
1258 case 'number':
1259 if (x !== x && y !== y) return true;
1260 return x === y;
1261 case 'boolean':
1262 case 'string':
1263 case 'object':
1264 default:
1265 return x === y;
1266 }
1267 }
3af2954a 1268
8b095871
IC
1269 //----------------------------------------
1270 // 7.3 Operations on Objects
1271 //----------------------------------------
3af2954a 1272
8b095871
IC
1273 // 7.3.1 Get (O, P)
1274 // - just use o.p or o[p]
3af2954a 1275
8b095871
IC
1276 // 7.3.2 GetV (V, P)
1277 function GetV(v, p) {
1278 var o = ToObject(v);
1279 return o[p];
1280 }
3af2954a 1281
8b095871
IC
1282 // 7.3.3 Set (O, P, V, Throw)
1283 // - just use o.p = v or o[p] = v
3af2954a 1284
3af2954a 1285
3af2954a 1286
3af2954a 1287
8b095871
IC
1288 // 7.3.9 GetMethod (O, P)
1289 function GetMethod(o, p) {
1290 var func = GetV(o, p);
1291 if (func === undefined || func === null) return undefined;
1292 if (!IsCallable(func)) throw TypeError();
1293 return func;
ab78acc6 1294 }
8b095871
IC
1295
1296 // 7.3.10 HasProperty (O, P)
1297 function HasProperty(o, p) {
1298 while (o) {
1299 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1300 if (Type(o) !== 'object') return false;
1301 o = Object.getPrototypeOf(o);
ab78acc6 1302 }
8b095871 1303 return false;
ab78acc6 1304 }
8b095871
IC
1305
1306 // 7.3.11 HasOwnProperty (O, P)
1307 function HasOwnProperty(o, p) {
1308 return Object.prototype.hasOwnProperty.call(o, p);
ab78acc6 1309 }
3af2954a 1310
8b095871
IC
1311 //----------------------------------------
1312 // 7.4 Operations on Iterator Objects
1313 //----------------------------------------
3af2954a 1314
8b095871
IC
1315 // 7.4.1 GetIterator ( obj, method )
1316 function GetIterator(obj, method) {
1317 if (arguments.length < 2)
1318 method = GetMethod(obj, $$iterator);
1319 var iterator = method.call(obj);
1320 if (Type(iterator) !== 'object') throw TypeError();
1321 return iterator;
3af2954a
IC
1322 }
1323
8b095871
IC
1324 // 7.4.2 IteratorNext ( iterator, value )
1325 function IteratorNext(iterator, value) {
1326 if (arguments.length < 2)
1327 var result = iterator.next();
1328 else
1329 result = iterator.next(value);
1330 if (Type(result) !== 'object') throw TypeError();
1331 return result;
1332 }
3af2954a 1333
8b095871
IC
1334 // 7.4.3 IteratorComplete ( iterResult )
1335 function IteratorComplete(iterResult) {
1336 console.assert(Type(iterResult) === 'object');
1337 return Boolean(iterResult.done);
1338 }
3af2954a 1339
8b095871
IC
1340 // 7.4.4 IteratorValue ( iterResult )
1341 function IteratorValue(iterResult) {
1342 console.assert(Type(iterResult) === 'object');
1343 return iterResult.value;
1344 }
1345
1346 // 7.4.5 IteratorStep ( iterator )
1347 function IteratorStep( iterator, value ) {
1348 var result = IteratorNext(iterator, value);
1349 var done = result['done'];
1350 if (Boolean(done) === true) return false;
1351 return result;
1352 }
1353
1354 // 7.4.6 IteratorClose( iterator, completion )
1355 function IteratorClose( iterator, completion ) {
1356 console.assert(Type(iterator) === 'object');
1357 var _return = GetMethod(iterator, 'return');
1358 if (_return === undefined) return completion;
1359 try {
1360 var innerResult = _return[iterator]();
1361 } catch (result) {
1362 // TODO: If completion.[[type]] is throw, return completion
1363 return result;
1364 }
1365 if (Type(innerResult) !== 'object') throw TypeError();
1366 return completion;
1367 }
1368
1369 // 7.4.7 CreateIterResultObject (value, done)
1370 function CreateIterResultObject(value, done) {
1371 console.assert(Type(done) === 'boolean');
1372 var obj = {};
1373 obj["value"] = value;
1374 obj["done"] = done;
1375 return obj;
1376 }
1377
1378 // 7.4.8 CreateListIterator (list)
1379 // 7.4.8.1 ListIterator next( )
1380 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1381 // 7.4.9.1 CompoundIterator next( )
1382
1383 //----------------------------------------
1384 // 8 Executable Code and Execution Contexts
1385 //----------------------------------------
1386
1387 //----------------------------------------
1388 // 8.4 Jobs and Job Queues
1389 //----------------------------------------
1390
1391 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1392 function EnqueueJob(queueName, job, args) {
1393 var fn = function() { job.apply(undefined, args); };
1394 enqueue(fn);
1395 }
1396
1397 // 8.4.2 NextJob result
1398 function NextJob(result) {
1399 // no-op
1400 }
1401
1402 //----------------------------------------
1403 // 9 Ordinary and Exotic Objects Behaviors
1404 //----------------------------------------
1405
1406 // 9.1.11 [[Enumerate]] ()
1407 function Enumerate(obj) {
1408 var e = [];
1409 if (Object(obj) !== obj) return e;
1410 var visited = new Set;
1411 while (obj !== null) {
1412 Object.getOwnPropertyNames(obj).forEach(function(name) {
1413 if (!visited.has(name)) {
1414 var desc = Object.getOwnPropertyDescriptor(obj, name);
1415 if (desc) {
1416 visited.add(name);
1417 if (desc.enumerable) e.push(name);
1418 }
1419 }
1420 });
1421 obj = Object.getPrototypeOf(obj);
1422 }
1423 return e[$$iterator]();
1424 }
1425
1426 // 9.1.12 [[OwnPropertyKeys]] ( )
1427 function OwnPropertyKeys(o) {
1428 return Object.getOwnPropertyNames(o);
1429 }
1430
1431 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1432 function ObjectCreate(proto, internalSlotsList) {
1433 return Object.create(proto, internalSlotsList);
1434 }
1435
1436 // ---------------------------------------
1437 // 19 Fundamental Objects
1438 // ---------------------------------------
1439
1440 // ---------------------------------------
1441 // 19.1 Object Objects
1442 // ---------------------------------------
1443
1444 // 19.1.1 The Object Constructor
1445 // 19.1.1.1 Object ( [ value ] )
1446 // 19.1.2 Properties of the Object Constructor
1447 // 19.1.2.1 Object.assign ( target, ...sources )
1448 define(
1449 Object, 'assign',
1450 function assign(target, /*...*/sources) {
1451 var to = ToObject(target);
1452 if (arguments.length < 2) return to;
1453
1454 var sourcesIndex = 1;
1455 while (sourcesIndex < arguments.length) {
1456 var nextSource = arguments[sourcesIndex++];
1457 if (nextSource === undefined || nextSource === null) {
1458 var keys = [];
1459 } else {
1460 var from = ToObject(nextSource);
1461 keys = OwnPropertyKeys(from);
1462 }
1463 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1464 var nextKey = keys[keysIndex];
1465 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1466 if (desc !== undefined && desc.enumerable) {
1467 var propValue = from[nextKey];
1468 to[nextKey] = propValue;
1469 }
1470 }
1471 }
1472 return to;
1473 });
1474
1475 // 19.1.2.2 Object.create ( O [ , Properties ] )
1476 // 19.1.2.3 Object.defineProperties ( O, Properties )
1477 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1478 // 19.1.2.5 Object.freeze ( O )
1479 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1480
1481 (function() {
1482 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1483 $getOwnPropertyNames = Object.getOwnPropertyNames,
1484 $keys = Object.keys,
1485 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1486
1487 function isStringKey(k) { return !symbolForKey(k); }
1488
1489 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1490 define(
1491 Object, 'getOwnPropertyNames',
1492 function getOwnPropertyNames(o) {
1493 if (Object.prototype.toString.call(o) === '[object Window]') {
1494 // Workaround for cross-realm calling by IE itself.
1495 // https://github.com/inexorabletash/polyfill/issues/96
1496 try {
1497 return $getOwnPropertyNames(o).filter(isStringKey);
1498 } catch (_) {
1499 return $window_names.slice();
1500 }
1501 }
1502 return $getOwnPropertyNames(o).filter(isStringKey);
1503 }, !nativeSymbols);
1504
1505 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1506 define(
1507 Object, 'getOwnPropertySymbols',
1508 function getOwnPropertySymbols(o) {
1509 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1510 }, !nativeSymbols);
1511
1512 // 19.1.2.14 Object.keys ( O )
1513 define(
1514 Object, 'keys',
1515 function keys(o) {
1516 return $keys(o).filter(isStringKey);
1517 }, !nativeSymbols);
1518 }());
1519
1520 // 19.1.2.9 Object.getPrototypeOf ( O )
1521 // 19.1.2.10 Object.is ( value1, value2 )
1522 define(
1523 Object, 'is',
1524 function is(value1, value2) {
1525 return SameValue(value1, value2);
1526 });
1527
1528 // 19.1.2.11 Object.isExtensible ( O )
1529 // 19.1.2.12 Object.isFrozen ( O )
1530 // 19.1.2.13 Object.isSealed ( O )
1531
1532 // 19.1.2.14 Object.keys ( O )
1533 // see above
1534
1535 // 19.1.2.15 Object.preventExtensions ( O )
1536 // 19.1.2.16 Object.prototype
1537 // 19.1.2.17 Object.seal ( O )
1538
1539 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1540 define(
1541 Object, 'setPrototypeOf',
1542 function setPrototypeOf(o, proto) {
1543 if (Type(o) !== 'object') throw TypeError();
1544 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1545 o.__proto__ = proto;
1546 return o;
1547 }
1548 );
1549
1550 // 19.1.3 Properties of the Object Prototype Object
1551 // 19.1.3.1 Object.prototype.constructor
1552 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1553 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1554 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1555 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1556 // 19.1.3.6 Object.prototype.toString ( )
1557 hook(Object.prototype, 'toString',
1558 function() {
1559 var o = strict(this);
1560 if (o === Object(o) && $$toStringTag in o) {
1561 return '[object ' + o[$$toStringTag] + ']';
1562 }
1563 return undefined;
1564 });
1565
1566 // 19.1.3.7 Object.prototype.valueOf ( )
1567 // 19.1.4 Properties of Object Instances
1568
1569 // ---------------------------------------
1570 // 19.2 Function Objects
1571 // ---------------------------------------
1572
1573 // 19.2.1 The Function Constructor
1574 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1575 // 19.2.2 Properties of the Function Constructor
1576 // 19.2.2.1 Function.length
1577 // 19.2.2.2 Function.prototype
1578 // 19.2.3 Properties of the Function Prototype Object
1579 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1580 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1581 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1582 // 19.2.3.4 Function.prototype.constructor
1583 // 19.2.3.5 Function.prototype.toString ( )
1584 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1585 // 19.2.4 Function Instances
1586 // 19.2.4.1 length
1587 // 19.2.4.2 name
1588 // 19.2.4.3 prototype
1589
1590 // (No polyfillable changes from ES5)
1591
1592 // ---------------------------------------
1593 // 19.3 Boolean Objects
1594 // ---------------------------------------
1595
1596 // 19.3.1 The Boolean Constructor
1597 // 19.3.1.1 Boolean ( value )
1598 // 19.3.2 Properties of the Boolean Constructor
1599 // 19.3.2.1 Boolean.prototype
1600 // 19.3.3 Properties of the Boolean Prototype Object
1601 // 19.3.3.1 Boolean.prototype.constructor
1602 // 19.3.3.2 Boolean.prototype.toString ( )
1603 // 19.3.3.3 Boolean.prototype.valueOf ( )
1604 // 19.3.4 Properties of Boolean Instances
1605
1606 // (No polyfillable changes from ES5)
1607
1608 // ---------------------------------------
1609 // 19.4 Symbol Objects
1610 // ---------------------------------------
1611
1612 // Moved earlier in this script, so that other polyfills can depend on them.
1613
1614 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1615 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1616
1617 // ---------------------------------------
1618 // 19.5 Error Objects
1619 // ---------------------------------------
1620
1621 // 19.5.1 The Error Constructor
1622 // 19.5.1.1 Error ( message )
1623 // 19.5.1.2 new Error( ...argumentsList )
1624 // 19.5.2 Properties of the Error Constructor
1625 // 19.5.2.1 Error.prototype
1626 // 19.5.3 Properties of the Error Prototype Object
1627 // 19.5.3.1 Error.prototype.constructor
1628 // 19.5.3.2 Error.prototype.message
1629 // 19.5.3.3 Error.prototype.name
1630 // 19.5.3.4 Error.prototype.toString ( )
1631 // 19.5.4 Properties of Error Instances
1632 // 19.5.5 Native Error Types Used in This Standard
1633 // 19.5.5.1 EvalError
1634 // 19.5.5.2 RangeError
1635 // 19.5.5.3 ReferenceError
1636 // 19.5.5.4 SyntaxError
1637 // 19.5.5.5 TypeError
1638 // 19.5.5.6 URIError
1639 // 19.5.6 NativeError Object Structure
1640 // 19.5.6.1 NativeError Constructors
1641 // 19.5.6.1.1 NativeError ( message )
1642 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1643 // 19.5.6.2 Properties of the NativeError Constructors
1644 // 19.5.6.2.1 NativeError.prototype
1645 // 19.5.6.3 Properties of the NativeError Prototype Objects
1646 // 19.5.6.4 Properties of NativeError Instances
1647
1648 // (No polyfillable changes from ES5)
1649
1650 // ---------------------------------------
1651 // 20 Numbers and Dates
1652 // ---------------------------------------
1653
1654 // ---------------------------------------
1655 // 20.1 Number Objects
1656 // ---------------------------------------
1657
1658 // 20.1.1 The Number Constructor
1659 // 20.1.1.1 Number ( [ value ] )
1660 // 20.1.1.2 new Number ( ...argumentsList )
1661 // 20.1.2 Properties of the Number Constructor
1662
1663 // 20.1.2.1 Number.EPSILON
1664 define(
1665 Number, 'EPSILON',
1666 (function () {
1667 var next, result;
1668 for (next = 1; 1 + next !== 1; next = next / 2)
1669 result = next;
1670 return result;
1671 }()));
1672
1673 // 20.1.2.2 Number.isFinite ( number )
1674 define(
1675 Number, 'isFinite',
1676 function isFinite(number) {
1677 if (Type(number) !== 'number') return false;
1678 if (number !== number || number === +Infinity || number === -Infinity) return false;
1679 return true;
1680 });
1681
1682 // 20.1.2.3 Number.isInteger ( number )
1683 define(
1684 Number, 'isInteger',
1685 function isInteger(number) {
1686 if (Type(number) !== 'number') return false;
1687 if (number !== number || number === +Infinity || number === -Infinity) return false;
1688 var integer = ToInteger(number);
1689 if (integer !== number) return false;
1690 return true;
1691 });
1692
1693 // 20.1.2.4 Number.isNaN ( number )
1694 define(
1695 Number, 'isNaN',
1696 function isNaN(number) {
1697 if (Type(number) !== 'number') return false;
1698 if (number !== number) return true;
1699 return false;
1700 });
1701
1702 // 20.1.2.5 Number.isSafeInteger ( number )
1703 define(
1704 Number, 'isSafeInteger',
1705 function isSafeInteger(number) {
1706 if (Type(number) !== 'number') return false;
1707 if (number !== number || number === +Infinity || number === -Infinity) return false;
1708 var integer = ToInteger(number);
1709 if (integer !== number) return false;
1710 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1711 return true;
1712 return false;
1713 });
1714
1715 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1716 define(
1717 Number, 'MAX_SAFE_INTEGER',
1718 9007199254740991); // 2^53-1
1719
1720 // 20.1.2.7 Number.MAX_VALUE
1721
1722 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1723 define(
1724 Number, 'MIN_SAFE_INTEGER',
1725 -9007199254740991); // -2^53+1
1726
1727 // 20.1.2.9 Number.MIN_VALUE
1728 // 20.1.2.10 Number.NaN
1729 // 20.1.2.11 Number.NEGATIVE_INFINITY
1730
1731 // 20.1.2.12 Number.parseFloat ( string )
1732 define(Number, 'parseFloat', $parseFloat);
1733
1734 // 20.1.2.13 Number.parseInt ( string, radix )
1735 define(Number, 'parseInt', $parseInt);
1736
1737 // 20.1.2.14 Number.POSITIVE_INFINITY
1738 // 20.1.2.15 Number.prototype
1739
1740 // 20.1.3 Properties of the Number Prototype Object
1741 // 20.1.3.1 Number.prototype.constructor
1742 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1743 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1744 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1745 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1746 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1747 // 20.1.3.7 Number.prototype.valueOf ( )
1748 // 20.1.4 Properties of Number Instances
1749
1750 // ---------------------------------------
1751 // 20.2 The Math Object
1752 // ---------------------------------------
1753
1754 // 20.2.1 Value Properties of the Math Object
1755 // 20.2.1.1 Math.E
1756 // 20.2.1.2 Math.LN10
1757 // 20.2.1.3 Math.LN2
1758 // 20.2.1.4 Math.LOG10E
1759 // 20.2.1.5 Math.LOG2E
1760 // 20.2.1.6 Math.PI
1761 // 20.2.1.7 Math.SQRT1_2
1762 // 20.2.1.8 Math.SQRT2
1763
1764 // 20.2.1.9 Math [ @@toStringTag ]
1765 define(Math, $$toStringTag, 'Math');
1766
1767 // 20.2.2 Function Properties of the Math Object
1768 // 20.2.2.1 Math.abs ( x )
1769 // 20.2.2.2 Math.acos ( x )
1770
1771 // 20.2.2.3 Math.acosh(x)
1772 define(
1773 Math, 'acosh',
1774 function acosh(x) {
1775 x = Number(x);
1776 return log(x + sqrt(x * x - 1));
1777 });
1778
1779 // 20.2.2.4 Math.asin ( x )
1780
1781 // 20.2.2.5 Math.asinh( x )
1782 define(
1783 Math, 'asinh',
1784 function asinh(x) {
1785 x = Number(x);
1786 if (SameValue(x, -0)) {
1787 return x;
1788 }
1789 var s = sqrt(x * x + 1);
1790 return (s === -x) ? log(0) : log(x + s);
1791 });
1792
1793 // 20.2.2.6 Math.atan ( x )
1794
1795 // 20.2.2.7 Math.atanh( x )
1796 define(
1797 Math, 'atanh',
1798 function atanh(x) {
1799 x = Number(x);
1800 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1801 });
1802
1803 // 20.2.2.8 Math.atan2 ( y, x )
1804
1805 // 20.2.2.9 Math.cbrt ( x )
1806 define(
1807 Math, 'cbrt',
1808 function cbrt(x) {
1809 x = Number(x);
1810 if ($isNaN(x/x)) {
1811 return x;
1812 }
1813 var r = pow(abs(x), 1/3);
1814 var t = x/r/r;
1815 return r + (r * (t-r) / (2*r + t));
1816 });
1817
1818 // 20.2.2.10 Math.ceil ( x )
1819
1820 // 20.2.2.11 Math.clz32 ( x )
1821 define(
1822 Math, 'clz32',
1823 function clz32(x) {
1824 function clz8(x) {
1825 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1826 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1827 }
1828 x = ToUint32(x);
1829 return x & 0xff000000 ? clz8(x >> 24) :
1830 x & 0xff0000 ? clz8(x >> 16) + 8 :
1831 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1832 });
1833
1834
1835
1836 // 20.2.2.12 Math.cos ( x )
1837
1838 // 20.2.2.13 Math.cosh ( x )
1839 define(
1840 Math, 'cosh',
1841 function cosh(x) {
1842 x = Number(x);
1843 return (pow(E, x) + pow(E, -x)) / 2;
1844 });
1845
1846 // 20.2.2.14 Math.exp ( x )
1847
1848 // 20.2.2.15 Math.expm1 ( x )
1849 define(
1850 Math, 'expm1',
1851 function expm1(x) {
1852 x = Number(x);
1853 // from: http://www.johndcook.com/cpp_log1p.html
1854 if (SameValue(x, -0)) {
1855 return -0;
1856 } else if (abs(x) < 1e-5) {
1857 return x + 0.5 * x * x; // two terms of Taylor expansion
1858 } else {
1859 return exp(x) - 1;
1860 }
1861 });
1862
1863 // 20.2.2.16 Math.floor ( x )
1864
1865 // 20.2.2.17 Math.fround ( x )
1866 define(
1867 Math, 'fround',
1868 function fround(x) {
1869 if ($isNaN(x)) {
1870 return NaN;
1871 }
1872 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1873 return x;
1874 }
1875 return (new Float32Array([x]))[0];
1876 });
1877
1878 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1879 define(
1880 Math, 'hypot',
1881 function hypot() {
1882 var values = [];
1883 var m = 0, sawNaN = false;
1884 for (var i = 0; i < arguments.length; ++i) {
1885 var n = abs(Number(arguments[i]));
1886 if (n === Infinity) return n;
1887 if (n !== n) sawNaN = true;
1888 if (n > m) m = n;
1889 values[i] = n;
1890 }
1891 if (sawNaN) return NaN;
1892 if (m === 0) return +0;
1893 var sum = +0;
1894 for (i = 0; i < values.length; ++i) {
1895 var r = values[i] / m;
1896 sum = sum + r * r;
1897 }
1898 return m * sqrt(sum);
1899 });
1900
1901 // 20.2.2.19 Math.imul ( x, y )
1902 define(
1903 Math, 'imul',
1904 function imul(x, y) {
1905 var a = ToUint32(x);
1906 var b = ToUint32(y);
1907 // (slow but accurate)
1908 var ah = (a >>> 16) & 0xffff;
1909 var al = a & 0xffff;
1910 var bh = (b >>> 16) & 0xffff;
1911 var bl = b & 0xffff;
1912 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1913 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1914 );
1915
1916 // 20.2.2.20 Math.log ( x )
1917
1918 // 20.2.2.21 Math.log1p ( x )
1919 define(
1920 Math, 'log1p',
1921 function log1p(x) {
1922 x = Number(x);
1923 // from: http://www.johndcook.com/cpp_expm1.html
1924 if (x < -1) {
1925 return NaN;
1926 } else if (SameValue(x, -0)) {
1927 return -0;
1928 } else if (abs(x) > 1e-4) {
1929 return log(1 + x);
1930 } else {
1931 return (-0.5 * x + 1) * x;
1932 }
1933 });
1934
1935 // 20.2.2.22 Math.log10 ( x )
1936 define(
1937 Math, 'log10',
1938 function log10(x) {
1939 x = Number(x);
1940 return log(x) * LOG10E;
1941 });
1942
1943 // 20.2.2.23 Math.log2 ( x )
1944 define(
1945 Math, 'log2',
1946 function log2(x) {
1947 x = Number(x);
1948 return log(x) * LOG2E;
1949 });
1950
1951 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1952 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1953 // 20.2.2.26 Math.pow ( x, y )
1954 // 20.2.2.27 Math.random ( )
1955 // 20.2.2.28 Math.round ( x )
1956
1957 // 20.2.2.29 Math.sign(x)
1958 define(
1959 Math, 'sign',
1960 function sign(x) {
1961 x = Number(x);
1962 return x < 0 ? -1 : x > 0 ? 1 : x;
1963 });
1964
1965 // 20.2.2.30 Math.sin ( x )
1966
1967 // 20.2.2.31 Math.sinh( x )
1968 define(
1969 Math, 'sinh',
1970 function sinh(x) {
1971 x = Number(x);
1972 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1973 });
1974
1975 // 20.2.2.32 Math.sqrt ( x )
1976 // 20.2.2.33 Math.tan ( x )
1977
1978 // 20.2.2.34 Math.tanh ( x )
1979 define(
1980 Math, 'tanh',
1981 function tanh(x) {
1982 x = Number(x);
1983 var n = pow(E, 2 * x) - 1,
1984 d = pow(E, 2 * x) + 1;
1985 if (SameValue(x, -0))
1986 return x;
1987 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1988 });
1989
1990 // 20.2.2.35 Math.trunc ( x )
1991 define(
1992 Math, 'trunc',
1993 function trunc(x) {
1994 x = Number(x);
1995 return $isNaN(x) ? NaN :
1996 x < 0 ? ceil(x) : floor(x);
1997 });
1998
1999 // ---------------------------------------
2000 // 20.3 Date Objects
2001 // ---------------------------------------
2002
2003 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
2004 // 20.3.1.1 Time Values and Time Range
2005 // 20.3.1.2 Day Number and Time within Day
2006 // 20.3.1.3 Year Number
2007 // 20.3.1.4 Month Number
2008 // 20.3.1.5 Date Number
2009 // 20.3.1.6 Week Day
2010 // 20.3.1.7 Local Time Zone Adjustment
2011 // 20.3.1.8 Daylight Saving Time Adjustment
2012 // 20.3.1.9 Local Time
2013 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
2014 // 20.3.1.11 MakeTime (hour, min, sec, ms)
2015 // 20.3.1.12 MakeDay (year, month, date)
2016 // 20.3.1.13 MakeDate (day, time)
2017 // 20.3.1.14 TimeClip (time)
2018 // 20.3.1.15 Date Time String Format
2019 // 20.3.1.15.1 Extended years
2020 // 20.3.2 The Date Constructor
2021 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2022 // 20.3.2.2 Date ( value )
2023 // 20.3.2.3 Date ( )
2024 // 20.3.3 Properties of the Date Constructor
2025 // 20.3.3.1 Date.now ( )
2026 // 20.3.3.2 Date.parse (string)
2027 // 20.3.3.3 Date.prototype
2028 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
2029 // 20.3.4 Properties of the Date Prototype Object
2030 // 20.3.4.1 Date.prototype.constructor
2031 // 20.3.4.2 Date.prototype.getDate ( )
2032 // 20.3.4.3 Date.prototype.getDay ( )
2033 // 20.3.4.4 Date.prototype.getFullYear ( )
2034 // 20.3.4.5 Date.prototype.getHours ( )
2035 // 20.3.4.6 Date.prototype.getMilliseconds ( )
2036 // 20.3.4.7 Date.prototype.getMinutes ( )
2037 // 20.3.4.8 Date.prototype.getMonth ( )
2038 // 20.3.4.9 Date.prototype.getSeconds ( )
2039 // 20.3.4.10 Date.prototype.getTime ( )
2040 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
2041 // 20.3.4.12 Date.prototype.getUTCDate ( )
2042 // 20.3.4.13 Date.prototype.getUTCDay ( )
2043 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
2044 // 20.3.4.15 Date.prototype.getUTCHours ( )
2045 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
2046 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
2047 // 20.3.4.18 Date.prototype.getUTCMonth ( )
2048 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
2049 // 20.3.4.20 Date.prototype.setDate ( date )
2050 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
2051 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
2052 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
2053 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
2054 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
2055 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
2056 // 20.3.4.27 Date.prototype.setTime ( time )
2057 // 20.3.4.28 Date.prototype.setUTCDate ( date )
2058 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
2059 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
2060 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
2061 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
2062 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
2063 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
2064 // 20.3.4.35 Date.prototype.toDateString ( )
2065 // 20.3.4.36 Date.prototype.toISOString ( )
2066 // 20.3.4.37 Date.prototype.toJSON ( key )
2067 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
2068 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2069 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
2070 // 20.3.4.41 Date.prototype.toString ( )
2071 // 20.3.4.42 Date.prototype.toTimeString ( )
2072 // 20.3.4.43 Date.prototype.toUTCString ( )
2073 // 20.3.4.44 Date.prototype.valueOf ( )
2074 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
2075 // 20.3.5 Properties of Date Instances
2076
2077 // (No polyfillable changes from ES5)
2078
2079 // ---------------------------------------
2080 // 21 Text Processing
2081 // ---------------------------------------
2082
2083 var string_regexp_dispatch = (function() {
2084 var faux = {}, secret = Symbol();
2085 faux[Symbol.match] = function() { return secret; };
2086 return ("").match(faux) === secret;
2087 }());
2088
2089 // 21.1 String Objects
2090 // 21.1.1 The String Constructor
2091 // 21.1.1.1 String ( value )
2092 // 21.1.2 Properties of the String Constructor
2093 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
2094
2095 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
2096 define(
2097 String, 'fromCodePoint',
2098 function fromCodePoint(/*...codePoints*/) {
2099 var codePoints = arguments,
2100 length = codePoints.length,
2101 elements = [],
2102 nextIndex = 0;
2103 while (nextIndex < length) {
2104 var next = codePoints[nextIndex];
2105 var nextCP = Number(next);
2106 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2107 nextCP < 0 || nextCP > 0x10FFFF) {
2108 throw RangeError('Invalid code point ' + nextCP);
2109 }
2110 if (nextCP < 0x10000) {
2111 elements.push(String.fromCharCode(nextCP));
2112 } else {
2113 nextCP -= 0x10000;
2114 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2115 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2116 }
2117 nextIndex += 1;
2118 }
2119 return elements.join('');
2120 });
2121
2122 // 21.1.2.3 String.prototype
2123
2124 // 21.1.2.4 String.raw ( template , ...substitutions )
2125 define(
2126 String, 'raw',
2127 function raw(template /*, ...substitutions*/) {
2128 var substitutions = [].slice.call(arguments, 1);
2129
2130 var cooked = Object(template);
2131 var rawValue = cooked['raw'];
2132 var raw = Object(rawValue);
2133 var len = raw['length'];
2134 var literalSegments = ToLength(len);
2135 if (literalSegments <= 0) return '';
2136 var stringElements = [];
2137 var nextIndex = 0;
2138 while (true) {
2139 var next = raw[nextIndex];
2140 var nextSeg = String(next);
2141 stringElements.push(nextSeg);
2142 if (nextIndex + 1 === literalSegments)
2143 return stringElements.join('');
2144 next = substitutions[nextIndex];
2145 var nextSub = String(next);
2146 stringElements.push(nextSub);
2147 nextIndex = nextIndex + 1;
2148 }
2149 });
2150
2151 // See https://githib.com/inexorabletash/uate for a more useful version.
2152
2153 // 21.1.3 Properties of the String Prototype Object
2154 // 21.1.3.1 String.prototype.charAt ( pos )
2155 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2156
2157 // 21.1.3.3 String.prototype.codePointAt ( pos )
2158 define(
2159 String.prototype, 'codePointAt',
2160 function codePointAt(pos) {
2161 var o = strict(this);
2162 var s = String(o);
2163 var position = ToInteger(pos);
2164 var size = s.length;
2165 if (position < 0 || position >= size) return undefined;
2166 var first = s.charCodeAt(position);
2167 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2168 var second = s.charCodeAt(position + 1);
2169 if (second < 0xDC00 || second > 0xDFFF) return first;
2170 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2171 });
2172
2173 // 21.1.3.4 String.prototype.concat ( ...args )
2174 // 21.1.3.5 String.prototype.constructor
2175
2176 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2177 define(
2178 String.prototype, 'endsWith',
2179 function endsWith(searchString) {
2180 var endPosition = arguments[1];
2181
2182 var o = strict(this);
2183 var s = String(o);
2184 var searchStr = String(searchString);
2185 var len = s.length;
2186 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2187 var end = min(max(pos, 0), len);
2188 var searchLength = searchStr.length;
2189 var start = end - searchLength;
2190 if (start < 0) return false;
2191 if (s.substring(start, start + searchLength) === searchStr) return true;
2192 return false;
2193 });
2194
2195 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2196 define(
2197 String.prototype, 'includes',
2198 function includes(searchString) {
2199 var position = arguments[1];
2200
2201 var o = strict(this);
2202 var s = String(o);
2203 var searchStr = String(searchString);
2204 var pos = ToInteger(position);
2205 var len = s.length;
2206 var start = min(max(pos, 0), len);
2207 return s.indexOf(searchStr, start) !== -1;
2208 });
2209
2210 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2211 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2212 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2213 // 21.1.3.11 String.prototype.match ( regexp )
2214 define(
2215 String.prototype, 'match',
2216 function match(regexp) {
2217 var o = strict(this);
2218 var s = String(o);
2219 if (HasProperty(regexp, $$match)) var rx = regexp;
2220 else rx = new RegExp(regexp);
2221 return rx[$$match](s);
2222 }, !string_regexp_dispatch);
2223
2224 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2225
2226 // Not practical due to table sizes; if needed, pull in:
2227 // https://github.com/walling/unorm/
2228
2229 // 21.1.3.13 String.prototype.repeat ( count )
2230 define(
2231 String.prototype, 'repeat',
2232 function repeat(count) {
2233 var o = strict(this);
2234 var s = String(o);
2235 var n = ToInteger(count);
2236 if (n < 0) throw RangeError();
2237 if (n === Infinity) throw RangeError();
2238 var t = new Array(n + 1).join(s);
2239 return t;
2240 });
2241
2242 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2243 define(
2244 String.prototype, 'replace',
2245 function replace(searchValue, replaceValue) {
2246 var o = strict(this);
2247 if (HasProperty(searchValue, $$replace))
2248 return searchValue[$$replace](o, replaceValue);
2249 return orig_replace.call(o, searchValue, replaceValue);
2250 }, !string_regexp_dispatch);
2251
2252 // 21.1.3.15 String.prototype.search ( regexp )
2253 define(
2254 String.prototype, 'search',
2255 function search(regexp) {
2256 var o = strict(this);
2257 var string = String(o);
2258 if (HasProperty(regexp, $$search)) var rx = regexp;
2259 else rx = new RegExp(regexp);
2260 return rx[$$search](string);
2261 }, !string_regexp_dispatch);
2262
2263 // 21.1.3.16 String.prototype.slice ( start, end )
2264 // 21.1.3.17 String.prototype.split ( separator, limit )
2265 define(
2266 String.prototype, 'split',
2267 function split(separator, limit) {
2268 var o = strict(this);
2269 if (HasProperty(separator, $$split))
2270 return separator[$$split](o, limit);
2271 return orig_split.call(o, separator, limit);
2272 }, !string_regexp_dispatch);
2273
2274 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2275 define(
2276 String.prototype, 'startsWith',
2277 function startsWith(searchString) {
2278 var position = arguments[1];
2279
2280 var o = strict(this);
2281 var s = String(o);
2282 var searchStr = String(searchString);
2283 var pos = ToInteger(position);
2284 var len = s.length;
2285 var start = min(max(pos, 0), len);
2286 var searchLength = searchStr.length;
2287 if (searchLength + start > len) return false;
2288 if (s.substring(start, start + searchLength) === searchStr) return true;
2289 return false;
2290 });
2291
2292 // 21.1.3.19 String.prototype.substring ( start, end )
2293 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2294 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2295 // 21.1.3.22 String.prototype.toLowerCase ( )
2296 // 21.1.3.23 String.prototype.toString ( )
2297 // 21.1.3.24 String.prototype.toUpperCase ( )
2298 // 21.1.3.25 String.prototype.trim ( )
2299 // 21.1.3.26 String.prototype.valueOf ( )
2300
2301 // 21.1.3.27 String.prototype [ @@iterator ]( )
2302 define(
2303 String.prototype, $$iterator,
2304 function entries() {
2305 return CreateStringIterator(this, 'value');
2306 });
2307
2308 // 21.1.4 Properties of String Instances
2309 // 21.1.4.1 length
2310
2311 // 21.1.5 String Iterator Objects
2312 /** @constructor */
2313 function StringIterator() {}
2314
2315 // 21.1.5.1 CreateStringIterator Abstract Operation
2316 function CreateStringIterator(string, kind) {
2317 var s = String(string);
2318 var iterator = new StringIterator;
2319 set_internal(iterator, '[[IteratedString]]', s);
2320 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2321 set_internal(iterator, '[[StringIterationKind]]', kind);
2322 return iterator;
2323 }
2324
2325 // 21.1.5.2 The %StringIteratorPrototype% Object
2326 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2327 StringIterator.prototype = $StringIteratorPrototype$;
2328
2329 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2330 define(
2331 $StringIteratorPrototype$, 'next',
2332 function next() {
2333 var o = ToObject(this);
2334 var s = String(o['[[IteratedString]]']),
2335 index = o['[[StringIteratorNextIndex]]'],
2336 len = s.length;
2337 if (index >= len) {
2338 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2339 return CreateIterResultObject(undefined, true);
2340 }
2341 var cp = s.codePointAt(index);
2342 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2343 return CreateIterResultObject(String.fromCodePoint(cp), false);
2344 });
2345
2346 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2347 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2348
2349 // 21.1.5.3 Properties of String Iterator Instances
2350
2351 // ---------------------------------------
2352 // 21.2 RegExp (Regular Expression) Objects
2353 // ---------------------------------------
2354
2355 // 21.2.1 Patterns
2356 // 21.2.2 Pattern Semantics
2357 // 21.2.2.1 Notation
2358 // 21.2.2.2 Pattern
2359 // 21.2.2.3 Disjunction
2360 // 21.2.2.4 Alternative
2361 // 21.2.2.5 Term
2362 // 21.2.2.6 Assertion
2363 // 21.2.2.7 Quantifier
2364 // 21.2.2.8 Atom
2365 // 21.2.2.9 AtomEscape
2366 // 21.2.2.10 CharacterEscape
2367 // 21.2.2.11 DecimalEscape
2368 // 21.2.2.12 CharacterClassEscape
2369 // 21.2.2.13 CharacterClass
2370 // 21.2.2.14 ClassRanges
2371 // 21.2.2.15 NonemptyClassRanges
2372 // 21.2.2.16 NonemptyClassRangesNoDash
2373 // 21.2.2.17 ClassAtom
2374 // 21.2.2.18 ClassAtomNoDash
2375 // 21.2.2.19 ClassEscape
2376 // 21.2.3 The RegExp Constructor
2377 // 21.2.3.1 RegExp ( pattern, flags )
2378 // 21.2.3.2 new RegExp( ...argumentsList )
2379 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2380 // 21.2.4 Properties of the RegExp Constructor
2381 // 21.2.4.1 RegExp.prototype
2382 // 21.2.5 Properties of the RegExp Prototype Object
2383 // 21.2.5.1 RegExp.prototype.constructor
2384 // 21.2.5.2 RegExp.prototype.exec ( string )
2385
2386 // 21.2.5.3 get RegExp.prototype.flags
2387 if (!('flags' in RegExp.prototype)) {
2388 Object.defineProperty(
2389 RegExp.prototype, 'flags', {
2390 get: function() {
2391 var s = String(this);
2392 return s.substring(s.lastIndexOf('/') + 1);
2393 }
2394 });
2395 }
2396
2397 // 21.2.5.4 get RegExp.prototype.global
2398 // 21.2.5.5 get RegExp.prototype.ignoreCase
2399
2400 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2401 define(RegExp.prototype, $$match, function(string) {
2402 var o = strict(this);
2403 return orig_match.call(string, o);
2404 });
2405
2406 // 21.2.5.7 get RegExp.prototype.multiline
2407
2408 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2409 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2410 var o = strict(this);
2411 return orig_replace.call(string, o, replaceValue);
2412 });
2413
2414 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2415 define(RegExp.prototype, $$search, function(string) {
2416 var o = strict(this);
2417 return orig_search.call(string, o);
2418 });
2419
2420 // 21.2.5.10 get RegExp.prototype.source
2421
2422 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2423 define(RegExp.prototype, $$split, function(string, limit) {
2424 var o = strict(this);
2425 return orig_split.call(string, o, limit);
2426 });
2427
2428 // 21.2.5.12 get RegExp.prototype.sticky
2429 // 21.2.5.13 RegExp.prototype.test( S )
2430 // 21.2.5.14 RegExp.prototype.toString ( )
2431 // 21.2.5.15 get RegExp.prototype.unicode
2432
2433 // 21.2.6 Properties of RegExp Instances
2434 // 21.2.6.1 lastIndex
2435
2436 // (No polyfillable changes from ES5)
2437
2438 // ---------------------------------------
2439 // 22 Indexed Collections
2440 // ---------------------------------------
2441
2442 // ---------------------------------------
2443 // 22.1 Array Objects
2444 // ---------------------------------------
2445
2446 // 22.1.1 The Array Constructor
2447 // 22.1.1.1 Array ( )
2448 // 22.1.1.2 Array (len)
2449 // 22.1.1.3 Array (...items )
2450
2451 // 22.1.2 Properties of the Array Constructor
2452
2453 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2454 define(
2455 Array, 'from',
2456 function from(items) {
2457 var mapfn = arguments[1];
2458 var thisArg = arguments[2];
2459
2460 var c = strict(this);
2461 if (mapfn === undefined) {
2462 var mapping = false;
2463 } else {
2464 if (!IsCallable(mapfn)) throw TypeError();
2465 var t = thisArg;
2466 mapping = true;
2467 }
2468 var usingIterator = GetMethod(items, $$iterator);
2469 if (usingIterator !== undefined) {
2470 if (IsConstructor(c)) {
2471 var a = new c();
2472 } else {
2473 a = new Array(0);
2474 }
2475 var iterator = GetIterator(items, usingIterator);
2476 var k = 0;
2477 while (true) {
2478 var next = IteratorStep(iterator);
2479 if (next === false) {
2480 a.length = k;
2481 return a;
2482 }
2483 var nextValue = IteratorValue(next);
2484 if (mapping)
2485 var mappedValue = mapfn.call(t, nextValue);
2486 else
2487 mappedValue = nextValue;
2488 a[k] = mappedValue;
2489 k += 1;
2490 }
2491 }
2492 var arrayLike = ToObject(items);
2493 var lenValue = arrayLike.length;
2494 var len = ToLength(lenValue);
2495 if (IsConstructor(c)) {
2496 a = new c(len);
2497 } else {
2498 a = new Array(len);
2499 }
2500 k = 0;
2501 while (k < len) {
2502 var kValue = arrayLike[k];
2503 if (mapping)
2504 mappedValue = mapfn.call(t, kValue, k);
2505 else
2506 mappedValue = kValue;
2507 a[k] = mappedValue;
2508 k += 1;
2509 }
2510 a.length = len;
2511 return a;
2512 });
2513
2514 // 22.1.2.2 Array.isArray ( arg )
2515
2516 // 22.1.2.3 Array.of ( ...items )
2517 define(
2518 Array, 'of',
2519 function of() {
2520 var items = arguments;
2521
2522 var lenValue = items.length;
2523 var len = ToUint32(lenValue);
2524 var c = strict(this), a;
2525 if (IsConstructor(c)) {
2526 a = new c(len);
2527 a = ToObject(a);
2528 } else {
2529 a = new Array(len);
2530 }
2531 var k = 0;
2532 while (k < len) {
2533 a[k] = items[k];
2534 k += 1;
2535 }
2536 a.length = len;
2537 return a;
2538 });
2539
2540 // 22.1.2.4 Array.prototype
2541 // 22.1.2.5 get Array [ @@species ]
2542 // 22.1.3 Properties of the Array Prototype Object
2543 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2544 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2545 // 22.1.3.2 Array.prototype.constructor
2546 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2547 define(
2548 Array.prototype, 'copyWithin',
2549 function copyWithin(target, start/*, end*/) {
2550 var end = arguments[2];
2551
2552 var o = ToObject(this);
2553 var lenVal = o.length;
2554 var len = ToLength(lenVal);
2555 len = max(len, 0);
2556 var relativeTarget = ToInteger(target);
2557 var to;
2558 if (relativeTarget < 0)
2559 to = max(len + relativeTarget, 0);
2560 else
2561 to = min(relativeTarget, len);
2562 var relativeStart = ToInteger(start);
2563 var from;
2564 if (relativeStart < 0)
2565 from = max(len + relativeStart, 0);
2566 else
2567 from = min(relativeStart, len);
2568 var relativeEnd;
2569 if (end === undefined)
2570 relativeEnd = len;
2571 else
2572 relativeEnd = ToInteger(end);
2573 var final;
2574 if (relativeEnd < 0)
2575 final = max(len + relativeEnd, 0);
2576 else
2577 final = min(relativeEnd, len);
2578 var count = min(final - from, len - to);
2579 var direction;
2580 if (from < to && to < from + count) {
2581 direction = -1;
2582 from = from + count - 1;
2583 to = to + count - 1;
2584 } else {
2585 direction = 1;
2586 }
2587 while (count > 0) {
2588 var fromKey = String(from);
2589 var toKey = String(to);
2590 var fromPresent = HasProperty(o, fromKey);
2591 if (fromPresent) {
2592 var fromVal = o[fromKey];
2593 o[toKey] = fromVal;
2594 } else {
2595 delete o[toKey];
2596 }
2597 from = from + direction;
2598 to = to + direction;
2599 count = count - 1;
2600 }
2601 return o;
2602 });
2603
2604 // 22.1.3.4 Array.prototype.entries ( )
2605 var nativeArrayIteratorMethods =
2606 ('entries' in Array.prototype && 'next' in [].entries());
2607
2608 define(
2609 Array.prototype, 'entries',
2610 function entries() {
2611 return CreateArrayIterator(this, 'key+value');
2612 }, !nativeArrayIteratorMethods);
2613
2614 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2615
2616 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2617 define(
2618 Array.prototype, 'fill',
2619 function fill(value/*, start, end*/) {
2620 var start = arguments[1],
2621 end = arguments[2];
2622
2623 var o = ToObject(this);
2624 var lenVal = o.length;
2625 var len = ToLength(lenVal);
2626 len = max(len, 0);
2627 var relativeStart = ToInteger(start);
2628 var k;
2629 if (relativeStart < 0)
2630 k = max((len + relativeStart), 0);
2631 else
2632 k = min(relativeStart, len);
2633 var relativeEnd;
2634 if (end === undefined)
2635 relativeEnd = len;
2636 else
2637 relativeEnd = ToInteger(end);
2638 var final;
2639 if (relativeEnd < 0)
2640 final = max((len + relativeEnd), 0);
2641 else
2642 final = min(relativeEnd, len);
2643 while (k < final) {
2644 var pk = String(k);
2645 o[pk] = value;
2646 k += 1;
2647 }
2648 return o;
2649 });
2650
2651 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2652
2653 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2654 define(
2655 Array.prototype, 'find',
2656 function find(predicate) {
2657 var o = ToObject(this);
2658 var lenValue = o.length;
2659 var len = ToInteger(lenValue);
2660 if (!IsCallable(predicate)) throw TypeError();
2661 var t = arguments.length > 1 ? arguments[1] : undefined;
2662 var k = 0;
2663 while (k < len) {
2664 var pk = String(k);
2665 var kPresent = HasProperty(o, pk);
2666 if (kPresent) {
2667 var kValue = o[pk];
2668 var testResult = predicate.call(t, kValue, k, o);
2669 if (Boolean(testResult)) {
2670 return kValue;
2671 }
2672 }
2673 ++k;
2674 }
2675 return undefined;
2676 });
2677
2678 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2679 define(
2680 Array.prototype, 'findIndex',
2681 function findIndex(predicate) {
2682 var o = ToObject(this);
2683 var lenValue = o.length;
2684 var len = ToLength(lenValue);
2685 if (!IsCallable(predicate)) throw TypeError();
2686 var t = arguments.length > 1 ? arguments[1] : undefined;
2687 var k = 0;
2688 while (k < len) {
2689 var pk = String(k);
2690 var kPresent = HasProperty(o, pk);
2691 if (kPresent) {
2692 var kValue = o[pk];
2693 var testResult = predicate.call(t, kValue, k, o);
2694 if (Boolean(testResult)) {
2695 return k;
2696 }
2697 }
2698 ++k;
2699 }
2700 return -1;
2701 });
2702
2703 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2704 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2705 // 22.1.3.12 Array.prototype.join (separator)
2706
2707 // 22.1.3.13 Array.prototype.keys ( )
2708 define(
2709 Array.prototype, 'keys',
2710 function keys() {
2711 return CreateArrayIterator(this, 'key');
2712 }, !nativeArrayIteratorMethods);
2713
2714 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2715 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2716 // 22.1.3.16 Array.prototype.pop ( )
2717 // 22.1.3.17 Array.prototype.push ( ...items )
2718 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2719 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2720 // 22.1.3.20 Array.prototype.reverse ( )
2721 // 22.1.3.21 Array.prototype.shift ( )
2722 // 22.1.3.22 Array.prototype.slice (start, end)
2723 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2724 // 22.1.3.24 Array.prototype.sort (comparefn)
2725 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2726 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2727 // 22.1.3.27 Array.prototype.toString ( )
2728 // 22.1.3.28 Array.prototype.unshift ( ...items )
2729
2730 // 22.1.3.29 Array.prototype.values ( )
2731 define(
2732 Array.prototype, 'values',
2733 function values() {
2734 return CreateArrayIterator(this, 'value');
2735 }, !nativeArrayIteratorMethods);
2736
2737 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2738 define(
2739 Array.prototype, $$iterator,
2740 Array.prototype.values
2741 );
2742
2743 // 22.1.3.31 Array.prototype [ @@unscopables ]
2744 // 22.1.4 Properties of Array Instances
2745 // 22.1.4.1 length
2746
2747 // 22.1.5 Array Iterator Objects
2748 function ArrayIterator() {}
2749
2750 // 22.1.5.1 CreateArrayIterator Abstract Operation
2751 function CreateArrayIterator(array, kind) {
2752 var o = ToObject(array);
2753 var iterator = new ArrayIterator;
2754 set_internal(iterator, '[[IteratedObject]]', o);
2755 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2756 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2757 return iterator;
2758 }
2759
2760 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2761 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2762 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2763
2764 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2765 define(
2766 $ArrayIteratorPrototype$, 'next',
2767 function next() {
2768 var o = strict(this);
2769 if (Type(o) !== 'object') throw TypeError();
2770 var a = o['[[IteratedObject]]'],
2771 index = o['[[ArrayIteratorNextIndex]]'],
2772 itemKind = o['[[ArrayIterationKind]]'],
2773 lenValue = a.length,
2774 len = ToUint32(lenValue),
2775 elementKey,
2776 elementValue;
2777 if (itemKind.indexOf('sparse') !== -1) {
2778 var found = false;
2779 while (!found && index < len) {
2780 elementKey = String(index);
2781 found = HasProperty(a, elementKey);
2782 if (!found) {
2783 index += 1;
2784 }
2785 }
2786 }
2787 if (index >= len) {
2788 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2789 return CreateIterResultObject(undefined, true);
2790 }
2791 elementKey = index;
2792 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2793 if (itemKind.indexOf('value') !== -1)
2794 elementValue = a[elementKey];
2795 if (itemKind.indexOf('key+value') !== -1)
2796 return CreateIterResultObject([elementKey, elementValue], false);
2797 if (itemKind.indexOf('key') !== -1)
2798 return CreateIterResultObject(elementKey, false);
2799 if (itemKind === 'value')
2800 return CreateIterResultObject(elementValue, false);
2801 throw Error('Internal error');
2802 });
2803
2804 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2805 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2806
2807 // 22.1.5.3 Properties of Array Iterator Instances
2808
2809
2810 // ---------------------------------------
2811 // 22.2 TypedArray Objects
2812 // ---------------------------------------
2813
2814 // See typedarray.js for TypedArray polyfill
2815
2816 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2817 'Int16Array', 'Uint16Array',
2818 'Int32Array', 'Uint32Array',
2819 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2820 if (!($TypedArrayName$ in global))
2821 return;
2822 var $TypedArray$ = global[$TypedArrayName$];
2823
2824 // 22.2.1 The %TypedArray% Intrinsic Object
2825 // 22.2.1.1 %TypedArray% ( length )
2826 // 22.2.1.2 %TypedArray% ( typedArray )
2827 // 22.2.1.3 %TypedArray% ( object )
2828 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2829 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2830 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2831
2832 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2833 define(
2834 $TypedArray$, 'from',
2835 function from(source) {
2836 var mapfn = arguments[1];
2837 var thisArg = arguments[2];
2838
2839 var c = strict(this);
2840 if (!IsConstructor(c)) throw TypeError();
2841 if (mapfn === undefined) {
2842 var mapping = false;
2843 } else {
2844 if (IsCallable(mapfn)) throw TypeError();
2845 var t = thisArg;
2846 mapping = true;
2847 }
2848 var usingIterator = GetMethod(source, $$iterator);
2849 if (usingIterator !== undefined) {
2850 var iterator = GetIterator(source, usingIterator);
2851 var values = [];
2852 var next = true;
2853 while (next !== false) {
2854 next = IteratorStep(iterator);
2855 if (next !== false) {
2856 var nextValue = IteratorValue(next);
2857 values.push(nextValue);
2858 }
2859 }
2860 var len = values.length;
2861 var newObj = new c(len);
2862 var k = 0;
2863 while (k < len) {
2864 var kValue = values.shift();
2865 if (mapping) {
2866 var mappedValue = mapfn.call(t, kValue);
2867 } else {
2868 mappedValue = kValue;
2869 }
2870 newObj[k] = mappedValue;
2871 ++k;
2872 }
2873 console.assert(values.length === 0);
2874 return newObj;
2875 }
2876 var arrayLike = ToObject(source);
2877 var lenValue = arrayLike.length;
2878 len = ToLength(lenValue);
2879 newObj = new c(len);
2880 k = 0;
2881 while (k < len) {
2882 kValue = arrayLike[k];
2883 if (mapping) {
2884 mappedValue = mapfn.call(t, kValue, k);
2885 } else {
2886 mappedValue = kValue;
2887 }
2888 newObj[k] = mappedValue;
2889 ++k;
2890 }
2891 return newObj;
2892 });
2893
2894 // 22.2.2.2 %TypedArray%.of ( ...items )
2895 define(
2896 $TypedArray$, 'of',
2897 function of() {
2898 var items = arguments;
2899
2900 var len = items.length;
2901 var c = strict(this);
2902 var newObj = new c(len);
2903 var k = 0;
2904 while (k < len) {
2905 newObj[k] = items[k];
2906 ++k;
2907 }
2908 return newObj;
2909 });
2910
2911 // 22.2.2.3 %TypedArray%.prototype
2912 // 22.2.2.4 get %TypedArray% [ @@species ]
2913 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2914 // 22.2.3.1 get %TypedArray%.prototype.buffer
2915 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2916 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2917 // 22.2.3.4 %TypedArray%.prototype.constructor
2918
2919 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2920 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2921
2922 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2923 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2924
2925 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2926 define($TypedArray$.prototype, 'every', Array.prototype.every);
2927
2928 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2929 define(
2930 $TypedArray$.prototype, 'fill',
2931 //Array.prototype.fill // Doesn't work in Safari 7
2932 function fill(value/*, start, end*/) {
2933 var start = arguments[1],
2934 end = arguments[2];
2935
2936 var o = ToObject(this);
2937 var lenVal = o.length;
2938 var len = ToLength(lenVal);
2939 len = max(len, 0);
2940 var relativeStart = ToInteger(start);
2941 var k;
2942 if (relativeStart < 0) k = max((len + relativeStart), 0);
2943 else k = min(relativeStart, len);
2944 var relativeEnd;
2945 if (end === undefined) relativeEnd = len;
2946 else relativeEnd = ToInteger(end);
2947 var final;
2948 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2949 else final = min(relativeEnd, len);
2950 while (k < final) {
2951 var pk = String(k);
2952 o[pk] = value;
2953 k += 1;
2954 }
2955 return o;
2956 });
2957
2958 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2959 define(
2960 $TypedArray$.prototype, 'filter',
2961 function filter(callbackfn) {
2962 var thisArg = arguments[1];
2963
2964 var o = ToObject(this);
2965 var lenVal = o.length;
2966 var len = ToLength(lenVal);
2967 if (!IsCallable(callbackfn)) throw TypeError();
2968 var t = thisArg;
2969 var c = o.constructor;
2970 var kept = [];
2971 var k = 0;
2972 var captured = 0;
2973 while (k < len) {
2974 var kValue = o[k];
2975 var selected = callbackfn.call(t, kValue, k, o);
2976 if (selected) {
2977 kept.push(kValue);
2978 ++captured;
2979 }
2980 ++k;
2981 }
2982 var a = new c(captured);
2983 var n = 0;
2984 for (var i = 0; i < kept.length; ++i) {
2985 var e = kept[i];
2986 a[n] = e;
2987 ++n;
2988 }
2989 return a;
2990 });
2991
2992 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2993 define($TypedArray$.prototype, 'find', Array.prototype.find);
2994
2995 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2996 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2997
2998 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2999 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
3000
3001 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
3002 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
3003
3004 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
3005 define($TypedArray$.prototype, 'join', Array.prototype.join);
3006
3007 // 22.2.3.15 %TypedArray%.prototype.keys ( )
3008 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
3009
3010 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
3011 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
3012
3013 // 22.2.3.17 get %TypedArray%.prototype.length
3014
3015 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
3016 define(
3017 $TypedArray$.prototype, 'map',
3018 function map(callbackfn) {
3019 var thisArg = arguments[1];
3020
3021 var o = ToObject(this);
3022 var lenValue = o.length;
3023 var len = ToLength(lenValue);
3024 if (!IsCallable(callbackfn)) throw TypeError();
3025 var t = thisArg;
3026 var a = undefined;
3027 var c = o.constructor;
3028 if (IsConstructor(c))
3029 a = new c(len);
3030 if (a === undefined)
3031 a = new Array(len);
3032 var k = 0;
3033 while (k < len) {
3034 var kPresent = HasProperty(o, k);
3035 if (kPresent) {
3036 var kValue = o[k];
3037 var mappedValue = callbackfn.call(t, kValue, k, o);
3038 a[k] = mappedValue;
3039 }
3040 ++k;
3041 }
3042 return a;
3043 });
3044
3045 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
3046 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
3047
3048 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
3049 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
3050
3051 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
3052 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
3053
3054 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
3055 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
3056 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
3057
3058 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
3059 define(
3060 $TypedArray$.prototype, 'slice',
3061 function slice(start, end) {
3062 var o = ToObject(this);
3063 var lenVal = o.length;
3064 var len = ToLength(lenVal);
3065 var relativeStart = ToInteger(start);
3066 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
3067 var relativeEnd = (end === undefined) ? len : ToInteger(end);
3068 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
3069 var count = final - k;
3070 var c = o.constructor;
3071 if (IsConstructor(c)) {
3072 var a = new c(count);
3073 } else {
3074 throw TypeError();
3075 }
3076 var n = 0;
3077 while (k < final) {
3078 var kValue = o[k];
3079 a[n] = kValue;
3080 ++k;
3081 ++n;
3082 }
3083 return a;
3084 });
3085
3086 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
3087 define($TypedArray$.prototype, 'some', Array.prototype.some);
3088
3089 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
3090 define(
3091 $TypedArray$.prototype, 'sort',
3092 function sort() {
3093 var comparefn = arguments[0];
3094
3095 function sortCompare(x, y) {
3096 console.assert(Type(x) === 'number' && Type(y) === 'number');
3097 if (x !== x && y !== y) return +0;
3098 if (x !== x) return 1;
3099 if (y !== y) return -1;
3100 if (comparefn !== undefined) {
3101 return comparefn(x, y);
3102 }
3103 if (x < y) return -1;
3104 if (x > y) return 1;
3105 return +0;
3106 }
3107 return Array.prototype.sort.call(this, sortCompare);
3108 });
3109
3110 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3111 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3112 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3113
3114 // 22.2.3.29 %TypedArray%.prototype.values ( )
3115 define($TypedArray$.prototype, 'values', Array.prototype.values);
3116
3117 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3118 define(
3119 $TypedArray$.prototype, $$iterator,
3120 $TypedArray$.prototype.values
3121 );
3122
3123 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3124 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3125
3126 // 22.2.4 The TypedArray Constructors
3127 // 22.2.4.1TypedArray( ... argumentsList)
3128 // 22.2.5 Properties of the TypedArray Constructors
3129 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3130 // 22.2.5.2 TypedArray.prototype
3131 // 22.2.6 Properties of TypedArray Prototype Objects
3132 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3133 // 22.2.6.2 TypedArray.prototype.constructor
3134 // 22.2.7 Properties of TypedArray Instances
3135 });
3136
3137 // ---------------------------------------
3138 // 23 Keyed Collection
3139 // ---------------------------------------
3140
3141 // ---------------------------------------
3142 // 23.1 Map Objects
3143 // ---------------------------------------
3144
3145 (function() {
3146 // 23.1.1 The Map Constructor
3147
3148 // 23.1.1.1 Map ( [ iterable ] )
3149 /** @constructor */
3150 function Map(/*iterable*/) {
3151 var map = strict(this);
3152 var iterable = arguments[0];
3153
3154 if (Type(map) !== 'object') throw TypeError();
3155 if ('[[MapData]]' in map) throw TypeError();
3156
3157 if (iterable !== undefined) {
3158 var adder = map['set'];
3159 if (!IsCallable(adder)) throw TypeError();
3160 var iter = GetIterator(ToObject(iterable));
3161 }
3162 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3163 if (iter === undefined) return map;
3164 while (true) {
3165 var next = IteratorStep(iter);
3166 if (next === false)
3167 return map;
3168 var nextItem = IteratorValue(next);
3169 if (Type(nextItem) !== 'object') throw TypeError();
3170 var k = nextItem[0];
3171 var v = nextItem[1];
3172 adder.call(map, k, v);
3173 }
3174
3175 return map;
3176 }
3177
3178 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3179 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3180 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3181 (new global.Map([['a', 1]]).size !== 1))
3182 global.Map = Map;
3183
3184
3185 function MapDataIndexOf(mapData, key) {
3186 var i;
3187 if (key === key) return mapData.keys.indexOf(key);
3188 // Slow case for NaN
3189 for (i = 0; i < mapData.keys.length; i += 1)
3190 if (SameValueZero(mapData.keys[i], key)) return i;
3191 return -1;
3192 }
3193
3194 // 23.1.1.2 new Map ( ... argumentsList )
3195 // 23.1.2 Properties of the Map Constructor
3196 // 23.1.2.1 Map.prototype
3197 var $MapPrototype$ = {};
3198 Map.prototype = $MapPrototype$;
3199
3200 // 23.1.2.2 get Map [ @@species ]
3201
3202 // 23.1.3 Properties of the Map Prototype Object
3203 // 23.1.3.1 Map.prototype.clear ()
3204 define(
3205 Map.prototype, 'clear',
3206 function clear() {
3207 var m = strict(this);
3208 if (Type(m) !== 'object') throw TypeError();
3209 if (!('[[MapData]]' in m)) throw TypeError();
3210 if (m['[[MapData]]'] === undefined) throw TypeError();
3211 var entries = m['[[MapData]]'];
3212 entries.keys.length = 0;
3213 entries.values.length = 0;
3214 return undefined;
3215 });
3216
3217 // 23.1.3.2 Map.prototype.constructor
3218
3219 // 23.1.3.3 Map.prototype.delete ( key )
3220 define(
3221 Map.prototype, 'delete',
3222 function delete_(key) {
3223 var m = strict(this);
3224 if (Type(m) !== 'object') throw TypeError();
3225 if (!('[[MapData]]' in m)) throw TypeError();
3226 if (m['[[MapData]]'] === undefined) throw TypeError();
3227 var entries = m['[[MapData]]'];
3228 var i = MapDataIndexOf(entries, key);
3229 if (i < 0) return false;
3230 entries.keys[i] = empty;
3231 entries.values[i] = empty;
3232 return true;
3233 });
3234
3235 // 23.1.3.4 Map.prototype.entries ( )
3236 define(
3237 Map.prototype, 'entries',
3238 function entries() {
3239 var m = strict(this);
3240 if (Type(m) !== 'object') throw TypeError();
3241 return CreateMapIterator(m, 'key+value');
3242 });
3243
3244 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3245 define(
3246 Map.prototype, 'forEach',
3247 function forEach(callbackfn /*, thisArg*/) {
3248 var thisArg = arguments[1];
3249
3250 var m = strict(this);
3251 if (Type(m) !== 'object') throw TypeError();
3252 if (!('[[MapData]]' in m)) throw TypeError();
3253 if (m['[[MapData]]'] === undefined) throw TypeError();
3254 var entries = m['[[MapData]]'];
3255
3256 if (!IsCallable(callbackfn)) {
3257 throw TypeError('First argument to forEach is not callable.');
3258 }
3259 for (var i = 0; i < entries.keys.length; ++i) {
3260 if (entries.keys[i] !== empty) {
3261 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3262 }
3263 }
3264 return undefined;
3265 });
3266
3267 // 23.1.3.6 Map.prototype.get ( key )
3268 define(
3269 Map.prototype, 'get',
3270 function get(key) {
3271 var m = strict(this);
3272 if (Type(m) !== 'object') throw TypeError();
3273 if (!('[[MapData]]' in m)) throw TypeError();
3274 if (m['[[MapData]]'] === undefined) throw TypeError();
3275 var entries = m['[[MapData]]'];
3276 var i = MapDataIndexOf(entries, key);
3277 if (i >= 0) return entries.values[i];
3278 return undefined;
3279 });
3280
3281 // 23.1.3.7 Map.prototype.has ( key )
3282 define(
3283 Map.prototype, 'has',
3284 function has(key) {
3285 var m = strict(this);
3286 if (Type(m) !== 'object') throw TypeError();
3287 if (!('[[MapData]]' in m)) throw TypeError();
3288 if (m['[[MapData]]'] === undefined) throw TypeError();
3289 var entries = m['[[MapData]]'];
3290 if (MapDataIndexOf(entries, key) >= 0) return true;
3291 return false;
3292 });
3293
3294 // 23.1.3.8 Map.prototype.keys ( )
3295 define(
3296 Map.prototype, 'keys',
3297 function keys() {
3298 var m = strict(this);
3299 if (Type(m) !== 'object') throw TypeError();
3300 return CreateMapIterator(m, 'key');
3301 });
3302
3303 // 23.1.3.9 Map.prototype.set ( key , value )
3304 define(
3305 Map.prototype, 'set',
3306 function set(key, value) {
3307 var m = strict(this);
3308 if (Type(m) !== 'object') throw TypeError();
3309 if (!('[[MapData]]' in m)) throw TypeError();
3310 if (m['[[MapData]]'] === undefined) throw TypeError();
3311 var entries = m['[[MapData]]'];
3312 var i = MapDataIndexOf(entries, key);
3313 if (i < 0) i = entries.keys.length;
3314 if (SameValue(key, -0)) key = 0;
3315 entries.keys[i] = key;
3316 entries.values[i] = value;
3317 return m;
3318 });
3319
3320 // 23.1.3.10 get Map.prototype.size
3321 Object.defineProperty(
3322 Map.prototype, 'size', {
3323 get: function() {
3324 var m = strict(this);
3325 if (Type(m) !== 'object') throw TypeError();
3326 if (!('[[MapData]]' in m)) throw TypeError();
3327 if (m['[[MapData]]'] === undefined) throw TypeError();
3328 var entries = m['[[MapData]]'];
3329 var count = 0;
3330 for (var i = 0; i < entries.keys.length; ++i) {
3331 if (entries.keys[i] !== empty)
3332 count = count + 1;
3333 }
3334 return count;
3335 }
3336 });
3337
3338 // 23.1.3.11 Map.prototype.values ( )
3339 define(
3340 Map.prototype, 'values',
3341 function values() {
3342 var m = strict(this);
3343 if (Type(m) !== 'object') throw TypeError();
3344 return CreateMapIterator(m, 'value');
3345 });
3346
3347 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3348 define(
3349 Map.prototype, $$iterator,
3350 function() {
3351 var m = strict(this);
3352 if (Type(m) !== 'object') throw TypeError();
3353 return CreateMapIterator(m, 'key+value');
3354 });
3355
3356 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3357 define(global.Map.prototype, $$toStringTag, 'Map');
3358
3359 // 23.1.4 Properties of Map Instances
3360 // 23.1.5 Map Iterator Objects
3361
3362 /** @constructor */
3363 function MapIterator() {}
3364
3365 // 23.1.5.1 CreateMapIterator Abstract Operation
3366 function CreateMapIterator(map, kind) {
3367 if (Type(map) !== 'object') throw TypeError();
3368 if (!('[[MapData]]' in map)) throw TypeError();
3369 if (map['[[MapData]]'] === undefined) throw TypeError();
3370 var iterator = new MapIterator;
3371 set_internal(iterator, '[[Map]]', map);
3372 set_internal(iterator, '[[MapNextIndex]]', 0);
3373 set_internal(iterator, '[[MapIterationKind]]', kind);
3374 return iterator;
3375 }
3376
3377 // 23.1.5.2 The %MapIteratorPrototype% Object
3378 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3379 MapIterator.prototype = $MapIteratorPrototype$;
3380
3381 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3382 define(
3383 $MapIteratorPrototype$, 'next',
3384 function next() {
3385 var o = strict(this);
3386 if (Type(o) !== 'object') throw TypeError();
3387 var m = o['[[Map]]'],
3388 index = o['[[MapNextIndex]]'],
3389 itemKind = o['[[MapIterationKind]]'],
3390 entries = m['[[MapData]]'];
3391 while (index < entries.keys.length) {
3392 var e = {key: entries.keys[index], value: entries.values[index]};
3393 index = index += 1;
3394 set_internal(o, '[[MapNextIndex]]', index);
3395 if (e.key !== empty) {
3396 if (itemKind === 'key') {
3397 return CreateIterResultObject(e.key, false);
3398 } else if (itemKind === 'value') {
3399 return CreateIterResultObject(e.value, false);
3400 } else {
3401 return CreateIterResultObject([e.key, e.value], false);
3402 }
3403 }
3404 }
3405 return CreateIterResultObject(undefined, true);
3406 });
3407
3408 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3409 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3410
3411 // 23.1.5.3 Properties of Map Iterator Instances
3412 }());
3413
3414 // ---------------------------------------
3415 // 23.2 Set Objects
3416 // ---------------------------------------
3417
3418 (function() {
3419 // 23.2.1 The Set Constructor
3420 // 23.2.1.1 Set ( [ iterable ] )
3421
3422 /** @constructor */
3423 function Set(/*iterable*/) {
3424 var set = strict(this);
3425 var iterable = arguments[0];
3426
3427 if (Type(set) !== 'object') throw TypeError();
3428 if ('[[SetData]]' in set) throw TypeError();
3429
3430 if (iterable !== undefined) {
3431 var adder = set['add'];
3432 if (!IsCallable(adder)) throw TypeError();
3433 var iter = GetIterator(ToObject(iterable));
3434 }
3435 set_internal(set, '[[SetData]]', []);
3436 if (iter === undefined) return set;
3437 while (true) {
3438 var next = IteratorStep(iter);
3439 if (next === false)
3440 return set;
3441 var nextValue = IteratorValue(next);
3442 adder.call(set, nextValue);
3443 }
3444
3445 return set;
3446 }
3447
3448 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3449 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3450 (new global.Set([1]).size !== 1))
3451 global.Set = Set;
3452
3453 function SetDataIndexOf(setData, key) {
3454 var i;
3455 if (key === key)
3456 return setData.indexOf(key);
3457 // Slow case for NaN
3458 for (i = 0; i < setData.length; i += 1)
3459 if (SameValueZero(setData[i], key)) return i;
3460 return -1;
3461 }
3462
3463 // 23.2.1.2 new Set ( ...argumentsList )
3464 // 23.2.2 Properties of the Set Constructor
3465
3466 // 23.2.2.1 Set.prototype
3467 var $SetPrototype$ = {};
3468 Set.prototype = $SetPrototype$;
3469
3470 // 23.2.2.2 get Set [ @@species ]
3471 // 23.2.3 Properties of the Set Prototype Object
3472
3473 // 23.2.3.1 Set.prototype.add (value )
3474 define(
3475 Set.prototype, 'add',
3476 function add(value) {
3477 var s = strict(this);
3478 if (Type(s) !== 'object') throw TypeError();
3479 if (!('[[SetData]]' in s)) throw TypeError();
3480 if (s['[[SetData]]'] === undefined) throw TypeError();
3481 if (SameValue(value, -0)) value = 0;
3482 var entries = s['[[SetData]]'];
3483 var i = SetDataIndexOf(entries, value);
3484 if (i < 0) i = s['[[SetData]]'].length;
3485 s['[[SetData]]'][i] = value;
3486
3487 return s;
3488 });
3489
3490 // 23.2.3.2 Set.prototype.clear ()
3491 define(
3492 Set.prototype, 'clear',
3493 function clear() {
3494 var s = strict(this);
3495 if (Type(s) !== 'object') throw TypeError();
3496 if (!('[[SetData]]' in s)) throw TypeError();
3497 if (s['[[SetData]]'] === undefined) throw TypeError();
3498 var entries = s['[[SetData]]'];
3499 entries.length = 0;
3500 return undefined;
3501 });
3502
3503 // 23.2.3.3 Set.prototype.constructor
3504 // 23.2.3.4 Set.prototype.delete ( value )
3505 define(
3506 Set.prototype, 'delete',
3507 function delete_(value) {
3508 var s = strict(this);
3509 if (Type(s) !== 'object') throw TypeError();
3510 if (!('[[SetData]]' in s)) throw TypeError();
3511 if (s['[[SetData]]'] === undefined) throw TypeError();
3512 var entries = s['[[SetData]]'];
3513 var i = SetDataIndexOf(entries, value);
3514 if (i < 0) return false;
3515 entries[i] = empty;
3516 return true;
3517 });
3518
3519 // 23.2.3.5 Set.prototype.entries ( )
3520 define(
3521 Set.prototype, 'entries',
3522 function entries() {
3523 var s = strict(this);
3524 if (Type(s) !== 'object') throw TypeError();
3525 return CreateSetIterator(s, 'key+value');
3526 });
3527
3528 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3529 define(
3530 Set.prototype, 'forEach',
3531 function forEach(callbackfn/*, thisArg*/) {
3532 var thisArg = arguments[1];
3533
3534 var s = strict(this);
3535 if (Type(s) !== 'object') throw TypeError();
3536 if (!('[[SetData]]' in s)) throw TypeError();
3537 if (s['[[SetData]]'] === undefined) throw TypeError();
3538 var entries = s['[[SetData]]'];
3539
3540 if (!IsCallable(callbackfn)) {
3541 throw TypeError('First argument to forEach is not callable.');
3542 }
3543 for (var i = 0; i < entries.length; ++i) {
3544 if (entries[i] !== empty) {
3545 callbackfn.call(thisArg, entries[i], entries[i], s);
3546 }
3547 }
3548 });
3549
3550 // 23.2.3.7 Set.prototype.has ( value )
3551 define(
3552 Set.prototype, 'has',
3553 function has(key) {
3554 var s = strict(this);
3555 if (Type(s) !== 'object') throw TypeError();
3556 if (!('[[SetData]]' in s)) throw TypeError();
3557 if (s['[[SetData]]'] === undefined) throw TypeError();
3558 var entries = s['[[SetData]]'];
3559 return SetDataIndexOf(entries, key) !== -1;
3560 });
3561
3562 // 23.2.3.8 Set.prototype.keys ( )
3563 // See Set.prototype.values
3564
3565 // 23.2.3.9 get Set.prototype.size
3566 Object.defineProperty(
3567 Set.prototype, 'size', {
3568 get: function() {
3569 var s = strict(this);
3570 if (Type(s) !== 'object') throw TypeError();
3571 if (!('[[SetData]]' in s)) throw TypeError();
3572 if (s['[[SetData]]'] === undefined) throw TypeError();
3573 var entries = s['[[SetData]]'];
3574 var count = 0;
3575 for (var i = 0; i < entries.length; ++i) {
3576 if (entries[i] !== empty)
3577 count = count + 1;
3578 }
3579 return count;
3580 }
3581 });
3582
3583 // 23.2.3.10 Set.prototype.values ( )
3584 define(
3585 Set.prototype, 'values',
3586 function values() {
3587 var s = strict(this);
3588 if (Type(s) !== 'object') throw TypeError();
3589 return CreateSetIterator(s, 'value');
3590 });
3591 // NOTE: function name is still 'values':
3592 Set.prototype.keys = Set.prototype.values;
3593
3594 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3595 define(
3596 Set.prototype, $$iterator,
3597 function() {
3598 var s = strict(this);
3599 if (Type(s) !== 'object') throw TypeError();
3600 return CreateSetIterator(s);
3601 });
3602
3603 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3604 define(global.Set.prototype, $$toStringTag, 'Set');
3605
3606 // 23.2.4 Properties of Set Instances
3607 // 23.2.5 Set Iterator Objects
3608 /** @constructor */
3609 function SetIterator() {}
3610
3611 // 23.2.5.1 CreateSetIterator Abstract Operation
3612 function CreateSetIterator(set, kind) {
3613 if (Type(set) !== 'object') throw TypeError();
3614 if (!('[[SetData]]' in set)) throw TypeError();
3615 if (set['[[SetData]]'] === undefined) throw TypeError();
3616 var iterator = new SetIterator;
3617 set_internal(iterator, '[[IteratedSet]]', set);
3618 set_internal(iterator, '[[SetNextIndex]]', 0);
3619 set_internal(iterator, '[[SetIterationKind]]', kind);
3620 return iterator;
3621 }
3622
3623 // 23.2.5.2 The %SetIteratorPrototype% Object
3624 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3625 SetIterator.prototype = $SetIteratorPrototype$;
3626
3627 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3628 define(
3629 $SetIteratorPrototype$, 'next',
3630 function next() {
3631 var o = strict(this);
3632 if (Type(o) !== 'object') throw TypeError();
3633 var s = o['[[IteratedSet]]'],
3634 index = o['[[SetNextIndex]]'],
3635 itemKind = o['[[SetIterationKind]]'],
3636 entries = s['[[SetData]]'];
3637 while (index < entries.length) {
3638 var e = entries[index];
3639 index = index += 1;
3640 set_internal(o, '[[SetNextIndex]]', index);
3641 if (e !== empty) {
3642 if (itemKind === 'key+value')
3643 return CreateIterResultObject([e, e], false);
3644 return CreateIterResultObject(e, false);
3645 }
3646 }
3647 return CreateIterResultObject(undefined, true);
3648 });
3649
3650 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3651 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3652
3653 // 23.2.5.3 Properties of Set Iterator Instances
3654
3655 }());
3656
3657 // ---------------------------------------
3658 // 23.3 WeakMap Objects
3659 // ---------------------------------------
3660
3661 (function() {
3662 // 23.3.1 The WeakMap Constructor
3663 // 23.3.1.1 WeakMap ( [ iterable ] )
3664 /** @constructor */
3665 function WeakMap(/*iterable*/) {
3666 var map = strict(this);
3667 var iterable = arguments[0];
3668
3669 if (Type(map) !== 'object') throw TypeError();
3670 if ('[[WeakMapData]]' in map) throw TypeError();
3671
3672 if (iterable !== undefined) {
3673 var adder = map['set'];
3674 if (!IsCallable(adder)) throw TypeError();
3675 var iter = GetIterator(ToObject(iterable));
3676 }
3677 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3678 if (iter === undefined) return map;
3679 while (true) {
3680 var next = IteratorStep(iter);
3681 if (next === false)
3682 return map;
3683 var nextValue = IteratorValue(next);
3684 if (Type(nextValue) !== 'object') throw TypeError();
3685 var k = nextValue[0];
3686 var v = nextValue[1];
3687 adder.call(map, k, v);
3688 }
3689
3690 return map;
3691 }
3692
3693 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3694 global.WeakMap = WeakMap;
3695
3696 // 23.3.2 Properties of the WeakMap Constructor
3697 // 23.3.2.1 WeakMap.prototype
3698 var $WeakMapPrototype$ = {};
3699 WeakMap.prototype = $WeakMapPrototype$;
3700
3701
3702
3703 // 23.3.2.2 WeakMap[ @@create ] ( )
3704 // 23.3.3 Properties of the WeakMap Prototype Object
3705
3706 // 23.3.3.1 WeakMap.prototype.constructor
3707
3708 // 23.3.3.2 WeakMap.prototype.delete ( key )
3709 define(
3710 WeakMap.prototype, 'delete',
3711 function delete_(key) {
3712 var M = strict(this);
3713 if (Type(M) !== 'object') throw TypeError();
3714 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3715 if (Type(key) !== 'object') throw TypeError('Expected object');
3716 return M['[[WeakMapData]]'].remove(key);
3717 });
3718
3719 // 23.3.3.3 WeakMap.prototype.get ( key )
3720 define(
3721 WeakMap.prototype, 'get',
3722 function get(key, defaultValue) {
3723 var M = strict(this);
3724 if (Type(M) !== 'object') throw TypeError();
3725 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3726 if (Type(key) !== 'object') throw TypeError('Expected object');
3727 return M['[[WeakMapData]]'].get(key, defaultValue);
3728 });
3729
3730 // 23.3.3.4 WeakMap.prototype.has ( key )
3731 define(
3732 WeakMap.prototype, 'has',
3733 function has(key) {
3734 var M = strict(this);
3735 if (Type(M) !== 'object') throw TypeError();
3736 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3737 if (Type(key) !== 'object') throw TypeError('Expected object');
3738 return M['[[WeakMapData]]'].has(key);
3739 });
3740
3741 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3742 define(
3743 WeakMap.prototype, 'set',
3744 function set(key, value) {
3745 var M = strict(this);
3746 if (Type(M) !== 'object') throw TypeError();
3747 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3748 if (Type(key) !== 'object') throw TypeError('Expected object');
3749 M['[[WeakMapData]]'].set(key, value);
3750 return M;
3751 });
3752
3753 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3754 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3755
3756 // 23.3.4 Properties of WeakMap Instances
3757
3758 // Polyfills for incomplete native implementations:
3759 (function() {
3760 var wm = new global.WeakMap();
3761 var orig = global.WeakMap.prototype.set;
3762 define(global.WeakMap.prototype, 'set', function set() {
3763 orig.apply(this, arguments);
3764 return this;
3765 }, wm.set({}, 0) !== wm);
3766 }());
3767 }());
3768
3769 // ---------------------------------------
3770 // 23.4 WeakSet Objects
3771 // ---------------------------------------
3772
3773 (function() {
3774 // 23.4.1 The WeakSet Constructor
3775 // 23.4.1.1 WeakSet ( [ iterable ] )
3776 /** @constructor */
3777 function WeakSet(/*iterable*/) {
3778 var set = strict(this);
3779 var iterable = arguments[0];
3780
3781 if (Type(set) !== 'object') throw TypeError();
3782 if ('[[WeakSetData]]' in set) throw TypeError();
3783
3784 if (iterable !== undefined) {
3785 var adder = set['add'];
3786 if (!IsCallable(adder)) throw TypeError();
3787 var iter = GetIterator(ToObject(iterable));
3788 }
3789 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3790 if (iter === undefined) return set;
3791 while (true) {
3792 var next = IteratorStep(iter);
3793 if (next === false)
3794 return set;
3795 var nextValue = IteratorValue(next);
3796 adder.call(set, nextValue);
3797 }
3798
3799 return set;
3800 }
3801
3802 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3803 global.WeakSet = WeakSet;
3804
3805 // 23.4.2 Properties of the WeakSet Constructor
3806 // 23.4.2.1 WeakSet.prototype
3807 var $WeakSetPrototype$ = {};
3808 WeakSet.prototype = $WeakSetPrototype$;
3809
3810 // 23.4.3 Properties of the WeakSet Prototype Object
3811 // 23.4.3.1 WeakSet.prototype.add (value )
3812 define(
3813 WeakSet.prototype, 'add',
3814 function add(value) {
3815 var S = strict(this);
3816 if (Type(S) !== 'object') throw TypeError();
3817 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3818 if (Type(value) !== 'object') throw TypeError('Expected object');
3819 S['[[WeakSetData]]'].set(value, true);
3820 return S;
3821 });
3822
3823 // 23.4.3.2 WeakSet.prototype.constructor
3824 // 23.4.3.3 WeakSet.prototype.delete ( value )
3825 define(
3826 WeakSet.prototype, 'delete',
3827 function delete_(value) {
3828 var S = strict(this);
3829 if (Type(S) !== 'object') throw TypeError();
3830 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3831 if (Type(value) !== 'object') throw TypeError('Expected object');
3832 return S['[[WeakSetData]]'].remove(value);
3833 });
3834
3835 // 23.4.3.4 WeakSet.prototype.has ( value )
3836 define(
3837 WeakSet.prototype, 'has',
3838 function has(key) {
3839 var S = strict(this);
3840 if (Type(S) !== 'object') throw TypeError();
3841 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3842 if (Type(key) !== 'object') throw TypeError('Expected object');
3843 return S['[[WeakSetData]]'].has(key);
3844 });
3845
3846 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3847 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3848
3849 // 23.4.4 Properties of WeakSet Instances
3850
3851 // Polyfills for incomplete native implementations:
3852 (function() {
3853 var ws = new global.WeakSet();
3854 var orig = global.WeakSet.prototype.add;
3855 define(global.WeakSet.prototype, 'add', function add() {
3856 orig.apply(this, arguments);
3857 return this;
3858 }, ws.add({}) !== ws);
3859 }());
3860 }());
3861
3862 // ---------------------------------------
3863 // 24 Structured Data
3864 // ---------------------------------------
3865
3866 // ---------------------------------------
3867 // 24.1 ArrayBuffer Objects
3868 // ---------------------------------------
3869
3870 // See typedarray.js for TypedArray polyfill
3871
3872 (function() {
3873 if (!('ArrayBuffer' in global))
3874 return;
3875
3876 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3877 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3878 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3879 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3880 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3881 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3882 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3883 // 24.1.2 The ArrayBuffer Constructor
3884 // 24.1.2.1 ArrayBuffer( length )
3885 // 24.1.3 Properties of the ArrayBuffer Constructor
3886
3887 // 24.1.3.1 ArrayBuffer.isView ( arg )
3888 define(
3889 ArrayBuffer, 'isView',
3890 function isView(arg) {
3891 if (Type(arg) !== 'object') return false;
3892 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3893 return false;
3894 });
3895
3896 // 24.1.3.2 ArrayBuffer.prototype
3897 // 24.1.3.3 get ArrayBuffer [ @@species ]
3898 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3899 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3900 // 24.1.4.2 ArrayBuffer.prototype.constructor
3901 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3902
3903 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3904 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3905
3906 // 24.1.5 Properties of the ArrayBuffer Instances
3907 }());
3908
3909 // ---------------------------------------
3910 // 24.2 DataView Objects
3911 // ---------------------------------------
3912
3913 // See typedarray.js for TypedArray polyfill
3914
3915 (function() {
3916 if (!('DataView' in global))
3917 return;
3918
3919 // 24.2.1 Abstract Operations For DataView Objects
3920 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3921 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3922 // 24.2.2 The DataView Constructor
3923 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3924 // 24.2.3 Properties of the DataView Constructor
3925 // 24.2.3.1 DataView.prototype
3926 // 24.2.4 Properties of the DataView Prototype Object
3927 // 24.2.4.1 get DataView.prototype.buffer
3928 // 24.2.4.2 get DataView.prototype.byteLength
3929 // 24.2.4.3 get DataView.prototype.byteOffset
3930 // 24.2.4.4 DataView.prototype.constructor
3931 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3932 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3933 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3934 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3935 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3936 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3937 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3938 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3939 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3940 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3941 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3942 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3943 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3944 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3945 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3946 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3947
3948 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3949 define(DataView.prototype, $$toStringTag, 'DataView');
3950
3951 // 24.2.5 Properties of DataView Instances
3952 }());
3953
3954 // ---------------------------------------
3955 // 24.3 The JSON Object
3956 // ---------------------------------------
3957
3958 // 24.3.1 JSON.parse ( text [ , reviver ] )
3959 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3960 // 24.3.3 JSON [ @@toStringTag ]
3961 define(JSON, $$toStringTag, 'JSON');
3962
3963 // ---------------------------------------
3964 // 25.1 Iteration
3965 // ---------------------------------------
3966
3967 // 25.1.1 Common Iteration Interfaces
3968 // 25.1.1.1 The Iterable Interface
3969 // 25.1.1.2 The Iterator Interface
3970 // 25.1.1.3 The IteratorResult Interface
3971
3972 // 25.1.2 The %IteratorPrototype% Object
3973 // Defined earlier, so other prototypes can reference it.
3974 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3975 define($IteratorPrototype$, $$iterator, function() {
3976 return this;
3977 });
3978
3979
3980 // ---------------------------------------
3981 // 25.4 Promise Objects
3982 // ---------------------------------------
3983
3984 (function() {
3985 // 25.4 Promise Objects
3986
3987 // 25.4.1 Promise Abstract Operations
3988
3989 // 25.4.1.1 PromiseCapability Records
3990 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3991
3992 function IfAbruptRejectPromise(value, capability) {
3993 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3994 return capability['[[Promise]]'];
3995 }
3996
3997 // 25.4.1.2 PromiseReaction Records
3998
3999 // 25.4.1.3 CreateResolvingFunctions ( promise )
4000
4001 function CreateResolvingFunctions(promise) {
4002 var alreadyResolved = {'[[value]]': false};
4003 var resolve = PromiseResolveFunction();
4004 set_internal(resolve, '[[Promise]]', promise);
4005 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
4006 var reject = PromiseRejectFunction();
4007 set_internal(reject, '[[Promise]]', promise);
4008 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
4009 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
4010 }
4011
4012 // 25.4.1.3.1 Promise Reject Functions
4013
4014 function PromiseRejectFunction() {
4015 var F = function(reason) {
4016 console.assert(Type(F['[[Promise]]']) === 'object');
4017 var promise = F['[[Promise]]'];
4018 var alreadyResolved = F['[[AlreadyResolved]]'];
4019 if (alreadyResolved['[[value]]']) return undefined;
4020 set_internal(alreadyResolved, '[[value]]', true);
4021 return RejectPromise(promise, reason);
4022 };
4023 return F;
4024 }
4025
4026 // 25.4.1.3.2 Promise Resolve Functions
4027
4028 function PromiseResolveFunction() {
4029 var F = function(resolution) {
4030 console.assert(Type(F['[[Promise]]']) === 'object');
4031 var promise = F['[[Promise]]'];
4032 var alreadyResolved = F['[[AlreadyResolved]]'];
4033 if (alreadyResolved['[[value]]']) return undefined;
4034 set_internal(alreadyResolved, '[[value]]', true);
4035
4036 if (SameValue(resolution, promise)) {
4037 var selfResolutionError = TypeError();
4038 return RejectPromise(promise, selfResolutionError);
4039 }
4040 if (Type(resolution) !== 'object')
4041 return FulfillPromise(promise, resolution);
4042 try {
4043 var then = resolution['then'];
4044 } catch(then) {
4045 return RejectPromise(promise, then);
4046 }
4047 if (!IsCallable(then))
4048 return FulfillPromise(promise, resolution);
4049 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
4050 return undefined;
4051 };
4052 return F;
4053 }
4054
4055 // 25.4.1.4 FulfillPromise ( promise, value )
4056
4057 function FulfillPromise(promise, value) {
4058 console.assert(promise['[[PromiseState]]'] === 'pending');
4059 var reactions = promise['[[PromiseFulfillReactions]]'];
4060 set_internal(promise, '[[PromiseResult]]', value);
4061 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4062 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4063 set_internal(promise, '[[PromiseState]]', 'fulfilled');
4064 return TriggerPromiseReactions(reactions, value);
4065 }
4066
4067 // 25.4.1.5 NewPromiseCapability ( C )
4068
4069 function NewPromiseCapability(c) {
4070 // To keep Promise hermetic, this doesn't look much like the spec.
4071 return CreatePromiseCapabilityRecord(undefined, c);
4072 }
4073
4074 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
4075
4076 function CreatePromiseCapabilityRecord(promise, constructor) {
4077 // To keep Promise hermetic, this doesn't look much like the spec.
4078 console.assert(IsConstructor(constructor));
4079 var promiseCapability = {};
4080 set_internal(promiseCapability, '[[Promise]]', promise);
4081 set_internal(promiseCapability, '[[Resolve]]', undefined);
4082 set_internal(promiseCapability, '[[Reject]]', undefined);
4083 var executor = GetCapabilitiesExecutor();
4084 set_internal(executor, '[[Capability]]', promiseCapability);
4085
4086 // NOTE: Differs from spec; object is constructed here
4087 var constructorResult = promise = new constructor(executor);
4088 set_internal(promiseCapability, '[[Promise]]', promise);
4089
4090 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
4091 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
4092 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
4093 return promiseCapability;
4094 }
4095
4096 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
4097
4098 function GetCapabilitiesExecutor() {
4099 var F = function(resolve, reject) {
4100 console.assert(F['[[Capability]]']);
4101 var promiseCapability = F['[[Capability]]'];
4102 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4103 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4104 set_internal(promiseCapability, '[[Resolve]]', resolve);
4105 set_internal(promiseCapability, '[[Reject]]', reject);
4106 return undefined;
4107 };
4108 return F;
4109 }
4110
4111 // 25.4.1.6 IsPromise ( x )
4112
4113 function IsPromise(x) {
4114 if (Type(x) !== 'object') return false;
4115 if (!('[[PromiseState]]' in x)) return false;
4116 if (x['[[PromiseState]]'] === undefined) return false;
4117 return true;
4118 }
4119
4120 // 25.4.1.7 RejectPromise ( promise, reason )
4121
4122 function RejectPromise(promise, reason) {
4123 console.assert(promise['[[PromiseState]]'] === 'pending');
4124 var reactions = promise['[[PromiseRejectReactions]]'];
4125 set_internal(promise, '[[PromiseResult]]', reason);
4126 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4127 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4128 set_internal(promise, '[[PromiseState]]', 'rejected');
4129 return TriggerPromiseReactions(reactions, reason);
4130 }
4131
4132 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4133
4134 function TriggerPromiseReactions(reactions, argument) {
4135 for (var i = 0, len = reactions.length; i < len; ++i)
4136 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4137 return undefined;
4138 }
4139
4140 // 25.4.2 Promise Jobs
4141
4142 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4143
4144 function PromiseReactionJob(reaction, argument) {
4145 var promiseCapability = reaction['[[Capabilities]]'];
4146 var handler = reaction['[[Handler]]'];
4147 var handlerResult, status;
4148 try {
4149 if (handler === 'Identity') handlerResult = argument;
4150 else if (handler === 'Thrower') throw argument;
4151 else handlerResult = handler.call(undefined, argument);
4152 } catch (handlerResult) {
4153 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4154 NextJob(status); return;
4155 }
4156 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4157 NextJob(status);
4158 }
4159
4160 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4161
4162 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4163 // SPEC BUG: promise vs. promiseToResolve
4164 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4165 try {
4166 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4167 resolvingFunctions['[[Reject]]']);
4168 } catch (thenCallResult) {
4169 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4170 NextJob(status); return;
4171 }
4172 NextJob(thenCallResult);
4173 }
4174
4175 // 25.4.3 The Promise Constructor
4176
4177 // 25.4.3.1 Promise ( executor )
4178
4179 function Promise(executor) {
4180 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4181 Object.defineProperty(this, '[[PromiseState]]', config);
4182 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4183 Object.defineProperty(this, '[[PromiseResult]]', config);
4184 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4185 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4186
4187 var promise = this;
4188 if (Type(promise) !== 'object') throw new TypeError();
4189 if (!('[[PromiseState]]' in promise)) throw TypeError();
4190 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4191 if (!IsCallable(executor)) throw TypeError();
4192
4193 set_internal(promise, '[[PromiseConstructor]]', Promise);
4194
4195 return InitializePromise(promise, executor);
4196 }
4197
4198 // 25.4.3.1.1 InitializePromise ( promise, executor )
4199
4200 function InitializePromise(promise, executor) {
4201 console.assert('[[PromiseState]]' in promise);
4202 console.assert(IsCallable(executor));
4203 set_internal(promise, '[[PromiseState]]', 'pending');
4204 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4205 set_internal(promise, '[[PromiseRejectReactions]]', []);
4206 var resolvingFunctions = CreateResolvingFunctions(promise);
4207 try {
4208 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4209 resolvingFunctions['[[Reject]]']);
4210 } catch (completion) {
4211 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4212 }
4213 return promise;
4214 }
4215
4216 // 25.4.4 Properties of the Promise Constructor
4217 // 25.4.4.1 Promise.all ( iterable )
4218
4219 define(Promise, 'all', function all(iterable) {
4220 var c = strict(this);
4221 var promiseCapability = NewPromiseCapability(c);
4222 try {
4223 var iterator = GetIterator(iterable);
4224 } catch (value) {
4225 promiseCapability['[[Reject]]'].call(undefined, value);
4226 return promiseCapability['[[Promise]]'];
4227 }
4228 var values = [];
4229 var remainingElementsCount = { value: 1 };
4230 var index = 0;
4231 while (true) {
4232 try {
4233 var next = IteratorStep(iterator);
4234 } catch (value) {
4235 promiseCapability['[[Reject]]'].call(undefined, value);
4236 return promiseCapability['[[Promise]]'];
4237 }
4238 if (!next) {
4239 remainingElementsCount.value -= 1;
4240 if (remainingElementsCount.value === 0) {
4241 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4242
4243
4244 }
4245 return promiseCapability['[[Promise]]'];
4246 }
4247 try {
4248 var nextValue = IteratorValue(next);
4249 } catch (value) {
4250 promiseCapability['[[Reject]]'].call(undefined, value);
4251 return promiseCapability['[[Promise]]'];
4252 }
4253 try {
4254 var nextPromise = c.resolve(nextValue);
4255 } catch (value) {
4256 promiseCapability['[[Reject]]'].call(undefined, value);
4257 return promiseCapability['[[Promise]]'];
4258 }
4259 var resolveElement = PromiseAllResolveElementFunction();
4260 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4261 set_internal(resolveElement, '[[Index]]', index);
4262 set_internal(resolveElement, '[[Values]]', values);
4263 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4264 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4265 remainingElementsCount.value += 1;
4266 try {
4267 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4268 } catch (value) {
4269 promiseCapability['[[Reject]]'].call(undefined, value);
4270 return promiseCapability['[[Promise]]'];
4271 }
4272 index += 1;
4273 }
4274 });
4275
4276 // 25.4.4.1.1 Promise.all Resolve Element Functions
4277
4278 function PromiseAllResolveElementFunction() {
4279 var F = function(x) {
4280 var alreadyCalled = F['[[AlreadyCalled]]'];
4281 if (alreadyCalled.value) return undefined;
4282 alreadyCalled.value = true;
4283 var index = F['[[Index]]'];
4284 var values = F['[[Values]]'];
4285 var promiseCapability = F['[[Capabilities]]'];
4286 var remainingElementsCount = F['[[RemainingElements]]'];
4287 try {
4288 values[index] = x;
4289 } catch (result) {
4290 promiseCapability['[[Reject]]'].call(undefined, result);
4291 return promiseCapability['[[Promise]]'];
4292 }
4293 remainingElementsCount.value -= 1;
4294 if (remainingElementsCount.value === 0)
4295 return promiseCapability['[[Resolve]]'].call(undefined, values);
4296 return undefined;
4297 };
4298 return F;
4299 }
4300
4301 // 25.4.4.2 Promise.prototype
4302
4303 Promise.prototype = {};
4304
4305 // 25.4.4.3 Promise.race ( iterable )
4306
4307 define(Promise, 'race', function race(iterable) {
4308 var c = strict(this);
4309 var promiseCapability = NewPromiseCapability(c);
4310 try {
4311 var iterator = GetIterator(iterable);
4312 } catch (value) {
4313 promiseCapability['[[Reject]]'].call(undefined, value);
4314 return promiseCapability['[[Promise]]'];
4315 }
4316 while (true) {
4317 try {
4318 var next = IteratorStep(iterator);
4319 } catch (value) {
4320 promiseCapability['[[Reject]]'].call(undefined, value);
4321 return promiseCapability['[[Promise]]'];
4322 }
4323 if (!next) return promiseCapability['[[Promise]]'];
4324 try {
4325 var nextValue = IteratorValue(next);
4326 } catch (value) {
4327 promiseCapability['[[Reject]]'].call(undefined, value);
4328 return promiseCapability['[[Promise]]'];
4329 }
4330 try {
4331 var nextPromise = c.resolve(nextValue);
4332 } catch (value) {
4333 promiseCapability['[[Reject]]'].call(undefined, value);
4334 return promiseCapability['[[Promise]]'];
4335 }
4336 try {
4337 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4338 } catch (value) {
4339 promiseCapability['[[Reject]]'].call(undefined, value);
4340 return promiseCapability['[[Promise]]'];
4341 }
4342 }
4343 });
4344
4345 // 25.4.4.4 Promise.reject ( r )
4346
4347 define(Promise, 'reject', function reject(r) {
4348 var c = strict(this);
4349 var promiseCapability = NewPromiseCapability(c);
4350 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4351 return promiseCapability['[[Promise]]'];
4352 });
4353
4354 // 25.4.4.5 Promise.resolve ( x )
4355
4356 define(Promise, 'resolve', function resolve(x) {
4357 var c = strict(this);
4358 if (IsPromise(x)) {
4359 var constructor = x['[[PromiseConstructor]]'];
4360 if (SameValue(constructor, c)) return x;
4361 }
4362 var promiseCapability = NewPromiseCapability(c);
4363 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4364 return promiseCapability['[[Promise]]'];
4365 });
4366
4367 // 25.4.4.6 Promise [ @@create ] ( )
4368 // 25.4.4.6.1 AllocatePromise ( constructor )
4369 // 25.4.5 Properties of the Promise Prototype Object
4370 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4371
4372 define(Promise.prototype, 'catch', function catch_(onRejected) {
4373 var promise = this;
4374 return promise.then(undefined, onRejected);
4375 });
4376
4377 // 25.4.5.2 Promise.prototype.constructor
4378
4379 Promise.prototype.constructor = Promise;
4380
4381 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4382
4383 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4384 var promise = this;
4385 if (!IsPromise(promise)) throw TypeError();
4386 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4387 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4388 var c = promise.constructor;
4389 var promiseCapability = NewPromiseCapability(c);
4390 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4391 '[[Handler]]': onFulfilled };
4392 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4393 '[[Handler]]': onRejected };
4394 if (promise['[[PromiseState]]'] === 'pending') {
4395 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4396 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4397 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4398 var value = promise['[[PromiseResult]]'];
4399 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4400 } else if (promise['[[PromiseState]]'] === 'rejected') {
4401 var reason = promise['[[PromiseResult]]'];
4402 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4403 }
4404 return promiseCapability['[[Promise]]'];
4405 });
4406
4407 // 25.4.6 Properties of Promise Instances
4408
4409 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4410 global.Promise = Promise;
4411
4412 // Patch early Promise.cast vs. Promise.resolve implementations
4413 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4414 }());
4415
4416 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4417 define(Promise.prototype, $$toStringTag, 'Promise');
4418
4419 // ---------------------------------------
4420 // 26 Reflection
4421 // ---------------------------------------
4422
4423 (function() {
4424 // 26.1 The Reflect Object
4425 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4426 global.Reflect = {};
4427
4428 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4429 define(
4430 Reflect, 'apply',
4431 function apply(target, thisArgument, argumentsList) {
4432 if (!IsCallable(target)) throw TypeError();
4433 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4434 });
4435
4436 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4437 define(
4438 Reflect, 'construct',
4439 function construct(target, argumentsList) {
4440 return __cons(target, argumentsList);
4441 });
4442
4443 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4444 define(
4445 Reflect, 'defineProperty',
4446 function defineProperty(target, propertyKey, attributes) {
4447 try {
4448 Object.defineProperty(target, propertyKey, attributes);
4449 return true;
4450 } catch (_) {
4451 return false;
4452 }
4453 });
4454
4455 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4456 define(
4457 Reflect, 'deleteProperty',
4458 function deleteProperty(target,name) {
4459 try {
4460 delete target[name];
4461 return !HasOwnProperty(target, name);
4462 } catch (_) {
4463 return false;
4464 }
4465 });
4466
4467 // 26.1.5 Reflect.enumerate ( target )
4468 define(
4469 Reflect, 'enumerate',
4470 function enumerate(target) {
4471 target = ToObject(target);
4472 var iterator = Enumerate(target);
4473 return iterator;
4474 });
4475
4476 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4477 define(
4478 Reflect, 'get',
4479 function get(target, name, receiver) {
4480 target = ToObject(target);
4481 name = String(name);
4482 receiver = (receiver === undefined) ? target : ToObject(receiver);
4483 var desc = getPropertyDescriptor(target, name);
4484 if (desc && 'get' in desc)
4485 return Function.prototype.call.call(desc['get'], receiver);
4486 return target[name];
4487 });
4488
4489 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4490 define(
4491 Reflect, 'getOwnPropertyDescriptor',
4492 Object.getOwnPropertyDescriptor);
4493
4494 // 26.1.8 Reflect.getPrototypeOf ( target )
4495 define(
4496 Reflect, 'getPrototypeOf',
4497 Object.getPrototypeOf);
4498
4499 // 26.1.9 Reflect.has ( target, propertyKey )
4500 define(
4501 Reflect, 'has',
4502 function has(target,name) {
4503 return String(name) in ToObject(target);
4504 });
4505
4506 // 26.1.10 Reflect.isExtensible (target)
4507 define(
4508 Reflect, 'isExtensible',
4509 Object.isExtensible);
4510
4511 // 26.1.11 Reflect.ownKeys ( target )
4512 define(
4513 Reflect, 'ownKeys',
4514 function ownKeys(target) {
4515 var obj = ToObject(target);
4516 return Object.getOwnPropertyNames(obj);
4517 });
4518
4519 // 26.1.12 Reflect.preventExtensions ( target )
4520 define(
4521 Reflect, 'preventExtensions',
4522 function preventExtensions(target) {
4523 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4524 });
4525
4526 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4527 define(
4528 Reflect, 'set',
4529 function set(target, name, value, receiver) {
4530 target = ToObject(target);
4531 name = String(name);
4532 receiver = (receiver === undefined) ? target : ToObject(receiver);
4533 var desc = getPropertyDescriptor(target, name);
4534 try {
4535 if (desc && 'set' in desc)
4536 Function.prototype.call.call(desc['set'], receiver, value);
4537 else
4538 target[name] = value;
4539 return true;
4540 } catch (_) {
4541 return false;
4542 }
4543 });
4544
4545 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4546 define(
4547 Reflect, 'setPrototypeOf',
4548 function setPrototypeOf(target, proto) {
4549 try {
4550 target.__proto__ = proto;
4551 return Reflect.getPrototypeOf(target) === proto;
4552 } catch(_) {
4553 return false;
4554 }
4555 });
4556
4557 }());
4558
4559 // ---------------------------------------
4560 // 26.2 Proxy Objects
4561 // ---------------------------------------
4562
4563 // Not polyfillable.
4564
4565}(self));
4566
4567// This helper is defined outside the main scope so that the use of
4568// 'eval' does not taint the scope for minifiers.
4569function __cons(t, a) {
4570 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4571}
6e0f24b1 4572</script>
8a1f452d 4573 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.foo = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
4574'use strict'
4575
4576exports.byteLength = byteLength
4577exports.toByteArray = toByteArray
4578exports.fromByteArray = fromByteArray
4579
4580var lookup = []
4581var revLookup = []
4582var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4583
4584var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4585for (var i = 0, len = code.length; i < len; ++i) {
4586 lookup[i] = code[i]
4587 revLookup[code.charCodeAt(i)] = i
4588}
4589
4590revLookup['-'.charCodeAt(0)] = 62
4591revLookup['_'.charCodeAt(0)] = 63
4592
4593function placeHoldersCount (b64) {
4594 var len = b64.length
4595 if (len % 4 > 0) {
4596 throw new Error('Invalid string. Length must be a multiple of 4')
4597 }
4598
4599 // the number of equal signs (place holders)
4600 // if there are two placeholders, than the two characters before it
4601 // represent one byte
4602 // if there is only one, then the three characters before it represent 2 bytes
4603 // this is just a cheap hack to not do indexOf twice
4604 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4605}
4606
4607function byteLength (b64) {
4608 // base64 is 4/3 + up to two characters of the original data
4609 return b64.length * 3 / 4 - placeHoldersCount(b64)
4610}
4611
4612function toByteArray (b64) {
4613 var i, j, l, tmp, placeHolders, arr
4614 var len = b64.length
4615 placeHolders = placeHoldersCount(b64)
4616
4617 arr = new Arr(len * 3 / 4 - placeHolders)
4618
4619 // if there are placeholders, only get up to the last complete 4 chars
4620 l = placeHolders > 0 ? len - 4 : len
4621
4622 var L = 0
4623
4624 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4625 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4626 arr[L++] = (tmp >> 16) & 0xFF
4627 arr[L++] = (tmp >> 8) & 0xFF
4628 arr[L++] = tmp & 0xFF
4629 }
4630
4631 if (placeHolders === 2) {
4632 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4633 arr[L++] = tmp & 0xFF
4634 } else if (placeHolders === 1) {
4635 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4636 arr[L++] = (tmp >> 8) & 0xFF
4637 arr[L++] = tmp & 0xFF
4638 }
4639
4640 return arr
4641}
4642
4643function tripletToBase64 (num) {
4644 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4645}
4646
4647function encodeChunk (uint8, start, end) {
4648 var tmp
4649 var output = []
4650 for (var i = start; i < end; i += 3) {
4651 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4652 output.push(tripletToBase64(tmp))
4653 }
4654 return output.join('')
4655}
4656
4657function fromByteArray (uint8) {
4658 var tmp
4659 var len = uint8.length
4660 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4661 var output = ''
4662 var parts = []
4663 var maxChunkLength = 16383 // must be multiple of 3
4664
4665 // go through the array every three bytes, we'll deal with trailing stuff later
4666 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4667 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4668 }
4669
4670 // pad the end with zeros, but make sure to not forget the extra bytes
4671 if (extraBytes === 1) {
4672 tmp = uint8[len - 1]
4673 output += lookup[tmp >> 2]
4674 output += lookup[(tmp << 4) & 0x3F]
4675 output += '=='
4676 } else if (extraBytes === 2) {
4677 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4678 output += lookup[tmp >> 10]
4679 output += lookup[(tmp >> 4) & 0x3F]
4680 output += lookup[(tmp << 2) & 0x3F]
4681 output += '='
4682 }
4683
4684 parts.push(output)
4685
4686 return parts.join('')
4687}
4688
4689},{}],2:[function(require,module,exports){
4690/*!
4691 * The buffer module from node.js, for the browser.
4692 *
4693 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4694 * @license MIT
4695 */
4696/* eslint-disable no-proto */
4697
4698'use strict'
4699
4700var base64 = require('base64-js')
4701var ieee754 = require('ieee754')
4702
4703exports.Buffer = Buffer
4704exports.SlowBuffer = SlowBuffer
4705exports.INSPECT_MAX_BYTES = 50
4706
4707var K_MAX_LENGTH = 0x7fffffff
4708exports.kMaxLength = K_MAX_LENGTH
4709
4710/**
4711 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4712 * === true Use Uint8Array implementation (fastest)
4713 * === false Print warning and recommend using `buffer` v4.x which has an Object
4714 * implementation (most compatible, even IE6)
4715 *
4716 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4717 * Opera 11.6+, iOS 4.2+.
4718 *
4719 * We report that the browser does not support typed arrays if the are not subclassable
4720 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4721 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4722 * for __proto__ and has a buggy typed array implementation.
4723 */
4724Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4725
4726if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4727 typeof console.error === 'function') {
4728 console.error(
4729 'This browser lacks typed array (Uint8Array) support which is required by ' +
4730 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4731 )
4732}
4733
4734function typedArraySupport () {
4735 // Can typed array instances can be augmented?
4736 try {
4737 var arr = new Uint8Array(1)
4738 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4739 return arr.foo() === 42
4740 } catch (e) {
4741 return false
4742 }
4743}
4744
4745function createBuffer (length) {
4746 if (length > K_MAX_LENGTH) {
4747 throw new RangeError('Invalid typed array length')
4748 }
4749 // Return an augmented `Uint8Array` instance
4750 var buf = new Uint8Array(length)
4751 buf.__proto__ = Buffer.prototype
4752 return buf
4753}
4754
4755/**
4756 * The Buffer constructor returns instances of `Uint8Array` that have their
4757 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4758 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4759 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4760 * returns a single octet.
4761 *
4762 * The `Uint8Array` prototype remains unmodified.
4763 */
4764
4765function Buffer (arg, encodingOrOffset, length) {
4766 // Common case.
4767 if (typeof arg === 'number') {
4768 if (typeof encodingOrOffset === 'string') {
4769 throw new Error(
4770 'If encoding is specified then the first argument must be a string'
4771 )
4772 }
4773 return allocUnsafe(arg)
4774 }
4775 return from(arg, encodingOrOffset, length)
4776}
4777
4778// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4779if (typeof Symbol !== 'undefined' && Symbol.species &&
4780 Buffer[Symbol.species] === Buffer) {
4781 Object.defineProperty(Buffer, Symbol.species, {
4782 value: null,
4783 configurable: true,
4784 enumerable: false,
4785 writable: false
4786 })
4787}
4788
4789Buffer.poolSize = 8192 // not used by this implementation
4790
4791function from (value, encodingOrOffset, length) {
4792 if (typeof value === 'number') {
4793 throw new TypeError('"value" argument must not be a number')
4794 }
4795
4796 if (value instanceof ArrayBuffer) {
4797 return fromArrayBuffer(value, encodingOrOffset, length)
4798 }
4799
4800 if (typeof value === 'string') {
4801 return fromString(value, encodingOrOffset)
4802 }
4803
4804 return fromObject(value)
4805}
4806
4807/**
4808 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4809 * if value is a number.
4810 * Buffer.from(str[, encoding])
4811 * Buffer.from(array)
4812 * Buffer.from(buffer)
4813 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4814 **/
4815Buffer.from = function (value, encodingOrOffset, length) {
4816 return from(value, encodingOrOffset, length)
4817}
4818
4819// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4820// https://github.com/feross/buffer/pull/148
4821Buffer.prototype.__proto__ = Uint8Array.prototype
4822Buffer.__proto__ = Uint8Array
4823
4824function assertSize (size) {
4825 if (typeof size !== 'number') {
4826 throw new TypeError('"size" argument must be a number')
4827 } else if (size < 0) {
4828 throw new RangeError('"size" argument must not be negative')
4829 }
4830}
4831
4832function alloc (size, fill, encoding) {
4833 assertSize(size)
4834 if (size <= 0) {
4835 return createBuffer(size)
4836 }
4837 if (fill !== undefined) {
4838 // Only pay attention to encoding if it's a string. This
4839 // prevents accidentally sending in a number that would
4840 // be interpretted as a start offset.
4841 return typeof encoding === 'string'
4842 ? createBuffer(size).fill(fill, encoding)
4843 : createBuffer(size).fill(fill)
4844 }
4845 return createBuffer(size)
4846}
4847
4848/**
4849 * Creates a new filled Buffer instance.
4850 * alloc(size[, fill[, encoding]])
4851 **/
4852Buffer.alloc = function (size, fill, encoding) {
4853 return alloc(size, fill, encoding)
4854}
4855
4856function allocUnsafe (size) {
4857 assertSize(size)
4858 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4859}
4860
4861/**
4862 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4863 * */
4864Buffer.allocUnsafe = function (size) {
4865 return allocUnsafe(size)
4866}
4867/**
4868 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4869 */
4870Buffer.allocUnsafeSlow = function (size) {
4871 return allocUnsafe(size)
4872}
4873
4874function fromString (string, encoding) {
4875 if (typeof encoding !== 'string' || encoding === '') {
4876 encoding = 'utf8'
4877 }
4878
4879 if (!Buffer.isEncoding(encoding)) {
4880 throw new TypeError('"encoding" must be a valid string encoding')
4881 }
4882
4883 var length = byteLength(string, encoding) | 0
4884 var buf = createBuffer(length)
4885
4886 var actual = buf.write(string, encoding)
4887
4888 if (actual !== length) {
4889 // Writing a hex string, for example, that contains invalid characters will
4890 // cause everything after the first invalid character to be ignored. (e.g.
4891 // 'abxxcd' will be treated as 'ab')
4892 buf = buf.slice(0, actual)
4893 }
4894
4895 return buf
4896}
4897
4898function fromArrayLike (array) {
4899 var length = array.length < 0 ? 0 : checked(array.length) | 0
4900 var buf = createBuffer(length)
4901 for (var i = 0; i < length; i += 1) {
4902 buf[i] = array[i] & 255
4903 }
4904 return buf
4905}
4906
4907function fromArrayBuffer (array, byteOffset, length) {
4908 if (byteOffset < 0 || array.byteLength < byteOffset) {
4909 throw new RangeError('\'offset\' is out of bounds')
4910 }
4911
4912 if (array.byteLength < byteOffset + (length || 0)) {
4913 throw new RangeError('\'length\' is out of bounds')
4914 }
4915
4916 var buf
4917 if (byteOffset === undefined && length === undefined) {
4918 buf = new Uint8Array(array)
4919 } else if (length === undefined) {
4920 buf = new Uint8Array(array, byteOffset)
4921 } else {
4922 buf = new Uint8Array(array, byteOffset, length)
4923 }
4924
4925 // Return an augmented `Uint8Array` instance
4926 buf.__proto__ = Buffer.prototype
4927 return buf
4928}
4929
4930function fromObject (obj) {
4931 if (Buffer.isBuffer(obj)) {
4932 var len = checked(obj.length) | 0
4933 var buf = createBuffer(len)
4934
4935 if (buf.length === 0) {
4936 return buf
4937 }
4938
4939 obj.copy(buf, 0, 0, len)
4940 return buf
4941 }
4942
4943 if (obj) {
4944 if (isArrayBufferView(obj) || 'length' in obj) {
4945 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4946 return createBuffer(0)
4947 }
4948 return fromArrayLike(obj)
4949 }
4950
4951 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4952 return fromArrayLike(obj.data)
4953 }
4954 }
4955
4956 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4957}
4958
4959function checked (length) {
4960 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4961 // length is NaN (which is otherwise coerced to zero.)
4962 if (length >= K_MAX_LENGTH) {
4963 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4964 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4965 }
4966 return length | 0
4967}
4968
4969function SlowBuffer (length) {
4970 if (+length != length) { // eslint-disable-line eqeqeq
4971 length = 0
4972 }
4973 return Buffer.alloc(+length)
4974}
4975
4976Buffer.isBuffer = function isBuffer (b) {
4977 return b != null && b._isBuffer === true
4978}
4979
4980Buffer.compare = function compare (a, b) {
4981 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4982 throw new TypeError('Arguments must be Buffers')
4983 }
4984
4985 if (a === b) return 0
4986
4987 var x = a.length
4988 var y = b.length
4989
4990 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
4991 if (a[i] !== b[i]) {
4992 x = a[i]
4993 y = b[i]
4994 break
4995 }
4996 }
4997
4998 if (x < y) return -1
4999 if (y < x) return 1
5000 return 0
5001}
5002
5003Buffer.isEncoding = function isEncoding (encoding) {
5004 switch (String(encoding).toLowerCase()) {
5005 case 'hex':
5006 case 'utf8':
5007 case 'utf-8':
5008 case 'ascii':
5009 case 'latin1':
5010 case 'binary':
5011 case 'base64':
5012 case 'ucs2':
5013 case 'ucs-2':
5014 case 'utf16le':
5015 case 'utf-16le':
5016 return true
5017 default:
5018 return false
5019 }
5020}
5021
5022Buffer.concat = function concat (list, length) {
5023 if (!Array.isArray(list)) {
5024 throw new TypeError('"list" argument must be an Array of Buffers')
5025 }
5026
5027 if (list.length === 0) {
5028 return Buffer.alloc(0)
5029 }
5030
5031 var i
5032 if (length === undefined) {
5033 length = 0
5034 for (i = 0; i < list.length; ++i) {
5035 length += list[i].length
5036 }
5037 }
5038
5039 var buffer = Buffer.allocUnsafe(length)
5040 var pos = 0
5041 for (i = 0; i < list.length; ++i) {
5042 var buf = list[i]
5043 if (!Buffer.isBuffer(buf)) {
5044 throw new TypeError('"list" argument must be an Array of Buffers')
5045 }
5046 buf.copy(buffer, pos)
5047 pos += buf.length
5048 }
5049 return buffer
5050}
5051
5052function byteLength (string, encoding) {
5053 if (Buffer.isBuffer(string)) {
5054 return string.length
5055 }
5056 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
5057 return string.byteLength
5058 }
5059 if (typeof string !== 'string') {
5060 string = '' + string
5061 }
5062
5063 var len = string.length
5064 if (len === 0) return 0
5065
5066 // Use a for loop to avoid recursion
5067 var loweredCase = false
5068 for (;;) {
5069 switch (encoding) {
5070 case 'ascii':
5071 case 'latin1':
5072 case 'binary':
5073 return len
5074 case 'utf8':
5075 case 'utf-8':
5076 case undefined:
5077 return utf8ToBytes(string).length
5078 case 'ucs2':
5079 case 'ucs-2':
5080 case 'utf16le':
5081 case 'utf-16le':
5082 return len * 2
5083 case 'hex':
5084 return len >>> 1
5085 case 'base64':
5086 return base64ToBytes(string).length
5087 default:
5088 if (loweredCase) return utf8ToBytes(string).length // assume utf8
5089 encoding = ('' + encoding).toLowerCase()
5090 loweredCase = true
5091 }
5092 }
5093}
5094Buffer.byteLength = byteLength
5095
5096function slowToString (encoding, start, end) {
5097 var loweredCase = false
5098
5099 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5100 // property of a typed array.
5101
5102 // This behaves neither like String nor Uint8Array in that we set start/end
5103 // to their upper/lower bounds if the value passed is out of range.
5104 // undefined is handled specially as per ECMA-262 6th Edition,
5105 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5106 if (start === undefined || start < 0) {
5107 start = 0
5108 }
5109 // Return early if start > this.length. Done here to prevent potential uint32
5110 // coercion fail below.
5111 if (start > this.length) {
5112 return ''
5113 }
5114
5115 if (end === undefined || end > this.length) {
5116 end = this.length
5117 }
5118
5119 if (end <= 0) {
5120 return ''
5121 }
5122
5123 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5124 end >>>= 0
5125 start >>>= 0
5126
5127 if (end <= start) {
5128 return ''
5129 }
5130
5131 if (!encoding) encoding = 'utf8'
5132
5133 while (true) {
5134 switch (encoding) {
5135 case 'hex':
5136 return hexSlice(this, start, end)
5137
5138 case 'utf8':
5139 case 'utf-8':
5140 return utf8Slice(this, start, end)
5141
5142 case 'ascii':
5143 return asciiSlice(this, start, end)
5144
5145 case 'latin1':
5146 case 'binary':
5147 return latin1Slice(this, start, end)
5148
5149 case 'base64':
5150 return base64Slice(this, start, end)
5151
5152 case 'ucs2':
5153 case 'ucs-2':
5154 case 'utf16le':
5155 case 'utf-16le':
5156 return utf16leSlice(this, start, end)
5157
5158 default:
5159 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5160 encoding = (encoding + '').toLowerCase()
5161 loweredCase = true
5162 }
5163 }
5164}
5165
5166// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5167// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5168// reliably in a browserify context because there could be multiple different
5169// copies of the 'buffer' package in use. This method works even for Buffer
5170// instances that were created from another copy of the `buffer` package.
5171// See: https://github.com/feross/buffer/issues/154
5172Buffer.prototype._isBuffer = true
5173
5174function swap (b, n, m) {
5175 var i = b[n]
5176 b[n] = b[m]
5177 b[m] = i
5178}
5179
5180Buffer.prototype.swap16 = function swap16 () {
5181 var len = this.length
5182 if (len % 2 !== 0) {
5183 throw new RangeError('Buffer size must be a multiple of 16-bits')
5184 }
5185 for (var i = 0; i < len; i += 2) {
5186 swap(this, i, i + 1)
5187 }
5188 return this
5189}
5190
5191Buffer.prototype.swap32 = function swap32 () {
5192 var len = this.length
5193 if (len % 4 !== 0) {
5194 throw new RangeError('Buffer size must be a multiple of 32-bits')
5195 }
5196 for (var i = 0; i < len; i += 4) {
5197 swap(this, i, i + 3)
5198 swap(this, i + 1, i + 2)
5199 }
5200 return this
5201}
5202
5203Buffer.prototype.swap64 = function swap64 () {
5204 var len = this.length
5205 if (len % 8 !== 0) {
5206 throw new RangeError('Buffer size must be a multiple of 64-bits')
5207 }
5208 for (var i = 0; i < len; i += 8) {
5209 swap(this, i, i + 7)
5210 swap(this, i + 1, i + 6)
5211 swap(this, i + 2, i + 5)
5212 swap(this, i + 3, i + 4)
5213 }
5214 return this
5215}
5216
5217Buffer.prototype.toString = function toString () {
5218 var length = this.length
5219 if (length === 0) return ''
5220 if (arguments.length === 0) return utf8Slice(this, 0, length)
5221 return slowToString.apply(this, arguments)
5222}
5223
5224Buffer.prototype.equals = function equals (b) {
5225 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5226 if (this === b) return true
5227 return Buffer.compare(this, b) === 0
5228}
5229
5230Buffer.prototype.inspect = function inspect () {
5231 var str = ''
5232 var max = exports.INSPECT_MAX_BYTES
5233 if (this.length > 0) {
5234 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5235 if (this.length > max) str += ' ... '
5236 }
5237 return '<Buffer ' + str + '>'
5238}
5239
5240Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5241 if (!Buffer.isBuffer(target)) {
5242 throw new TypeError('Argument must be a Buffer')
5243 }
5244
5245 if (start === undefined) {
5246 start = 0
5247 }
5248 if (end === undefined) {
5249 end = target ? target.length : 0
5250 }
5251 if (thisStart === undefined) {
5252 thisStart = 0
5253 }
5254 if (thisEnd === undefined) {
5255 thisEnd = this.length
5256 }
5257
5258 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5259 throw new RangeError('out of range index')
5260 }
5261
5262 if (thisStart >= thisEnd && start >= end) {
5263 return 0
5264 }
5265 if (thisStart >= thisEnd) {
5266 return -1
5267 }
5268 if (start >= end) {
5269 return 1
5270 }
5271
5272 start >>>= 0
5273 end >>>= 0
5274 thisStart >>>= 0
5275 thisEnd >>>= 0
5276
5277 if (this === target) return 0
5278
5279 var x = thisEnd - thisStart
5280 var y = end - start
5281 var len = Math.min(x, y)
5282
5283 var thisCopy = this.slice(thisStart, thisEnd)
5284 var targetCopy = target.slice(start, end)
5285
5286 for (var i = 0; i < len; ++i) {
5287 if (thisCopy[i] !== targetCopy[i]) {
5288 x = thisCopy[i]
5289 y = targetCopy[i]
5290 break
5291 }
5292 }
5293
5294 if (x < y) return -1
5295 if (y < x) return 1
5296 return 0
5297}
5298
5299// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5300// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5301//
5302// Arguments:
5303// - buffer - a Buffer to search
5304// - val - a string, Buffer, or number
5305// - byteOffset - an index into `buffer`; will be clamped to an int32
5306// - encoding - an optional encoding, relevant is val is a string
5307// - dir - true for indexOf, false for lastIndexOf
5308function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5309 // Empty buffer means no match
5310 if (buffer.length === 0) return -1
5311
5312 // Normalize byteOffset
5313 if (typeof byteOffset === 'string') {
5314 encoding = byteOffset
5315 byteOffset = 0
5316 } else if (byteOffset > 0x7fffffff) {
5317 byteOffset = 0x7fffffff
5318 } else if (byteOffset < -0x80000000) {
5319 byteOffset = -0x80000000
5320 }
5321 byteOffset = +byteOffset // Coerce to Number.
5322 if (numberIsNaN(byteOffset)) {
5323 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5324 byteOffset = dir ? 0 : (buffer.length - 1)
5325 }
5326
5327 // Normalize byteOffset: negative offsets start from the end of the buffer
5328 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5329 if (byteOffset >= buffer.length) {
5330 if (dir) return -1
5331 else byteOffset = buffer.length - 1
5332 } else if (byteOffset < 0) {
5333 if (dir) byteOffset = 0
5334 else return -1
5335 }
5336
5337 // Normalize val
5338 if (typeof val === 'string') {
5339 val = Buffer.from(val, encoding)
5340 }
5341
5342 // Finally, search either indexOf (if dir is true) or lastIndexOf
5343 if (Buffer.isBuffer(val)) {
5344 // Special case: looking for empty string/buffer always fails
5345 if (val.length === 0) {
5346 return -1
5347 }
5348 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5349 } else if (typeof val === 'number') {
5350 val = val & 0xFF // Search for a byte value [0-255]
5351 if (typeof Uint8Array.prototype.indexOf === 'function') {
5352 if (dir) {
5353 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5354 } else {
5355 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5356 }
5357 }
5358 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5359 }
5360
5361 throw new TypeError('val must be string, number or Buffer')
5362}
5363
5364function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5365 var indexSize = 1
5366 var arrLength = arr.length
5367 var valLength = val.length
5368
5369 if (encoding !== undefined) {
5370 encoding = String(encoding).toLowerCase()
5371 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5372 encoding === 'utf16le' || encoding === 'utf-16le') {
5373 if (arr.length < 2 || val.length < 2) {
5374 return -1
5375 }
5376 indexSize = 2
5377 arrLength /= 2
5378 valLength /= 2
5379 byteOffset /= 2
5380 }
5381 }
5382
5383 function read (buf, i) {
5384 if (indexSize === 1) {
5385 return buf[i]
5386 } else {
5387 return buf.readUInt16BE(i * indexSize)
5388 }
5389 }
5390
5391 var i
5392 if (dir) {
5393 var foundIndex = -1
5394 for (i = byteOffset; i < arrLength; i++) {
5395 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5396 if (foundIndex === -1) foundIndex = i
5397 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5398 } else {
5399 if (foundIndex !== -1) i -= i - foundIndex
5400 foundIndex = -1
5401 }
5402 }
5403 } else {
5404 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5405 for (i = byteOffset; i >= 0; i--) {
5406 var found = true
5407 for (var j = 0; j < valLength; j++) {
5408 if (read(arr, i + j) !== read(val, j)) {
5409 found = false
5410 break
5411 }
5412 }
5413 if (found) return i
5414 }
5415 }
5416
5417 return -1
5418}
5419
5420Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5421 return this.indexOf(val, byteOffset, encoding) !== -1
5422}
5423
5424Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5425 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5426}
5427
5428Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5429 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5430}
5431
5432function hexWrite (buf, string, offset, length) {
5433 offset = Number(offset) || 0
5434 var remaining = buf.length - offset
5435 if (!length) {
5436 length = remaining
5437 } else {
5438 length = Number(length)
5439 if (length > remaining) {
5440 length = remaining
5441 }
5442 }
5443
5444 // must be an even number of digits
5445 var strLen = string.length
5446 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5447
5448 if (length > strLen / 2) {
5449 length = strLen / 2
5450 }
5451 for (var i = 0; i < length; ++i) {
5452 var parsed = parseInt(string.substr(i * 2, 2), 16)
5453 if (numberIsNaN(parsed)) return i
5454 buf[offset + i] = parsed
5455 }
5456 return i
5457}
5458
5459function utf8Write (buf, string, offset, length) {
5460 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5461}
5462
5463function asciiWrite (buf, string, offset, length) {
5464 return blitBuffer(asciiToBytes(string), buf, offset, length)
5465}
5466
5467function latin1Write (buf, string, offset, length) {
5468 return asciiWrite(buf, string, offset, length)
5469}
5470
5471function base64Write (buf, string, offset, length) {
5472 return blitBuffer(base64ToBytes(string), buf, offset, length)
5473}
5474
5475function ucs2Write (buf, string, offset, length) {
5476 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5477}
5478
5479Buffer.prototype.write = function write (string, offset, length, encoding) {
5480 // Buffer#write(string)
5481 if (offset === undefined) {
5482 encoding = 'utf8'
5483 length = this.length
5484 offset = 0
5485 // Buffer#write(string, encoding)
5486 } else if (length === undefined && typeof offset === 'string') {
5487 encoding = offset
5488 length = this.length
5489 offset = 0
5490 // Buffer#write(string, offset[, length][, encoding])
5491 } else if (isFinite(offset)) {
5492 offset = offset >>> 0
5493 if (isFinite(length)) {
5494 length = length >>> 0
5495 if (encoding === undefined) encoding = 'utf8'
5496 } else {
5497 encoding = length
5498 length = undefined
5499 }
5500 } else {
5501 throw new Error(
5502 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5503 )
5504 }
5505
5506 var remaining = this.length - offset
5507 if (length === undefined || length > remaining) length = remaining
5508
5509 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5510 throw new RangeError('Attempt to write outside buffer bounds')
5511 }
5512
5513 if (!encoding) encoding = 'utf8'
5514
5515 var loweredCase = false
5516 for (;;) {
5517 switch (encoding) {
5518 case 'hex':
5519 return hexWrite(this, string, offset, length)
5520
5521 case 'utf8':
5522 case 'utf-8':
5523 return utf8Write(this, string, offset, length)
5524
5525 case 'ascii':
5526 return asciiWrite(this, string, offset, length)
5527
5528 case 'latin1':
5529 case 'binary':
5530 return latin1Write(this, string, offset, length)
5531
5532 case 'base64':
5533 // Warning: maxLength not taken into account in base64Write
5534 return base64Write(this, string, offset, length)
5535
5536 case 'ucs2':
5537 case 'ucs-2':
5538 case 'utf16le':
5539 case 'utf-16le':
5540 return ucs2Write(this, string, offset, length)
5541
5542 default:
5543 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5544 encoding = ('' + encoding).toLowerCase()
5545 loweredCase = true
5546 }
5547 }
5548}
5549
5550Buffer.prototype.toJSON = function toJSON () {
5551 return {
5552 type: 'Buffer',
5553 data: Array.prototype.slice.call(this._arr || this, 0)
5554 }
5555}
5556
5557function base64Slice (buf, start, end) {
5558 if (start === 0 && end === buf.length) {
5559 return base64.fromByteArray(buf)
5560 } else {
5561 return base64.fromByteArray(buf.slice(start, end))
5562 }
5563}
5564
5565function utf8Slice (buf, start, end) {
5566 end = Math.min(buf.length, end)
5567 var res = []
5568
5569 var i = start
5570 while (i < end) {
5571 var firstByte = buf[i]
5572 var codePoint = null
5573 var bytesPerSequence = (firstByte > 0xEF) ? 4
5574 : (firstByte > 0xDF) ? 3
5575 : (firstByte > 0xBF) ? 2
5576 : 1
5577
5578 if (i + bytesPerSequence <= end) {
5579 var secondByte, thirdByte, fourthByte, tempCodePoint
5580
5581 switch (bytesPerSequence) {
5582 case 1:
5583 if (firstByte < 0x80) {
5584 codePoint = firstByte
5585 }
5586 break
5587 case 2:
5588 secondByte = buf[i + 1]
5589 if ((secondByte & 0xC0) === 0x80) {
5590 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5591 if (tempCodePoint > 0x7F) {
5592 codePoint = tempCodePoint
5593 }
5594 }
5595 break
5596 case 3:
5597 secondByte = buf[i + 1]
5598 thirdByte = buf[i + 2]
5599 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5600 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5601 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5602 codePoint = tempCodePoint
5603 }
5604 }
5605 break
5606 case 4:
5607 secondByte = buf[i + 1]
5608 thirdByte = buf[i + 2]
5609 fourthByte = buf[i + 3]
5610 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5611 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5612 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5613 codePoint = tempCodePoint
5614 }
5615 }
5616 }
5617 }
5618
5619 if (codePoint === null) {
5620 // we did not generate a valid codePoint so insert a
5621 // replacement char (U+FFFD) and advance only 1 byte
5622 codePoint = 0xFFFD
5623 bytesPerSequence = 1
5624 } else if (codePoint > 0xFFFF) {
5625 // encode to utf16 (surrogate pair dance)
5626 codePoint -= 0x10000
5627 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5628 codePoint = 0xDC00 | codePoint & 0x3FF
5629 }
5630
5631 res.push(codePoint)
5632 i += bytesPerSequence
5633 }
5634
5635 return decodeCodePointsArray(res)
5636}
5637
5638// Based on http://stackoverflow.com/a/22747272/680742, the browser with
5639// the lowest limit is Chrome, with 0x10000 args.
5640// We go 1 magnitude less, for safety
5641var MAX_ARGUMENTS_LENGTH = 0x1000
5642
5643function decodeCodePointsArray (codePoints) {
5644 var len = codePoints.length
5645 if (len <= MAX_ARGUMENTS_LENGTH) {
5646 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5647 }
5648
5649 // Decode in chunks to avoid "call stack size exceeded".
5650 var res = ''
5651 var i = 0
5652 while (i < len) {
5653 res += String.fromCharCode.apply(
5654 String,
5655 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5656 )
5657 }
5658 return res
5659}
5660
5661function asciiSlice (buf, start, end) {
5662 var ret = ''
5663 end = Math.min(buf.length, end)
5664
5665 for (var i = start; i < end; ++i) {
5666 ret += String.fromCharCode(buf[i] & 0x7F)
5667 }
5668 return ret
5669}
5670
5671function latin1Slice (buf, start, end) {
5672 var ret = ''
5673 end = Math.min(buf.length, end)
5674
5675 for (var i = start; i < end; ++i) {
5676 ret += String.fromCharCode(buf[i])
5677 }
5678 return ret
5679}
5680
5681function hexSlice (buf, start, end) {
5682 var len = buf.length
5683
5684 if (!start || start < 0) start = 0
5685 if (!end || end < 0 || end > len) end = len
5686
5687 var out = ''
5688 for (var i = start; i < end; ++i) {
5689 out += toHex(buf[i])
5690 }
5691 return out
5692}
5693
5694function utf16leSlice (buf, start, end) {
5695 var bytes = buf.slice(start, end)
5696 var res = ''
5697 for (var i = 0; i < bytes.length; i += 2) {
5698 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5699 }
5700 return res
5701}
5702
5703Buffer.prototype.slice = function slice (start, end) {
5704 var len = this.length
5705 start = ~~start
5706 end = end === undefined ? len : ~~end
5707
5708 if (start < 0) {
5709 start += len
5710 if (start < 0) start = 0
5711 } else if (start > len) {
5712 start = len
5713 }
5714
5715 if (end < 0) {
5716 end += len
5717 if (end < 0) end = 0
5718 } else if (end > len) {
5719 end = len
5720 }
5721
5722 if (end < start) end = start
5723
5724 var newBuf = this.subarray(start, end)
5725 // Return an augmented `Uint8Array` instance
5726 newBuf.__proto__ = Buffer.prototype
5727 return newBuf
5728}
5729
5730/*
5731 * Need to make sure that buffer isn't trying to write out of bounds.
5732 */
5733function checkOffset (offset, ext, length) {
5734 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5735 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5736}
5737
5738Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5739 offset = offset >>> 0
5740 byteLength = byteLength >>> 0
5741 if (!noAssert) checkOffset(offset, byteLength, this.length)
5742
5743 var val = this[offset]
5744 var mul = 1
5745 var i = 0
5746 while (++i < byteLength && (mul *= 0x100)) {
5747 val += this[offset + i] * mul
5748 }
5749
5750 return val
5751}
5752
5753Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5754 offset = offset >>> 0
5755 byteLength = byteLength >>> 0
5756 if (!noAssert) {
5757 checkOffset(offset, byteLength, this.length)
5758 }
5759
5760 var val = this[offset + --byteLength]
5761 var mul = 1
5762 while (byteLength > 0 && (mul *= 0x100)) {
5763 val += this[offset + --byteLength] * mul
5764 }
5765
5766 return val
5767}
5768
5769Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5770 offset = offset >>> 0
5771 if (!noAssert) checkOffset(offset, 1, this.length)
5772 return this[offset]
5773}
5774
5775Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5776 offset = offset >>> 0
5777 if (!noAssert) checkOffset(offset, 2, this.length)
5778 return this[offset] | (this[offset + 1] << 8)
5779}
5780
5781Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5782 offset = offset >>> 0
5783 if (!noAssert) checkOffset(offset, 2, this.length)
5784 return (this[offset] << 8) | this[offset + 1]
5785}
5786
5787Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5788 offset = offset >>> 0
5789 if (!noAssert) checkOffset(offset, 4, this.length)
5790
5791 return ((this[offset]) |
5792 (this[offset + 1] << 8) |
5793 (this[offset + 2] << 16)) +
5794 (this[offset + 3] * 0x1000000)
5795}
5796
5797Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 4, this.length)
5800
5801 return (this[offset] * 0x1000000) +
5802 ((this[offset + 1] << 16) |
5803 (this[offset + 2] << 8) |
5804 this[offset + 3])
5805}
5806
5807Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5808 offset = offset >>> 0
5809 byteLength = byteLength >>> 0
5810 if (!noAssert) checkOffset(offset, byteLength, this.length)
5811
5812 var val = this[offset]
5813 var mul = 1
5814 var i = 0
5815 while (++i < byteLength && (mul *= 0x100)) {
5816 val += this[offset + i] * mul
5817 }
5818 mul *= 0x80
5819
5820 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5821
5822 return val
5823}
5824
5825Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5826 offset = offset >>> 0
5827 byteLength = byteLength >>> 0
5828 if (!noAssert) checkOffset(offset, byteLength, this.length)
5829
5830 var i = byteLength
5831 var mul = 1
5832 var val = this[offset + --i]
5833 while (i > 0 && (mul *= 0x100)) {
5834 val += this[offset + --i] * mul
5835 }
5836 mul *= 0x80
5837
5838 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5839
5840 return val
5841}
5842
5843Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5844 offset = offset >>> 0
5845 if (!noAssert) checkOffset(offset, 1, this.length)
5846 if (!(this[offset] & 0x80)) return (this[offset])
5847 return ((0xff - this[offset] + 1) * -1)
5848}
5849
5850Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5851 offset = offset >>> 0
5852 if (!noAssert) checkOffset(offset, 2, this.length)
5853 var val = this[offset] | (this[offset + 1] << 8)
5854 return (val & 0x8000) ? val | 0xFFFF0000 : val
5855}
5856
5857Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5858 offset = offset >>> 0
5859 if (!noAssert) checkOffset(offset, 2, this.length)
5860 var val = this[offset + 1] | (this[offset] << 8)
5861 return (val & 0x8000) ? val | 0xFFFF0000 : val
5862}
5863
5864Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5865 offset = offset >>> 0
5866 if (!noAssert) checkOffset(offset, 4, this.length)
5867
5868 return (this[offset]) |
5869 (this[offset + 1] << 8) |
5870 (this[offset + 2] << 16) |
5871 (this[offset + 3] << 24)
5872}
5873
5874Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5875 offset = offset >>> 0
5876 if (!noAssert) checkOffset(offset, 4, this.length)
5877
5878 return (this[offset] << 24) |
5879 (this[offset + 1] << 16) |
5880 (this[offset + 2] << 8) |
5881 (this[offset + 3])
5882}
5883
5884Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5885 offset = offset >>> 0
5886 if (!noAssert) checkOffset(offset, 4, this.length)
5887 return ieee754.read(this, offset, true, 23, 4)
5888}
5889
5890Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5891 offset = offset >>> 0
5892 if (!noAssert) checkOffset(offset, 4, this.length)
5893 return ieee754.read(this, offset, false, 23, 4)
5894}
5895
5896Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5897 offset = offset >>> 0
5898 if (!noAssert) checkOffset(offset, 8, this.length)
5899 return ieee754.read(this, offset, true, 52, 8)
5900}
5901
5902Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5903 offset = offset >>> 0
5904 if (!noAssert) checkOffset(offset, 8, this.length)
5905 return ieee754.read(this, offset, false, 52, 8)
5906}
5907
5908function checkInt (buf, value, offset, ext, max, min) {
5909 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5910 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5911 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5912}
5913
5914Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5915 value = +value
5916 offset = offset >>> 0
5917 byteLength = byteLength >>> 0
5918 if (!noAssert) {
5919 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5920 checkInt(this, value, offset, byteLength, maxBytes, 0)
5921 }
5922
5923 var mul = 1
5924 var i = 0
5925 this[offset] = value & 0xFF
5926 while (++i < byteLength && (mul *= 0x100)) {
5927 this[offset + i] = (value / mul) & 0xFF
5928 }
5929
5930 return offset + byteLength
5931}
5932
5933Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5934 value = +value
5935 offset = offset >>> 0
5936 byteLength = byteLength >>> 0
5937 if (!noAssert) {
5938 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5939 checkInt(this, value, offset, byteLength, maxBytes, 0)
5940 }
5941
5942 var i = byteLength - 1
5943 var mul = 1
5944 this[offset + i] = value & 0xFF
5945 while (--i >= 0 && (mul *= 0x100)) {
5946 this[offset + i] = (value / mul) & 0xFF
5947 }
5948
5949 return offset + byteLength
5950}
5951
5952Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5953 value = +value
5954 offset = offset >>> 0
5955 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5956 this[offset] = (value & 0xff)
5957 return offset + 1
5958}
5959
5960Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5961 value = +value
5962 offset = offset >>> 0
5963 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5964 this[offset] = (value & 0xff)
5965 this[offset + 1] = (value >>> 8)
5966 return offset + 2
5967}
5968
5969Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5970 value = +value
5971 offset = offset >>> 0
5972 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5973 this[offset] = (value >>> 8)
5974 this[offset + 1] = (value & 0xff)
5975 return offset + 2
5976}
5977
5978Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5979 value = +value
5980 offset = offset >>> 0
5981 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5982 this[offset + 3] = (value >>> 24)
5983 this[offset + 2] = (value >>> 16)
5984 this[offset + 1] = (value >>> 8)
5985 this[offset] = (value & 0xff)
5986 return offset + 4
5987}
5988
5989Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5990 value = +value
5991 offset = offset >>> 0
5992 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5993 this[offset] = (value >>> 24)
5994 this[offset + 1] = (value >>> 16)
5995 this[offset + 2] = (value >>> 8)
5996 this[offset + 3] = (value & 0xff)
5997 return offset + 4
5998}
5999
6000Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6001 value = +value
6002 offset = offset >>> 0
6003 if (!noAssert) {
6004 var limit = Math.pow(2, (8 * byteLength) - 1)
6005
6006 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6007 }
6008
6009 var i = 0
6010 var mul = 1
6011 var sub = 0
6012 this[offset] = value & 0xFF
6013 while (++i < byteLength && (mul *= 0x100)) {
6014 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6015 sub = 1
6016 }
6017 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6018 }
6019
6020 return offset + byteLength
6021}
6022
6023Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6024 value = +value
6025 offset = offset >>> 0
6026 if (!noAssert) {
6027 var limit = Math.pow(2, (8 * byteLength) - 1)
6028
6029 checkInt(this, value, offset, byteLength, limit - 1, -limit)
6030 }
6031
6032 var i = byteLength - 1
6033 var mul = 1
6034 var sub = 0
6035 this[offset + i] = value & 0xFF
6036 while (--i >= 0 && (mul *= 0x100)) {
6037 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6038 sub = 1
6039 }
6040 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6041 }
6042
6043 return offset + byteLength
6044}
6045
6046Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6047 value = +value
6048 offset = offset >>> 0
6049 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6050 if (value < 0) value = 0xff + value + 1
6051 this[offset] = (value & 0xff)
6052 return offset + 1
6053}
6054
6055Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6056 value = +value
6057 offset = offset >>> 0
6058 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6059 this[offset] = (value & 0xff)
6060 this[offset + 1] = (value >>> 8)
6061 return offset + 2
6062}
6063
6064Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6065 value = +value
6066 offset = offset >>> 0
6067 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6068 this[offset] = (value >>> 8)
6069 this[offset + 1] = (value & 0xff)
6070 return offset + 2
6071}
6072
6073Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6074 value = +value
6075 offset = offset >>> 0
6076 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6077 this[offset] = (value & 0xff)
6078 this[offset + 1] = (value >>> 8)
6079 this[offset + 2] = (value >>> 16)
6080 this[offset + 3] = (value >>> 24)
6081 return offset + 4
6082}
6083
6084Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6085 value = +value
6086 offset = offset >>> 0
6087 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6088 if (value < 0) value = 0xffffffff + value + 1
6089 this[offset] = (value >>> 24)
6090 this[offset + 1] = (value >>> 16)
6091 this[offset + 2] = (value >>> 8)
6092 this[offset + 3] = (value & 0xff)
6093 return offset + 4
6094}
6095
6096function checkIEEE754 (buf, value, offset, ext, max, min) {
6097 if (offset + ext > buf.length) throw new RangeError('Index out of range')
6098 if (offset < 0) throw new RangeError('Index out of range')
6099}
6100
6101function writeFloat (buf, value, offset, littleEndian, noAssert) {
6102 value = +value
6103 offset = offset >>> 0
6104 if (!noAssert) {
6105 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6106 }
6107 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6108 return offset + 4
6109}
6110
6111Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6112 return writeFloat(this, value, offset, true, noAssert)
6113}
6114
6115Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6116 return writeFloat(this, value, offset, false, noAssert)
6117}
6118
6119function writeDouble (buf, value, offset, littleEndian, noAssert) {
6120 value = +value
6121 offset = offset >>> 0
6122 if (!noAssert) {
6123 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6124 }
6125 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6126 return offset + 8
6127}
6128
6129Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6130 return writeDouble(this, value, offset, true, noAssert)
6131}
6132
6133Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6134 return writeDouble(this, value, offset, false, noAssert)
6135}
6136
6137// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6138Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6139 if (!start) start = 0
6140 if (!end && end !== 0) end = this.length
6141 if (targetStart >= target.length) targetStart = target.length
6142 if (!targetStart) targetStart = 0
6143 if (end > 0 && end < start) end = start
6144
6145 // Copy 0 bytes; we're done
6146 if (end === start) return 0
6147 if (target.length === 0 || this.length === 0) return 0
6148
6149 // Fatal error conditions
6150 if (targetStart < 0) {
6151 throw new RangeError('targetStart out of bounds')
6152 }
6153 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6154 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6155
6156 // Are we oob?
6157 if (end > this.length) end = this.length
6158 if (target.length - targetStart < end - start) {
6159 end = target.length - targetStart + start
6160 }
6161
6162 var len = end - start
6163 var i
6164
6165 if (this === target && start < targetStart && targetStart < end) {
6166 // descending copy from end
6167 for (i = len - 1; i >= 0; --i) {
6168 target[i + targetStart] = this[i + start]
6169 }
6170 } else if (len < 1000) {
6171 // ascending copy from start
6172 for (i = 0; i < len; ++i) {
6173 target[i + targetStart] = this[i + start]
6174 }
6175 } else {
6176 Uint8Array.prototype.set.call(
6177 target,
6178 this.subarray(start, start + len),
6179 targetStart
6180 )
6181 }
6182
6183 return len
6184}
6185
6186// Usage:
6187// buffer.fill(number[, offset[, end]])
6188// buffer.fill(buffer[, offset[, end]])
6189// buffer.fill(string[, offset[, end]][, encoding])
6190Buffer.prototype.fill = function fill (val, start, end, encoding) {
6191 // Handle string cases:
6192 if (typeof val === 'string') {
6193 if (typeof start === 'string') {
6194 encoding = start
6195 start = 0
6196 end = this.length
6197 } else if (typeof end === 'string') {
6198 encoding = end
6199 end = this.length
6200 }
6201 if (val.length === 1) {
6202 var code = val.charCodeAt(0)
6203 if (code < 256) {
6204 val = code
6205 }
6206 }
6207 if (encoding !== undefined && typeof encoding !== 'string') {
6208 throw new TypeError('encoding must be a string')
6209 }
6210 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6211 throw new TypeError('Unknown encoding: ' + encoding)
6212 }
6213 } else if (typeof val === 'number') {
6214 val = val & 255
6215 }
6216
6217 // Invalid ranges are not set to a default, so can range check early.
6218 if (start < 0 || this.length < start || this.length < end) {
6219 throw new RangeError('Out of range index')
6220 }
6221
6222 if (end <= start) {
6223 return this
6224 }
6225
6226 start = start >>> 0
6227 end = end === undefined ? this.length : end >>> 0
6228
6229 if (!val) val = 0
6230
6231 var i
6232 if (typeof val === 'number') {
6233 for (i = start; i < end; ++i) {
6234 this[i] = val
6235 }
6236 } else {
6237 var bytes = Buffer.isBuffer(val)
6238 ? val
6239 : new Buffer(val, encoding)
6240 var len = bytes.length
6241 for (i = 0; i < end - start; ++i) {
6242 this[i + start] = bytes[i % len]
6243 }
6244 }
6245
6246 return this
6247}
6248
6249// HELPER FUNCTIONS
6250// ================
6251
6252var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6253
6254function base64clean (str) {
6255 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6256 str = str.trim().replace(INVALID_BASE64_RE, '')
6257 // Node converts strings with length < 2 to ''
6258 if (str.length < 2) return ''
6259 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6260 while (str.length % 4 !== 0) {
6261 str = str + '='
6262 }
6263 return str
6264}
6265
6266function toHex (n) {
6267 if (n < 16) return '0' + n.toString(16)
6268 return n.toString(16)
6269}
6270
6271function utf8ToBytes (string, units) {
6272 units = units || Infinity
6273 var codePoint
6274 var length = string.length
6275 var leadSurrogate = null
6276 var bytes = []
6277
6278 for (var i = 0; i < length; ++i) {
6279 codePoint = string.charCodeAt(i)
6280
6281 // is surrogate component
6282 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6283 // last char was a lead
6284 if (!leadSurrogate) {
6285 // no lead yet
6286 if (codePoint > 0xDBFF) {
6287 // unexpected trail
6288 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6289 continue
6290 } else if (i + 1 === length) {
6291 // unpaired lead
6292 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6293 continue
6294 }
6295
6296 // valid lead
6297 leadSurrogate = codePoint
6298
6299 continue
6300 }
6301
6302 // 2 leads in a row
6303 if (codePoint < 0xDC00) {
6304 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6305 leadSurrogate = codePoint
6306 continue
6307 }
6308
6309 // valid surrogate pair
6310 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6311 } else if (leadSurrogate) {
6312 // valid bmp char, but last char was a lead
6313 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6314 }
6315
6316 leadSurrogate = null
6317
6318 // encode utf8
6319 if (codePoint < 0x80) {
6320 if ((units -= 1) < 0) break
6321 bytes.push(codePoint)
6322 } else if (codePoint < 0x800) {
6323 if ((units -= 2) < 0) break
6324 bytes.push(
6325 codePoint >> 0x6 | 0xC0,
6326 codePoint & 0x3F | 0x80
6327 )
6328 } else if (codePoint < 0x10000) {
6329 if ((units -= 3) < 0) break
6330 bytes.push(
6331 codePoint >> 0xC | 0xE0,
6332 codePoint >> 0x6 & 0x3F | 0x80,
6333 codePoint & 0x3F | 0x80
6334 )
6335 } else if (codePoint < 0x110000) {
6336 if ((units -= 4) < 0) break
6337 bytes.push(
6338 codePoint >> 0x12 | 0xF0,
6339 codePoint >> 0xC & 0x3F | 0x80,
6340 codePoint >> 0x6 & 0x3F | 0x80,
6341 codePoint & 0x3F | 0x80
6342 )
6343 } else {
6344 throw new Error('Invalid code point')
6345 }
6346 }
6347
6348 return bytes
6349}
6350
6351function asciiToBytes (str) {
6352 var byteArray = []
6353 for (var i = 0; i < str.length; ++i) {
6354 // Node's code seems to be doing this and not & 0x7F..
6355 byteArray.push(str.charCodeAt(i) & 0xFF)
6356 }
6357 return byteArray
6358}
6359
6360function utf16leToBytes (str, units) {
6361 var c, hi, lo
6362 var byteArray = []
6363 for (var i = 0; i < str.length; ++i) {
6364 if ((units -= 2) < 0) break
6365
6366 c = str.charCodeAt(i)
6367 hi = c >> 8
6368 lo = c % 256
6369 byteArray.push(lo)
6370 byteArray.push(hi)
6371 }
6372
6373 return byteArray
6374}
6375
6376function base64ToBytes (str) {
6377 return base64.toByteArray(base64clean(str))
6378}
6379
6380function blitBuffer (src, dst, offset, length) {
6381 for (var i = 0; i < length; ++i) {
6382 if ((i + offset >= dst.length) || (i >= src.length)) break
6383 dst[i + offset] = src[i]
6384 }
6385 return i
6386}
6387
6388// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6389function isArrayBufferView (obj) {
6390 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6391}
6392
6393function numberIsNaN (obj) {
6394 return obj !== obj // eslint-disable-line no-self-compare
6395}
6396
6397},{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6398exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6399 var e, m
6400 var eLen = nBytes * 8 - mLen - 1
6401 var eMax = (1 << eLen) - 1
6402 var eBias = eMax >> 1
6403 var nBits = -7
6404 var i = isLE ? (nBytes - 1) : 0
6405 var d = isLE ? -1 : 1
6406 var s = buffer[offset + i]
6407
6408 i += d
6409
6410 e = s & ((1 << (-nBits)) - 1)
6411 s >>= (-nBits)
6412 nBits += eLen
6413 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6414
6415 m = e & ((1 << (-nBits)) - 1)
6416 e >>= (-nBits)
6417 nBits += mLen
6418 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6419
6420 if (e === 0) {
6421 e = 1 - eBias
6422 } else if (e === eMax) {
6423 return m ? NaN : ((s ? -1 : 1) * Infinity)
6424 } else {
6425 m = m + Math.pow(2, mLen)
6426 e = e - eBias
6427 }
6428 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6429}
6430
6431exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6432 var e, m, c
6433 var eLen = nBytes * 8 - mLen - 1
6434 var eMax = (1 << eLen) - 1
6435 var eBias = eMax >> 1
6436 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6437 var i = isLE ? 0 : (nBytes - 1)
6438 var d = isLE ? 1 : -1
6439 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6440
6441 value = Math.abs(value)
6442
6443 if (isNaN(value) || value === Infinity) {
6444 m = isNaN(value) ? 1 : 0
6445 e = eMax
6446 } else {
6447 e = Math.floor(Math.log(value) / Math.LN2)
6448 if (value * (c = Math.pow(2, -e)) < 1) {
6449 e--
6450 c *= 2
6451 }
6452 if (e + eBias >= 1) {
6453 value += rt / c
6454 } else {
6455 value += rt * Math.pow(2, 1 - eBias)
6456 }
6457 if (value * c >= 2) {
6458 e++
6459 c /= 2
6460 }
6461
6462 if (e + eBias >= eMax) {
6463 m = 0
6464 e = eMax
6465 } else if (e + eBias >= 1) {
6466 m = (value * c - 1) * Math.pow(2, mLen)
6467 e = e + eBias
6468 } else {
6469 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6470 e = 0
6471 }
6472 }
6473
6474 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6475
6476 e = (e << mLen) | m
6477 eLen += mLen
6478 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6479
6480 buffer[offset + i - d] |= s * 128
6481}
6482
6483},{}],4:[function(require,module,exports){
6484window.basex = require('base-x')
6485},{"base-x":5}],5:[function(require,module,exports){
6486// base-x encoding
6487// Forked from https://github.com/cryptocoinjs/bs58
6488// Originally written by Mike Hearn for BitcoinJ
6489// Copyright (c) 2011 Google Inc
6490// Ported to JavaScript by Stefan Thomas
6491// Merged Buffer refactorings from base58-native by Stephen Pair
6492// Copyright (c) 2013 BitPay Inc
6493
6494var Buffer = require('safe-buffer').Buffer
6495
6496module.exports = function base (ALPHABET) {
6497 var ALPHABET_MAP = {}
6498 var BASE = ALPHABET.length
6499 var LEADER = ALPHABET.charAt(0)
6500
6501 // pre-compute lookup table
6502 for (var z = 0; z < ALPHABET.length; z++) {
6503 var x = ALPHABET.charAt(z)
6504
6505 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6506 ALPHABET_MAP[x] = z
6507 }
6508
6509 function encode (source) {
6510 if (source.length === 0) return ''
6511
6512 var digits = [0]
6513 for (var i = 0; i < source.length; ++i) {
6514 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6515 carry += digits[j] << 8
6516 digits[j] = carry % BASE
6517 carry = (carry / BASE) | 0
6518 }
6519
6520 while (carry > 0) {
6521 digits.push(carry % BASE)
6522 carry = (carry / BASE) | 0
6523 }
6524 }
6525
6526 var string = ''
6527
6528 // deal with leading zeros
6529 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6530 // convert digits to a string
6531 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6532
6533 return string
6534 }
6535
6536 function decodeUnsafe (string) {
6537 if (string.length === 0) return Buffer.allocUnsafe(0)
6538
6539 var bytes = [0]
6540 for (var i = 0; i < string.length; i++) {
6541 var value = ALPHABET_MAP[string[i]]
6542 if (value === undefined) return
6543
6544 for (var j = 0, carry = value; j < bytes.length; ++j) {
6545 carry += bytes[j] * BASE
6546 bytes[j] = carry & 0xff
6547 carry >>= 8
6548 }
6549
6550 while (carry > 0) {
6551 bytes.push(carry & 0xff)
6552 carry >>= 8
6553 }
6554 }
6555
6556 // deal with leading zeros
6557 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6558 bytes.push(0)
6559 }
6560
6561 return Buffer.from(bytes.reverse())
6562 }
6563
6564 function decode (string) {
6565 var buffer = decodeUnsafe(string)
6566 if (buffer) return buffer
6567
6568 throw new Error('Non-base' + BASE + ' character')
6569 }
6570
6571 return {
6572 encode: encode,
6573 decodeUnsafe: decodeUnsafe,
6574 decode: decode
6575 }
6576}
6577
6578},{"safe-buffer":6}],6:[function(require,module,exports){
6579module.exports = require('buffer')
6580
6581},{"buffer":2}]},{},[4])(4)
6582});</script>
6e0f24b1
IC
6583 <script>(function (root) {
6584 "use strict";
6585
6586/***** unorm.js *****/
6587
6588/*
6589 * UnicodeNormalizer 1.0.0
6590 * Copyright (c) 2008 Matsuza
6591 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6592 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6593 * $Rev: 13309 $
6594 */
6595
6596 var DEFAULT_FEATURE = [null, 0, {}];
6597 var CACHE_THRESHOLD = 10;
6598 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6599 var NCount = VCount * TCount; // 588
6600 var SCount = LCount * NCount; // 11172
6601
6602 var UChar = function(cp, feature){
6603 this.codepoint = cp;
6604 this.feature = feature;
6605 };
6606
6607 // Strategies
6608 var cache = {};
6609 var cacheCounter = [];
6610 for (var i = 0; i <= 0xFF; ++i){
6611 cacheCounter[i] = 0;
6612 }
6613
6614 function fromCache(next, cp, needFeature){
6615 var ret = cache[cp];
6616 if(!ret){
6617 ret = next(cp, needFeature);
6618 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6619 cache[cp] = ret;
6620 }
6621 }
6622 return ret;
6623 }
6624
6625 function fromData(next, cp, needFeature){
6626 var hash = cp & 0xFF00;
6627 var dunit = UChar.udata[hash] || {};
6628 var f = dunit[cp];
6629 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6630 }
6631 function fromCpOnly(next, cp, needFeature){
6632 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6633 }
6634 function fromRuleBasedJamo(next, cp, needFeature){
6635 var j;
6636 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6637 return next(cp, needFeature);
6638 }
6639 if(LBase <= cp && cp < LBase + LCount){
6640 var c = {};
6641 var base = (cp - LBase) * VCount;
6642 for (j = 0; j < VCount; ++j){
6643 c[VBase + j] = SBase + TCount * (j + base);
6644 }
6645 return new UChar(cp, [,,c]);
6646 }
6647
6648 var SIndex = cp - SBase;
6649 var TIndex = SIndex % TCount;
6650 var feature = [];
6651 if(TIndex !== 0){
6652 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6653 } else {
6654 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6655 feature[2] = {};
6656 for (j = 1; j < TCount; ++j){
6657 feature[2][TBase + j] = cp + j;
6658 }
6659 }
6660 return new UChar(cp, feature);
6661 }
6662 function fromCpFilter(next, cp, needFeature){
6663 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6664 }
6665
6666 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6667
6668 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6669 return function (cp, needFeature) {
6670 return strategy(next, cp, needFeature);
6671 };
6672 }, null);
6673
6674 UChar.isHighSurrogate = function(cp){
6675 return cp >= 0xD800 && cp <= 0xDBFF;
6676 };
6677 UChar.isLowSurrogate = function(cp){
6678 return cp >= 0xDC00 && cp <= 0xDFFF;
6679 };
6680
6681 UChar.prototype.prepFeature = function(){
6682 if(!this.feature){
6683 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6684 }
6685 };
6686
6687 UChar.prototype.toString = function(){
6688 if(this.codepoint < 0x10000){
6689 return String.fromCharCode(this.codepoint);
6690 } else {
6691 var x = this.codepoint - 0x10000;
6692 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6693 }
6694 };
6695
6696 UChar.prototype.getDecomp = function(){
6697 this.prepFeature();
6698 return this.feature[0] || null;
6699 };
6700
6701 UChar.prototype.isCompatibility = function(){
6702 this.prepFeature();
6703 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6704 };
6705 UChar.prototype.isExclude = function(){
6706 this.prepFeature();
6707 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6708 };
6709 UChar.prototype.getCanonicalClass = function(){
6710 this.prepFeature();
6711 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6712 };
6713 UChar.prototype.getComposite = function(following){
6714 this.prepFeature();
6715 if(!this.feature[2]){
6716 return null;
6717 }
6718 var cp = this.feature[2][following.codepoint];
6719 return cp ? UChar.fromCharCode(cp) : null;
6720 };
6721
6722 var UCharIterator = function(str){
6723 this.str = str;
6724 this.cursor = 0;
6725 };
6726 UCharIterator.prototype.next = function(){
6727 if(!!this.str && this.cursor < this.str.length){
6728 var cp = this.str.charCodeAt(this.cursor++);
6729 var d;
6730 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6731 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6732 ++this.cursor;
6733 }
6734 return UChar.fromCharCode(cp);
6735 } else {
6736 this.str = null;
6737 return null;
6738 }
6739 };
6740
6741 var RecursDecompIterator = function(it, cano){
6742 this.it = it;
6743 this.canonical = cano;
6744 this.resBuf = [];
6745 };
6746
6747 RecursDecompIterator.prototype.next = function(){
6748 function recursiveDecomp(cano, uchar){
6749 var decomp = uchar.getDecomp();
6750 if(!!decomp && !(cano && uchar.isCompatibility())){
6751 var ret = [];
6752 for(var i = 0; i < decomp.length; ++i){
6753 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6754 ret = ret.concat(a);
6755 }
6756 return ret;
6757 } else {
6758 return [uchar];
6759 }
6760 }
6761 if(this.resBuf.length === 0){
6762 var uchar = this.it.next();
6763 if(!uchar){
6764 return null;
6765 }
6766 this.resBuf = recursiveDecomp(this.canonical, uchar);
6767 }
6768 return this.resBuf.shift();
6769 };
6770
6771 var DecompIterator = function(it){
6772 this.it = it;
6773 this.resBuf = [];
6774 };
6775
6776 DecompIterator.prototype.next = function(){
6777 var cc;
6778 if(this.resBuf.length === 0){
6779 do{
6780 var uchar = this.it.next();
6781 if(!uchar){
6782 break;
6783 }
6784 cc = uchar.getCanonicalClass();
6785 var inspt = this.resBuf.length;
6786 if(cc !== 0){
6787 for(; inspt > 0; --inspt){
6788 var uchar2 = this.resBuf[inspt - 1];
6789 var cc2 = uchar2.getCanonicalClass();
6790 if(cc2 <= cc){
6791 break;
6792 }
6793 }
6794 }
6795 this.resBuf.splice(inspt, 0, uchar);
6796 } while(cc !== 0);
6797 }
6798 return this.resBuf.shift();
6799 };
6800
6801 var CompIterator = function(it){
6802 this.it = it;
6803 this.procBuf = [];
6804 this.resBuf = [];
6805 this.lastClass = null;
6806 };
6807
6808 CompIterator.prototype.next = function(){
6809 while(this.resBuf.length === 0){
6810 var uchar = this.it.next();
6811 if(!uchar){
6812 this.resBuf = this.procBuf;
6813 this.procBuf = [];
6814 break;
6815 }
6816 if(this.procBuf.length === 0){
6817 this.lastClass = uchar.getCanonicalClass();
6818 this.procBuf.push(uchar);
6819 } else {
6820 var starter = this.procBuf[0];
6821 var composite = starter.getComposite(uchar);
6822 var cc = uchar.getCanonicalClass();
6823 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6824 this.procBuf[0] = composite;
6825 } else {
6826 if(cc === 0){
6827 this.resBuf = this.procBuf;
6828 this.procBuf = [];
6829 }
6830 this.lastClass = cc;
6831 this.procBuf.push(uchar);
6832 }
6833 }
6834 }
6835 return this.resBuf.shift();
6836 };
6837
6838 var createIterator = function(mode, str){
6839 switch(mode){
6840 case "NFD":
6841 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6842 case "NFKD":
6843 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6844 case "NFC":
6845 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6846 case "NFKC":
6847 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6848 }
6849 throw mode + " is invalid";
6850 };
6851 var normalize = function(mode, str){
6852 var it = createIterator(mode, str);
6853 var ret = "";
6854 var uchar;
6855 while(!!(uchar = it.next())){
6856 ret += uchar.toString();
6857 }
6858 return ret;
6859 };
6860
6861 /* API functions */
6862 function nfd(str){
6863 return normalize("NFD", str);
6864 }
6865
6866 function nfkd(str){
6867 return normalize("NFKD", str);
6868 }
6869
6870 function nfc(str){
6871 return normalize("NFC", str);
6872 }
6873
6874 function nfkc(str){
6875 return normalize("NFKC", str);
6876 }
6877
6878/* Unicode data */
6879UChar.udata={
68800:{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]]},
6881256:{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]},
6882512:{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]},
6883768:{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]},
68841024:{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]]},
68851280:{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]},
68861536:{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]},
68871792:{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]},
68882048:{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]},
68892304:{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]},
68902560:{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]},
68912816:{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]},
68923072:{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]},
68933328:{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]]},
68943584:{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]},
68953840:{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]},
68964096:{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]},
68974352:{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]},
68984608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
68994864:{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]},
69005120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
69015376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
69025632:{71231:[,9],71350:[,9],71351:[,7]},
69035888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
69046144:{6313:[,228]},
69056400:{6457:[,222],6458:[,230],6459:[,220]},
69066656:{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]},
69076912:{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]},
69087168:{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]},
69097424:{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]},
69107680:{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]]},
69117936:{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}]},
69128192:{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]},
69138448:{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}]},
69148704:{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]]},
69158960:{9001:[[12296]],9002:[[12297]]},
69169216:{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]},
691710752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
691811264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
691911520:{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]},
692011776:{11935:[[27597],256],12019:[[40863],256]},
692112032:{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]},
692212288:{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]},
692312544:{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]},
692412800:{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]},
692513056:{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]},
692627136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
692727392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
692842496:{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]},
692942752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
693043008:{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]},
693143264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
693243520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
693343776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
693448128:{113822:[,1]},
693553504:{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]},
693653760:{119362:[,230],119363:[,230],119364:[,230]},
693754272:{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]},
693854528:{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]},
693954784:{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]},
694055040:{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]},
694159392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
694260928:{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]},
694361696:{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]},
694461952:{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]},
694563488:{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]]},
694663744:{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]]},
694764000:{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]]},
694864256:{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]},
694964512:{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]},
695064768:{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]},
695165024:{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]},
695265280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
6953
6954};
6955
6956 /***** Module to export */
6957 var unorm = {
6958 nfc: nfc,
6959 nfd: nfd,
6960 nfkc: nfkc,
6961 nfkd: nfkd
6962 };
6963
6964 /*globals module:true,define:true*/
6965
6966 // CommonJS
6967 if (typeof module === "object") {
6968 module.exports = unorm;
6969
6970 // AMD
6971 } else if (typeof define === "function" && define.amd) {
6972 define("unorm", function () {
6973 return unorm;
6974 });
6975
6976 // Global
6977 } else {
6978 root.unorm = unorm;
6979 }
6980
6981 /***** Export as shim for String::normalize method *****/
6982 /*
6983 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6984
6985 21.1.3.12 String.prototype.normalize(form="NFC")
6986 When the normalize method is called with one argument form, the following steps are taken:
6987
6988 1. Let O be CheckObjectCoercible(this value).
6989 2. Let S be ToString(O).
6990 3. ReturnIfAbrupt(S).
6991 4. If form is not provided or undefined let form be "NFC".
6992 5. Let f be ToString(form).
6993 6. ReturnIfAbrupt(f).
6994 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
6995 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.
6996 9. Return ns.
6997
6998 The length property of the normalize method is 0.
6999
7000 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
7001 */
7002 unorm.shimApplied = false;
7003
7004 if (!String.prototype.normalize) {
7005 String.prototype.normalize = function(form) {
7006 var str = "" + this;
7007 form = form === undefined ? "NFC" : form;
7008
7009 if (form === "NFC") {
7010 return unorm.nfc(str);
7011 } else if (form === "NFD") {
7012 return unorm.nfd(str);
7013 } else if (form === "NFKC") {
7014 return unorm.nfkc(str);
7015 } else if (form === "NFKD") {
7016 return unorm.nfkd(str);
7017 } else {
7018 throw new RangeError("Invalid normalization form: " + form);
7019 }
7020 };
7021
7022 unorm.shimApplied = true;
7023 }
7024}(this));
8b095871
IC
7025</script>
7026 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
7027!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)
7028},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
7029},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
7030</script>
7031 <script>/*!
7032 * Bootstrap v3.2.0 (http://getbootstrap.com)
7033 * Copyright 2011-2014 Twitter, Inc.
7034 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7035 */
7036if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);</script>
7037 <script>(function() {
7038 'use strict';
7039
7040 /**
7041 * Extend an Object with another Object's properties.
7042 *
7043 * The source objects are specified as additional arguments.
7044 *
7045 * @param dst Object the object to extend.
7046 *
7047 * @return Object the final object.
7048 */
7049 var _extend = function(dst) {
7050 var sources = Array.prototype.slice.call(arguments, 1);
7051 for (var i=0; i<sources.length; ++i) {
7052 var src = sources[i];
7053 for (var p in src) {
7054 if (src.hasOwnProperty(p)) dst[p] = src[p];
7055 }
7056 }
7057 return dst;
7058 };
7059
7060
7061 /**
7062 * Defer execution of given function.
7063 * @param {Function} func
7064 */
7065 var _defer = function(func) {
7066 if (typeof setImmediate === 'function') {
7067 return setImmediate(func);
7068 } else {
7069 return setTimeout(func, 0);
7070 }
7071 };
7072
7073 /**
7074 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
7075 */
7076 var Levenshtein = {
7077 /**
7078 * Calculate levenshtein distance of the two strings.
7079 *
7080 * @param str1 String the first string.
7081 * @param str2 String the second string.
7082 * @return Integer the levenshtein distance (0 and above).
7083 */
7084 get: function(str1, str2) {
7085 // base cases
7086 if (str1 === str2) return 0;
7087 if (str1.length === 0) return str2.length;
7088 if (str2.length === 0) return str1.length;
7089
7090 // two rows
7091 var prevRow = new Array(str2.length + 1),
7092 curCol, nextCol, i, j, tmp;
7093
7094 // initialise previous row
7095 for (i=0; i<prevRow.length; ++i) {
7096 prevRow[i] = i;
7097 }
7098
7099 // calculate current row distance from previous row
7100 for (i=0; i<str1.length; ++i) {
7101 nextCol = i + 1;
7102
7103 for (j=0; j<str2.length; ++j) {
7104 curCol = nextCol;
7105
7106 // substution
7107 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7108 // insertion
7109 tmp = curCol + 1;
7110 if (nextCol > tmp) {
7111 nextCol = tmp;
7112 }
7113 // deletion
7114 tmp = prevRow[j + 1] + 1;
7115 if (nextCol > tmp) {
7116 nextCol = tmp;
7117 }
7118
7119 // copy current col value into previous (in preparation for next iteration)
7120 prevRow[j] = curCol;
7121 }
7122
7123 // copy last col value into previous (in preparation for next iteration)
7124 prevRow[j] = nextCol;
7125 }
7126
7127 return nextCol;
7128 },
7129
7130 /**
7131 * Asynchronously calculate levenshtein distance of the two strings.
7132 *
7133 * @param str1 String the first string.
7134 * @param str2 String the second string.
7135 * @param cb Function callback function with signature: function(Error err, int distance)
7136 * @param [options] Object additional options.
7137 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7138 */
7139 getAsync: function(str1, str2, cb, options) {
7140 options = _extend({}, {
7141 progress: null
7142 }, options);
7143
7144 // base cases
7145 if (str1 === str2) return cb(null, 0);
7146 if (str1.length === 0) return cb(null, str2.length);
7147 if (str2.length === 0) return cb(null, str1.length);
7148
7149 // two rows
7150 var prevRow = new Array(str2.length + 1),
7151 curCol, nextCol,
7152 i, j, tmp,
7153 startTime, currentTime;
7154
7155 // initialise previous row
7156 for (i=0; i<prevRow.length; ++i) {
7157 prevRow[i] = i;
7158 }
7159
7160 nextCol = 1;
7161 i = 0;
7162 j = -1;
7163
7164 var __calculate = function() {
7165 // reset timer
7166 startTime = new Date().valueOf();
7167 currentTime = startTime;
7168
7169 // keep going until one second has elapsed
7170 while (currentTime - startTime < 1000) {
7171 // reached end of current row?
7172 if (str2.length <= (++j)) {
7173 // copy current into previous (in preparation for next iteration)
7174 prevRow[j] = nextCol;
7175
7176 // if already done all chars
7177 if (str1.length <= (++i)) {
7178 return cb(null, nextCol);
7179 }
7180 // else if we have more left to do
7181 else {
7182 nextCol = i + 1;
7183 j = 0;
7184 }
7185 }
7186
7187 // calculation
7188 curCol = nextCol;
7189
7190 // substution
7191 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7192 // insertion
7193 tmp = curCol + 1;
7194 if (nextCol > tmp) {
7195 nextCol = tmp;
7196 }
7197 // deletion
7198 tmp = prevRow[j + 1] + 1;
7199 if (nextCol > tmp) {
7200 nextCol = tmp;
7201 }
7202
7203 // copy current into previous (in preparation for next iteration)
7204 prevRow[j] = curCol;
7205
7206 // get current time
7207 currentTime = new Date().valueOf();
7208 }
7209
7210 // send a progress update?
7211 if (null !== options.progress) {
7212 try {
7213 options.progress.call(null, (i * 100.0/ str1.length));
7214 } catch (err) {
7215 return cb('Progress callback: ' + err.toString());
7216 }
7217 }
7218
7219 // next iteration
7220 _defer(__calculate);
7221 };
7222
7223 __calculate();
7224 }
7225
7226 };
7227
7228 // amd
7229 if (typeof define !== "undefined" && define !== null && define.amd) {
7230 define(function() {
7231 return Levenshtein;
7232 });
7233 }
7234 // commonjs
7235 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7236 module.exports = Levenshtein;
7237 }
7238 // web worker
7239 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7240 self.Levenshtein = Levenshtein;
7241 }
7242 // browser main thread
7243 else if (typeof window !== "undefined" && window !== null) {
7244 window.Levenshtein = Levenshtein;
7245 }
7246}());
7247
7248</script>
7249 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
7250write: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;
7251for(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-
72527,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]=
72530<=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},
7254setupTimingPattern: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=
7255j.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-
7256b-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,
7257c),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=
72580,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
7259(d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
726078,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)-
7261j.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:"+
7262a);}},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:"+
7263a);}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+
72642)&&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),
7265LOG_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>
7266this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
7267[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
7268116],[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,
726943,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,
72703,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,
727155,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,
727245,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
7273(a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
7274correctLevel:2,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
7275j=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",
7276d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7277</script>
9987f0c1
IC
7278 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoinjs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
7279(function (global){
7280'use strict';
8b095871 7281
9987f0c1
IC
7282// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
7283// original notice:
8b095871 7284
9987f0c1
IC
7285/*!
7286 * The buffer module from node.js, for the browser.
7287 *
7288 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7289 * @license MIT
7290 */
7291function compare(a, b) {
7292 if (a === b) {
7293 return 0;
7294 }
8b095871 7295
9987f0c1
IC
7296 var x = a.length;
7297 var y = b.length;
8b095871 7298
9987f0c1
IC
7299 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
7300 if (a[i] !== b[i]) {
7301 x = a[i];
7302 y = b[i];
7303 break;
7304 }
7305 }
8b095871 7306
9987f0c1
IC
7307 if (x < y) {
7308 return -1;
8b095871 7309 }
9987f0c1
IC
7310 if (y < x) {
7311 return 1;
8b095871 7312 }
9987f0c1 7313 return 0;
8b095871 7314}
9987f0c1
IC
7315function isBuffer(b) {
7316 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
7317 return global.Buffer.isBuffer(b);
8b095871 7318 }
9987f0c1 7319 return !!(b != null && b._isBuffer);
8b095871
IC
7320}
7321
9987f0c1 7322// based on node assert, original notice:
8b095871 7323
9987f0c1
IC
7324// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
7325//
7326// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
7327//
7328// Originally from narwhal.js (http://narwhaljs.org)
7329// Copyright (c) 2009 Thomas Robinson <280north.com>
7330//
7331// Permission is hereby granted, free of charge, to any person obtaining a copy
7332// of this software and associated documentation files (the 'Software'), to
7333// deal in the Software without restriction, including without limitation the
7334// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7335// sell copies of the Software, and to permit persons to whom the Software is
7336// furnished to do so, subject to the following conditions:
7337//
7338// The above copyright notice and this permission notice shall be included in
7339// all copies or substantial portions of the Software.
7340//
7341// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7342// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7343// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7344// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7345// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
7346// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8b095871 7347
9987f0c1
IC
7348var util = require('util/');
7349var hasOwn = Object.prototype.hasOwnProperty;
7350var pSlice = Array.prototype.slice;
7351var functionsHaveNames = (function () {
7352 return function foo() {}.name === 'foo';
7353}());
7354function pToString (obj) {
7355 return Object.prototype.toString.call(obj);
8b095871 7356}
9987f0c1
IC
7357function isView(arrbuf) {
7358 if (isBuffer(arrbuf)) {
7359 return false;
7360 }
7361 if (typeof global.ArrayBuffer !== 'function') {
7362 return false;
7363 }
7364 if (typeof ArrayBuffer.isView === 'function') {
7365 return ArrayBuffer.isView(arrbuf);
7366 }
7367 if (!arrbuf) {
7368 return false;
7369 }
7370 if (arrbuf instanceof DataView) {
7371 return true;
7372 }
7373 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
7374 return true;
7375 }
7376 return false;
8b095871 7377}
9987f0c1
IC
7378// 1. The assert module provides functions that throw
7379// AssertionError's when particular conditions are not met. The
7380// assert module must conform to the following interface.
8b095871 7381
9987f0c1 7382var assert = module.exports = ok;
8b095871 7383
9987f0c1
IC
7384// 2. The AssertionError is defined in assert.
7385// new assert.AssertionError({ message: message,
7386// actual: actual,
7387// expected: expected })
8b095871 7388
9987f0c1
IC
7389var regex = /\s*function\s+([^\(\s]*)\s*/;
7390// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
7391function getName(func) {
7392 if (!util.isFunction(func)) {
7393 return;
7394 }
7395 if (functionsHaveNames) {
7396 return func.name;
7397 }
7398 var str = func.toString();
7399 var match = str.match(regex);
7400 return match && match[1];
8b095871 7401}
9987f0c1
IC
7402assert.AssertionError = function AssertionError(options) {
7403 this.name = 'AssertionError';
7404 this.actual = options.actual;
7405 this.expected = options.expected;
7406 this.operator = options.operator;
7407 if (options.message) {
7408 this.message = options.message;
7409 this.generatedMessage = false;
7410 } else {
7411 this.message = getMessage(this);
7412 this.generatedMessage = true;
7413 }
7414 var stackStartFunction = options.stackStartFunction || fail;
7415 if (Error.captureStackTrace) {
7416 Error.captureStackTrace(this, stackStartFunction);
7417 } else {
7418 // non v8 browsers so we can have a stacktrace
7419 var err = new Error();
7420 if (err.stack) {
7421 var out = err.stack;
8b095871 7422
9987f0c1
IC
7423 // try to strip useless frames
7424 var fn_name = getName(stackStartFunction);
7425 var idx = out.indexOf('\n' + fn_name);
7426 if (idx >= 0) {
7427 // once we have located the function frame
7428 // we need to strip out everything before it (and its line)
7429 var next_line = out.indexOf('\n', idx + 1);
7430 out = out.substring(next_line + 1);
7431 }
8b095871 7432
9987f0c1 7433 this.stack = out;
8b095871 7434 }
8b095871 7435 }
9987f0c1 7436};
8b095871 7437
9987f0c1
IC
7438// assert.AssertionError instanceof Error
7439util.inherits(assert.AssertionError, Error);
8b095871 7440
9987f0c1
IC
7441function truncate(s, n) {
7442 if (typeof s === 'string') {
7443 return s.length < n ? s : s.slice(0, n);
7444 } else {
7445 return s;
8b095871 7446 }
8b095871 7447}
9987f0c1
IC
7448function inspect(something) {
7449 if (functionsHaveNames || !util.isFunction(something)) {
7450 return util.inspect(something);
7451 }
7452 var rawname = getName(something);
7453 var name = rawname ? ': ' + rawname : '';
7454 return '[Function' + name + ']';
8b095871 7455}
9987f0c1
IC
7456function getMessage(self) {
7457 return truncate(inspect(self.actual), 128) + ' ' +
7458 self.operator + ' ' +
7459 truncate(inspect(self.expected), 128);
8b095871
IC
7460}
7461
9987f0c1
IC
7462// At present only the three keys mentioned above are used and
7463// understood by the spec. Implementations or sub modules can pass
7464// other keys to the AssertionError's constructor - they will be
7465// ignored.
3af2954a 7466
9987f0c1
IC
7467// 3. All of the following functions must throw an AssertionError
7468// when a corresponding condition is not met, with a message that
7469// may be undefined if not provided. All assertion methods provide
7470// both the actual and expected values to the assertion error for
7471// display purposes.
8b095871 7472
9987f0c1
IC
7473function fail(actual, expected, message, operator, stackStartFunction) {
7474 throw new assert.AssertionError({
7475 message: message,
7476 actual: actual,
7477 expected: expected,
7478 operator: operator,
7479 stackStartFunction: stackStartFunction
7480 });
8b095871
IC
7481}
7482
9987f0c1
IC
7483// EXTENSION! allows for well behaved errors defined elsewhere.
7484assert.fail = fail;
8b095871 7485
9987f0c1
IC
7486// 4. Pure assertion tests whether a value is truthy, as determined
7487// by !!guard.
7488// assert.ok(guard, message_opt);
7489// This statement is equivalent to assert.equal(true, !!guard,
7490// message_opt);. To test strictly for the value true, use
7491// assert.strictEqual(true, guard, message_opt);.
8b095871 7492
9987f0c1
IC
7493function ok(value, message) {
7494 if (!value) fail(value, true, message, '==', assert.ok);
8b095871 7495}
9987f0c1 7496assert.ok = ok;
8b095871 7497
9987f0c1
IC
7498// 5. The equality assertion tests shallow, coercive equality with
7499// ==.
7500// assert.equal(actual, expected, message_opt);
7501
7502assert.equal = function equal(actual, expected, message) {
7503 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
7504};
7505
7506// 6. The non-equality assertion tests for whether two objects are not equal
7507// with != assert.notEqual(actual, expected, message_opt);
7508
7509assert.notEqual = function notEqual(actual, expected, message) {
7510 if (actual == expected) {
7511 fail(actual, expected, message, '!=', assert.notEqual);
8b095871 7512 }
9987f0c1 7513};
8b095871 7514
9987f0c1
IC
7515// 7. The equivalence assertion tests a deep equality relation.
7516// assert.deepEqual(actual, expected, message_opt);
7517
7518assert.deepEqual = function deepEqual(actual, expected, message) {
7519 if (!_deepEqual(actual, expected, false)) {
7520 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
8b095871 7521 }
9987f0c1
IC
7522};
7523
7524assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
7525 if (!_deepEqual(actual, expected, true)) {
7526 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
7527 }
7528};
7529
7530function _deepEqual(actual, expected, strict, memos) {
7531 // 7.1. All identical values are equivalent, as determined by ===.
7532 if (actual === expected) {
7533 return true;
7534 } else if (isBuffer(actual) && isBuffer(expected)) {
7535 return compare(actual, expected) === 0;
7536
7537 // 7.2. If the expected value is a Date object, the actual value is
7538 // equivalent if it is also a Date object that refers to the same time.
7539 } else if (util.isDate(actual) && util.isDate(expected)) {
7540 return actual.getTime() === expected.getTime();
7541
7542 // 7.3 If the expected value is a RegExp object, the actual value is
7543 // equivalent if it is also a RegExp object with the same source and
7544 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
7545 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
7546 return actual.source === expected.source &&
7547 actual.global === expected.global &&
7548 actual.multiline === expected.multiline &&
7549 actual.lastIndex === expected.lastIndex &&
7550 actual.ignoreCase === expected.ignoreCase;
7551
7552 // 7.4. Other pairs that do not both pass typeof value == 'object',
7553 // equivalence is determined by ==.
7554 } else if ((actual === null || typeof actual !== 'object') &&
7555 (expected === null || typeof expected !== 'object')) {
7556 return strict ? actual === expected : actual == expected;
7557
7558 // If both values are instances of typed arrays, wrap their underlying
7559 // ArrayBuffers in a Buffer each to increase performance
7560 // This optimization requires the arrays to have the same type as checked by
7561 // Object.prototype.toString (aka pToString). Never perform binary
7562 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
7563 // bit patterns are not identical.
7564 } else if (isView(actual) && isView(expected) &&
7565 pToString(actual) === pToString(expected) &&
7566 !(actual instanceof Float32Array ||
7567 actual instanceof Float64Array)) {
7568 return compare(new Uint8Array(actual.buffer),
7569 new Uint8Array(expected.buffer)) === 0;
7570
7571 // 7.5 For all other Object pairs, including Array objects, equivalence is
7572 // determined by having the same number of owned properties (as verified
7573 // with Object.prototype.hasOwnProperty.call), the same set of keys
7574 // (although not necessarily the same order), equivalent values for every
7575 // corresponding key, and an identical 'prototype' property. Note: this
7576 // accounts for both named and indexed properties on Arrays.
7577 } else if (isBuffer(actual) !== isBuffer(expected)) {
7578 return false;
7579 } else {
7580 memos = memos || {actual: [], expected: []};
7581
7582 var actualIndex = memos.actual.indexOf(actual);
7583 if (actualIndex !== -1) {
7584 if (actualIndex === memos.expected.indexOf(expected)) {
7585 return true;
7586 }
7587 }
7588
7589 memos.actual.push(actual);
7590 memos.expected.push(expected);
7591
7592 return objEquiv(actual, expected, strict, memos);
7593 }
7594}
7595
7596function isArguments(object) {
7597 return Object.prototype.toString.call(object) == '[object Arguments]';
7598}
7599
7600function objEquiv(a, b, strict, actualVisitedObjects) {
7601 if (a === null || a === undefined || b === null || b === undefined)
7602 return false;
7603 // if one is a primitive, the other must be same
7604 if (util.isPrimitive(a) || util.isPrimitive(b))
7605 return a === b;
7606 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
7607 return false;
7608 var aIsArgs = isArguments(a);
7609 var bIsArgs = isArguments(b);
7610 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
7611 return false;
7612 if (aIsArgs) {
7613 a = pSlice.call(a);
7614 b = pSlice.call(b);
7615 return _deepEqual(a, b, strict);
7616 }
7617 var ka = objectKeys(a);
7618 var kb = objectKeys(b);
7619 var key, i;
7620 // having the same number of owned properties (keys incorporates
7621 // hasOwnProperty)
7622 if (ka.length !== kb.length)
7623 return false;
7624 //the same set of keys (although not necessarily the same order),
7625 ka.sort();
7626 kb.sort();
7627 //~~~cheap key test
7628 for (i = ka.length - 1; i >= 0; i--) {
7629 if (ka[i] !== kb[i])
7630 return false;
7631 }
7632 //equivalent values for every corresponding key, and
7633 //~~~possibly expensive deep test
7634 for (i = ka.length - 1; i >= 0; i--) {
7635 key = ka[i];
7636 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
7637 return false;
7638 }
7639 return true;
7640}
7641
7642// 8. The non-equivalence assertion tests for any deep inequality.
7643// assert.notDeepEqual(actual, expected, message_opt);
7644
7645assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
7646 if (_deepEqual(actual, expected, false)) {
7647 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
7648 }
7649};
7650
7651assert.notDeepStrictEqual = notDeepStrictEqual;
7652function notDeepStrictEqual(actual, expected, message) {
7653 if (_deepEqual(actual, expected, true)) {
7654 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
7655 }
7656}
7657
7658
7659// 9. The strict equality assertion tests strict equality, as determined by ===.
7660// assert.strictEqual(actual, expected, message_opt);
7661
7662assert.strictEqual = function strictEqual(actual, expected, message) {
7663 if (actual !== expected) {
7664 fail(actual, expected, message, '===', assert.strictEqual);
7665 }
7666};
7667
7668// 10. The strict non-equality assertion tests for strict inequality, as
7669// determined by !==. assert.notStrictEqual(actual, expected, message_opt);
7670
7671assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
7672 if (actual === expected) {
7673 fail(actual, expected, message, '!==', assert.notStrictEqual);
7674 }
7675};
7676
7677function expectedException(actual, expected) {
7678 if (!actual || !expected) {
7679 return false;
7680 }
7681
7682 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
7683 return expected.test(actual);
7684 }
7685
7686 try {
7687 if (actual instanceof expected) {
7688 return true;
7689 }
7690 } catch (e) {
7691 // Ignore. The instanceof check doesn't work for arrow functions.
7692 }
7693
7694 if (Error.isPrototypeOf(expected)) {
7695 return false;
7696 }
7697
7698 return expected.call({}, actual) === true;
7699}
7700
7701function _tryBlock(block) {
7702 var error;
7703 try {
7704 block();
7705 } catch (e) {
7706 error = e;
7707 }
7708 return error;
7709}
7710
7711function _throws(shouldThrow, block, expected, message) {
7712 var actual;
7713
7714 if (typeof block !== 'function') {
7715 throw new TypeError('"block" argument must be a function');
7716 }
7717
7718 if (typeof expected === 'string') {
7719 message = expected;
7720 expected = null;
7721 }
7722
7723 actual = _tryBlock(block);
7724
7725 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
7726 (message ? ' ' + message : '.');
7727
7728 if (shouldThrow && !actual) {
7729 fail(actual, expected, 'Missing expected exception' + message);
7730 }
7731
7732 var userProvidedMessage = typeof message === 'string';
7733 var isUnwantedException = !shouldThrow && util.isError(actual);
7734 var isUnexpectedException = !shouldThrow && actual && !expected;
7735
7736 if ((isUnwantedException &&
7737 userProvidedMessage &&
7738 expectedException(actual, expected)) ||
7739 isUnexpectedException) {
7740 fail(actual, expected, 'Got unwanted exception' + message);
7741 }
7742
7743 if ((shouldThrow && actual && expected &&
7744 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
7745 throw actual;
7746 }
7747}
7748
7749// 11. Expected to throw an error:
7750// assert.throws(block, Error_opt, message_opt);
7751
7752assert.throws = function(block, /*optional*/error, /*optional*/message) {
7753 _throws(true, block, error, message);
7754};
7755
7756// EXTENSION! This is annoying to write outside this module.
7757assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
7758 _throws(false, block, error, message);
7759};
7760
7761assert.ifError = function(err) { if (err) throw err; };
7762
7763var objectKeys = Object.keys || function (obj) {
7764 var keys = [];
7765 for (var key in obj) {
7766 if (hasOwn.call(obj, key)) keys.push(key);
7767 }
7768 return keys;
7769};
7770
7771}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7772},{"util/":32}],2:[function(require,module,exports){
7773'use strict'
7774
7775exports.byteLength = byteLength
7776exports.toByteArray = toByteArray
7777exports.fromByteArray = fromByteArray
7778
7779var lookup = []
7780var revLookup = []
7781var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
7782
7783var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
7784for (var i = 0, len = code.length; i < len; ++i) {
7785 lookup[i] = code[i]
7786 revLookup[code.charCodeAt(i)] = i
7787}
7788
7789revLookup['-'.charCodeAt(0)] = 62
7790revLookup['_'.charCodeAt(0)] = 63
7791
7792function placeHoldersCount (b64) {
7793 var len = b64.length
7794 if (len % 4 > 0) {
7795 throw new Error('Invalid string. Length must be a multiple of 4')
7796 }
7797
7798 // the number of equal signs (place holders)
7799 // if there are two placeholders, than the two characters before it
7800 // represent one byte
7801 // if there is only one, then the three characters before it represent 2 bytes
7802 // this is just a cheap hack to not do indexOf twice
7803 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
7804}
7805
7806function byteLength (b64) {
7807 // base64 is 4/3 + up to two characters of the original data
7808 return (b64.length * 3 / 4) - placeHoldersCount(b64)
7809}
7810
7811function toByteArray (b64) {
7812 var i, l, tmp, placeHolders, arr
7813 var len = b64.length
7814 placeHolders = placeHoldersCount(b64)
7815
7816 arr = new Arr((len * 3 / 4) - placeHolders)
7817
7818 // if there are placeholders, only get up to the last complete 4 chars
7819 l = placeHolders > 0 ? len - 4 : len
7820
7821 var L = 0
7822
7823 for (i = 0; i < l; i += 4) {
7824 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
7825 arr[L++] = (tmp >> 16) & 0xFF
7826 arr[L++] = (tmp >> 8) & 0xFF
7827 arr[L++] = tmp & 0xFF
7828 }
7829
7830 if (placeHolders === 2) {
7831 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
7832 arr[L++] = tmp & 0xFF
7833 } else if (placeHolders === 1) {
7834 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
7835 arr[L++] = (tmp >> 8) & 0xFF
7836 arr[L++] = tmp & 0xFF
7837 }
7838
7839 return arr
7840}
7841
7842function tripletToBase64 (num) {
7843 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
7844}
7845
7846function encodeChunk (uint8, start, end) {
7847 var tmp
7848 var output = []
7849 for (var i = start; i < end; i += 3) {
7850 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
7851 output.push(tripletToBase64(tmp))
7852 }
7853 return output.join('')
7854}
7855
7856function fromByteArray (uint8) {
7857 var tmp
7858 var len = uint8.length
7859 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
7860 var output = ''
7861 var parts = []
7862 var maxChunkLength = 16383 // must be multiple of 3
7863
7864 // go through the array every three bytes, we'll deal with trailing stuff later
7865 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
7866 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
7867 }
7868
7869 // pad the end with zeros, but make sure to not forget the extra bytes
7870 if (extraBytes === 1) {
7871 tmp = uint8[len - 1]
7872 output += lookup[tmp >> 2]
7873 output += lookup[(tmp << 4) & 0x3F]
7874 output += '=='
7875 } else if (extraBytes === 2) {
7876 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
7877 output += lookup[tmp >> 10]
7878 output += lookup[(tmp >> 4) & 0x3F]
7879 output += lookup[(tmp << 2) & 0x3F]
7880 output += '='
7881 }
7882
7883 parts.push(output)
7884
7885 return parts.join('')
7886}
7887
7888},{}],3:[function(require,module,exports){
7889
7890},{}],4:[function(require,module,exports){
7891/*!
7892 * The buffer module from node.js, for the browser.
7893 *
7894 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
7895 * @license MIT
7896 */
7897/* eslint-disable no-proto */
7898
7899'use strict'
7900
7901var base64 = require('base64-js')
7902var ieee754 = require('ieee754')
7903
7904exports.Buffer = Buffer
7905exports.SlowBuffer = SlowBuffer
7906exports.INSPECT_MAX_BYTES = 50
7907
7908var K_MAX_LENGTH = 0x7fffffff
7909exports.kMaxLength = K_MAX_LENGTH
7910
7911/**
7912 * If `Buffer.TYPED_ARRAY_SUPPORT`:
7913 * === true Use Uint8Array implementation (fastest)
7914 * === false Print warning and recommend using `buffer` v4.x which has an Object
7915 * implementation (most compatible, even IE6)
7916 *
7917 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
7918 * Opera 11.6+, iOS 4.2+.
7919 *
7920 * We report that the browser does not support typed arrays if the are not subclassable
7921 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
7922 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
7923 * for __proto__ and has a buggy typed array implementation.
7924 */
7925Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
7926
7927if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
7928 typeof console.error === 'function') {
7929 console.error(
7930 'This browser lacks typed array (Uint8Array) support which is required by ' +
7931 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
7932 )
7933}
7934
7935function typedArraySupport () {
7936 // Can typed array instances can be augmented?
7937 try {
7938 var arr = new Uint8Array(1)
7939 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
7940 return arr.foo() === 42
7941 } catch (e) {
7942 return false
7943 }
7944}
7945
7946function createBuffer (length) {
7947 if (length > K_MAX_LENGTH) {
7948 throw new RangeError('Invalid typed array length')
7949 }
7950 // Return an augmented `Uint8Array` instance
7951 var buf = new Uint8Array(length)
7952 buf.__proto__ = Buffer.prototype
7953 return buf
7954}
7955
7956/**
7957 * The Buffer constructor returns instances of `Uint8Array` that have their
7958 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
7959 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
7960 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
7961 * returns a single octet.
7962 *
7963 * The `Uint8Array` prototype remains unmodified.
7964 */
7965
7966function Buffer (arg, encodingOrOffset, length) {
7967 // Common case.
7968 if (typeof arg === 'number') {
7969 if (typeof encodingOrOffset === 'string') {
7970 throw new Error(
7971 'If encoding is specified then the first argument must be a string'
7972 )
7973 }
7974 return allocUnsafe(arg)
7975 }
7976 return from(arg, encodingOrOffset, length)
7977}
7978
7979// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
7980if (typeof Symbol !== 'undefined' && Symbol.species &&
7981 Buffer[Symbol.species] === Buffer) {
7982 Object.defineProperty(Buffer, Symbol.species, {
7983 value: null,
7984 configurable: true,
7985 enumerable: false,
7986 writable: false
7987 })
7988}
7989
7990Buffer.poolSize = 8192 // not used by this implementation
7991
7992function from (value, encodingOrOffset, length) {
7993 if (typeof value === 'number') {
7994 throw new TypeError('"value" argument must not be a number')
7995 }
7996
7997 if (value instanceof ArrayBuffer) {
7998 return fromArrayBuffer(value, encodingOrOffset, length)
7999 }
8000
8001 if (typeof value === 'string') {
8002 return fromString(value, encodingOrOffset)
8003 }
8004
8005 return fromObject(value)
8006}
8007
8008/**
8009 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
8010 * if value is a number.
8011 * Buffer.from(str[, encoding])
8012 * Buffer.from(array)
8013 * Buffer.from(buffer)
8014 * Buffer.from(arrayBuffer[, byteOffset[, length]])
8015 **/
8016Buffer.from = function (value, encodingOrOffset, length) {
8017 return from(value, encodingOrOffset, length)
8018}
8019
8020// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
8021// https://github.com/feross/buffer/pull/148
8022Buffer.prototype.__proto__ = Uint8Array.prototype
8023Buffer.__proto__ = Uint8Array
8024
8025function assertSize (size) {
8026 if (typeof size !== 'number') {
8027 throw new TypeError('"size" argument must be a number')
8028 } else if (size < 0) {
8029 throw new RangeError('"size" argument must not be negative')
8030 }
8031}
8032
8033function alloc (size, fill, encoding) {
8034 assertSize(size)
8035 if (size <= 0) {
8036 return createBuffer(size)
8037 }
8038 if (fill !== undefined) {
8039 // Only pay attention to encoding if it's a string. This
8040 // prevents accidentally sending in a number that would
8041 // be interpretted as a start offset.
8042 return typeof encoding === 'string'
8043 ? createBuffer(size).fill(fill, encoding)
8044 : createBuffer(size).fill(fill)
8045 }
8046 return createBuffer(size)
8047}
8048
8049/**
8050 * Creates a new filled Buffer instance.
8051 * alloc(size[, fill[, encoding]])
8052 **/
8053Buffer.alloc = function (size, fill, encoding) {
8054 return alloc(size, fill, encoding)
8055}
8056
8057function allocUnsafe (size) {
8058 assertSize(size)
8059 return createBuffer(size < 0 ? 0 : checked(size) | 0)
8060}
8061
8062/**
8063 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
8064 * */
8065Buffer.allocUnsafe = function (size) {
8066 return allocUnsafe(size)
8067}
8068/**
8069 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
8070 */
8071Buffer.allocUnsafeSlow = function (size) {
8072 return allocUnsafe(size)
8073}
8074
8075function fromString (string, encoding) {
8076 if (typeof encoding !== 'string' || encoding === '') {
8077 encoding = 'utf8'
8078 }
8079
8080 if (!Buffer.isEncoding(encoding)) {
8081 throw new TypeError('"encoding" must be a valid string encoding')
8082 }
8083
8084 var length = byteLength(string, encoding) | 0
8085 var buf = createBuffer(length)
8086
8087 var actual = buf.write(string, encoding)
8088
8089 if (actual !== length) {
8090 // Writing a hex string, for example, that contains invalid characters will
8091 // cause everything after the first invalid character to be ignored. (e.g.
8092 // 'abxxcd' will be treated as 'ab')
8093 buf = buf.slice(0, actual)
8094 }
8095
8096 return buf
8097}
8098
8099function fromArrayLike (array) {
8100 var length = array.length < 0 ? 0 : checked(array.length) | 0
8101 var buf = createBuffer(length)
8102 for (var i = 0; i < length; i += 1) {
8103 buf[i] = array[i] & 255
8104 }
8105 return buf
8106}
8107
8108function fromArrayBuffer (array, byteOffset, length) {
8109 if (byteOffset < 0 || array.byteLength < byteOffset) {
8110 throw new RangeError('\'offset\' is out of bounds')
8111 }
8112
8113 if (array.byteLength < byteOffset + (length || 0)) {
8114 throw new RangeError('\'length\' is out of bounds')
8115 }
8116
8117 var buf
8118 if (byteOffset === undefined && length === undefined) {
8119 buf = new Uint8Array(array)
8120 } else if (length === undefined) {
8121 buf = new Uint8Array(array, byteOffset)
8122 } else {
8123 buf = new Uint8Array(array, byteOffset, length)
8124 }
8125
8126 // Return an augmented `Uint8Array` instance
8127 buf.__proto__ = Buffer.prototype
8128 return buf
8129}
8130
8131function fromObject (obj) {
8132 if (Buffer.isBuffer(obj)) {
8133 var len = checked(obj.length) | 0
8134 var buf = createBuffer(len)
8135
8136 if (buf.length === 0) {
8137 return buf
8138 }
8139
8140 obj.copy(buf, 0, 0, len)
8141 return buf
8142 }
8143
8144 if (obj) {
8145 if (isArrayBufferView(obj) || 'length' in obj) {
8146 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
8147 return createBuffer(0)
8148 }
8149 return fromArrayLike(obj)
8150 }
8151
8152 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
8153 return fromArrayLike(obj.data)
8154 }
8155 }
8156
8157 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
8158}
8159
8160function checked (length) {
8161 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
8162 // length is NaN (which is otherwise coerced to zero.)
8163 if (length >= K_MAX_LENGTH) {
8164 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
8165 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
8166 }
8167 return length | 0
8168}
8169
8170function SlowBuffer (length) {
8171 if (+length != length) { // eslint-disable-line eqeqeq
8172 length = 0
8173 }
8174 return Buffer.alloc(+length)
8175}
8176
8177Buffer.isBuffer = function isBuffer (b) {
8178 return b != null && b._isBuffer === true
8179}
8180
8181Buffer.compare = function compare (a, b) {
8182 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
8183 throw new TypeError('Arguments must be Buffers')
8184 }
8185
8186 if (a === b) return 0
8187
8188 var x = a.length
8189 var y = b.length
8190
8191 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
8192 if (a[i] !== b[i]) {
8193 x = a[i]
8194 y = b[i]
8195 break
8196 }
8b095871 8197 }
9987f0c1
IC
8198
8199 if (x < y) return -1
8200 if (y < x) return 1
8201 return 0
8b095871
IC
8202}
8203
9987f0c1
IC
8204Buffer.isEncoding = function isEncoding (encoding) {
8205 switch (String(encoding).toLowerCase()) {
8206 case 'hex':
8207 case 'utf8':
8208 case 'utf-8':
8209 case 'ascii':
8210 case 'latin1':
8211 case 'binary':
8212 case 'base64':
8213 case 'ucs2':
8214 case 'ucs-2':
8215 case 'utf16le':
8216 case 'utf-16le':
8217 return true
8218 default:
8219 return false
8b095871 8220 }
9987f0c1
IC
8221}
8222
8223Buffer.concat = function concat (list, length) {
8224 if (!Array.isArray(list)) {
8225 throw new TypeError('"list" argument must be an Array of Buffers')
8226 }
8227
8228 if (list.length === 0) {
8229 return Buffer.alloc(0)
8230 }
8231
8232 var i
8233 if (length === undefined) {
8234 length = 0
8235 for (i = 0; i < list.length; ++i) {
8236 length += list[i].length
8b095871 8237 }
9987f0c1
IC
8238 }
8239
8240 var buffer = Buffer.allocUnsafe(length)
8241 var pos = 0
8242 for (i = 0; i < list.length; ++i) {
8243 var buf = list[i]
8244 if (!Buffer.isBuffer(buf)) {
8245 throw new TypeError('"list" argument must be an Array of Buffers')
8b095871 8246 }
9987f0c1
IC
8247 buf.copy(buffer, pos)
8248 pos += buf.length
8b095871 8249 }
9987f0c1 8250 return buffer
8b095871
IC
8251}
8252
9987f0c1
IC
8253function byteLength (string, encoding) {
8254 if (Buffer.isBuffer(string)) {
8255 return string.length
8256 }
8257 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
8258 return string.byteLength
8259 }
8260 if (typeof string !== 'string') {
8261 string = '' + string
8262 }
8263
8264 var len = string.length
8265 if (len === 0) return 0
8266
8267 // Use a for loop to avoid recursion
8268 var loweredCase = false
8269 for (;;) {
8270 switch (encoding) {
8271 case 'ascii':
8272 case 'latin1':
8273 case 'binary':
8274 return len
8275 case 'utf8':
8276 case 'utf-8':
8277 case undefined:
8278 return utf8ToBytes(string).length
8279 case 'ucs2':
8280 case 'ucs-2':
8281 case 'utf16le':
8282 case 'utf-16le':
8283 return len * 2
8284 case 'hex':
8285 return len >>> 1
8286 case 'base64':
8287 return base64ToBytes(string).length
8288 default:
8289 if (loweredCase) return utf8ToBytes(string).length // assume utf8
8290 encoding = ('' + encoding).toLowerCase()
8291 loweredCase = true
8292 }
8293 }
8b095871 8294}
9987f0c1 8295Buffer.byteLength = byteLength
8b095871 8296
9987f0c1
IC
8297function slowToString (encoding, start, end) {
8298 var loweredCase = false
8299
8300 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
8301 // property of a typed array.
8302
8303 // This behaves neither like String nor Uint8Array in that we set start/end
8304 // to their upper/lower bounds if the value passed is out of range.
8305 // undefined is handled specially as per ECMA-262 6th Edition,
8306 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
8307 if (start === undefined || start < 0) {
8308 start = 0
8309 }
8310 // Return early if start > this.length. Done here to prevent potential uint32
8311 // coercion fail below.
8312 if (start > this.length) {
8313 return ''
8314 }
8315
8316 if (end === undefined || end > this.length) {
8317 end = this.length
8318 }
8319
8320 if (end <= 0) {
8321 return ''
8322 }
8323
8324 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
8325 end >>>= 0
8326 start >>>= 0
8327
8328 if (end <= start) {
8329 return ''
8330 }
8331
8332 if (!encoding) encoding = 'utf8'
8333
8334 while (true) {
8335 switch (encoding) {
8336 case 'hex':
8337 return hexSlice(this, start, end)
8338
8339 case 'utf8':
8340 case 'utf-8':
8341 return utf8Slice(this, start, end)
8342
8343 case 'ascii':
8344 return asciiSlice(this, start, end)
8345
8346 case 'latin1':
8347 case 'binary':
8348 return latin1Slice(this, start, end)
8349
8350 case 'base64':
8351 return base64Slice(this, start, end)
8352
8353 case 'ucs2':
8354 case 'ucs-2':
8355 case 'utf16le':
8356 case 'utf-16le':
8357 return utf16leSlice(this, start, end)
8358
8359 default:
8360 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8361 encoding = (encoding + '').toLowerCase()
8362 loweredCase = true
8b095871
IC
8363 }
8364 }
8b095871
IC
8365}
8366
9987f0c1
IC
8367// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
8368// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
8369// reliably in a browserify context because there could be multiple different
8370// copies of the 'buffer' package in use. This method works even for Buffer
8371// instances that were created from another copy of the `buffer` package.
8372// See: https://github.com/feross/buffer/issues/154
8373Buffer.prototype._isBuffer = true
8374
8375function swap (b, n, m) {
8376 var i = b[n]
8377 b[n] = b[m]
8378 b[m] = i
8379}
8380
8381Buffer.prototype.swap16 = function swap16 () {
8382 var len = this.length
8383 if (len % 2 !== 0) {
8384 throw new RangeError('Buffer size must be a multiple of 16-bits')
8b095871 8385 }
9987f0c1
IC
8386 for (var i = 0; i < len; i += 2) {
8387 swap(this, i, i + 1)
8b095871 8388 }
9987f0c1
IC
8389 return this
8390}
8391
8392Buffer.prototype.swap32 = function swap32 () {
8393 var len = this.length
8394 if (len % 4 !== 0) {
8395 throw new RangeError('Buffer size must be a multiple of 32-bits')
8b095871 8396 }
9987f0c1
IC
8397 for (var i = 0; i < len; i += 4) {
8398 swap(this, i, i + 3)
8399 swap(this, i + 1, i + 2)
8400 }
8401 return this
8402}
8403
8404Buffer.prototype.swap64 = function swap64 () {
8405 var len = this.length
8406 if (len % 8 !== 0) {
8407 throw new RangeError('Buffer size must be a multiple of 64-bits')
8408 }
8409 for (var i = 0; i < len; i += 8) {
8410 swap(this, i, i + 7)
8411 swap(this, i + 1, i + 6)
8412 swap(this, i + 2, i + 5)
8413 swap(this, i + 3, i + 4)
8414 }
8415 return this
8416}
8417
8418Buffer.prototype.toString = function toString () {
8419 var length = this.length
8420 if (length === 0) return ''
8421 if (arguments.length === 0) return utf8Slice(this, 0, length)
8422 return slowToString.apply(this, arguments)
8423}
8424
8425Buffer.prototype.equals = function equals (b) {
8426 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
8427 if (this === b) return true
8428 return Buffer.compare(this, b) === 0
8429}
8430
8431Buffer.prototype.inspect = function inspect () {
8432 var str = ''
8433 var max = exports.INSPECT_MAX_BYTES
8434 if (this.length > 0) {
8435 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
8436 if (this.length > max) str += ' ... '
8437 }
8438 return '<Buffer ' + str + '>'
8439}
8440
8441Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
8442 if (!Buffer.isBuffer(target)) {
8443 throw new TypeError('Argument must be a Buffer')
8444 }
8445
8446 if (start === undefined) {
8447 start = 0
8448 }
8449 if (end === undefined) {
8450 end = target ? target.length : 0
8451 }
8452 if (thisStart === undefined) {
8453 thisStart = 0
8454 }
8455 if (thisEnd === undefined) {
8456 thisEnd = this.length
8457 }
8458
8459 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
8460 throw new RangeError('out of range index')
8461 }
8462
8463 if (thisStart >= thisEnd && start >= end) {
8464 return 0
8465 }
8466 if (thisStart >= thisEnd) {
8467 return -1
8468 }
8469 if (start >= end) {
8470 return 1
8471 }
8472
8473 start >>>= 0
8474 end >>>= 0
8475 thisStart >>>= 0
8476 thisEnd >>>= 0
8477
8478 if (this === target) return 0
8479
8480 var x = thisEnd - thisStart
8481 var y = end - start
8482 var len = Math.min(x, y)
8483
8484 var thisCopy = this.slice(thisStart, thisEnd)
8485 var targetCopy = target.slice(start, end)
8486
8487 for (var i = 0; i < len; ++i) {
8488 if (thisCopy[i] !== targetCopy[i]) {
8489 x = thisCopy[i]
8490 y = targetCopy[i]
8491 break
8492 }
8493 }
8494
8495 if (x < y) return -1
8496 if (y < x) return 1
8497 return 0
8498}
8499
8500// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
8501// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
8502//
8503// Arguments:
8504// - buffer - a Buffer to search
8505// - val - a string, Buffer, or number
8506// - byteOffset - an index into `buffer`; will be clamped to an int32
8507// - encoding - an optional encoding, relevant is val is a string
8508// - dir - true for indexOf, false for lastIndexOf
8509function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
8510 // Empty buffer means no match
8511 if (buffer.length === 0) return -1
8512
8513 // Normalize byteOffset
8514 if (typeof byteOffset === 'string') {
8515 encoding = byteOffset
8516 byteOffset = 0
8517 } else if (byteOffset > 0x7fffffff) {
8518 byteOffset = 0x7fffffff
8519 } else if (byteOffset < -0x80000000) {
8520 byteOffset = -0x80000000
8521 }
8522 byteOffset = +byteOffset // Coerce to Number.
8523 if (numberIsNaN(byteOffset)) {
8524 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
8525 byteOffset = dir ? 0 : (buffer.length - 1)
8526 }
8527
8528 // Normalize byteOffset: negative offsets start from the end of the buffer
8529 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
8530 if (byteOffset >= buffer.length) {
8531 if (dir) return -1
8532 else byteOffset = buffer.length - 1
8533 } else if (byteOffset < 0) {
8534 if (dir) byteOffset = 0
8535 else return -1
8536 }
8537
8538 // Normalize val
8539 if (typeof val === 'string') {
8540 val = Buffer.from(val, encoding)
8541 }
8542
8543 // Finally, search either indexOf (if dir is true) or lastIndexOf
8544 if (Buffer.isBuffer(val)) {
8545 // Special case: looking for empty string/buffer always fails
8546 if (val.length === 0) {
8547 return -1
8548 }
8549 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
8550 } else if (typeof val === 'number') {
8551 val = val & 0xFF // Search for a byte value [0-255]
8552 if (typeof Uint8Array.prototype.indexOf === 'function') {
8553 if (dir) {
8554 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
8555 } else {
8556 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
8557 }
8558 }
8559 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
8560 }
8561
8562 throw new TypeError('val must be string, number or Buffer')
8563}
8564
8565function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
8566 var indexSize = 1
8567 var arrLength = arr.length
8568 var valLength = val.length
8569
8570 if (encoding !== undefined) {
8571 encoding = String(encoding).toLowerCase()
8572 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
8573 encoding === 'utf16le' || encoding === 'utf-16le') {
8574 if (arr.length < 2 || val.length < 2) {
8575 return -1
8576 }
8577 indexSize = 2
8578 arrLength /= 2
8579 valLength /= 2
8580 byteOffset /= 2
8581 }
8582 }
8583
8584 function read (buf, i) {
8585 if (indexSize === 1) {
8586 return buf[i]
8587 } else {
8588 return buf.readUInt16BE(i * indexSize)
8589 }
8590 }
8591
8592 var i
8593 if (dir) {
8594 var foundIndex = -1
8595 for (i = byteOffset; i < arrLength; i++) {
8596 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
8597 if (foundIndex === -1) foundIndex = i
8598 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
8599 } else {
8600 if (foundIndex !== -1) i -= i - foundIndex
8601 foundIndex = -1
8602 }
8603 }
8604 } else {
8605 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
8606 for (i = byteOffset; i >= 0; i--) {
8607 var found = true
8608 for (var j = 0; j < valLength; j++) {
8609 if (read(arr, i + j) !== read(val, j)) {
8610 found = false
8611 break
8612 }
8613 }
8614 if (found) return i
8b095871
IC
8615 }
8616 }
8b095871 8617
9987f0c1 8618 return -1
8b095871
IC
8619}
8620
9987f0c1
IC
8621Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
8622 return this.indexOf(val, byteOffset, encoding) !== -1
8b095871
IC
8623}
8624
9987f0c1
IC
8625Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
8626 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
8b095871
IC
8627}
8628
9987f0c1
IC
8629Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
8630 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
8b095871
IC
8631}
8632
9987f0c1
IC
8633function hexWrite (buf, string, offset, length) {
8634 offset = Number(offset) || 0
8635 var remaining = buf.length - offset
8636 if (!length) {
8637 length = remaining
8638 } else {
8639 length = Number(length)
8640 if (length > remaining) {
8641 length = remaining
8642 }
8643 }
8b095871 8644
9987f0c1
IC
8645 // must be an even number of digits
8646 var strLen = string.length
8647 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
8b095871 8648
9987f0c1
IC
8649 if (length > strLen / 2) {
8650 length = strLen / 2
8651 }
8652 for (var i = 0; i < length; ++i) {
8653 var parsed = parseInt(string.substr(i * 2, 2), 16)
8654 if (numberIsNaN(parsed)) return i
8655 buf[offset + i] = parsed
8656 }
8657 return i
8b095871
IC
8658}
8659
9987f0c1
IC
8660function utf8Write (buf, string, offset, length) {
8661 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
8662}
8b095871 8663
9987f0c1
IC
8664function asciiWrite (buf, string, offset, length) {
8665 return blitBuffer(asciiToBytes(string), buf, offset, length)
8b095871
IC
8666}
8667
9987f0c1
IC
8668function latin1Write (buf, string, offset, length) {
8669 return asciiWrite(buf, string, offset, length)
8b095871
IC
8670}
8671
9987f0c1
IC
8672function base64Write (buf, string, offset, length) {
8673 return blitBuffer(base64ToBytes(string), buf, offset, length)
8b095871
IC
8674}
8675
9987f0c1
IC
8676function ucs2Write (buf, string, offset, length) {
8677 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
8b095871
IC
8678}
8679
9987f0c1
IC
8680Buffer.prototype.write = function write (string, offset, length, encoding) {
8681 // Buffer#write(string)
8682 if (offset === undefined) {
8683 encoding = 'utf8'
8684 length = this.length
8685 offset = 0
8686 // Buffer#write(string, encoding)
8687 } else if (length === undefined && typeof offset === 'string') {
8688 encoding = offset
8689 length = this.length
8690 offset = 0
8691 // Buffer#write(string, offset[, length][, encoding])
8692 } else if (isFinite(offset)) {
8693 offset = offset >>> 0
8694 if (isFinite(length)) {
8695 length = length >>> 0
8696 if (encoding === undefined) encoding = 'utf8'
8697 } else {
8698 encoding = length
8699 length = undefined
8b095871 8700 }
9987f0c1
IC
8701 } else {
8702 throw new Error(
8703 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
8704 )
8b095871 8705 }
8b095871 8706
9987f0c1
IC
8707 var remaining = this.length - offset
8708 if (length === undefined || length > remaining) length = remaining
8b095871 8709
9987f0c1
IC
8710 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
8711 throw new RangeError('Attempt to write outside buffer bounds')
8712 }
8b095871 8713
9987f0c1 8714 if (!encoding) encoding = 'utf8'
8b095871 8715
9987f0c1
IC
8716 var loweredCase = false
8717 for (;;) {
8718 switch (encoding) {
8719 case 'hex':
8720 return hexWrite(this, string, offset, length)
8b095871 8721
9987f0c1
IC
8722 case 'utf8':
8723 case 'utf-8':
8724 return utf8Write(this, string, offset, length)
8b095871 8725
9987f0c1
IC
8726 case 'ascii':
8727 return asciiWrite(this, string, offset, length)
8b095871 8728
9987f0c1
IC
8729 case 'latin1':
8730 case 'binary':
8731 return latin1Write(this, string, offset, length)
8b095871 8732
9987f0c1
IC
8733 case 'base64':
8734 // Warning: maxLength not taken into account in base64Write
8735 return base64Write(this, string, offset, length)
8b095871 8736
9987f0c1
IC
8737 case 'ucs2':
8738 case 'ucs-2':
8739 case 'utf16le':
8740 case 'utf-16le':
8741 return ucs2Write(this, string, offset, length)
8b095871 8742
9987f0c1
IC
8743 default:
8744 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
8745 encoding = ('' + encoding).toLowerCase()
8746 loweredCase = true
8747 }
8748 }
8b095871
IC
8749}
8750
9987f0c1
IC
8751Buffer.prototype.toJSON = function toJSON () {
8752 return {
8753 type: 'Buffer',
8754 data: Array.prototype.slice.call(this._arr || this, 0)
8755 }
8b095871
IC
8756}
8757
9987f0c1
IC
8758function base64Slice (buf, start, end) {
8759 if (start === 0 && end === buf.length) {
8760 return base64.fromByteArray(buf)
8761 } else {
8762 return base64.fromByteArray(buf.slice(start, end))
8763 }
8b095871
IC
8764}
8765
9987f0c1
IC
8766function utf8Slice (buf, start, end) {
8767 end = Math.min(buf.length, end)
8768 var res = []
8b095871 8769
9987f0c1
IC
8770 var i = start
8771 while (i < end) {
8772 var firstByte = buf[i]
8773 var codePoint = null
8774 var bytesPerSequence = (firstByte > 0xEF) ? 4
8775 : (firstByte > 0xDF) ? 3
8776 : (firstByte > 0xBF) ? 2
8777 : 1
8b095871 8778
9987f0c1
IC
8779 if (i + bytesPerSequence <= end) {
8780 var secondByte, thirdByte, fourthByte, tempCodePoint
8b095871 8781
9987f0c1
IC
8782 switch (bytesPerSequence) {
8783 case 1:
8784 if (firstByte < 0x80) {
8785 codePoint = firstByte
8786 }
8787 break
8788 case 2:
8789 secondByte = buf[i + 1]
8790 if ((secondByte & 0xC0) === 0x80) {
8791 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
8792 if (tempCodePoint > 0x7F) {
8793 codePoint = tempCodePoint
8794 }
8795 }
8796 break
8797 case 3:
8798 secondByte = buf[i + 1]
8799 thirdByte = buf[i + 2]
8800 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
8801 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
8802 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
8803 codePoint = tempCodePoint
8804 }
8805 }
8806 break
8807 case 4:
8808 secondByte = buf[i + 1]
8809 thirdByte = buf[i + 2]
8810 fourthByte = buf[i + 3]
8811 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
8812 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
8813 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
8814 codePoint = tempCodePoint
8815 }
8816 }
8817 }
8b095871 8818 }
9987f0c1
IC
8819
8820 if (codePoint === null) {
8821 // we did not generate a valid codePoint so insert a
8822 // replacement char (U+FFFD) and advance only 1 byte
8823 codePoint = 0xFFFD
8824 bytesPerSequence = 1
8825 } else if (codePoint > 0xFFFF) {
8826 // encode to utf16 (surrogate pair dance)
8827 codePoint -= 0x10000
8828 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
8829 codePoint = 0xDC00 | codePoint & 0x3FF
8b095871 8830 }
9987f0c1
IC
8831
8832 res.push(codePoint)
8833 i += bytesPerSequence
8b095871 8834 }
9987f0c1
IC
8835
8836 return decodeCodePointsArray(res)
8837}
8838
8839// Based on http://stackoverflow.com/a/22747272/680742, the browser with
8840// the lowest limit is Chrome, with 0x10000 args.
8841// We go 1 magnitude less, for safety
8842var MAX_ARGUMENTS_LENGTH = 0x1000
8843
8844function decodeCodePointsArray (codePoints) {
8845 var len = codePoints.length
8846 if (len <= MAX_ARGUMENTS_LENGTH) {
8847 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
8b095871 8848 }
9987f0c1
IC
8849
8850 // Decode in chunks to avoid "call stack size exceeded".
8851 var res = ''
8852 var i = 0
8853 while (i < len) {
8854 res += String.fromCharCode.apply(
8855 String,
8856 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
8857 )
8858 }
8859 return res
8b095871
IC
8860}
8861
9987f0c1
IC
8862function asciiSlice (buf, start, end) {
8863 var ret = ''
8864 end = Math.min(buf.length, end)
8865
8866 for (var i = start; i < end; ++i) {
8867 ret += String.fromCharCode(buf[i] & 0x7F)
8b095871 8868 }
9987f0c1 8869 return ret
8b095871
IC
8870}
8871
9987f0c1
IC
8872function latin1Slice (buf, start, end) {
8873 var ret = ''
8874 end = Math.min(buf.length, end)
8875
8876 for (var i = start; i < end; ++i) {
8877 ret += String.fromCharCode(buf[i])
8b095871 8878 }
9987f0c1 8879 return ret
8b095871
IC
8880}
8881
9987f0c1
IC
8882function hexSlice (buf, start, end) {
8883 var len = buf.length
8b095871 8884
9987f0c1
IC
8885 if (!start || start < 0) start = 0
8886 if (!end || end < 0 || end > len) end = len
8b095871 8887
9987f0c1
IC
8888 var out = ''
8889 for (var i = start; i < end; ++i) {
8890 out += toHex(buf[i])
8891 }
8892 return out
8b095871
IC
8893}
8894
9987f0c1
IC
8895function utf16leSlice (buf, start, end) {
8896 var bytes = buf.slice(start, end)
8897 var res = ''
8898 for (var i = 0; i < bytes.length; i += 2) {
8899 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
8b095871 8900 }
9987f0c1 8901 return res
8b095871
IC
8902}
8903
9987f0c1
IC
8904Buffer.prototype.slice = function slice (start, end) {
8905 var len = this.length
8906 start = ~~start
8907 end = end === undefined ? len : ~~end
8b095871 8908
9987f0c1
IC
8909 if (start < 0) {
8910 start += len
8911 if (start < 0) start = 0
8912 } else if (start > len) {
8913 start = len
8914 }
8b095871 8915
9987f0c1
IC
8916 if (end < 0) {
8917 end += len
8918 if (end < 0) end = 0
8919 } else if (end > len) {
8920 end = len
8921 }
8922
8923 if (end < start) end = start
8924
8925 var newBuf = this.subarray(start, end)
8926 // Return an augmented `Uint8Array` instance
8927 newBuf.__proto__ = Buffer.prototype
8928 return newBuf
8b095871
IC
8929}
8930
9987f0c1
IC
8931/*
8932 * Need to make sure that buffer isn't trying to write out of bounds.
8933 */
8934function checkOffset (offset, ext, length) {
8935 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
8936 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
8b095871
IC
8937}
8938
9987f0c1
IC
8939Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
8940 offset = offset >>> 0
8941 byteLength = byteLength >>> 0
8942 if (!noAssert) checkOffset(offset, byteLength, this.length)
8943
8944 var val = this[offset]
8945 var mul = 1
8946 var i = 0
8947 while (++i < byteLength && (mul *= 0x100)) {
8948 val += this[offset + i] * mul
8949 }
8950
8951 return val
8b095871
IC
8952}
8953
9987f0c1
IC
8954Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
8955 offset = offset >>> 0
8956 byteLength = byteLength >>> 0
8957 if (!noAssert) {
8958 checkOffset(offset, byteLength, this.length)
8959 }
8960
8961 var val = this[offset + --byteLength]
8962 var mul = 1
8963 while (byteLength > 0 && (mul *= 0x100)) {
8964 val += this[offset + --byteLength] * mul
8965 }
8966
8967 return val
8b095871
IC
8968}
8969
9987f0c1
IC
8970Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
8971 offset = offset >>> 0
8972 if (!noAssert) checkOffset(offset, 1, this.length)
8973 return this[offset]
8b095871
IC
8974}
8975
9987f0c1
IC
8976Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
8977 offset = offset >>> 0
8978 if (!noAssert) checkOffset(offset, 2, this.length)
8979 return this[offset] | (this[offset + 1] << 8)
8b095871
IC
8980}
8981
9987f0c1
IC
8982Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
8983 offset = offset >>> 0
8984 if (!noAssert) checkOffset(offset, 2, this.length)
8985 return (this[offset] << 8) | this[offset + 1]
8b095871
IC
8986}
8987
9987f0c1
IC
8988Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
8989 offset = offset >>> 0
8990 if (!noAssert) checkOffset(offset, 4, this.length)
8991
8992 return ((this[offset]) |
8993 (this[offset + 1] << 8) |
8994 (this[offset + 2] << 16)) +
8995 (this[offset + 3] * 0x1000000)
8b095871
IC
8996}
8997
9987f0c1
IC
8998Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
8999 offset = offset >>> 0
9000 if (!noAssert) checkOffset(offset, 4, this.length)
9001
9002 return (this[offset] * 0x1000000) +
9003 ((this[offset + 1] << 16) |
9004 (this[offset + 2] << 8) |
9005 this[offset + 3])
8b095871
IC
9006}
9007
9987f0c1
IC
9008Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
9009 offset = offset >>> 0
9010 byteLength = byteLength >>> 0
9011 if (!noAssert) checkOffset(offset, byteLength, this.length)
9012
9013 var val = this[offset]
9014 var mul = 1
9015 var i = 0
9016 while (++i < byteLength && (mul *= 0x100)) {
9017 val += this[offset + i] * mul
8b095871 9018 }
9987f0c1
IC
9019 mul *= 0x80
9020
9021 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9022
9023 return val
9024}
9025
9026Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
9027 offset = offset >>> 0
9028 byteLength = byteLength >>> 0
9029 if (!noAssert) checkOffset(offset, byteLength, this.length)
9030
9031 var i = byteLength
9032 var mul = 1
9033 var val = this[offset + --i]
9034 while (i > 0 && (mul *= 0x100)) {
9035 val += this[offset + --i] * mul
8b095871 9036 }
9987f0c1
IC
9037 mul *= 0x80
9038
9039 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
9040
9041 return val
8b095871
IC
9042}
9043
9987f0c1
IC
9044Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
9045 offset = offset >>> 0
9046 if (!noAssert) checkOffset(offset, 1, this.length)
9047 if (!(this[offset] & 0x80)) return (this[offset])
9048 return ((0xff - this[offset] + 1) * -1)
8b095871
IC
9049}
9050
9987f0c1
IC
9051Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
9052 offset = offset >>> 0
9053 if (!noAssert) checkOffset(offset, 2, this.length)
9054 var val = this[offset] | (this[offset + 1] << 8)
9055 return (val & 0x8000) ? val | 0xFFFF0000 : val
8b095871
IC
9056}
9057
9987f0c1
IC
9058Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
9059 offset = offset >>> 0
9060 if (!noAssert) checkOffset(offset, 2, this.length)
9061 var val = this[offset + 1] | (this[offset] << 8)
9062 return (val & 0x8000) ? val | 0xFFFF0000 : val
8b095871
IC
9063}
9064
9987f0c1
IC
9065Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
9066 offset = offset >>> 0
9067 if (!noAssert) checkOffset(offset, 4, this.length)
9068
9069 return (this[offset]) |
9070 (this[offset + 1] << 8) |
9071 (this[offset + 2] << 16) |
9072 (this[offset + 3] << 24)
8b095871
IC
9073}
9074
9987f0c1
IC
9075Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
9076 offset = offset >>> 0
9077 if (!noAssert) checkOffset(offset, 4, this.length)
9078
9079 return (this[offset] << 24) |
9080 (this[offset + 1] << 16) |
9081 (this[offset + 2] << 8) |
9082 (this[offset + 3])
8b095871
IC
9083}
9084
9987f0c1
IC
9085Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
9086 offset = offset >>> 0
9087 if (!noAssert) checkOffset(offset, 4, this.length)
9088 return ieee754.read(this, offset, true, 23, 4)
8b095871
IC
9089}
9090
9987f0c1
IC
9091Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
9092 offset = offset >>> 0
9093 if (!noAssert) checkOffset(offset, 4, this.length)
9094 return ieee754.read(this, offset, false, 23, 4)
8b095871
IC
9095}
9096
9987f0c1
IC
9097Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
9098 offset = offset >>> 0
9099 if (!noAssert) checkOffset(offset, 8, this.length)
9100 return ieee754.read(this, offset, true, 52, 8)
8b095871
IC
9101}
9102
9987f0c1
IC
9103Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
9104 offset = offset >>> 0
9105 if (!noAssert) checkOffset(offset, 8, this.length)
9106 return ieee754.read(this, offset, false, 52, 8)
9107}
8b095871 9108
9987f0c1
IC
9109function checkInt (buf, value, offset, ext, max, min) {
9110 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
9111 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
9112 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9113}
9114
9115Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
9116 value = +value
9117 offset = offset >>> 0
9118 byteLength = byteLength >>> 0
9119 if (!noAssert) {
9120 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9121 checkInt(this, value, offset, byteLength, maxBytes, 0)
8b095871 9122 }
9987f0c1
IC
9123
9124 var mul = 1
9125 var i = 0
9126 this[offset] = value & 0xFF
9127 while (++i < byteLength && (mul *= 0x100)) {
9128 this[offset + i] = (value / mul) & 0xFF
8b095871 9129 }
8b095871 9130
9987f0c1 9131 return offset + byteLength
8b095871
IC
9132}
9133
9987f0c1
IC
9134Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
9135 value = +value
9136 offset = offset >>> 0
9137 byteLength = byteLength >>> 0
9138 if (!noAssert) {
9139 var maxBytes = Math.pow(2, 8 * byteLength) - 1
9140 checkInt(this, value, offset, byteLength, maxBytes, 0)
9141 }
8b095871 9142
9987f0c1
IC
9143 var i = byteLength - 1
9144 var mul = 1
9145 this[offset + i] = value & 0xFF
9146 while (--i >= 0 && (mul *= 0x100)) {
9147 this[offset + i] = (value / mul) & 0xFF
9148 }
9149
9150 return offset + byteLength
8b095871
IC
9151}
9152
9987f0c1
IC
9153Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
9154 value = +value
9155 offset = offset >>> 0
9156 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
9157 this[offset] = (value & 0xff)
9158 return offset + 1
8b095871
IC
9159}
9160
9987f0c1
IC
9161Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
9162 value = +value
9163 offset = offset >>> 0
9164 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9165 this[offset] = (value & 0xff)
9166 this[offset + 1] = (value >>> 8)
9167 return offset + 2
8b095871
IC
9168}
9169
9987f0c1
IC
9170Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
9171 value = +value
9172 offset = offset >>> 0
9173 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
9174 this[offset] = (value >>> 8)
9175 this[offset + 1] = (value & 0xff)
9176 return offset + 2
8b095871
IC
9177}
9178
9987f0c1
IC
9179Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
9180 value = +value
9181 offset = offset >>> 0
9182 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9183 this[offset + 3] = (value >>> 24)
9184 this[offset + 2] = (value >>> 16)
9185 this[offset + 1] = (value >>> 8)
9186 this[offset] = (value & 0xff)
9187 return offset + 4
8b095871
IC
9188}
9189
9987f0c1
IC
9190Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
9191 value = +value
9192 offset = offset >>> 0
9193 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
9194 this[offset] = (value >>> 24)
9195 this[offset + 1] = (value >>> 16)
9196 this[offset + 2] = (value >>> 8)
9197 this[offset + 3] = (value & 0xff)
9198 return offset + 4
8b095871
IC
9199}
9200
9987f0c1
IC
9201Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
9202 value = +value
9203 offset = offset >>> 0
9204 if (!noAssert) {
9205 var limit = Math.pow(2, (8 * byteLength) - 1)
9206
9207 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9208 }
9209
9210 var i = 0
9211 var mul = 1
9212 var sub = 0
9213 this[offset] = value & 0xFF
9214 while (++i < byteLength && (mul *= 0x100)) {
9215 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
9216 sub = 1
9217 }
9218 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
8b095871 9219 }
9987f0c1
IC
9220
9221 return offset + byteLength
8b095871
IC
9222}
9223
9987f0c1
IC
9224Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
9225 value = +value
9226 offset = offset >>> 0
9227 if (!noAssert) {
9228 var limit = Math.pow(2, (8 * byteLength) - 1)
8b095871 9229
9987f0c1
IC
9230 checkInt(this, value, offset, byteLength, limit - 1, -limit)
9231 }
9232
9233 var i = byteLength - 1
9234 var mul = 1
9235 var sub = 0
9236 this[offset + i] = value & 0xFF
9237 while (--i >= 0 && (mul *= 0x100)) {
9238 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
9239 sub = 1
9240 }
9241 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
9242 }
9243
9244 return offset + byteLength
8b095871
IC
9245}
9246
9987f0c1
IC
9247Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
9248 value = +value
9249 offset = offset >>> 0
9250 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
9251 if (value < 0) value = 0xff + value + 1
9252 this[offset] = (value & 0xff)
9253 return offset + 1
8b095871
IC
9254}
9255
9987f0c1
IC
9256Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
9257 value = +value
9258 offset = offset >>> 0
9259 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9260 this[offset] = (value & 0xff)
9261 this[offset + 1] = (value >>> 8)
9262 return offset + 2
8b095871
IC
9263}
9264
9987f0c1
IC
9265Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
9266 value = +value
9267 offset = offset >>> 0
9268 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
9269 this[offset] = (value >>> 8)
9270 this[offset + 1] = (value & 0xff)
9271 return offset + 2
8b095871
IC
9272}
9273
9987f0c1
IC
9274Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
9275 value = +value
9276 offset = offset >>> 0
9277 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9278 this[offset] = (value & 0xff)
9279 this[offset + 1] = (value >>> 8)
9280 this[offset + 2] = (value >>> 16)
9281 this[offset + 3] = (value >>> 24)
9282 return offset + 4
8b095871
IC
9283}
9284
9987f0c1
IC
9285Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
9286 value = +value
9287 offset = offset >>> 0
9288 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
9289 if (value < 0) value = 0xffffffff + value + 1
9290 this[offset] = (value >>> 24)
9291 this[offset + 1] = (value >>> 16)
9292 this[offset + 2] = (value >>> 8)
9293 this[offset + 3] = (value & 0xff)
9294 return offset + 4
8b095871
IC
9295}
9296
9987f0c1
IC
9297function checkIEEE754 (buf, value, offset, ext, max, min) {
9298 if (offset + ext > buf.length) throw new RangeError('Index out of range')
9299 if (offset < 0) throw new RangeError('Index out of range')
8b095871
IC
9300}
9301
9987f0c1
IC
9302function writeFloat (buf, value, offset, littleEndian, noAssert) {
9303 value = +value
9304 offset = offset >>> 0
9305 if (!noAssert) {
9306 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
8b095871 9307 }
9987f0c1
IC
9308 ieee754.write(buf, value, offset, littleEndian, 23, 4)
9309 return offset + 4
8b095871
IC
9310}
9311
9987f0c1
IC
9312Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
9313 return writeFloat(this, value, offset, true, noAssert)
8b095871
IC
9314}
9315
9987f0c1
IC
9316Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
9317 return writeFloat(this, value, offset, false, noAssert)
9318}
9319
9320function writeDouble (buf, value, offset, littleEndian, noAssert) {
9321 value = +value
9322 offset = offset >>> 0
9323 if (!noAssert) {
9324 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
8b095871 9325 }
9987f0c1
IC
9326 ieee754.write(buf, value, offset, littleEndian, 52, 8)
9327 return offset + 8
8b095871
IC
9328}
9329
9987f0c1
IC
9330Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
9331 return writeDouble(this, value, offset, true, noAssert)
8b095871
IC
9332}
9333
9987f0c1
IC
9334Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
9335 return writeDouble(this, value, offset, false, noAssert)
8b095871
IC
9336}
9337
9987f0c1
IC
9338// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
9339Buffer.prototype.copy = function copy (target, targetStart, start, end) {
9340 if (!start) start = 0
9341 if (!end && end !== 0) end = this.length
9342 if (targetStart >= target.length) targetStart = target.length
9343 if (!targetStart) targetStart = 0
9344 if (end > 0 && end < start) end = start
8b095871 9345
9987f0c1
IC
9346 // Copy 0 bytes; we're done
9347 if (end === start) return 0
9348 if (target.length === 0 || this.length === 0) return 0
8b095871 9349
9987f0c1
IC
9350 // Fatal error conditions
9351 if (targetStart < 0) {
9352 throw new RangeError('targetStart out of bounds')
8b095871 9353 }
9987f0c1
IC
9354 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
9355 if (end < 0) throw new RangeError('sourceEnd out of bounds')
8b095871 9356
9987f0c1
IC
9357 // Are we oob?
9358 if (end > this.length) end = this.length
9359 if (target.length - targetStart < end - start) {
9360 end = target.length - targetStart + start
9361 }
8b095871 9362
9987f0c1
IC
9363 var len = end - start
9364 var i
9365
9366 if (this === target && start < targetStart && targetStart < end) {
9367 // descending copy from end
9368 for (i = len - 1; i >= 0; --i) {
9369 target[i + targetStart] = this[i + start]
8b095871 9370 }
9987f0c1
IC
9371 } else if (len < 1000) {
9372 // ascending copy from start
9373 for (i = 0; i < len; ++i) {
9374 target[i + targetStart] = this[i + start]
8b095871 9375 }
9987f0c1
IC
9376 } else {
9377 Uint8Array.prototype.set.call(
9378 target,
9379 this.subarray(start, start + len),
9380 targetStart
9381 )
9382 }
8b095871 9383
9987f0c1
IC
9384 return len
9385}
9386
9387// Usage:
9388// buffer.fill(number[, offset[, end]])
9389// buffer.fill(buffer[, offset[, end]])
9390// buffer.fill(string[, offset[, end]][, encoding])
9391Buffer.prototype.fill = function fill (val, start, end, encoding) {
9392 // Handle string cases:
9393 if (typeof val === 'string') {
9394 if (typeof start === 'string') {
9395 encoding = start
9396 start = 0
9397 end = this.length
9398 } else if (typeof end === 'string') {
9399 encoding = end
9400 end = this.length
9401 }
9402 if (val.length === 1) {
9403 var code = val.charCodeAt(0)
9404 if (code < 256) {
9405 val = code
8b095871
IC
9406 }
9407 }
9987f0c1
IC
9408 if (encoding !== undefined && typeof encoding !== 'string') {
9409 throw new TypeError('encoding must be a string')
9410 }
9411 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
9412 throw new TypeError('Unknown encoding: ' + encoding)
9413 }
9414 } else if (typeof val === 'number') {
9415 val = val & 255
8b095871 9416 }
8b095871 9417
9987f0c1
IC
9418 // Invalid ranges are not set to a default, so can range check early.
9419 if (start < 0 || this.length < start || this.length < end) {
9420 throw new RangeError('Out of range index')
8b095871 9421 }
9987f0c1
IC
9422
9423 if (end <= start) {
9424 return this
8b095871 9425 }
8b095871 9426
9987f0c1
IC
9427 start = start >>> 0
9428 end = end === undefined ? this.length : end >>> 0
8b095871 9429
9987f0c1
IC
9430 if (!val) val = 0
9431
9432 var i
9433 if (typeof val === 'number') {
9434 for (i = start; i < end; ++i) {
9435 this[i] = val
8b095871 9436 }
9987f0c1
IC
9437 } else {
9438 var bytes = Buffer.isBuffer(val)
9439 ? val
9440 : new Buffer(val, encoding)
9441 var len = bytes.length
9442 for (i = 0; i < end - start; ++i) {
9443 this[i + start] = bytes[i % len]
8b095871
IC
9444 }
9445 }
9987f0c1
IC
9446
9447 return this
8b095871
IC
9448}
9449
9987f0c1
IC
9450// HELPER FUNCTIONS
9451// ================
8b095871 9452
9987f0c1 9453var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
8b095871 9454
9987f0c1
IC
9455function base64clean (str) {
9456 // Node strips out invalid characters like \n and \t from the string, base64-js does not
9457 str = str.trim().replace(INVALID_BASE64_RE, '')
9458 // Node converts strings with length < 2 to ''
9459 if (str.length < 2) return ''
9460 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
9461 while (str.length % 4 !== 0) {
9462 str = str + '='
8b095871 9463 }
9987f0c1
IC
9464 return str
9465}
9466
9467function toHex (n) {
9468 if (n < 16) return '0' + n.toString(16)
9469 return n.toString(16)
9470}
9471
9472function utf8ToBytes (string, units) {
9473 units = units || Infinity
9474 var codePoint
9475 var length = string.length
9476 var leadSurrogate = null
9477 var bytes = []
9478
9479 for (var i = 0; i < length; ++i) {
9480 codePoint = string.charCodeAt(i)
9481
9482 // is surrogate component
9483 if (codePoint > 0xD7FF && codePoint < 0xE000) {
9484 // last char was a lead
9485 if (!leadSurrogate) {
9486 // no lead yet
9487 if (codePoint > 0xDBFF) {
9488 // unexpected trail
9489 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9490 continue
9491 } else if (i + 1 === length) {
9492 // unpaired lead
9493 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9494 continue
9495 }
9496
9497 // valid lead
9498 leadSurrogate = codePoint
9499
9500 continue
9501 }
9502
9503 // 2 leads in a row
9504 if (codePoint < 0xDC00) {
9505 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9506 leadSurrogate = codePoint
9507 continue
9508 }
9509
9510 // valid surrogate pair
9511 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
9512 } else if (leadSurrogate) {
9513 // valid bmp char, but last char was a lead
9514 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
9515 }
9516
9517 leadSurrogate = null
9518
9519 // encode utf8
9520 if (codePoint < 0x80) {
9521 if ((units -= 1) < 0) break
9522 bytes.push(codePoint)
9523 } else if (codePoint < 0x800) {
9524 if ((units -= 2) < 0) break
9525 bytes.push(
9526 codePoint >> 0x6 | 0xC0,
9527 codePoint & 0x3F | 0x80
9528 )
9529 } else if (codePoint < 0x10000) {
9530 if ((units -= 3) < 0) break
9531 bytes.push(
9532 codePoint >> 0xC | 0xE0,
9533 codePoint >> 0x6 & 0x3F | 0x80,
9534 codePoint & 0x3F | 0x80
9535 )
9536 } else if (codePoint < 0x110000) {
9537 if ((units -= 4) < 0) break
9538 bytes.push(
9539 codePoint >> 0x12 | 0xF0,
9540 codePoint >> 0xC & 0x3F | 0x80,
9541 codePoint >> 0x6 & 0x3F | 0x80,
9542 codePoint & 0x3F | 0x80
9543 )
9544 } else {
9545 throw new Error('Invalid code point')
9546 }
8b095871 9547 }
9987f0c1
IC
9548
9549 return bytes
8b095871
IC
9550}
9551
9987f0c1
IC
9552function asciiToBytes (str) {
9553 var byteArray = []
9554 for (var i = 0; i < str.length; ++i) {
9555 // Node's code seems to be doing this and not & 0x7F..
9556 byteArray.push(str.charCodeAt(i) & 0xFF)
8b095871 9557 }
9987f0c1 9558 return byteArray
8b095871
IC
9559}
9560
9987f0c1
IC
9561function utf16leToBytes (str, units) {
9562 var c, hi, lo
9563 var byteArray = []
9564 for (var i = 0; i < str.length; ++i) {
9565 if ((units -= 2) < 0) break
8b095871 9566
9987f0c1
IC
9567 c = str.charCodeAt(i)
9568 hi = c >> 8
9569 lo = c % 256
9570 byteArray.push(lo)
9571 byteArray.push(hi)
9572 }
8b095871 9573
9987f0c1
IC
9574 return byteArray
9575}
8b095871 9576
9987f0c1
IC
9577function base64ToBytes (str) {
9578 return base64.toByteArray(base64clean(str))
9579}
8b095871 9580
9987f0c1
IC
9581function blitBuffer (src, dst, offset, length) {
9582 for (var i = 0; i < length; ++i) {
9583 if ((i + offset >= dst.length) || (i >= src.length)) break
9584 dst[i + offset] = src[i]
9585 }
9586 return i
9587}
9588
9589// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
9590function isArrayBufferView (obj) {
9591 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
9592}
9593
9594function numberIsNaN (obj) {
9595 return obj !== obj // eslint-disable-line no-self-compare
9596}
8b095871 9597
9987f0c1 9598},{"base64-js":2,"ieee754":7}],5:[function(require,module,exports){
8b095871 9599(function (Buffer){
9987f0c1
IC
9600// Copyright Joyent, Inc. and other Node contributors.
9601//
9602// Permission is hereby granted, free of charge, to any person obtaining a
9603// copy of this software and associated documentation files (the
9604// "Software"), to deal in the Software without restriction, including
9605// without limitation the rights to use, copy, modify, merge, publish,
9606// distribute, sublicense, and/or sell copies of the Software, and to permit
9607// persons to whom the Software is furnished to do so, subject to the
9608// following conditions:
9609//
9610// The above copyright notice and this permission notice shall be included
9611// in all copies or substantial portions of the Software.
9612//
9613// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9614// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9615// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9616// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9617// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9618// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9619// USE OR OTHER DEALINGS IN THE SOFTWARE.
8b095871 9620
9987f0c1
IC
9621// NOTE: These type checking functions intentionally don't use `instanceof`
9622// because it is fragile and can be easily faked with `Object.create()`.
8b095871 9623
9987f0c1
IC
9624function isArray(arg) {
9625 if (Array.isArray) {
9626 return Array.isArray(arg);
9627 }
9628 return objectToString(arg) === '[object Array]';
8b095871 9629}
9987f0c1 9630exports.isArray = isArray;
8b095871 9631
9987f0c1
IC
9632function isBoolean(arg) {
9633 return typeof arg === 'boolean';
8b095871 9634}
9987f0c1 9635exports.isBoolean = isBoolean;
8b095871 9636
9987f0c1
IC
9637function isNull(arg) {
9638 return arg === null;
8b095871 9639}
9987f0c1 9640exports.isNull = isNull;
8b095871 9641
9987f0c1
IC
9642function isNullOrUndefined(arg) {
9643 return arg == null;
9644}
9645exports.isNullOrUndefined = isNullOrUndefined;
8b095871 9646
9987f0c1
IC
9647function isNumber(arg) {
9648 return typeof arg === 'number';
9649}
9650exports.isNumber = isNumber;
8b095871 9651
9987f0c1
IC
9652function isString(arg) {
9653 return typeof arg === 'string';
9654}
9655exports.isString = isString;
8b095871 9656
9987f0c1
IC
9657function isSymbol(arg) {
9658 return typeof arg === 'symbol';
8b095871 9659}
9987f0c1 9660exports.isSymbol = isSymbol;
8b095871 9661
9987f0c1
IC
9662function isUndefined(arg) {
9663 return arg === void 0;
9664}
9665exports.isUndefined = isUndefined;
8b095871 9666
9987f0c1
IC
9667function isRegExp(re) {
9668 return objectToString(re) === '[object RegExp]';
8b095871 9669}
9987f0c1 9670exports.isRegExp = isRegExp;
8b095871 9671
9987f0c1
IC
9672function isObject(arg) {
9673 return typeof arg === 'object' && arg !== null;
9674}
9675exports.isObject = isObject;
8b095871 9676
9987f0c1
IC
9677function isDate(d) {
9678 return objectToString(d) === '[object Date]';
9679}
9680exports.isDate = isDate;
8b095871 9681
9987f0c1
IC
9682function isError(e) {
9683 return (objectToString(e) === '[object Error]' || e instanceof Error);
8b095871 9684}
9987f0c1 9685exports.isError = isError;
8b095871 9686
9987f0c1
IC
9687function isFunction(arg) {
9688 return typeof arg === 'function';
8b095871 9689}
9987f0c1 9690exports.isFunction = isFunction;
8b095871 9691
9987f0c1
IC
9692function isPrimitive(arg) {
9693 return arg === null ||
9694 typeof arg === 'boolean' ||
9695 typeof arg === 'number' ||
9696 typeof arg === 'string' ||
9697 typeof arg === 'symbol' || // ES6 symbol
9698 typeof arg === 'undefined';
9699}
9700exports.isPrimitive = isPrimitive;
8b095871 9701
9987f0c1 9702exports.isBuffer = Buffer.isBuffer;
8b095871 9703
9987f0c1
IC
9704function objectToString(o) {
9705 return Object.prototype.toString.call(o);
8b095871
IC
9706}
9707
9987f0c1
IC
9708}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
9709},{"../../is-buffer/index.js":9}],6:[function(require,module,exports){
9710// Copyright Joyent, Inc. and other Node contributors.
8b095871 9711//
9987f0c1
IC
9712// Permission is hereby granted, free of charge, to any person obtaining a
9713// copy of this software and associated documentation files (the
9714// "Software"), to deal in the Software without restriction, including
9715// without limitation the rights to use, copy, modify, merge, publish,
9716// distribute, sublicense, and/or sell copies of the Software, and to permit
9717// persons to whom the Software is furnished to do so, subject to the
9718// following conditions:
8b095871 9719//
9987f0c1
IC
9720// The above copyright notice and this permission notice shall be included
9721// in all copies or substantial portions of the Software.
8b095871 9722//
9987f0c1
IC
9723// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9724// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9725// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
9726// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
9727// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
9728// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
9729// USE OR OTHER DEALINGS IN THE SOFTWARE.
8b095871 9730
9987f0c1
IC
9731function EventEmitter() {
9732 this._events = this._events || {};
9733 this._maxListeners = this._maxListeners || undefined;
9734}
9735module.exports = EventEmitter;
8b095871 9736
9987f0c1
IC
9737// Backwards-compat with node 0.10.x
9738EventEmitter.EventEmitter = EventEmitter;
8b095871 9739
9987f0c1
IC
9740EventEmitter.prototype._events = undefined;
9741EventEmitter.prototype._maxListeners = undefined;
8b095871 9742
9987f0c1
IC
9743// By default EventEmitters will print a warning if more than 10 listeners are
9744// added to it. This is a useful default which helps finding memory leaks.
9745EventEmitter.defaultMaxListeners = 10;
8b095871 9746
9987f0c1
IC
9747// Obviously not all Emitters should be limited to 10. This function allows
9748// that to be increased. Set to zero for unlimited.
9749EventEmitter.prototype.setMaxListeners = function(n) {
9750 if (!isNumber(n) || n < 0 || isNaN(n))
9751 throw TypeError('n must be a positive number');
9752 this._maxListeners = n;
9753 return this;
9754};
8b095871 9755
9987f0c1
IC
9756EventEmitter.prototype.emit = function(type) {
9757 var er, handler, len, args, i, listeners;
9758
9759 if (!this._events)
9760 this._events = {};
9761
9762 // If there is no 'error' event listener then throw.
9763 if (type === 'error') {
9764 if (!this._events.error ||
9765 (isObject(this._events.error) && !this._events.error.length)) {
9766 er = arguments[1];
9767 if (er instanceof Error) {
9768 throw er; // Unhandled 'error' event
9769 } else {
9770 // At least give some kind of context to the user
9771 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
9772 err.context = er;
9773 throw err;
9774 }
9775 }
8b095871 9776 }
8b095871 9777
9987f0c1
IC
9778 handler = this._events[type];
9779
9780 if (isUndefined(handler))
9781 return false;
9782
9783 if (isFunction(handler)) {
9784 switch (arguments.length) {
9785 // fast cases
9786 case 1:
9787 handler.call(this);
9788 break;
9789 case 2:
9790 handler.call(this, arguments[1]);
9791 break;
9792 case 3:
9793 handler.call(this, arguments[1], arguments[2]);
9794 break;
9795 // slower
9796 default:
9797 args = Array.prototype.slice.call(arguments, 1);
9798 handler.apply(this, args);
9799 }
9800 } else if (isObject(handler)) {
9801 args = Array.prototype.slice.call(arguments, 1);
9802 listeners = handler.slice();
9803 len = listeners.length;
9804 for (i = 0; i < len; i++)
9805 listeners[i].apply(this, args);
8b095871 9806 }
8b095871 9807
9987f0c1
IC
9808 return true;
9809};
9810
9811EventEmitter.prototype.addListener = function(type, listener) {
9812 var m;
9813
9814 if (!isFunction(listener))
9815 throw TypeError('listener must be a function');
9816
9817 if (!this._events)
9818 this._events = {};
9819
9820 // To avoid recursion in the case that type === "newListener"! Before
9821 // adding it to the listeners, first emit "newListener".
9822 if (this._events.newListener)
9823 this.emit('newListener', type,
9824 isFunction(listener.listener) ?
9825 listener.listener : listener);
9826
9827 if (!this._events[type])
9828 // Optimize the case of one listener. Don't need the extra array object.
9829 this._events[type] = listener;
9830 else if (isObject(this._events[type]))
9831 // If we've already got an array, just append.
9832 this._events[type].push(listener);
9833 else
9834 // Adding the second element, need to change to array.
9835 this._events[type] = [this._events[type], listener];
8b095871 9836
9987f0c1
IC
9837 // Check for listener leak
9838 if (isObject(this._events[type]) && !this._events[type].warned) {
9839 if (!isUndefined(this._maxListeners)) {
9840 m = this._maxListeners;
9841 } else {
9842 m = EventEmitter.defaultMaxListeners;
8b095871 9843 }
8b095871 9844
9987f0c1
IC
9845 if (m && m > 0 && this._events[type].length > m) {
9846 this._events[type].warned = true;
9847 console.error('(node) warning: possible EventEmitter memory ' +
9848 'leak detected. %d listeners added. ' +
9849 'Use emitter.setMaxListeners() to increase limit.',
9850 this._events[type].length);
9851 if (typeof console.trace === 'function') {
9852 // not supported in IE 10
9853 console.trace();
9854 }
9855 }
8b095871 9856 }
8b095871 9857
9987f0c1
IC
9858 return this;
9859};
8b095871 9860
9987f0c1 9861EventEmitter.prototype.on = EventEmitter.prototype.addListener;
8b095871 9862
9987f0c1
IC
9863EventEmitter.prototype.once = function(type, listener) {
9864 if (!isFunction(listener))
9865 throw TypeError('listener must be a function');
8b095871 9866
9987f0c1 9867 var fired = false;
8b095871 9868
9987f0c1
IC
9869 function g() {
9870 this.removeListener(type, g);
8b095871 9871
9987f0c1
IC
9872 if (!fired) {
9873 fired = true;
9874 listener.apply(this, arguments);
9875 }
9876 }
8b095871 9877
9987f0c1
IC
9878 g.listener = listener;
9879 this.on(type, g);
8b095871 9880
9987f0c1 9881 return this;
8b095871
IC
9882};
9883
9987f0c1
IC
9884// emits a 'removeListener' event iff the listener was removed
9885EventEmitter.prototype.removeListener = function(type, listener) {
9886 var list, position, length, i;
8b095871 9887
9987f0c1
IC
9888 if (!isFunction(listener))
9889 throw TypeError('listener must be a function');
8b095871 9890
9987f0c1
IC
9891 if (!this._events || !this._events[type])
9892 return this;
8b095871 9893
9987f0c1
IC
9894 list = this._events[type];
9895 length = list.length;
9896 position = -1;
8b095871 9897
9987f0c1
IC
9898 if (list === listener ||
9899 (isFunction(list.listener) && list.listener === listener)) {
9900 delete this._events[type];
9901 if (this._events.removeListener)
9902 this.emit('removeListener', type, listener);
8b095871 9903
9987f0c1
IC
9904 } else if (isObject(list)) {
9905 for (i = length; i-- > 0;) {
9906 if (list[i] === listener ||
9907 (list[i].listener && list[i].listener === listener)) {
9908 position = i;
9909 break;
9910 }
8b095871
IC
9911 }
9912
9987f0c1
IC
9913 if (position < 0)
9914 return this;
8b095871 9915
9987f0c1
IC
9916 if (list.length === 1) {
9917 list.length = 0;
9918 delete this._events[type];
9919 } else {
9920 list.splice(position, 1);
9921 }
8b095871 9922
9987f0c1
IC
9923 if (this._events.removeListener)
9924 this.emit('removeListener', type, listener);
9925 }
8b095871 9926
9987f0c1
IC
9927 return this;
9928};
8b095871 9929
9987f0c1
IC
9930EventEmitter.prototype.removeAllListeners = function(type) {
9931 var key, listeners;
8b095871 9932
9987f0c1
IC
9933 if (!this._events)
9934 return this;
8b095871 9935
9987f0c1
IC
9936 // not listening for removeListener, no need to emit
9937 if (!this._events.removeListener) {
9938 if (arguments.length === 0)
9939 this._events = {};
9940 else if (this._events[type])
9941 delete this._events[type];
9942 return this;
8b095871 9943 }
9987f0c1
IC
9944
9945 // emit removeListener for all listeners on all events
9946 if (arguments.length === 0) {
9947 for (key in this._events) {
9948 if (key === 'removeListener') continue;
9949 this.removeAllListeners(key);
9950 }
9951 this.removeAllListeners('removeListener');
9952 this._events = {};
9953 return this;
8b095871 9954 }
8b095871 9955
9987f0c1 9956 listeners = this._events[type];
8b095871 9957
9987f0c1
IC
9958 if (isFunction(listeners)) {
9959 this.removeListener(type, listeners);
9960 } else if (listeners) {
9961 // LIFO order
9962 while (listeners.length)
9963 this.removeListener(type, listeners[listeners.length - 1]);
8b095871 9964 }
9987f0c1 9965 delete this._events[type];
8b095871 9966
9987f0c1
IC
9967 return this;
9968};
8b095871 9969
9987f0c1
IC
9970EventEmitter.prototype.listeners = function(type) {
9971 var ret;
9972 if (!this._events || !this._events[type])
9973 ret = [];
9974 else if (isFunction(this._events[type]))
9975 ret = [this._events[type]];
9976 else
9977 ret = this._events[type].slice();
9978 return ret;
8b095871
IC
9979};
9980
9987f0c1
IC
9981EventEmitter.prototype.listenerCount = function(type) {
9982 if (this._events) {
9983 var evlistener = this._events[type];
8b095871 9984
9987f0c1
IC
9985 if (isFunction(evlistener))
9986 return 1;
9987 else if (evlistener)
9988 return evlistener.length;
8b095871 9989 }
9987f0c1 9990 return 0;
8b095871
IC
9991};
9992
9987f0c1
IC
9993EventEmitter.listenerCount = function(emitter, type) {
9994 return emitter.listenerCount(type);
9995};
8b095871 9996
9987f0c1
IC
9997function isFunction(arg) {
9998 return typeof arg === 'function';
9999}
8b095871 10000
9987f0c1
IC
10001function isNumber(arg) {
10002 return typeof arg === 'number';
8b095871
IC
10003}
10004
9987f0c1
IC
10005function isObject(arg) {
10006 return typeof arg === 'object' && arg !== null;
10007}
8b095871 10008
9987f0c1
IC
10009function isUndefined(arg) {
10010 return arg === void 0;
10011}
8b095871 10012
9987f0c1
IC
10013},{}],7:[function(require,module,exports){
10014exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10015 var e, m
10016 var eLen = nBytes * 8 - mLen - 1
10017 var eMax = (1 << eLen) - 1
10018 var eBias = eMax >> 1
10019 var nBits = -7
10020 var i = isLE ? (nBytes - 1) : 0
10021 var d = isLE ? -1 : 1
10022 var s = buffer[offset + i]
8b095871 10023
9987f0c1 10024 i += d
8b095871 10025
9987f0c1
IC
10026 e = s & ((1 << (-nBits)) - 1)
10027 s >>= (-nBits)
10028 nBits += eLen
10029 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
8b095871 10030
9987f0c1
IC
10031 m = e & ((1 << (-nBits)) - 1)
10032 e >>= (-nBits)
10033 nBits += mLen
10034 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
8b095871 10035
9987f0c1
IC
10036 if (e === 0) {
10037 e = 1 - eBias
10038 } else if (e === eMax) {
10039 return m ? NaN : ((s ? -1 : 1) * Infinity)
10040 } else {
10041 m = m + Math.pow(2, mLen)
10042 e = e - eBias
8b095871 10043 }
9987f0c1 10044 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
8b095871
IC
10045}
10046
9987f0c1
IC
10047exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10048 var e, m, c
10049 var eLen = nBytes * 8 - mLen - 1
10050 var eMax = (1 << eLen) - 1
10051 var eBias = eMax >> 1
10052 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10053 var i = isLE ? 0 : (nBytes - 1)
10054 var d = isLE ? 1 : -1
10055 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
8b095871 10056
9987f0c1 10057 value = Math.abs(value)
8b095871 10058
9987f0c1
IC
10059 if (isNaN(value) || value === Infinity) {
10060 m = isNaN(value) ? 1 : 0
10061 e = eMax
10062 } else {
10063 e = Math.floor(Math.log(value) / Math.LN2)
10064 if (value * (c = Math.pow(2, -e)) < 1) {
10065 e--
10066 c *= 2
10067 }
10068 if (e + eBias >= 1) {
10069 value += rt / c
10070 } else {
10071 value += rt * Math.pow(2, 1 - eBias)
10072 }
10073 if (value * c >= 2) {
10074 e++
10075 c /= 2
10076 }
8b095871 10077
9987f0c1
IC
10078 if (e + eBias >= eMax) {
10079 m = 0
10080 e = eMax
10081 } else if (e + eBias >= 1) {
10082 m = (value * c - 1) * Math.pow(2, mLen)
10083 e = e + eBias
10084 } else {
10085 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10086 e = 0
10087 }
8b095871 10088 }
8b095871 10089
9987f0c1
IC
10090 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10091
10092 e = (e << mLen) | m
10093 eLen += mLen
10094 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10095
10096 buffer[offset + i - d] |= s * 128
10097}
8b095871 10098
9987f0c1
IC
10099},{}],8:[function(require,module,exports){
10100if (typeof Object.create === 'function') {
10101 // implementation from standard node.js 'util' module
10102 module.exports = function inherits(ctor, superCtor) {
10103 ctor.super_ = superCtor
10104 ctor.prototype = Object.create(superCtor.prototype, {
10105 constructor: {
10106 value: ctor,
10107 enumerable: false,
10108 writable: true,
10109 configurable: true
10110 }
10111 });
10112 };
10113} else {
10114 // old school shim for old browsers
10115 module.exports = function inherits(ctor, superCtor) {
10116 ctor.super_ = superCtor
10117 var TempCtor = function () {}
10118 TempCtor.prototype = superCtor.prototype
10119 ctor.prototype = new TempCtor()
10120 ctor.prototype.constructor = ctor
10121 }
10122}
10123
10124},{}],9:[function(require,module,exports){
8b095871 10125/*!
9987f0c1 10126 * Determine if an object is a Buffer
8b095871
IC
10127 *
10128 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
10129 * @license MIT
10130 */
10131
9987f0c1
IC
10132// The _isBuffer check is for Safari 5-7 support, because it's missing
10133// Object.prototype.constructor. Remove this eventually
10134module.exports = function (obj) {
10135 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
10136}
8b095871 10137
9987f0c1
IC
10138function isBuffer (obj) {
10139 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
8b095871
IC
10140}
10141
9987f0c1
IC
10142// For Node v0.10 support. Remove this eventually.
10143function isSlowBuffer (obj) {
10144 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
10145}
8b095871 10146
9987f0c1
IC
10147},{}],10:[function(require,module,exports){
10148var toString = {}.toString;
8b095871 10149
9987f0c1
IC
10150module.exports = Array.isArray || function (arr) {
10151 return toString.call(arr) == '[object Array]';
10152};
8b095871 10153
9987f0c1
IC
10154},{}],11:[function(require,module,exports){
10155(function (process){
10156'use strict';
8b095871 10157
9987f0c1
IC
10158if (!process.version ||
10159 process.version.indexOf('v0.') === 0 ||
10160 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
10161 module.exports = nextTick;
10162} else {
10163 module.exports = process.nextTick;
8b095871
IC
10164}
10165
9987f0c1
IC
10166function nextTick(fn, arg1, arg2, arg3) {
10167 if (typeof fn !== 'function') {
10168 throw new TypeError('"callback" argument must be a function');
10169 }
10170 var len = arguments.length;
10171 var args, i;
10172 switch (len) {
10173 case 0:
10174 case 1:
10175 return process.nextTick(fn);
10176 case 2:
10177 return process.nextTick(function afterTickOne() {
10178 fn.call(null, arg1);
10179 });
10180 case 3:
10181 return process.nextTick(function afterTickTwo() {
10182 fn.call(null, arg1, arg2);
10183 });
10184 case 4:
10185 return process.nextTick(function afterTickThree() {
10186 fn.call(null, arg1, arg2, arg3);
10187 });
10188 default:
10189 args = new Array(len - 1);
10190 i = 0;
10191 while (i < args.length) {
10192 args[i++] = arguments[i];
8b095871 10193 }
9987f0c1
IC
10194 return process.nextTick(function afterTick() {
10195 fn.apply(null, args);
10196 });
8b095871 10197 }
8b095871
IC
10198}
10199
9987f0c1
IC
10200}).call(this,require('_process'))
10201},{"_process":12}],12:[function(require,module,exports){
10202// shim for using process in browser
10203var process = module.exports = {};
8b095871 10204
9987f0c1
IC
10205// cached from whatever global is present so that test runners that stub it
10206// don't break things. But we need to wrap it in a try catch in case it is
10207// wrapped in strict mode code which doesn't define any globals. It's inside a
10208// function because try/catches deoptimize in certain engines.
8b095871 10209
9987f0c1
IC
10210var cachedSetTimeout;
10211var cachedClearTimeout;
8b095871 10212
9987f0c1
IC
10213function defaultSetTimout() {
10214 throw new Error('setTimeout has not been defined');
10215}
10216function defaultClearTimeout () {
10217 throw new Error('clearTimeout has not been defined');
10218}
10219(function () {
10220 try {
10221 if (typeof setTimeout === 'function') {
10222 cachedSetTimeout = setTimeout;
10223 } else {
10224 cachedSetTimeout = defaultSetTimout;
10225 }
10226 } catch (e) {
10227 cachedSetTimeout = defaultSetTimout;
10228 }
10229 try {
10230 if (typeof clearTimeout === 'function') {
10231 cachedClearTimeout = clearTimeout;
10232 } else {
10233 cachedClearTimeout = defaultClearTimeout;
10234 }
10235 } catch (e) {
10236 cachedClearTimeout = defaultClearTimeout;
8b095871 10237 }
9987f0c1
IC
10238} ())
10239function runTimeout(fun) {
10240 if (cachedSetTimeout === setTimeout) {
10241 //normal enviroments in sane situations
10242 return setTimeout(fun, 0);
10243 }
10244 // if setTimeout wasn't available but was latter defined
10245 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
10246 cachedSetTimeout = setTimeout;
10247 return setTimeout(fun, 0);
10248 }
10249 try {
10250 // when when somebody has screwed with setTimeout but no I.E. maddness
10251 return cachedSetTimeout(fun, 0);
10252 } catch(e){
10253 try {
10254 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10255 return cachedSetTimeout.call(null, fun, 0);
10256 } catch(e){
10257 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
10258 return cachedSetTimeout.call(this, fun, 0);
10259 }
8b095871 10260 }
8b095871 10261
8b095871 10262
8b095871 10263}
9987f0c1
IC
10264function runClearTimeout(marker) {
10265 if (cachedClearTimeout === clearTimeout) {
10266 //normal enviroments in sane situations
10267 return clearTimeout(marker);
10268 }
10269 // if clearTimeout wasn't available but was latter defined
10270 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
10271 cachedClearTimeout = clearTimeout;
10272 return clearTimeout(marker);
10273 }
10274 try {
10275 // when when somebody has screwed with setTimeout but no I.E. maddness
10276 return cachedClearTimeout(marker);
10277 } catch (e){
10278 try {
10279 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
10280 return cachedClearTimeout.call(null, marker);
10281 } catch (e){
10282 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
10283 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
10284 return cachedClearTimeout.call(this, marker);
10285 }
10286 }
8b095871 10287
8b095871 10288
8b095871 10289
8b095871 10290}
9987f0c1
IC
10291var queue = [];
10292var draining = false;
10293var currentQueue;
10294var queueIndex = -1;
8b095871 10295
9987f0c1
IC
10296function cleanUpNextTick() {
10297 if (!draining || !currentQueue) {
10298 return;
10299 }
10300 draining = false;
10301 if (currentQueue.length) {
10302 queue = currentQueue.concat(queue);
10303 } else {
10304 queueIndex = -1;
10305 }
10306 if (queue.length) {
10307 drainQueue();
10308 }
8b095871
IC
10309}
10310
9987f0c1
IC
10311function drainQueue() {
10312 if (draining) {
10313 return;
10314 }
10315 var timeout = runTimeout(cleanUpNextTick);
10316 draining = true;
8b095871 10317
9987f0c1
IC
10318 var len = queue.length;
10319 while(len) {
10320 currentQueue = queue;
10321 queue = [];
10322 while (++queueIndex < len) {
10323 if (currentQueue) {
10324 currentQueue[queueIndex].run();
10325 }
10326 }
10327 queueIndex = -1;
10328 len = queue.length;
10329 }
10330 currentQueue = null;
10331 draining = false;
10332 runClearTimeout(timeout);
8b095871
IC
10333}
10334
9987f0c1
IC
10335process.nextTick = function (fun) {
10336 var args = new Array(arguments.length - 1);
10337 if (arguments.length > 1) {
10338 for (var i = 1; i < arguments.length; i++) {
10339 args[i - 1] = arguments[i];
10340 }
10341 }
10342 queue.push(new Item(fun, args));
10343 if (queue.length === 1 && !draining) {
10344 runTimeout(drainQueue);
10345 }
10346};
8b095871 10347
9987f0c1
IC
10348// v8 likes predictible objects
10349function Item(fun, array) {
10350 this.fun = fun;
10351 this.array = array;
8b095871 10352}
9987f0c1
IC
10353Item.prototype.run = function () {
10354 this.fun.apply(null, this.array);
10355};
10356process.title = 'browser';
10357process.browser = true;
10358process.env = {};
10359process.argv = [];
10360process.version = ''; // empty string to avoid regexp issues
10361process.versions = {};
8b095871 10362
9987f0c1 10363function noop() {}
8b095871 10364
9987f0c1
IC
10365process.on = noop;
10366process.addListener = noop;
10367process.once = noop;
10368process.off = noop;
10369process.removeListener = noop;
10370process.removeAllListeners = noop;
10371process.emit = noop;
10372process.prependListener = noop;
10373process.prependOnceListener = noop;
8b095871 10374
9987f0c1 10375process.listeners = function (name) { return [] }
8b095871 10376
9987f0c1
IC
10377process.binding = function (name) {
10378 throw new Error('process.binding is not supported');
10379};
8b095871 10380
9987f0c1
IC
10381process.cwd = function () { return '/' };
10382process.chdir = function (dir) {
10383 throw new Error('process.chdir is not supported');
10384};
10385process.umask = function() { return 0; };
8b095871 10386
9987f0c1
IC
10387},{}],13:[function(require,module,exports){
10388module.exports = require('./lib/_stream_duplex.js');
8b095871 10389
9987f0c1
IC
10390},{"./lib/_stream_duplex.js":14}],14:[function(require,module,exports){
10391// Copyright Joyent, Inc. and other Node contributors.
10392//
10393// Permission is hereby granted, free of charge, to any person obtaining a
10394// copy of this software and associated documentation files (the
10395// "Software"), to deal in the Software without restriction, including
10396// without limitation the rights to use, copy, modify, merge, publish,
10397// distribute, sublicense, and/or sell copies of the Software, and to permit
10398// persons to whom the Software is furnished to do so, subject to the
10399// following conditions:
10400//
10401// The above copyright notice and this permission notice shall be included
10402// in all copies or substantial portions of the Software.
10403//
10404// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10405// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10406// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10407// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10408// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10409// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10410// USE OR OTHER DEALINGS IN THE SOFTWARE.
8b095871 10411
9987f0c1
IC
10412// a duplex stream is just a stream that is both readable and writable.
10413// Since JS doesn't have multiple prototypal inheritance, this class
10414// prototypally inherits from Readable, and then parasitically from
10415// Writable.
8b095871 10416
9987f0c1 10417'use strict';
8b095871 10418
9987f0c1 10419/*<replacement>*/
8b095871 10420
9987f0c1
IC
10421var processNextTick = require('process-nextick-args');
10422/*</replacement>*/
8b095871 10423
9987f0c1
IC
10424/*<replacement>*/
10425var objectKeys = Object.keys || function (obj) {
10426 var keys = [];
10427 for (var key in obj) {
10428 keys.push(key);
10429 }return keys;
10430};
10431/*</replacement>*/
8b095871 10432
9987f0c1 10433module.exports = Duplex;
8b095871 10434
9987f0c1
IC
10435/*<replacement>*/
10436var util = require('core-util-is');
10437util.inherits = require('inherits');
10438/*</replacement>*/
8b095871 10439
9987f0c1
IC
10440var Readable = require('./_stream_readable');
10441var Writable = require('./_stream_writable');
8b095871 10442
9987f0c1 10443util.inherits(Duplex, Readable);
8b095871 10444
9987f0c1
IC
10445var keys = objectKeys(Writable.prototype);
10446for (var v = 0; v < keys.length; v++) {
10447 var method = keys[v];
10448 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
8b095871 10449}
8b095871 10450
9987f0c1
IC
10451function Duplex(options) {
10452 if (!(this instanceof Duplex)) return new Duplex(options);
8b095871 10453
9987f0c1
IC
10454 Readable.call(this, options);
10455 Writable.call(this, options);
8b095871 10456
9987f0c1 10457 if (options && options.readable === false) this.readable = false;
8b095871 10458
9987f0c1 10459 if (options && options.writable === false) this.writable = false;
8b095871 10460
9987f0c1
IC
10461 this.allowHalfOpen = true;
10462 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
8b095871 10463
9987f0c1 10464 this.once('end', onend);
8b095871
IC
10465}
10466
9987f0c1
IC
10467// the no-half-open enforcer
10468function onend() {
10469 // if we allow half-open state, or if the writable side ended,
10470 // then we're ok.
10471 if (this.allowHalfOpen || this._writableState.ended) return;
8b095871 10472
9987f0c1
IC
10473 // no more data can be written.
10474 // But allow more writes to happen in this tick.
10475 processNextTick(onEndNT, this);
8b095871
IC
10476}
10477
9987f0c1
IC
10478function onEndNT(self) {
10479 self.end();
8b095871
IC
10480}
10481
9987f0c1
IC
10482Object.defineProperty(Duplex.prototype, 'destroyed', {
10483 get: function () {
10484 if (this._readableState === undefined || this._writableState === undefined) {
10485 return false;
8b095871 10486 }
9987f0c1
IC
10487 return this._readableState.destroyed && this._writableState.destroyed;
10488 },
10489 set: function (value) {
10490 // we ignore the value if the stream
10491 // has not been initialized yet
10492 if (this._readableState === undefined || this._writableState === undefined) {
10493 return;
8b095871 10494 }
9987f0c1
IC
10495
10496 // backward compatibility, the user is explicitly
10497 // managing destroyed
10498 this._readableState.destroyed = value;
10499 this._writableState.destroyed = value;
8b095871 10500 }
9987f0c1 10501});
8b095871 10502
9987f0c1
IC
10503Duplex.prototype._destroy = function (err, cb) {
10504 this.push(null);
10505 this.end();
8b095871 10506
9987f0c1
IC
10507 processNextTick(cb, err);
10508};
8b095871 10509
9987f0c1
IC
10510function forEach(xs, f) {
10511 for (var i = 0, l = xs.length; i < l; i++) {
10512 f(xs[i], i);
10513 }
8b095871 10514}
9987f0c1
IC
10515},{"./_stream_readable":16,"./_stream_writable":18,"core-util-is":5,"inherits":8,"process-nextick-args":11}],15:[function(require,module,exports){
10516// Copyright Joyent, Inc. and other Node contributors.
10517//
10518// Permission is hereby granted, free of charge, to any person obtaining a
10519// copy of this software and associated documentation files (the
10520// "Software"), to deal in the Software without restriction, including
10521// without limitation the rights to use, copy, modify, merge, publish,
10522// distribute, sublicense, and/or sell copies of the Software, and to permit
10523// persons to whom the Software is furnished to do so, subject to the
10524// following conditions:
10525//
10526// The above copyright notice and this permission notice shall be included
10527// in all copies or substantial portions of the Software.
10528//
10529// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10530// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10531// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10532// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10533// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10534// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10535// USE OR OTHER DEALINGS IN THE SOFTWARE.
8b095871 10536
9987f0c1
IC
10537// a passthrough stream.
10538// basically just the most minimal sort of Transform stream.
10539// Every written chunk gets output as-is.
8b095871 10540
9987f0c1 10541'use strict';
8b095871 10542
9987f0c1 10543module.exports = PassThrough;
8b095871 10544
9987f0c1 10545var Transform = require('./_stream_transform');
8b095871 10546
9987f0c1
IC
10547/*<replacement>*/
10548var util = require('core-util-is');
10549util.inherits = require('inherits');
10550/*</replacement>*/
8b095871 10551
9987f0c1 10552util.inherits(PassThrough, Transform);
8b095871 10553
9987f0c1
IC
10554function PassThrough(options) {
10555 if (!(this instanceof PassThrough)) return new PassThrough(options);
8b095871 10556
9987f0c1 10557 Transform.call(this, options);
8b095871
IC
10558}
10559
9987f0c1
IC
10560PassThrough.prototype._transform = function (chunk, encoding, cb) {
10561 cb(null, chunk);
10562};
10563},{"./_stream_transform":17,"core-util-is":5,"inherits":8}],16:[function(require,module,exports){
10564(function (process,global){
10565// Copyright Joyent, Inc. and other Node contributors.
10566//
10567// Permission is hereby granted, free of charge, to any person obtaining a
10568// copy of this software and associated documentation files (the
10569// "Software"), to deal in the Software without restriction, including
10570// without limitation the rights to use, copy, modify, merge, publish,
10571// distribute, sublicense, and/or sell copies of the Software, and to permit
10572// persons to whom the Software is furnished to do so, subject to the
10573// following conditions:
10574//
10575// The above copyright notice and this permission notice shall be included
10576// in all copies or substantial portions of the Software.
10577//
10578// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
10579// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10580// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
10581// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
10582// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
10583// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
10584// USE OR OTHER DEALINGS IN THE SOFTWARE.
10585
10586'use strict';
8b095871 10587
9987f0c1 10588/*<replacement>*/
8b095871 10589
9987f0c1
IC
10590var processNextTick = require('process-nextick-args');
10591/*</replacement>*/
8b095871 10592
9987f0c1 10593module.exports = Readable;
8b095871 10594
9987f0c1
IC
10595/*<replacement>*/
10596var isArray = require('isarray');
10597/*</replacement>*/
8b095871 10598
9987f0c1
IC
10599/*<replacement>*/
10600var Duplex;
10601/*</replacement>*/
8b095871 10602
9987f0c1 10603Readable.ReadableState = ReadableState;
8b095871 10604
9987f0c1
IC
10605/*<replacement>*/
10606var EE = require('events').EventEmitter;
8b095871 10607
9987f0c1
IC
10608var EElistenerCount = function (emitter, type) {
10609 return emitter.listeners(type).length;
10610};
10611/*</replacement>*/
8b095871 10612
9987f0c1
IC
10613/*<replacement>*/
10614var Stream = require('./internal/streams/stream');
10615/*</replacement>*/
8b095871 10616
9987f0c1
IC
10617// TODO(bmeurer): Change this back to const once hole checks are
10618// properly optimized away early in Ignition+TurboFan.
10619/*<replacement>*/
10620var Buffer = require('safe-buffer').Buffer;
10621var OurUint8Array = global.Uint8Array || function () {};
10622function _uint8ArrayToBuffer(chunk) {
10623 return Buffer.from(chunk);
10624}
10625function _isUint8Array(obj) {
10626 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
8b095871 10627}
9987f0c1 10628/*</replacement>*/
8b095871 10629
9987f0c1
IC
10630/*<replacement>*/
10631var util = require('core-util-is');
10632util.inherits = require('inherits');
10633/*</replacement>*/
10634
10635/*<replacement>*/
10636var debugUtil = require('util');
10637var debug = void 0;
10638if (debugUtil && debugUtil.debuglog) {
10639 debug = debugUtil.debuglog('stream');
10640} else {
10641 debug = function () {};
8b095871 10642}
9987f0c1 10643/*</replacement>*/
8b095871 10644
9987f0c1
IC
10645var BufferList = require('./internal/streams/BufferList');
10646var destroyImpl = require('./internal/streams/destroy');
10647var StringDecoder;
10648
10649util.inherits(Readable, Stream);
10650
10651var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
10652
10653function prependListener(emitter, event, fn) {
10654 // Sadly this is not cacheable as some libraries bundle their own
10655 // event emitter implementation with them.
10656 if (typeof emitter.prependListener === 'function') {
10657 return emitter.prependListener(event, fn);
8b095871 10658 } else {
9987f0c1
IC
10659 // This is a hack to make sure that our error handler is attached before any
10660 // userland ones. NEVER DO THIS. This is here only because this code needs
10661 // to continue to work with older versions of Node.js that do not include
10662 // the prependListener() method. The goal is to eventually remove this hack.
10663 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
8b095871
IC
10664 }
10665}
10666
9987f0c1
IC
10667function ReadableState(options, stream) {
10668 Duplex = Duplex || require('./_stream_duplex');
8b095871 10669
9987f0c1 10670 options = options || {};
8b095871 10671
9987f0c1
IC
10672 // object stream flag. Used to make read(n) ignore n and to
10673 // make all the buffer merging and length checks go away
10674 this.objectMode = !!options.objectMode;
8b095871 10675
9987f0c1 10676 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
8b095871 10677
9987f0c1
IC
10678 // the point at which it stops calling _read() to fill the buffer
10679 // Note: 0 is a valid value, means "don't call _read preemptively ever"
10680 var hwm = options.highWaterMark;
10681 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
10682 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
8b095871 10683
9987f0c1
IC
10684 // cast to ints.
10685 this.highWaterMark = Math.floor(this.highWaterMark);
8b095871 10686
9987f0c1
IC
10687 // A linked list is used to store data chunks instead of an array because the
10688 // linked list can remove elements from the beginning faster than
10689 // array.shift()
10690 this.buffer = new BufferList();
10691 this.length = 0;
10692 this.pipes = null;
10693 this.pipesCount = 0;
10694 this.flowing = null;
10695 this.ended = false;
10696 this.endEmitted = false;
10697 this.reading = false;
8b095871 10698
9987f0c1
IC
10699 // a flag to be able to tell if the event 'readable'/'data' is emitted
10700 // immediately, or on a later tick. We set this to true at first, because
10701 // any actions that shouldn't happen until "later" should generally also
10702 // not happen before the first read call.
10703 this.sync = true;
8b095871 10704
9987f0c1
IC
10705 // whenever we return null, then we set a flag to say
10706 // that we're awaiting a 'readable' event emission.
10707 this.needReadable = false;
10708 this.emittedReadable = false;
10709 this.readableListening = false;
10710 this.resumeScheduled = false;
8b095871 10711
9987f0c1
IC
10712 // has it been destroyed
10713 this.destroyed = false;
8b095871 10714
9987f0c1
IC
10715 // Crypto is kind of old and crusty. Historically, its default string
10716 // encoding is 'binary' so we have to make this configurable.
10717 // Everything else in the universe uses 'utf8', though.
10718 this.defaultEncoding = options.defaultEncoding || 'utf8';
8b095871 10719
9987f0c1
IC
10720 // the number of writers that are awaiting a drain event in .pipe()s
10721 this.awaitDrain = 0;
8b095871 10722
9987f0c1
IC
10723 // if true, a maybeReadMore has been scheduled
10724 this.readingMore = false;
8b095871 10725
9987f0c1
IC
10726 this.decoder = null;
10727 this.encoding = null;
10728 if (options.encoding) {
10729 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10730 this.decoder = new StringDecoder(options.encoding);
10731 this.encoding = options.encoding;
8b095871 10732 }
8b095871
IC
10733}
10734
9987f0c1
IC
10735function Readable(options) {
10736 Duplex = Duplex || require('./_stream_duplex');
8b095871 10737
9987f0c1 10738 if (!(this instanceof Readable)) return new Readable(options);
8b095871 10739
9987f0c1 10740 this._readableState = new ReadableState(options, this);
8b095871 10741
9987f0c1
IC
10742 // legacy
10743 this.readable = true;
10744
10745 if (options) {
10746 if (typeof options.read === 'function') this._read = options.read;
10747
10748 if (typeof options.destroy === 'function') this._destroy = options.destroy;
8b095871
IC
10749 }
10750
9987f0c1
IC
10751 Stream.call(this);
10752}
8b095871 10753
9987f0c1
IC
10754Object.defineProperty(Readable.prototype, 'destroyed', {
10755 get: function () {
10756 if (this._readableState === undefined) {
10757 return false;
10758 }
10759 return this._readableState.destroyed;
10760 },
10761 set: function (value) {
10762 // we ignore the value if the stream
10763 // has not been initialized yet
10764 if (!this._readableState) {
10765 return;
8b095871 10766 }
9987f0c1
IC
10767
10768 // backward compatibility, the user is explicitly
10769 // managing destroyed
10770 this._readableState.destroyed = value;
8b095871 10771 }
9987f0c1 10772});
8b095871 10773
9987f0c1
IC
10774Readable.prototype.destroy = destroyImpl.destroy;
10775Readable.prototype._undestroy = destroyImpl.undestroy;
10776Readable.prototype._destroy = function (err, cb) {
10777 this.push(null);
10778 cb(err);
10779};
8b095871 10780
9987f0c1
IC
10781// Manually shove something into the read() buffer.
10782// This returns true if the highWaterMark has not been hit yet,
10783// similar to how Writable.write() returns true if you should
10784// write() some more.
10785Readable.prototype.push = function (chunk, encoding) {
10786 var state = this._readableState;
10787 var skipChunkCheck;
10788
10789 if (!state.objectMode) {
10790 if (typeof chunk === 'string') {
10791 encoding = encoding || state.defaultEncoding;
10792 if (encoding !== state.encoding) {
10793 chunk = Buffer.from(chunk, encoding);
10794 encoding = '';
10795 }
10796 skipChunkCheck = true;
10797 }
10798 } else {
10799 skipChunkCheck = true;
10800 }
8b095871 10801
9987f0c1
IC
10802 return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
10803};
8b095871 10804
9987f0c1
IC
10805// Unshift should *always* be something directly out of read()
10806Readable.prototype.unshift = function (chunk) {
10807 return readableAddChunk(this, chunk, null, true, false);
10808};
8b095871 10809
9987f0c1
IC
10810function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
10811 var state = stream._readableState;
10812 if (chunk === null) {
10813 state.reading = false;
10814 onEofChunk(stream, state);
10815 } else {
10816 var er;
10817 if (!skipChunkCheck) er = chunkInvalid(state, chunk);
10818 if (er) {
10819 stream.emit('error', er);
10820 } else if (state.objectMode || chunk && chunk.length > 0) {
10821 if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
10822 chunk = _uint8ArrayToBuffer(chunk);
10823 }
10824
10825 if (addToFront) {
10826 if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
10827 } else if (state.ended) {
10828 stream.emit('error', new Error('stream.push() after EOF'));
10829 } else {
10830 state.reading = false;
10831 if (state.decoder && !encoding) {
10832 chunk = state.decoder.write(chunk);
10833 if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
10834 } else {
10835 addChunk(stream, state, chunk, false);
10836 }
10837 }
10838 } else if (!addToFront) {
10839 state.reading = false;
10840 }
8b095871
IC
10841 }
10842
9987f0c1 10843 return needMoreData(state);
8b095871
IC
10844}
10845
9987f0c1
IC
10846function addChunk(stream, state, chunk, addToFront) {
10847 if (state.flowing && state.length === 0 && !state.sync) {
10848 stream.emit('data', chunk);
10849 stream.read(0);
10850 } else {
10851 // update the buffer info.
10852 state.length += state.objectMode ? 1 : chunk.length;
10853 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
8b095871 10854
9987f0c1 10855 if (state.needReadable) emitReadable(stream);
8b095871 10856 }
9987f0c1 10857 maybeReadMore(stream, state);
8b095871
IC
10858}
10859
9987f0c1
IC
10860function chunkInvalid(state, chunk) {
10861 var er;
10862 if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
10863 er = new TypeError('Invalid non-string/buffer chunk');
10864 }
10865 return er;
8b095871
IC
10866}
10867
9987f0c1
IC
10868// if it's past the high water mark, we can push in some more.
10869// Also, if we have no data yet, we can stand some
10870// more bytes. This is to work around cases where hwm=0,
10871// such as the repl. Also, if the push() triggered a
10872// readable event, and the user called read(largeNumber) such that
10873// needReadable was set, then we ought to push more, so that another
10874// 'readable' event will be triggered.
10875function needMoreData(state) {
10876 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
8b095871
IC
10877}
10878
9987f0c1
IC
10879Readable.prototype.isPaused = function () {
10880 return this._readableState.flowing === false;
10881};
8b095871 10882
9987f0c1
IC
10883// backwards compatibility.
10884Readable.prototype.setEncoding = function (enc) {
10885 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
10886 this._readableState.decoder = new StringDecoder(enc);
10887 this._readableState.encoding = enc;
10888 return this;
10889};
8b095871 10890
9987f0c1
IC
10891// Don't raise the hwm > 8MB
10892var MAX_HWM = 0x800000;
10893function computeNewHighWaterMark(n) {
10894 if (n >= MAX_HWM) {
10895 n = MAX_HWM;
10896 } else {
10897 // Get the next highest power of 2 to prevent increasing hwm excessively in
10898 // tiny amounts
10899 n--;
10900 n |= n >>> 1;
10901 n |= n >>> 2;
10902 n |= n >>> 4;
10903 n |= n >>> 8;
10904 n |= n >>> 16;
10905 n++;
10906 }
10907 return n;
8b095871
IC
10908}
10909
9987f0c1
IC
10910// This function is designed to be inlinable, so please take care when making
10911// changes to the function body.
10912function howMuchToRead(n, state) {
10913 if (n <= 0 || state.length === 0 && state.ended) return 0;
10914 if (state.objectMode) return 1;
10915 if (n !== n) {
10916 // Only flow one buffer at a time
10917 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
10918 }
10919 // If we're asking for more than the current hwm, then raise the hwm.
10920 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
10921 if (n <= state.length) return n;
10922 // Don't have enough
10923 if (!state.ended) {
10924 state.needReadable = true;
10925 return 0;
10926 }
10927 return state.length;
8b095871
IC
10928}
10929
9987f0c1
IC
10930// you can override either this method, or the async _read(n) below.
10931Readable.prototype.read = function (n) {
10932 debug('read', n);
10933 n = parseInt(n, 10);
10934 var state = this._readableState;
10935 var nOrig = n;
8b095871 10936
9987f0c1
IC
10937 if (n !== 0) state.emittedReadable = false;
10938
10939 // if we're doing read(0) to trigger a readable event, but we
10940 // already have a bunch of data in the buffer, then just trigger
10941 // the 'readable' event and move on.
10942 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
10943 debug('read: emitReadable', state.length, state.ended);
10944 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
10945 return null;
8b095871 10946 }
8b095871 10947
9987f0c1 10948 n = howMuchToRead(n, state);
8b095871 10949
9987f0c1
IC
10950 // if we've ended, and we're now clear, then finish it up.
10951 if (n === 0 && state.ended) {
10952 if (state.length === 0) endReadable(this);
10953 return null;
10954 }
8b095871 10955
9987f0c1
IC
10956 // All the actual chunk generation logic needs to be
10957 // *below* the call to _read. The reason is that in certain
10958 // synthetic stream cases, such as passthrough streams, _read
10959 // may be a completely synchronous operation which may change
10960 // the state of the read buffer, providing enough data when
10961 // before there was *not* enough.
10962 //
10963 // So, the steps are:
10964 // 1. Figure out what the state of things will be after we do
10965 // a read from the buffer.
10966 //
10967 // 2. If that resulting state will trigger a _read, then call _read.
10968 // Note that this may be asynchronous, or synchronous. Yes, it is
10969 // deeply ugly to write APIs this way, but that still doesn't mean
10970 // that the Readable class should behave improperly, as streams are
10971 // designed to be sync/async agnostic.
10972 // Take note if the _read call is sync or async (ie, if the read call
10973 // has returned yet), so that we know whether or not it's safe to emit
10974 // 'readable' etc.
10975 //
10976 // 3. Actually pull the requested chunks out of the buffer and return.
8b095871 10977
9987f0c1
IC
10978 // if we need a readable event, then we need to do some reading.
10979 var doRead = state.needReadable;
10980 debug('need readable', doRead);
8b095871 10981
9987f0c1
IC
10982 // if we currently have less than the highWaterMark, then also read some
10983 if (state.length === 0 || state.length - n < state.highWaterMark) {
10984 doRead = true;
10985 debug('length less than watermark', doRead);
10986 }
8b095871 10987
9987f0c1
IC
10988 // however, if we've ended, then there's no point, and if we're already
10989 // reading, then it's unnecessary.
10990 if (state.ended || state.reading) {
10991 doRead = false;
10992 debug('reading or ended', doRead);
10993 } else if (doRead) {
10994 debug('do read');
10995 state.reading = true;
10996 state.sync = true;
10997 // if the length is currently zero, then we *need* a readable event.
10998 if (state.length === 0) state.needReadable = true;
10999 // call internal read method
11000 this._read(state.highWaterMark);
11001 state.sync = false;
11002 // If _read pushed data synchronously, then `reading` will be false,
11003 // and we need to re-evaluate how much data we can return to the user.
11004 if (!state.reading) n = howMuchToRead(nOrig, state);
11005 }
8b095871 11006
9987f0c1
IC
11007 var ret;
11008 if (n > 0) ret = fromList(n, state);else ret = null;
8b095871 11009
9987f0c1
IC
11010 if (ret === null) {
11011 state.needReadable = true;
11012 n = 0;
11013 } else {
11014 state.length -= n;
11015 }
8b095871 11016
9987f0c1
IC
11017 if (state.length === 0) {
11018 // If we have nothing in the buffer, then we want to know
11019 // as soon as we *do* get something into the buffer.
11020 if (!state.ended) state.needReadable = true;
8b095871 11021
9987f0c1
IC
11022 // If we tried to read() past the EOF, then emit end on the next tick.
11023 if (nOrig !== n && state.ended) endReadable(this);
11024 }
8b095871 11025
9987f0c1 11026 if (ret !== null) this.emit('data', ret);
8b095871 11027
9987f0c1
IC
11028 return ret;
11029};
8b095871 11030
9987f0c1
IC
11031function onEofChunk(stream, state) {
11032 if (state.ended) return;
11033 if (state.decoder) {
11034 var chunk = state.decoder.end();
11035 if (chunk && chunk.length) {
11036 state.buffer.push(chunk);
11037 state.length += state.objectMode ? 1 : chunk.length;
11038 }
11039 }
11040 state.ended = true;
8b095871 11041
9987f0c1
IC
11042 // emit 'readable' now to make sure it gets picked up.
11043 emitReadable(stream);
8b095871
IC
11044}
11045
9987f0c1
IC
11046// Don't emit readable right away in sync mode, because this can trigger
11047// another read() call => stack overflow. This way, it might trigger
11048// a nextTick recursion warning, but that's not so bad.
11049function emitReadable(stream) {
11050 var state = stream._readableState;
11051 state.needReadable = false;
11052 if (!state.emittedReadable) {
11053 debug('emitReadable', state.flowing);
11054 state.emittedReadable = true;
11055 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
11056 }
8b095871
IC
11057}
11058
9987f0c1
IC
11059function emitReadable_(stream) {
11060 debug('emit readable');
11061 stream.emit('readable');
11062 flow(stream);
8b095871
IC
11063}
11064
9987f0c1
IC
11065// at this point, the user has presumably seen the 'readable' event,
11066// and called read() to consume some data. that may have triggered
11067// in turn another _read(n) call, in which case reading = true if
11068// it's in progress.
11069// However, if we're not ended, or reading, and the length < hwm,
11070// then go ahead and try to read some more preemptively.
11071function maybeReadMore(stream, state) {
11072 if (!state.readingMore) {
11073 state.readingMore = true;
11074 processNextTick(maybeReadMore_, stream, state);
11075 }
8b095871
IC
11076}
11077
9987f0c1
IC
11078function maybeReadMore_(stream, state) {
11079 var len = state.length;
11080 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
11081 debug('maybeReadMore read 0');
11082 stream.read(0);
11083 if (len === state.length)
11084 // didn't get any data, stop spinning.
11085 break;else len = state.length;
11086 }
11087 state.readingMore = false;
8b095871
IC
11088}
11089
9987f0c1
IC
11090// abstract method. to be overridden in specific implementation classes.
11091// call cb(er, data) where data is <= n in length.
11092// for virtual (non-string, non-buffer) streams, "length" is somewhat
11093// arbitrary, and perhaps not very meaningful.
11094Readable.prototype._read = function (n) {
11095 this.emit('error', new Error('_read() is not implemented'));
11096};
8b095871 11097
9987f0c1
IC
11098Readable.prototype.pipe = function (dest, pipeOpts) {
11099 var src = this;
11100 var state = this._readableState;
11101
11102 switch (state.pipesCount) {
11103 case 0:
11104 state.pipes = dest;
11105 break;
11106 case 1:
11107 state.pipes = [state.pipes, dest];
11108 break;
11109 default:
11110 state.pipes.push(dest);
11111 break;
8b095871 11112 }
9987f0c1
IC
11113 state.pipesCount += 1;
11114 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
8b095871 11115
9987f0c1 11116 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
8b095871 11117
9987f0c1
IC
11118 var endFn = doEnd ? onend : unpipe;
11119 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
8b095871 11120
9987f0c1
IC
11121 dest.on('unpipe', onunpipe);
11122 function onunpipe(readable, unpipeInfo) {
11123 debug('onunpipe');
11124 if (readable === src) {
11125 if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
11126 unpipeInfo.hasUnpiped = true;
11127 cleanup();
11128 }
11129 }
8b095871
IC
11130 }
11131
9987f0c1
IC
11132 function onend() {
11133 debug('onend');
11134 dest.end();
11135 }
8b095871 11136
9987f0c1
IC
11137 // when the dest drains, it reduces the awaitDrain counter
11138 // on the source. This would be more elegant with a .once()
11139 // handler in flow(), but adding and removing repeatedly is
11140 // too slow.
11141 var ondrain = pipeOnDrain(src);
11142 dest.on('drain', ondrain);
8b095871 11143
9987f0c1
IC
11144 var cleanedUp = false;
11145 function cleanup() {
11146 debug('cleanup');
11147 // cleanup event handlers once the pipe is broken
11148 dest.removeListener('close', onclose);
11149 dest.removeListener('finish', onfinish);
11150 dest.removeListener('drain', ondrain);
11151 dest.removeListener('error', onerror);
11152 dest.removeListener('unpipe', onunpipe);
11153 src.removeListener('end', onend);
11154 src.removeListener('end', unpipe);
11155 src.removeListener('data', ondata);
8b095871 11156
9987f0c1
IC
11157 cleanedUp = true;
11158
11159 // if the reader is waiting for a drain event from this
11160 // specific writer, then it would cause it to never start
11161 // flowing again.
11162 // So, if this is awaiting a drain, then we just call it now.
11163 // If we don't know, then assume that we are waiting for one.
11164 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
8b095871 11165 }
8b095871 11166
9987f0c1
IC
11167 // If the user pushes more data while we're writing to dest then we'll end up
11168 // in ondata again. However, we only want to increase awaitDrain once because
11169 // dest will only emit one 'drain' event for the multiple writes.
11170 // => Introduce a guard on increasing awaitDrain.
11171 var increasedAwaitDrain = false;
11172 src.on('data', ondata);
11173 function ondata(chunk) {
11174 debug('ondata');
11175 increasedAwaitDrain = false;
11176 var ret = dest.write(chunk);
11177 if (false === ret && !increasedAwaitDrain) {
11178 // If the user unpiped during `dest.write()`, it is possible
11179 // to get stuck in a permanently paused state if that write
11180 // also returned false.
11181 // => Check whether `dest` is still a piping destination.
11182 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
11183 debug('false write response, pause', src._readableState.awaitDrain);
11184 src._readableState.awaitDrain++;
11185 increasedAwaitDrain = true;
11186 }
11187 src.pause();
11188 }
8b095871 11189 }
8b095871 11190
9987f0c1
IC
11191 // if the dest has an error, then stop piping into it.
11192 // however, don't suppress the throwing behavior for this.
11193 function onerror(er) {
11194 debug('onerror', er);
11195 unpipe();
11196 dest.removeListener('error', onerror);
11197 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
8b095871 11198 }
8b095871 11199
9987f0c1
IC
11200 // Make sure our error handler is attached before userland ones.
11201 prependListener(dest, 'error', onerror);
11202
11203 // Both close and finish should trigger unpipe, but only once.
11204 function onclose() {
11205 dest.removeListener('finish', onfinish);
11206 unpipe();
8b095871 11207 }
9987f0c1
IC
11208 dest.once('close', onclose);
11209 function onfinish() {
11210 debug('onfinish');
11211 dest.removeListener('close', onclose);
11212 unpipe();
11213 }
11214 dest.once('finish', onfinish);
8b095871 11215
9987f0c1
IC
11216 function unpipe() {
11217 debug('unpipe');
11218 src.unpipe(dest);
8b095871 11219 }
8b095871 11220
9987f0c1
IC
11221 // tell the dest that it's being piped to
11222 dest.emit('pipe', src);
8b095871 11223
9987f0c1
IC
11224 // start the flow if it hasn't been started already.
11225 if (!state.flowing) {
11226 debug('pipe resume');
11227 src.resume();
8b095871
IC
11228 }
11229
9987f0c1
IC
11230 return dest;
11231};
8b095871 11232
9987f0c1
IC
11233function pipeOnDrain(src) {
11234 return function () {
11235 var state = src._readableState;
11236 debug('pipeOnDrain', state.awaitDrain);
11237 if (state.awaitDrain) state.awaitDrain--;
11238 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
11239 state.flowing = true;
11240 flow(src);
11241 }
11242 };
8b095871
IC
11243}
11244
9987f0c1
IC
11245Readable.prototype.unpipe = function (dest) {
11246 var state = this._readableState;
11247 var unpipeInfo = { hasUnpiped: false };
8b095871 11248
9987f0c1
IC
11249 // if we're not piping anywhere, then do nothing.
11250 if (state.pipesCount === 0) return this;
8b095871 11251
9987f0c1
IC
11252 // just one destination. most common case.
11253 if (state.pipesCount === 1) {
11254 // passed in one, but it's not the right one.
11255 if (dest && dest !== state.pipes) return this;
11256
11257 if (!dest) dest = state.pipes;
11258
11259 // got a match.
11260 state.pipes = null;
11261 state.pipesCount = 0;
11262 state.flowing = false;
11263 if (dest) dest.emit('unpipe', this, unpipeInfo);
11264 return this;
8b095871
IC
11265 }
11266
9987f0c1 11267 // slow case. multiple pipe destinations.
8b095871 11268
9987f0c1
IC
11269 if (!dest) {
11270 // remove all.
11271 var dests = state.pipes;
11272 var len = state.pipesCount;
11273 state.pipes = null;
11274 state.pipesCount = 0;
11275 state.flowing = false;
8b095871 11276
9987f0c1
IC
11277 for (var i = 0; i < len; i++) {
11278 dests[i].emit('unpipe', this, unpipeInfo);
11279 }return this;
8b095871 11280 }
8b095871 11281
9987f0c1
IC
11282 // try to find the right one.
11283 var index = indexOf(state.pipes, dest);
11284 if (index === -1) return this;
8b095871 11285
9987f0c1
IC
11286 state.pipes.splice(index, 1);
11287 state.pipesCount -= 1;
11288 if (state.pipesCount === 1) state.pipes = state.pipes[0];
8b095871 11289
9987f0c1 11290 dest.emit('unpipe', this, unpipeInfo);
8b095871 11291
9987f0c1
IC
11292 return this;
11293};
8b095871 11294
9987f0c1
IC
11295// set up data events if they are asked for
11296// Ensure readable listeners eventually get something
11297Readable.prototype.on = function (ev, fn) {
11298 var res = Stream.prototype.on.call(this, ev, fn);
11299
11300 if (ev === 'data') {
11301 // Start flowing on next tick if stream isn't explicitly paused
11302 if (this._readableState.flowing !== false) this.resume();
11303 } else if (ev === 'readable') {
11304 var state = this._readableState;
11305 if (!state.endEmitted && !state.readableListening) {
11306 state.readableListening = state.needReadable = true;
11307 state.emittedReadable = false;
11308 if (!state.reading) {
11309 processNextTick(nReadingNextTick, this);
11310 } else if (state.length) {
11311 emitReadable(this);
11312 }
11313 }
8b095871 11314 }
8b095871 11315
9987f0c1
IC
11316 return res;
11317};
11318Readable.prototype.addListener = Readable.prototype.on;
8b095871 11319
9987f0c1
IC
11320function nReadingNextTick(self) {
11321 debug('readable nexttick read 0');
11322 self.read(0);
8b095871
IC
11323}
11324
9987f0c1
IC
11325// pause() and resume() are remnants of the legacy readable stream API
11326// If the user uses them, then switch into old mode.
11327Readable.prototype.resume = function () {
11328 var state = this._readableState;
11329 if (!state.flowing) {
11330 debug('resume');
11331 state.flowing = true;
11332 resume(this, state);
11333 }
11334 return this;
11335};
11336
11337function resume(stream, state) {
11338 if (!state.resumeScheduled) {
11339 state.resumeScheduled = true;
11340 processNextTick(resume_, stream, state);
8b095871 11341 }
8b095871
IC
11342}
11343
9987f0c1
IC
11344function resume_(stream, state) {
11345 if (!state.reading) {
11346 debug('resume read 0');
11347 stream.read(0);
11348 }
11349
11350 state.resumeScheduled = false;
11351 state.awaitDrain = 0;
11352 stream.emit('resume');
11353 flow(stream);
11354 if (state.flowing && !state.reading) stream.read(0);
8b095871
IC
11355}
11356
9987f0c1
IC
11357Readable.prototype.pause = function () {
11358 debug('call pause flowing=%j', this._readableState.flowing);
11359 if (false !== this._readableState.flowing) {
11360 debug('pause');
11361 this._readableState.flowing = false;
11362 this.emit('pause');
11363 }
11364 return this;
11365};
11366
11367function flow(stream) {
11368 var state = stream._readableState;
11369 debug('flow', state.flowing);
11370 while (state.flowing && stream.read() !== null) {}
8b095871
IC
11371}
11372
9987f0c1
IC
11373// wrap an old-style stream as the async data source.
11374// This is *not* part of the readable stream interface.
11375// It is an ugly unfortunate mess of history.
11376Readable.prototype.wrap = function (stream) {
11377 var state = this._readableState;
11378 var paused = false;
8b095871 11379
9987f0c1
IC
11380 var self = this;
11381 stream.on('end', function () {
11382 debug('wrapped end');
11383 if (state.decoder && !state.ended) {
11384 var chunk = state.decoder.end();
11385 if (chunk && chunk.length) self.push(chunk);
11386 }
8b095871 11387
9987f0c1
IC
11388 self.push(null);
11389 });
8b095871 11390
9987f0c1
IC
11391 stream.on('data', function (chunk) {
11392 debug('wrapped data');
11393 if (state.decoder) chunk = state.decoder.write(chunk);
8b095871 11394
9987f0c1
IC
11395 // don't skip over falsy values in objectMode
11396 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
8b095871 11397
9987f0c1
IC
11398 var ret = self.push(chunk);
11399 if (!ret) {
11400 paused = true;
11401 stream.pause();
8b095871 11402 }
9987f0c1
IC
11403 });
11404
11405 // proxy all the other methods.
11406 // important when wrapping filters and duplexes.
11407 for (var i in stream) {
11408 if (this[i] === undefined && typeof stream[i] === 'function') {
11409 this[i] = function (method) {
11410 return function () {
11411 return stream[method].apply(stream, arguments);
11412 };
11413 }(i);
8b095871 11414 }
8b095871
IC
11415 }
11416
9987f0c1
IC
11417 // proxy certain important events.
11418 for (var n = 0; n < kProxyEvents.length; n++) {
11419 stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
11420 }
8b095871 11421
9987f0c1
IC
11422 // when we try to consume some more bytes, simply unpause the
11423 // underlying stream.
11424 self._read = function (n) {
11425 debug('wrapped _read', n);
11426 if (paused) {
11427 paused = false;
11428 stream.resume();
11429 }
11430 };
8b095871 11431
9987f0c1
IC
11432 return self;
11433};
8b095871 11434
9987f0c1
IC
11435// exposed for testing purposes only.
11436Readable._fromList = fromList;
8b095871 11437
9987f0c1
IC
11438// Pluck off n bytes from an array of buffers.
11439// Length is the combined lengths of all the buffers in the list.
11440// This function is designed to be inlinable, so please take care when making
11441// changes to the function body.
11442function fromList(n, state) {
11443 // nothing buffered
11444 if (state.length === 0) return null;
8b095871 11445
9987f0c1
IC
11446 var ret;
11447 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
11448 // read it all, truncate the list
11449 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
11450 state.buffer.clear();
8b095871 11451 } else {
9987f0c1
IC
11452 // read part of list
11453 ret = fromListPartial(n, state.buffer, state.decoder);
8b095871
IC
11454 }
11455
9987f0c1 11456 return ret;
8b095871
IC
11457}
11458
9987f0c1
IC
11459// Extracts only enough buffered data to satisfy the amount requested.
11460// This function is designed to be inlinable, so please take care when making
11461// changes to the function body.
11462function fromListPartial(n, list, hasStrings) {
11463 var ret;
11464 if (n < list.head.data.length) {
11465 // slice is the same for buffers and strings
11466 ret = list.head.data.slice(0, n);
11467 list.head.data = list.head.data.slice(n);
11468 } else if (n === list.head.data.length) {
11469 // first chunk is a perfect match
11470 ret = list.shift();
8b095871 11471 } else {
9987f0c1
IC
11472 // result spans more than one buffer
11473 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
8b095871 11474 }
9987f0c1 11475 return ret;
8b095871
IC
11476}
11477
9987f0c1
IC
11478// Copies a specified amount of characters from the list of buffered data
11479// chunks.
11480// This function is designed to be inlinable, so please take care when making
11481// changes to the function body.
11482function copyFromBufferString(n, list) {
11483 var p = list.head;
11484 var c = 1;
11485 var ret = p.data;
11486 n -= ret.length;
11487 while (p = p.next) {
11488 var str = p.data;
11489 var nb = n > str.length ? str.length : n;
11490 if (nb === str.length) ret += str;else ret += str.slice(0, n);
11491 n -= nb;
11492 if (n === 0) {
11493 if (nb === str.length) {
11494 ++c;
11495 if (p.next) list.head = p.next;else list.head = list.tail = null;
11496 } else {
11497 list.head = p;
11498 p.data = str.slice(nb);
11499 }
11500 break;
11501 }
11502 ++c;
8b095871 11503 }
9987f0c1
IC
11504 list.length -= c;
11505 return ret;
8b095871
IC
11506}
11507
9987f0c1
IC
11508// Copies a specified amount of bytes from the list of buffered data chunks.
11509// This function is designed to be inlinable, so please take care when making
11510// changes to the function body.
11511function copyFromBuffer(n, list) {
11512 var ret = Buffer.allocUnsafe(n);
11513 var p = list.head;
11514 var c = 1;
11515 p.data.copy(ret);
11516 n -= p.data.length;
11517 while (p = p.next) {
11518 var buf = p.data;
11519 var nb = n > buf.length ? buf.length : n;
11520 buf.copy(ret, ret.length - n, 0, nb);
11521 n -= nb;
11522 if (n === 0) {
11523 if (nb === buf.length) {
11524 ++c;
11525 if (p.next) list.head = p.next;else list.head = list.tail = null;
11526 } else {
11527 list.head = p;
11528 p.data = buf.slice(nb);
8b095871 11529 }
9987f0c1 11530 break;
8b095871 11531 }
9987f0c1 11532 ++c;
8b095871 11533 }
9987f0c1
IC
11534 list.length -= c;
11535 return ret;
8b095871
IC
11536}
11537
9987f0c1
IC
11538function endReadable(stream) {
11539 var state = stream._readableState;
8b095871 11540
9987f0c1
IC
11541 // If we get here before consuming all the bytes, then that is a
11542 // bug in node. Should never happen.
11543 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
8b095871 11544
9987f0c1
IC
11545 if (!state.endEmitted) {
11546 state.ended = true;
11547 processNextTick(endReadableNT, state, stream);
8b095871 11548 }
9987f0c1 11549}
8b095871 11550
9987f0c1
IC
11551function endReadableNT(state, stream) {
11552 // Check that we didn't get one last unshift.
11553 if (!state.endEmitted && state.length === 0) {
11554 state.endEmitted = true;
11555 stream.readable = false;
11556 stream.emit('end');
11557 }
8b095871
IC
11558}
11559
9987f0c1
IC
11560function forEach(xs, f) {
11561 for (var i = 0, l = xs.length; i < l; i++) {
11562 f(xs[i], i);
11563 }
8b095871
IC
11564}
11565
9987f0c1
IC
11566function indexOf(xs, x) {
11567 for (var i = 0, l = xs.length; i < l; i++) {
11568 if (xs[i] === x) return i;
8b095871 11569 }
9987f0c1 11570 return -1;
8b095871 11571}
9987f0c1
IC
11572}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11573},{"./_stream_duplex":14,"./internal/streams/BufferList":19,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"events":6,"inherits":8,"isarray":10,"process-nextick-args":11,"safe-buffer":26,"string_decoder/":28,"util":3}],17:[function(require,module,exports){
11574// Copyright Joyent, Inc. and other Node contributors.
11575//
11576// Permission is hereby granted, free of charge, to any person obtaining a
11577// copy of this software and associated documentation files (the
11578// "Software"), to deal in the Software without restriction, including
11579// without limitation the rights to use, copy, modify, merge, publish,
11580// distribute, sublicense, and/or sell copies of the Software, and to permit
11581// persons to whom the Software is furnished to do so, subject to the
11582// following conditions:
11583//
11584// The above copyright notice and this permission notice shall be included
11585// in all copies or substantial portions of the Software.
11586//
11587// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11588// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11589// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11590// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11591// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11592// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11593// USE OR OTHER DEALINGS IN THE SOFTWARE.
8b095871 11594
9987f0c1
IC
11595// a transform stream is a readable/writable stream where you do
11596// something with the data. Sometimes it's called a "filter",
11597// but that's not a great name for it, since that implies a thing where
11598// some bits pass through, and others are simply ignored. (That would
11599// be a valid example of a transform, of course.)
11600//
11601// While the output is causally related to the input, it's not a
11602// necessarily symmetric or synchronous transformation. For example,
11603// a zlib stream might take multiple plain-text writes(), and then
11604// emit a single compressed chunk some time in the future.
11605//
11606// Here's how this works:
11607//
11608// The Transform stream has all the aspects of the readable and writable
11609// stream classes. When you write(chunk), that calls _write(chunk,cb)
11610// internally, and returns false if there's a lot of pending writes
11611// buffered up. When you call read(), that calls _read(n) until
11612// there's enough pending readable data buffered up.
11613//
11614// In a transform stream, the written data is placed in a buffer. When
11615// _read(n) is called, it transforms the queued up data, calling the
11616// buffered _write cb's as it consumes chunks. If consuming a single
11617// written chunk would result in multiple output chunks, then the first
11618// outputted bit calls the readcb, and subsequent chunks just go into
11619// the read buffer, and will cause it to emit 'readable' if necessary.
11620//
11621// This way, back-pressure is actually determined by the reading side,
11622// since _read has to be called to start processing a new chunk. However,
11623// a pathological inflate type of transform can cause excessive buffering
11624// here. For example, imagine a stream where every byte of input is
11625// interpreted as an integer from 0-255, and then results in that many
11626// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
11627// 1kb of data being output. In this case, you could write a very small
11628// amount of input, and end up with a very large amount of output. In
11629// such a pathological inflating mechanism, there'd be no way to tell
11630// the system to stop doing the transform. A single 4MB write could
11631// cause the system to run out of memory.
11632//
11633// However, even in such a pathological case, only a single written chunk
11634// would be consumed, and then the rest would wait (un-transformed) until
11635// the results of the previous transformed chunk were consumed.
8b095871 11636
9987f0c1 11637'use strict';
8b095871 11638
9987f0c1 11639module.exports = Transform;
8b095871 11640
9987f0c1 11641var Duplex = require('./_stream_duplex');
8b095871 11642
9987f0c1
IC
11643/*<replacement>*/
11644var util = require('core-util-is');
11645util.inherits = require('inherits');
11646/*</replacement>*/
8b095871 11647
9987f0c1 11648util.inherits(Transform, Duplex);
8b095871 11649
9987f0c1
IC
11650function TransformState(stream) {
11651 this.afterTransform = function (er, data) {
11652 return afterTransform(stream, er, data);
11653 };
8b095871 11654
9987f0c1
IC
11655 this.needTransform = false;
11656 this.transforming = false;
11657 this.writecb = null;
11658 this.writechunk = null;
11659 this.writeencoding = null;
11660}
8b095871 11661
9987f0c1
IC
11662function afterTransform(stream, er, data) {
11663 var ts = stream._transformState;
11664 ts.transforming = false;
8b095871 11665
9987f0c1 11666 var cb = ts.writecb;
8b095871 11667
9987f0c1
IC
11668 if (!cb) {
11669 return stream.emit('error', new Error('write callback called multiple times'));
11670 }
8b095871 11671
9987f0c1
IC
11672 ts.writechunk = null;
11673 ts.writecb = null;
8b095871 11674
9987f0c1 11675 if (data !== null && data !== undefined) stream.push(data);
8b095871 11676
9987f0c1 11677 cb(er);
8b095871 11678
9987f0c1
IC
11679 var rs = stream._readableState;
11680 rs.reading = false;
11681 if (rs.needReadable || rs.length < rs.highWaterMark) {
11682 stream._read(rs.highWaterMark);
11683 }
11684}
8b095871 11685
9987f0c1
IC
11686function Transform(options) {
11687 if (!(this instanceof Transform)) return new Transform(options);
8b095871 11688
9987f0c1 11689 Duplex.call(this, options);
8b095871 11690
9987f0c1 11691 this._transformState = new TransformState(this);
8b095871 11692
9987f0c1 11693 var stream = this;
8b095871 11694
9987f0c1
IC
11695 // start out asking for a readable event once data is transformed.
11696 this._readableState.needReadable = true;
8b095871 11697
9987f0c1
IC
11698 // we have implemented the _read method, and done the other things
11699 // that Readable wants before the first _read call, so unset the
11700 // sync guard flag.
11701 this._readableState.sync = false;
8b095871 11702
9987f0c1
IC
11703 if (options) {
11704 if (typeof options.transform === 'function') this._transform = options.transform;
8b095871 11705
9987f0c1 11706 if (typeof options.flush === 'function') this._flush = options.flush;
8b095871 11707 }
8b095871 11708
9987f0c1
IC
11709 // When the writable side finishes, then flush out anything remaining.
11710 this.once('prefinish', function () {
11711 if (typeof this._flush === 'function') this._flush(function (er, data) {
11712 done(stream, er, data);
11713 });else done(stream);
11714 });
11715}
8b095871 11716
9987f0c1
IC
11717Transform.prototype.push = function (chunk, encoding) {
11718 this._transformState.needTransform = false;
11719 return Duplex.prototype.push.call(this, chunk, encoding);
11720};
8b095871 11721
9987f0c1
IC
11722// This is the part where you do stuff!
11723// override this function in implementation classes.
11724// 'chunk' is an input chunk.
11725//
11726// Call `push(newChunk)` to pass along transformed output
11727// to the readable side. You may call 'push' zero or more times.
11728//
11729// Call `cb(err)` when you are done with this chunk. If you pass
11730// an error, then that'll put the hurt on the whole operation. If you
11731// never call cb(), then you'll never get another chunk.
11732Transform.prototype._transform = function (chunk, encoding, cb) {
11733 throw new Error('_transform() is not implemented');
11734};
8b095871 11735
9987f0c1
IC
11736Transform.prototype._write = function (chunk, encoding, cb) {
11737 var ts = this._transformState;
11738 ts.writecb = cb;
11739 ts.writechunk = chunk;
11740 ts.writeencoding = encoding;
11741 if (!ts.transforming) {
11742 var rs = this._readableState;
11743 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
8b095871 11744 }
9987f0c1 11745};
8b095871 11746
9987f0c1
IC
11747// Doesn't matter what the args are here.
11748// _transform does all the work.
11749// That we got here means that the readable side wants more data.
11750Transform.prototype._read = function (n) {
11751 var ts = this._transformState;
8b095871 11752
9987f0c1
IC
11753 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
11754 ts.transforming = true;
11755 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
11756 } else {
11757 // mark that we need a transform, so that any data that comes in
11758 // will get processed, now that we've asked for it.
11759 ts.needTransform = true;
11760 }
11761};
8b095871 11762
9987f0c1
IC
11763Transform.prototype._destroy = function (err, cb) {
11764 var _this = this;
8b095871 11765
9987f0c1
IC
11766 Duplex.prototype._destroy.call(this, err, function (err2) {
11767 cb(err2);
11768 _this.emit('close');
11769 });
11770};
8b095871 11771
9987f0c1
IC
11772function done(stream, er, data) {
11773 if (er) return stream.emit('error', er);
8b095871 11774
9987f0c1 11775 if (data !== null && data !== undefined) stream.push(data);
8b095871 11776
9987f0c1
IC
11777 // if there's nothing in the write buffer, then that means
11778 // that nothing more will ever be provided
11779 var ws = stream._writableState;
11780 var ts = stream._transformState;
8b095871 11781
9987f0c1 11782 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
8b095871 11783
9987f0c1
IC
11784 if (ts.transforming) throw new Error('Calling transform done when still transforming');
11785
11786 return stream.push(null);
11787}
11788},{"./_stream_duplex":14,"core-util-is":5,"inherits":8}],18:[function(require,module,exports){
11789(function (process,global){
8b095871
IC
11790// Copyright Joyent, Inc. and other Node contributors.
11791//
11792// Permission is hereby granted, free of charge, to any person obtaining a
11793// copy of this software and associated documentation files (the
11794// "Software"), to deal in the Software without restriction, including
11795// without limitation the rights to use, copy, modify, merge, publish,
11796// distribute, sublicense, and/or sell copies of the Software, and to permit
11797// persons to whom the Software is furnished to do so, subject to the
11798// following conditions:
11799//
11800// The above copyright notice and this permission notice shall be included
11801// in all copies or substantial portions of the Software.
11802//
11803// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11804// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11805// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11806// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11807// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11808// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11809// USE OR OTHER DEALINGS IN THE SOFTWARE.
11810
9987f0c1
IC
11811// A bit simpler than readable streams.
11812// Implement an async ._write(chunk, encoding, cb), and it'll handle all
11813// the drain event emission and buffering.
11814
11815'use strict';
11816
11817/*<replacement>*/
11818
11819var processNextTick = require('process-nextick-args');
11820/*</replacement>*/
11821
11822module.exports = Writable;
11823
11824/* <replacement> */
11825function WriteReq(chunk, encoding, cb) {
11826 this.chunk = chunk;
11827 this.encoding = encoding;
11828 this.callback = cb;
11829 this.next = null;
8b095871 11830}
8b095871 11831
9987f0c1
IC
11832// It seems a linked list but it is not
11833// there will be only 2 of these for each stream
11834function CorkedRequest(state) {
11835 var _this = this;
8b095871 11836
9987f0c1
IC
11837 this.next = null;
11838 this.entry = null;
11839 this.finish = function () {
11840 onCorkedFinish(_this, state);
11841 };
11842}
11843/* </replacement> */
8b095871 11844
9987f0c1
IC
11845/*<replacement>*/
11846var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
11847/*</replacement>*/
8b095871 11848
9987f0c1
IC
11849/*<replacement>*/
11850var Duplex;
11851/*</replacement>*/
11852
11853Writable.WritableState = WritableState;
11854
11855/*<replacement>*/
11856var util = require('core-util-is');
11857util.inherits = require('inherits');
11858/*</replacement>*/
11859
11860/*<replacement>*/
11861var internalUtil = {
11862 deprecate: require('util-deprecate')
8b095871 11863};
9987f0c1 11864/*</replacement>*/
8b095871 11865
9987f0c1
IC
11866/*<replacement>*/
11867var Stream = require('./internal/streams/stream');
11868/*</replacement>*/
8b095871 11869
9987f0c1
IC
11870/*<replacement>*/
11871var Buffer = require('safe-buffer').Buffer;
11872var OurUint8Array = global.Uint8Array || function () {};
11873function _uint8ArrayToBuffer(chunk) {
11874 return Buffer.from(chunk);
11875}
11876function _isUint8Array(obj) {
11877 return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
11878}
11879/*</replacement>*/
8b095871 11880
9987f0c1 11881var destroyImpl = require('./internal/streams/destroy');
8b095871 11882
9987f0c1 11883util.inherits(Writable, Stream);
8b095871 11884
9987f0c1 11885function nop() {}
8b095871 11886
9987f0c1
IC
11887function WritableState(options, stream) {
11888 Duplex = Duplex || require('./_stream_duplex');
8b095871 11889
9987f0c1 11890 options = options || {};
8b095871 11891
9987f0c1
IC
11892 // object stream flag to indicate whether or not this stream
11893 // contains buffers or objects.
11894 this.objectMode = !!options.objectMode;
8b095871 11895
9987f0c1 11896 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
8b095871 11897
9987f0c1
IC
11898 // the point at which write() starts returning false
11899 // Note: 0 is a valid value, means that we always return false if
11900 // the entire buffer is not flushed immediately on write()
11901 var hwm = options.highWaterMark;
11902 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
11903 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
8b095871 11904
9987f0c1
IC
11905 // cast to ints.
11906 this.highWaterMark = Math.floor(this.highWaterMark);
8b095871 11907
9987f0c1
IC
11908 // if _final has been called
11909 this.finalCalled = false;
8b095871 11910
9987f0c1
IC
11911 // drain event flag.
11912 this.needDrain = false;
11913 // at the start of calling end()
11914 this.ending = false;
11915 // when end() has been called, and returned
11916 this.ended = false;
11917 // when 'finish' is emitted
11918 this.finished = false;
8b095871 11919
9987f0c1
IC
11920 // has it been destroyed
11921 this.destroyed = false;
8b095871 11922
9987f0c1
IC
11923 // should we decode strings into buffers before passing to _write?
11924 // this is here so that some node-core streams can optimize string
11925 // handling at a lower level.
11926 var noDecode = options.decodeStrings === false;
11927 this.decodeStrings = !noDecode;
8b095871 11928
9987f0c1
IC
11929 // Crypto is kind of old and crusty. Historically, its default string
11930 // encoding is 'binary' so we have to make this configurable.
11931 // Everything else in the universe uses 'utf8', though.
11932 this.defaultEncoding = options.defaultEncoding || 'utf8';
8b095871 11933
9987f0c1
IC
11934 // not an actual buffer we keep track of, but a measurement
11935 // of how much we're waiting to get pushed to some underlying
11936 // socket or file.
11937 this.length = 0;
8b095871 11938
9987f0c1
IC
11939 // a flag to see when we're in the middle of a write.
11940 this.writing = false;
8b095871 11941
9987f0c1
IC
11942 // when true all writes will be buffered until .uncork() call
11943 this.corked = 0;
8b095871 11944
9987f0c1
IC
11945 // a flag to be able to tell if the onwrite cb is called immediately,
11946 // or on a later tick. We set this to true at first, because any
11947 // actions that shouldn't happen until "later" should generally also
11948 // not happen before the first write call.
11949 this.sync = true;
8b095871 11950
9987f0c1
IC
11951 // a flag to know if we're processing previously buffered items, which
11952 // may call the _write() callback in the same tick, so that we don't
11953 // end up in an overlapped onwrite situation.
11954 this.bufferProcessing = false;
8b095871 11955
9987f0c1
IC
11956 // the callback that's passed to _write(chunk,cb)
11957 this.onwrite = function (er) {
11958 onwrite(stream, er);
11959 };
8b095871 11960
9987f0c1
IC
11961 // the callback that the user supplies to write(chunk,encoding,cb)
11962 this.writecb = null;
8b095871 11963
9987f0c1
IC
11964 // the amount that is being written when _write is called.
11965 this.writelen = 0;
8b095871 11966
9987f0c1
IC
11967 this.bufferedRequest = null;
11968 this.lastBufferedRequest = null;
8b095871 11969
9987f0c1
IC
11970 // number of pending user-supplied write callbacks
11971 // this must be 0 before 'finish' can be emitted
11972 this.pendingcb = 0;
8b095871 11973
9987f0c1
IC
11974 // emit prefinish if the only thing we're waiting for is _write cbs
11975 // This is relevant for synchronous Transform streams
11976 this.prefinished = false;
8b095871 11977
9987f0c1
IC
11978 // True if the error was already emitted and should not be thrown again
11979 this.errorEmitted = false;
8b095871 11980
9987f0c1
IC
11981 // count buffered requests
11982 this.bufferedRequestCount = 0;
8b095871 11983
9987f0c1
IC
11984 // allocate the first CorkedRequest, there is always
11985 // one allocated and free to use, and we maintain at most two
11986 this.corkedRequestsFree = new CorkedRequest(this);
11987}
8b095871 11988
9987f0c1
IC
11989WritableState.prototype.getBuffer = function getBuffer() {
11990 var current = this.bufferedRequest;
11991 var out = [];
11992 while (current) {
11993 out.push(current);
11994 current = current.next;
11995 }
11996 return out;
11997};
11998
11999(function () {
12000 try {
12001 Object.defineProperty(WritableState.prototype, 'buffer', {
12002 get: internalUtil.deprecate(function () {
12003 return this.getBuffer();
12004 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
12005 });
12006 } catch (_) {}
12007})();
12008
12009// Test _writableState for inheritance to account for Duplex streams,
12010// whose prototype chain only points to Readable.
12011var realHasInstance;
12012if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
12013 realHasInstance = Function.prototype[Symbol.hasInstance];
12014 Object.defineProperty(Writable, Symbol.hasInstance, {
12015 value: function (object) {
12016 if (realHasInstance.call(this, object)) return true;
12017
12018 return object && object._writableState instanceof WritableState;
8b095871 12019 }
9987f0c1
IC
12020 });
12021} else {
12022 realHasInstance = function (object) {
12023 return object instanceof this;
12024 };
12025}
8b095871 12026
9987f0c1
IC
12027function Writable(options) {
12028 Duplex = Duplex || require('./_stream_duplex');
12029
12030 // Writable ctor is applied to Duplexes, too.
12031 // `realHasInstance` is necessary because using plain `instanceof`
12032 // would return false, as no `_writableState` property is attached.
12033
12034 // Trying to use the custom `instanceof` for Writable here will also break the
12035 // Node.js LazyTransform implementation, which has a non-trivial getter for
12036 // `_writableState` that would lead to infinite recursion.
12037 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
12038 return new Writable(options);
8b095871
IC
12039 }
12040
9987f0c1
IC
12041 this._writableState = new WritableState(options, this);
12042
12043 // legacy.
12044 this.writable = true;
12045
12046 if (options) {
12047 if (typeof options.write === 'function') this._write = options.write;
12048
12049 if (typeof options.writev === 'function') this._writev = options.writev;
12050
12051 if (typeof options.destroy === 'function') this._destroy = options.destroy;
12052
12053 if (typeof options.final === 'function') this._final = options.final;
12054 }
12055
12056 Stream.call(this);
12057}
12058
12059// Otherwise people can pipe Writable streams, which is just wrong.
12060Writable.prototype.pipe = function () {
12061 this.emit('error', new Error('Cannot pipe, not readable'));
8b095871
IC
12062};
12063
9987f0c1
IC
12064function writeAfterEnd(stream, cb) {
12065 var er = new Error('write after end');
12066 // TODO: defer error events consistently everywhere, not just the cb
12067 stream.emit('error', er);
12068 processNextTick(cb, er);
12069}
8b095871 12070
9987f0c1
IC
12071// Checks that a user-supplied chunk is valid, especially for the particular
12072// mode the stream is in. Currently this means that `null` is never accepted
12073// and undefined/non-string values are only allowed in object mode.
12074function validChunk(stream, state, chunk, cb) {
12075 var valid = true;
12076 var er = false;
8b095871 12077
9987f0c1
IC
12078 if (chunk === null) {
12079 er = new TypeError('May not write null values to stream');
12080 } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
12081 er = new TypeError('Invalid non-string/buffer chunk');
12082 }
12083 if (er) {
12084 stream.emit('error', er);
12085 processNextTick(cb, er);
12086 valid = false;
8b095871 12087 }
9987f0c1
IC
12088 return valid;
12089}
8b095871 12090
9987f0c1
IC
12091Writable.prototype.write = function (chunk, encoding, cb) {
12092 var state = this._writableState;
12093 var ret = false;
12094 var isBuf = _isUint8Array(chunk) && !state.objectMode;
12095
12096 if (isBuf && !Buffer.isBuffer(chunk)) {
12097 chunk = _uint8ArrayToBuffer(chunk);
8b095871
IC
12098 }
12099
9987f0c1
IC
12100 if (typeof encoding === 'function') {
12101 cb = encoding;
12102 encoding = null;
12103 }
8b095871 12104
9987f0c1
IC
12105 if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
12106
12107 if (typeof cb !== 'function') cb = nop;
12108
12109 if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
12110 state.pendingcb++;
12111 ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
8b095871 12112 }
8b095871 12113
9987f0c1 12114 return ret;
8b095871
IC
12115};
12116
9987f0c1
IC
12117Writable.prototype.cork = function () {
12118 var state = this._writableState;
12119
12120 state.corked++;
8b095871
IC
12121};
12122
9987f0c1
IC
12123Writable.prototype.uncork = function () {
12124 var state = this._writableState;
12125
12126 if (state.corked) {
12127 state.corked--;
12128
12129 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
12130 }
8b095871
IC
12131};
12132
9987f0c1
IC
12133Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
12134 // node::ParseEncoding() requires lower case.
12135 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
12136 if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
12137 this._writableState.defaultEncoding = encoding;
12138 return this;
12139};
8b095871 12140
9987f0c1
IC
12141function decodeChunk(state, chunk, encoding) {
12142 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
12143 chunk = Buffer.from(chunk, encoding);
12144 }
12145 return chunk;
8b095871
IC
12146}
12147
9987f0c1
IC
12148// if we're already writing something, then just put this
12149// in the queue, and wait our turn. Otherwise, call _write
12150// If we return false, then we need a drain event, so set that flag.
12151function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
12152 if (!isBuf) {
12153 var newChunk = decodeChunk(state, chunk, encoding);
12154 if (chunk !== newChunk) {
12155 isBuf = true;
12156 encoding = 'buffer';
12157 chunk = newChunk;
12158 }
12159 }
12160 var len = state.objectMode ? 1 : chunk.length;
8b095871 12161
9987f0c1 12162 state.length += len;
8b095871 12163
9987f0c1
IC
12164 var ret = state.length < state.highWaterMark;
12165 // we must ensure that previous needDrain will not be reset to false.
12166 if (!ret) state.needDrain = true;
12167
12168 if (state.writing || state.corked) {
12169 var last = state.lastBufferedRequest;
12170 state.lastBufferedRequest = {
12171 chunk: chunk,
12172 encoding: encoding,
12173 isBuf: isBuf,
12174 callback: cb,
12175 next: null
12176 };
12177 if (last) {
12178 last.next = state.lastBufferedRequest;
12179 } else {
12180 state.bufferedRequest = state.lastBufferedRequest;
12181 }
12182 state.bufferedRequestCount += 1;
12183 } else {
12184 doWrite(stream, state, false, len, chunk, encoding, cb);
8b095871 12185 }
9987f0c1
IC
12186
12187 return ret;
8b095871
IC
12188}
12189
9987f0c1
IC
12190function doWrite(stream, state, writev, len, chunk, encoding, cb) {
12191 state.writelen = len;
12192 state.writecb = cb;
12193 state.writing = true;
12194 state.sync = true;
12195 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
12196 state.sync = false;
12197}
8b095871 12198
9987f0c1
IC
12199function onwriteError(stream, state, sync, er, cb) {
12200 --state.pendingcb;
8b095871 12201
9987f0c1
IC
12202 if (sync) {
12203 // defer the callback if we are being called synchronously
12204 // to avoid piling up things on the stack
12205 processNextTick(cb, er);
12206 // this can emit finish, and it will always happen
12207 // after error
12208 processNextTick(finishMaybe, stream, state);
12209 stream._writableState.errorEmitted = true;
12210 stream.emit('error', er);
12211 } else {
12212 // the caller expect this to happen before if
12213 // it is async
12214 cb(er);
12215 stream._writableState.errorEmitted = true;
12216 stream.emit('error', er);
12217 // this can emit finish, but finish must
12218 // always follow error
12219 finishMaybe(stream, state);
12220 }
12221}
8b095871 12222
9987f0c1
IC
12223function onwriteStateUpdate(state) {
12224 state.writing = false;
12225 state.writecb = null;
12226 state.length -= state.writelen;
12227 state.writelen = 0;
8b095871
IC
12228}
12229
9987f0c1
IC
12230function onwrite(stream, er) {
12231 var state = stream._writableState;
12232 var sync = state.sync;
12233 var cb = state.writecb;
8b095871 12234
9987f0c1 12235 onwriteStateUpdate(state);
8b095871 12236
9987f0c1
IC
12237 if (er) onwriteError(stream, state, sync, er, cb);else {
12238 // Check if we're actually ready to finish, but don't emit yet
12239 var finished = needFinish(state);
12240
12241 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
12242 clearBuffer(stream, state);
8b095871 12243 }
9987f0c1
IC
12244
12245 if (sync) {
12246 /*<replacement>*/
12247 asyncWrite(afterWrite, stream, state, finished, cb);
12248 /*</replacement>*/
12249 } else {
12250 afterWrite(stream, state, finished, cb);
8b095871 12251 }
9987f0c1
IC
12252 }
12253}
8b095871 12254
9987f0c1
IC
12255function afterWrite(stream, state, finished, cb) {
12256 if (!finished) onwriteDrain(stream, state);
12257 state.pendingcb--;
12258 cb();
12259 finishMaybe(stream, state);
8b095871 12260}
8b095871 12261
9987f0c1
IC
12262// Must force callback to be called on nextTick, so that we don't
12263// emit 'drain' before the write() consumer gets the 'false' return
12264// value, and has a chance to attach a 'drain' listener.
12265function onwriteDrain(stream, state) {
12266 if (state.length === 0 && state.needDrain) {
12267 state.needDrain = false;
12268 stream.emit('drain');
12269 }
12270}
8b095871 12271
9987f0c1
IC
12272// if there's something in the buffer waiting, then process it
12273function clearBuffer(stream, state) {
12274 state.bufferProcessing = true;
12275 var entry = state.bufferedRequest;
8b095871 12276
9987f0c1
IC
12277 if (stream._writev && entry && entry.next) {
12278 // Fast case, write everything using _writev()
12279 var l = state.bufferedRequestCount;
12280 var buffer = new Array(l);
12281 var holder = state.corkedRequestsFree;
12282 holder.entry = entry;
8b095871 12283
9987f0c1
IC
12284 var count = 0;
12285 var allBuffers = true;
12286 while (entry) {
12287 buffer[count] = entry;
12288 if (!entry.isBuf) allBuffers = false;
12289 entry = entry.next;
12290 count += 1;
12291 }
12292 buffer.allBuffers = allBuffers;
8b095871 12293
9987f0c1 12294 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
8b095871 12295
9987f0c1
IC
12296 // doWrite is almost always async, defer these to save a bit of time
12297 // as the hot path ends with doWrite
12298 state.pendingcb++;
12299 state.lastBufferedRequest = null;
12300 if (holder.next) {
12301 state.corkedRequestsFree = holder.next;
12302 holder.next = null;
12303 } else {
12304 state.corkedRequestsFree = new CorkedRequest(state);
12305 }
12306 } else {
12307 // Slow case, write chunks one-by-one
12308 while (entry) {
12309 var chunk = entry.chunk;
12310 var encoding = entry.encoding;
12311 var cb = entry.callback;
12312 var len = state.objectMode ? 1 : chunk.length;
8b095871 12313
9987f0c1
IC
12314 doWrite(stream, state, false, len, chunk, encoding, cb);
12315 entry = entry.next;
12316 // if we didn't call the onwrite immediately, then
12317 // it means that we need to wait until it does.
12318 // also, that means that the chunk and cb are currently
12319 // being processed, so move the buffer counter past them.
12320 if (state.writing) {
12321 break;
12322 }
12323 }
8b095871 12324
9987f0c1
IC
12325 if (entry === null) state.lastBufferedRequest = null;
12326 }
8b095871 12327
9987f0c1
IC
12328 state.bufferedRequestCount = 0;
12329 state.bufferedRequest = entry;
12330 state.bufferProcessing = false;
8b095871 12331}
8b095871 12332
9987f0c1
IC
12333Writable.prototype._write = function (chunk, encoding, cb) {
12334 cb(new Error('_write() is not implemented'));
12335};
8b095871 12336
9987f0c1 12337Writable.prototype._writev = null;
8b095871 12338
9987f0c1
IC
12339Writable.prototype.end = function (chunk, encoding, cb) {
12340 var state = this._writableState;
8b095871 12341
9987f0c1
IC
12342 if (typeof chunk === 'function') {
12343 cb = chunk;
12344 chunk = null;
12345 encoding = null;
12346 } else if (typeof encoding === 'function') {
12347 cb = encoding;
12348 encoding = null;
12349 }
8b095871 12350
9987f0c1 12351 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
8b095871 12352
9987f0c1
IC
12353 // .end() fully uncorks
12354 if (state.corked) {
12355 state.corked = 1;
12356 this.uncork();
12357 }
8b095871 12358
9987f0c1
IC
12359 // ignore unnecessary end() calls.
12360 if (!state.ending && !state.finished) endWritable(this, state, cb);
12361};
8b095871 12362
9987f0c1
IC
12363function needFinish(state) {
12364 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
12365}
12366function callFinal(stream, state) {
12367 stream._final(function (err) {
12368 state.pendingcb--;
12369 if (err) {
12370 stream.emit('error', err);
12371 }
12372 state.prefinished = true;
12373 stream.emit('prefinish');
12374 finishMaybe(stream, state);
12375 });
12376}
12377function prefinish(stream, state) {
12378 if (!state.prefinished && !state.finalCalled) {
12379 if (typeof stream._final === 'function') {
12380 state.pendingcb++;
12381 state.finalCalled = true;
12382 processNextTick(callFinal, stream, state);
12383 } else {
12384 state.prefinished = true;
12385 stream.emit('prefinish');
12386 }
12387 }
8b095871
IC
12388}
12389
9987f0c1
IC
12390function finishMaybe(stream, state) {
12391 var need = needFinish(state);
12392 if (need) {
12393 prefinish(stream, state);
12394 if (state.pendingcb === 0) {
12395 state.finished = true;
12396 stream.emit('finish');
12397 }
12398 }
12399 return need;
8b095871
IC
12400}
12401
9987f0c1
IC
12402function endWritable(stream, state, cb) {
12403 state.ending = true;
12404 finishMaybe(stream, state);
12405 if (cb) {
12406 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
8b095871 12407 }
9987f0c1
IC
12408 state.ended = true;
12409 stream.writable = false;
8b095871
IC
12410}
12411
9987f0c1
IC
12412function onCorkedFinish(corkReq, state, err) {
12413 var entry = corkReq.entry;
12414 corkReq.entry = null;
12415 while (entry) {
12416 var cb = entry.callback;
12417 state.pendingcb--;
12418 cb(err);
12419 entry = entry.next;
12420 }
12421 if (state.corkedRequestsFree) {
12422 state.corkedRequestsFree.next = corkReq;
12423 } else {
12424 state.corkedRequestsFree = corkReq;
12425 }
12426}
8b095871 12427
9987f0c1
IC
12428Object.defineProperty(Writable.prototype, 'destroyed', {
12429 get: function () {
12430 if (this._writableState === undefined) {
12431 return false;
12432 }
12433 return this._writableState.destroyed;
12434 },
12435 set: function (value) {
12436 // we ignore the value if the stream
12437 // has not been initialized yet
12438 if (!this._writableState) {
12439 return;
12440 }
8b095871 12441
9987f0c1
IC
12442 // backward compatibility, the user is explicitly
12443 // managing destroyed
12444 this._writableState.destroyed = value;
12445 }
12446});
8b095871 12447
9987f0c1
IC
12448Writable.prototype.destroy = destroyImpl.destroy;
12449Writable.prototype._undestroy = destroyImpl.undestroy;
12450Writable.prototype._destroy = function (err, cb) {
12451 this.end();
12452 cb(err);
12453};
12454}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
12455},{"./_stream_duplex":14,"./internal/streams/destroy":20,"./internal/streams/stream":21,"_process":12,"core-util-is":5,"inherits":8,"process-nextick-args":11,"safe-buffer":26,"util-deprecate":29}],19:[function(require,module,exports){
12456'use strict';
8b095871
IC
12457
12458/*<replacement>*/
8b095871 12459
9987f0c1 12460function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8b095871 12461
9987f0c1
IC
12462var Buffer = require('safe-buffer').Buffer;
12463/*</replacement>*/
8b095871 12464
9987f0c1
IC
12465function copyBuffer(src, target, offset) {
12466 src.copy(target, offset);
8b095871
IC
12467}
12468
9987f0c1
IC
12469module.exports = function () {
12470 function BufferList() {
12471 _classCallCheck(this, BufferList);
8b095871 12472
9987f0c1
IC
12473 this.head = null;
12474 this.tail = null;
12475 this.length = 0;
12476 }
8b095871 12477
9987f0c1
IC
12478 BufferList.prototype.push = function push(v) {
12479 var entry = { data: v, next: null };
12480 if (this.length > 0) this.tail.next = entry;else this.head = entry;
12481 this.tail = entry;
12482 ++this.length;
12483 };
8b095871 12484
9987f0c1
IC
12485 BufferList.prototype.unshift = function unshift(v) {
12486 var entry = { data: v, next: this.head };
12487 if (this.length === 0) this.tail = entry;
12488 this.head = entry;
12489 ++this.length;
12490 };
8b095871 12491
9987f0c1
IC
12492 BufferList.prototype.shift = function shift() {
12493 if (this.length === 0) return;
12494 var ret = this.head.data;
12495 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
12496 --this.length;
12497 return ret;
12498 };
8b095871 12499
9987f0c1
IC
12500 BufferList.prototype.clear = function clear() {
12501 this.head = this.tail = null;
12502 this.length = 0;
12503 };
8b095871 12504
9987f0c1
IC
12505 BufferList.prototype.join = function join(s) {
12506 if (this.length === 0) return '';
12507 var p = this.head;
12508 var ret = '' + p.data;
12509 while (p = p.next) {
12510 ret += s + p.data;
12511 }return ret;
12512 };
8b095871 12513
9987f0c1
IC
12514 BufferList.prototype.concat = function concat(n) {
12515 if (this.length === 0) return Buffer.alloc(0);
12516 if (this.length === 1) return this.head.data;
12517 var ret = Buffer.allocUnsafe(n >>> 0);
12518 var p = this.head;
12519 var i = 0;
12520 while (p) {
12521 copyBuffer(p.data, ret, i);
12522 i += p.data.length;
12523 p = p.next;
12524 }
12525 return ret;
12526 };
8b095871 12527
9987f0c1
IC
12528 return BufferList;
12529}();
12530},{"safe-buffer":26}],20:[function(require,module,exports){
12531'use strict';
8b095871
IC
12532
12533/*<replacement>*/
9987f0c1
IC
12534
12535var processNextTick = require('process-nextick-args');
8b095871
IC
12536/*</replacement>*/
12537
9987f0c1
IC
12538// undocumented cb() API, needed for core, not for public API
12539function destroy(err, cb) {
12540 var _this = this;
8b095871 12541
9987f0c1
IC
12542 var readableDestroyed = this._readableState && this._readableState.destroyed;
12543 var writableDestroyed = this._writableState && this._writableState.destroyed;
8b095871 12544
9987f0c1
IC
12545 if (readableDestroyed || writableDestroyed) {
12546 if (cb) {
12547 cb(err);
12548 } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
12549 processNextTick(emitErrorNT, this, err);
12550 }
12551 return;
12552 }
8b095871 12553
9987f0c1
IC
12554 // we set destroyed to true before firing error callbacks in order
12555 // to make it re-entrance safe in case destroy() is called within callbacks
8b095871 12556
9987f0c1
IC
12557 if (this._readableState) {
12558 this._readableState.destroyed = true;
12559 }
8b095871 12560
9987f0c1
IC
12561 // if this is a duplex stream mark the writable part as destroyed as well
12562 if (this._writableState) {
12563 this._writableState.destroyed = true;
12564 }
8b095871 12565
9987f0c1
IC
12566 this._destroy(err || null, function (err) {
12567 if (!cb && err) {
12568 processNextTick(emitErrorNT, _this, err);
12569 if (_this._writableState) {
12570 _this._writableState.errorEmitted = true;
12571 }
12572 } else if (cb) {
12573 cb(err);
12574 }
12575 });
12576}
8b095871 12577
9987f0c1
IC
12578function undestroy() {
12579 if (this._readableState) {
12580 this._readableState.destroyed = false;
12581 this._readableState.reading = false;
12582 this._readableState.ended = false;
12583 this._readableState.endEmitted = false;
12584 }
8b095871 12585
9987f0c1
IC
12586 if (this._writableState) {
12587 this._writableState.destroyed = false;
12588 this._writableState.ended = false;
12589 this._writableState.ending = false;
12590 this._writableState.finished = false;
12591 this._writableState.errorEmitted = false;
12592 }
12593}
8b095871 12594
9987f0c1
IC
12595function emitErrorNT(self, err) {
12596 self.emit('error', err);
12597}
8b095871 12598
9987f0c1
IC
12599module.exports = {
12600 destroy: destroy,
12601 undestroy: undestroy
12602};
12603},{"process-nextick-args":11}],21:[function(require,module,exports){
12604module.exports = require('events').EventEmitter;
8b095871 12605
9987f0c1
IC
12606},{"events":6}],22:[function(require,module,exports){
12607module.exports = require('./readable').PassThrough
8b095871 12608
9987f0c1
IC
12609},{"./readable":23}],23:[function(require,module,exports){
12610exports = module.exports = require('./lib/_stream_readable.js');
12611exports.Stream = exports;
12612exports.Readable = exports;
12613exports.Writable = require('./lib/_stream_writable.js');
12614exports.Duplex = require('./lib/_stream_duplex.js');
12615exports.Transform = require('./lib/_stream_transform.js');
12616exports.PassThrough = require('./lib/_stream_passthrough.js');
8b095871 12617
9987f0c1
IC
12618},{"./lib/_stream_duplex.js":14,"./lib/_stream_passthrough.js":15,"./lib/_stream_readable.js":16,"./lib/_stream_transform.js":17,"./lib/_stream_writable.js":18}],24:[function(require,module,exports){
12619module.exports = require('./readable').Transform
8b095871 12620
9987f0c1
IC
12621},{"./readable":23}],25:[function(require,module,exports){
12622module.exports = require('./lib/_stream_writable.js');
8b095871 12623
9987f0c1
IC
12624},{"./lib/_stream_writable.js":18}],26:[function(require,module,exports){
12625/* eslint-disable node/no-deprecated-api */
12626var buffer = require('buffer')
12627var Buffer = buffer.Buffer
8b095871 12628
9987f0c1
IC
12629// alternative to using Object.keys for old browsers
12630function copyProps (src, dst) {
12631 for (var key in src) {
12632 dst[key] = src[key]
12633 }
12634}
12635if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12636 module.exports = buffer
12637} else {
12638 // Copy properties from require('buffer')
12639 copyProps(buffer, exports)
12640 exports.Buffer = SafeBuffer
12641}
8b095871 12642
9987f0c1
IC
12643function SafeBuffer (arg, encodingOrOffset, length) {
12644 return Buffer(arg, encodingOrOffset, length)
12645}
8b095871 12646
9987f0c1
IC
12647// Copy static methods from Buffer
12648copyProps(Buffer, SafeBuffer)
8b095871 12649
9987f0c1
IC
12650SafeBuffer.from = function (arg, encodingOrOffset, length) {
12651 if (typeof arg === 'number') {
12652 throw new TypeError('Argument must not be a number')
8b095871 12653 }
9987f0c1 12654 return Buffer(arg, encodingOrOffset, length)
8b095871
IC
12655}
12656
9987f0c1
IC
12657SafeBuffer.alloc = function (size, fill, encoding) {
12658 if (typeof size !== 'number') {
12659 throw new TypeError('Argument must be a number')
12660 }
12661 var buf = Buffer(size)
12662 if (fill !== undefined) {
12663 if (typeof encoding === 'string') {
12664 buf.fill(fill, encoding)
12665 } else {
12666 buf.fill(fill)
12667 }
12668 } else {
12669 buf.fill(0)
12670 }
12671 return buf
12672}
8b095871 12673
9987f0c1
IC
12674SafeBuffer.allocUnsafe = function (size) {
12675 if (typeof size !== 'number') {
12676 throw new TypeError('Argument must be a number')
12677 }
12678 return Buffer(size)
12679}
8b095871 12680
9987f0c1
IC
12681SafeBuffer.allocUnsafeSlow = function (size) {
12682 if (typeof size !== 'number') {
12683 throw new TypeError('Argument must be a number')
12684 }
12685 return buffer.SlowBuffer(size)
12686}
12687
12688},{"buffer":4}],27:[function(require,module,exports){
12689// Copyright Joyent, Inc. and other Node contributors.
12690//
12691// Permission is hereby granted, free of charge, to any person obtaining a
12692// copy of this software and associated documentation files (the
12693// "Software"), to deal in the Software without restriction, including
12694// without limitation the rights to use, copy, modify, merge, publish,
12695// distribute, sublicense, and/or sell copies of the Software, and to permit
12696// persons to whom the Software is furnished to do so, subject to the
12697// following conditions:
12698//
12699// The above copyright notice and this permission notice shall be included
12700// in all copies or substantial portions of the Software.
12701//
12702// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12703// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12704// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12705// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12706// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12707// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12708// USE OR OTHER DEALINGS IN THE SOFTWARE.
8b095871 12709
9987f0c1 12710module.exports = Stream;
8b095871 12711
9987f0c1
IC
12712var EE = require('events').EventEmitter;
12713var inherits = require('inherits');
8b095871 12714
9987f0c1
IC
12715inherits(Stream, EE);
12716Stream.Readable = require('readable-stream/readable.js');
12717Stream.Writable = require('readable-stream/writable.js');
12718Stream.Duplex = require('readable-stream/duplex.js');
12719Stream.Transform = require('readable-stream/transform.js');
12720Stream.PassThrough = require('readable-stream/passthrough.js');
8b095871 12721
9987f0c1
IC
12722// Backwards-compat with node 0.4.x
12723Stream.Stream = Stream;
8b095871 12724
8b095871 12725
8b095871 12726
9987f0c1
IC
12727// old-style streams. Note that the pipe method (the only relevant
12728// part of this class) is overridden in the Readable class.
8b095871 12729
9987f0c1
IC
12730function Stream() {
12731 EE.call(this);
12732}
8b095871 12733
9987f0c1
IC
12734Stream.prototype.pipe = function(dest, options) {
12735 var source = this;
8b095871 12736
9987f0c1
IC
12737 function ondata(chunk) {
12738 if (dest.writable) {
12739 if (false === dest.write(chunk) && source.pause) {
12740 source.pause();
8b095871 12741 }
8b095871 12742 }
8b095871
IC
12743 }
12744
9987f0c1 12745 source.on('data', ondata);
8b095871 12746
9987f0c1
IC
12747 function ondrain() {
12748 if (source.readable && source.resume) {
12749 source.resume();
12750 }
12751 }
8b095871 12752
9987f0c1 12753 dest.on('drain', ondrain);
8b095871 12754
9987f0c1
IC
12755 // If the 'end' option is not supplied, dest.end() will be called when
12756 // source gets the 'end' or 'close' events. Only dest.end() once.
12757 if (!dest._isStdio && (!options || options.end !== false)) {
12758 source.on('end', onend);
12759 source.on('close', onclose);
12760 }
8b095871 12761
9987f0c1
IC
12762 var didOnEnd = false;
12763 function onend() {
12764 if (didOnEnd) return;
12765 didOnEnd = true;
8b095871 12766
9987f0c1 12767 dest.end();
8b095871 12768 }
8b095871 12769
8b095871 12770
9987f0c1
IC
12771 function onclose() {
12772 if (didOnEnd) return;
12773 didOnEnd = true;
8b095871 12774
9987f0c1 12775 if (typeof dest.destroy === 'function') dest.destroy();
8b095871
IC
12776 }
12777
9987f0c1
IC
12778 // don't leave dangling pipes when there are errors.
12779 function onerror(er) {
12780 cleanup();
12781 if (EE.listenerCount(this, 'error') === 0) {
12782 throw er; // Unhandled stream error in pipe.
12783 }
8b095871
IC
12784 }
12785
9987f0c1
IC
12786 source.on('error', onerror);
12787 dest.on('error', onerror);
8b095871 12788
9987f0c1
IC
12789 // remove all the event listeners that were added.
12790 function cleanup() {
12791 source.removeListener('data', ondata);
12792 dest.removeListener('drain', ondrain);
8b095871 12793
9987f0c1
IC
12794 source.removeListener('end', onend);
12795 source.removeListener('close', onclose);
8b095871 12796
9987f0c1
IC
12797 source.removeListener('error', onerror);
12798 dest.removeListener('error', onerror);
8b095871 12799
9987f0c1
IC
12800 source.removeListener('end', cleanup);
12801 source.removeListener('close', cleanup);
8b095871 12802
9987f0c1 12803 dest.removeListener('close', cleanup);
8b095871
IC
12804 }
12805
9987f0c1
IC
12806 source.on('end', cleanup);
12807 source.on('close', cleanup);
8b095871 12808
9987f0c1 12809 dest.on('close', cleanup);
8b095871 12810
9987f0c1 12811 dest.emit('pipe', source);
8b095871 12812
9987f0c1
IC
12813 // Allow for unix-like usage: A.pipe(B).pipe(C)
12814 return dest;
12815};
8b095871 12816
9987f0c1
IC
12817},{"events":6,"inherits":8,"readable-stream/duplex.js":13,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],28:[function(require,module,exports){
12818'use strict';
8b095871 12819
9987f0c1 12820var Buffer = require('safe-buffer').Buffer;
8b095871 12821
9987f0c1
IC
12822var isEncoding = Buffer.isEncoding || function (encoding) {
12823 encoding = '' + encoding;
12824 switch (encoding && encoding.toLowerCase()) {
12825 case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
12826 return true;
12827 default:
12828 return false;
12829 }
12830};
8b095871 12831
9987f0c1
IC
12832function _normalizeEncoding(enc) {
12833 if (!enc) return 'utf8';
12834 var retried;
12835 while (true) {
12836 switch (enc) {
12837 case 'utf8':
12838 case 'utf-8':
12839 return 'utf8';
12840 case 'ucs2':
12841 case 'ucs-2':
12842 case 'utf16le':
12843 case 'utf-16le':
12844 return 'utf16le';
12845 case 'latin1':
12846 case 'binary':
12847 return 'latin1';
12848 case 'base64':
12849 case 'ascii':
12850 case 'hex':
12851 return enc;
12852 default:
12853 if (retried) return; // undefined
12854 enc = ('' + enc).toLowerCase();
12855 retried = true;
12856 }
8b095871 12857 }
9987f0c1 12858};
8b095871 12859
9987f0c1
IC
12860// Do not cache `Buffer.isEncoding` when checking encoding names as some
12861// modules monkey-patch it to support additional encodings
12862function normalizeEncoding(enc) {
12863 var nenc = _normalizeEncoding(enc);
12864 if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
12865 return nenc || enc;
12866}
8b095871 12867
9987f0c1
IC
12868// StringDecoder provides an interface for efficiently splitting a series of
12869// buffers into a series of JS strings without breaking apart multi-byte
12870// characters.
12871exports.StringDecoder = StringDecoder;
12872function StringDecoder(encoding) {
12873 this.encoding = normalizeEncoding(encoding);
12874 var nb;
12875 switch (this.encoding) {
12876 case 'utf16le':
12877 this.text = utf16Text;
12878 this.end = utf16End;
12879 nb = 4;
12880 break;
12881 case 'utf8':
12882 this.fillLast = utf8FillLast;
12883 nb = 4;
12884 break;
12885 case 'base64':
12886 this.text = base64Text;
12887 this.end = base64End;
12888 nb = 3;
12889 break;
12890 default:
12891 this.write = simpleWrite;
12892 this.end = simpleEnd;
12893 return;
12894 }
12895 this.lastNeed = 0;
12896 this.lastTotal = 0;
12897 this.lastChar = Buffer.allocUnsafe(nb);
12898}
8b095871 12899
9987f0c1
IC
12900StringDecoder.prototype.write = function (buf) {
12901 if (buf.length === 0) return '';
12902 var r;
12903 var i;
12904 if (this.lastNeed) {
12905 r = this.fillLast(buf);
12906 if (r === undefined) return '';
12907 i = this.lastNeed;
12908 this.lastNeed = 0;
12909 } else {
12910 i = 0;
12911 }
12912 if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
12913 return r || '';
12914};
8b095871 12915
9987f0c1 12916StringDecoder.prototype.end = utf8End;
8b095871 12917
9987f0c1
IC
12918// Returns only complete characters in a Buffer
12919StringDecoder.prototype.text = utf8Text;
8b095871 12920
9987f0c1
IC
12921// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
12922StringDecoder.prototype.fillLast = function (buf) {
12923 if (this.lastNeed <= buf.length) {
12924 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
12925 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
8b095871 12926 }
9987f0c1
IC
12927 buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
12928 this.lastNeed -= buf.length;
12929};
8b095871 12930
9987f0c1
IC
12931// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
12932// continuation byte.
12933function utf8CheckByte(byte) {
12934 if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
12935 return -1;
12936}
8b095871 12937
9987f0c1
IC
12938// Checks at most 3 bytes at the end of a Buffer in order to detect an
12939// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
12940// needed to complete the UTF-8 character (if applicable) are returned.
12941function utf8CheckIncomplete(self, buf, i) {
12942 var j = buf.length - 1;
12943 if (j < i) return 0;
12944 var nb = utf8CheckByte(buf[j]);
12945 if (nb >= 0) {
12946 if (nb > 0) self.lastNeed = nb - 1;
12947 return nb;
12948 }
12949 if (--j < i) return 0;
12950 nb = utf8CheckByte(buf[j]);
12951 if (nb >= 0) {
12952 if (nb > 0) self.lastNeed = nb - 2;
12953 return nb;
12954 }
12955 if (--j < i) return 0;
12956 nb = utf8CheckByte(buf[j]);
12957 if (nb >= 0) {
12958 if (nb > 0) {
12959 if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
8b095871 12960 }
9987f0c1 12961 return nb;
8b095871 12962 }
9987f0c1
IC
12963 return 0;
12964}
8b095871 12965
9987f0c1
IC
12966// Validates as many continuation bytes for a multi-byte UTF-8 character as
12967// needed or are available. If we see a non-continuation byte where we expect
12968// one, we "replace" the validated continuation bytes we've seen so far with
12969// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
12970// behavior. The continuation byte check is included three times in the case
12971// where all of the continuation bytes for a character exist in the same buffer.
12972// It is also done this way as a slight performance increase instead of using a
12973// loop.
12974function utf8CheckExtraBytes(self, buf, p) {
12975 if ((buf[0] & 0xC0) !== 0x80) {
12976 self.lastNeed = 0;
12977 return '\ufffd'.repeat(p);
12978 }
12979 if (self.lastNeed > 1 && buf.length > 1) {
12980 if ((buf[1] & 0xC0) !== 0x80) {
12981 self.lastNeed = 1;
12982 return '\ufffd'.repeat(p + 1);
12983 }
12984 if (self.lastNeed > 2 && buf.length > 2) {
12985 if ((buf[2] & 0xC0) !== 0x80) {
12986 self.lastNeed = 2;
12987 return '\ufffd'.repeat(p + 2);
12988 }
12989 }
12990 }
8b095871
IC
12991}
12992
9987f0c1
IC
12993// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
12994function utf8FillLast(buf) {
12995 var p = this.lastTotal - this.lastNeed;
12996 var r = utf8CheckExtraBytes(this, buf, p);
12997 if (r !== undefined) return r;
12998 if (this.lastNeed <= buf.length) {
12999 buf.copy(this.lastChar, p, 0, this.lastNeed);
13000 return this.lastChar.toString(this.encoding, 0, this.lastTotal);
8b095871 13001 }
9987f0c1
IC
13002 buf.copy(this.lastChar, p, 0, buf.length);
13003 this.lastNeed -= buf.length;
8b095871
IC
13004}
13005
9987f0c1
IC
13006// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
13007// partial character, the character's bytes are buffered until the required
13008// number of bytes are available.
13009function utf8Text(buf, i) {
13010 var total = utf8CheckIncomplete(this, buf, i);
13011 if (!this.lastNeed) return buf.toString('utf8', i);
13012 this.lastTotal = total;
13013 var end = buf.length - (total - this.lastNeed);
13014 buf.copy(this.lastChar, 0, end);
13015 return buf.toString('utf8', i, end);
8b095871
IC
13016}
13017
9987f0c1
IC
13018// For UTF-8, a replacement character for each buffered byte of a (partial)
13019// character needs to be added to the output.
13020function utf8End(buf) {
13021 var r = buf && buf.length ? this.write(buf) : '';
13022 if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
13023 return r;
13024}
8b095871 13025
9987f0c1
IC
13026// UTF-16LE typically needs two bytes per character, but even if we have an even
13027// number of bytes available, we need to check if we end on a leading/high
13028// surrogate. In that case, we need to wait for the next two bytes in order to
13029// decode the last character properly.
13030function utf16Text(buf, i) {
13031 if ((buf.length - i) % 2 === 0) {
13032 var r = buf.toString('utf16le', i);
13033 if (r) {
13034 var c = r.charCodeAt(r.length - 1);
13035 if (c >= 0xD800 && c <= 0xDBFF) {
13036 this.lastNeed = 2;
13037 this.lastTotal = 4;
13038 this.lastChar[0] = buf[buf.length - 2];
13039 this.lastChar[1] = buf[buf.length - 1];
13040 return r.slice(0, -1);
13041 }
13042 }
13043 return r;
8b095871 13044 }
9987f0c1
IC
13045 this.lastNeed = 1;
13046 this.lastTotal = 2;
13047 this.lastChar[0] = buf[buf.length - 1];
13048 return buf.toString('utf16le', i, buf.length - 1);
8b095871
IC
13049}
13050
9987f0c1
IC
13051// For UTF-16LE we do not explicitly append special replacement characters if we
13052// end on a partial character, we simply let v8 handle that.
13053function utf16End(buf) {
13054 var r = buf && buf.length ? this.write(buf) : '';
13055 if (this.lastNeed) {
13056 var end = this.lastTotal - this.lastNeed;
13057 return r + this.lastChar.toString('utf16le', 0, end);
8b095871 13058 }
9987f0c1 13059 return r;
8b095871
IC
13060}
13061
9987f0c1
IC
13062function base64Text(buf, i) {
13063 var n = (buf.length - i) % 3;
13064 if (n === 0) return buf.toString('base64', i);
13065 this.lastNeed = 3 - n;
13066 this.lastTotal = 3;
13067 if (n === 1) {
13068 this.lastChar[0] = buf[buf.length - 1];
13069 } else {
13070 this.lastChar[0] = buf[buf.length - 2];
13071 this.lastChar[1] = buf[buf.length - 1];
13072 }
13073 return buf.toString('base64', i, buf.length - n);
13074}
8b095871 13075
9987f0c1
IC
13076function base64End(buf) {
13077 var r = buf && buf.length ? this.write(buf) : '';
13078 if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
13079 return r;
13080}
8b095871 13081
9987f0c1
IC
13082// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
13083function simpleWrite(buf) {
13084 return buf.toString(this.encoding);
13085}
8b095871 13086
9987f0c1
IC
13087function simpleEnd(buf) {
13088 return buf && buf.length ? this.write(buf) : '';
13089}
13090},{"safe-buffer":26}],29:[function(require,module,exports){
13091(function (global){
8b095871 13092
9987f0c1
IC
13093/**
13094 * Module exports.
13095 */
8b095871 13096
9987f0c1
IC
13097module.exports = deprecate;
13098
13099/**
13100 * Mark that a method should not be used.
13101 * Returns a modified function which warns once by default.
13102 *
13103 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13104 *
13105 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
13106 * will throw an Error when invoked.
13107 *
13108 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
13109 * will invoke `console.trace()` instead of `console.error()`.
13110 *
13111 * @param {Function} fn - the function to deprecate
13112 * @param {String} msg - the string to print to the console when `fn` is invoked
13113 * @returns {Function} a new "deprecated" version of `fn`
13114 * @api public
13115 */
13116
13117function deprecate (fn, msg) {
13118 if (config('noDeprecation')) {
13119 return fn;
8b095871
IC
13120 }
13121
9987f0c1
IC
13122 var warned = false;
13123 function deprecated() {
13124 if (!warned) {
13125 if (config('throwDeprecation')) {
13126 throw new Error(msg);
13127 } else if (config('traceDeprecation')) {
13128 console.trace(msg);
13129 } else {
13130 console.warn(msg);
13131 }
13132 warned = true;
13133 }
13134 return fn.apply(this, arguments);
8b095871
IC
13135 }
13136
9987f0c1
IC
13137 return deprecated;
13138}
8b095871 13139
9987f0c1
IC
13140/**
13141 * Checks `localStorage` for boolean values for the given `name`.
13142 *
13143 * @param {String} name
13144 * @returns {Boolean}
13145 * @api private
13146 */
8b095871 13147
9987f0c1
IC
13148function config (name) {
13149 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
13150 try {
13151 if (!global.localStorage) return false;
13152 } catch (_) {
13153 return false;
8b095871 13154 }
9987f0c1
IC
13155 var val = global.localStorage[name];
13156 if (null == val) return false;
13157 return String(val).toLowerCase() === 'true';
13158}
8b095871 13159
9987f0c1
IC
13160}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13161},{}],30:[function(require,module,exports){
13162arguments[4][8][0].apply(exports,arguments)
13163},{"dup":8}],31:[function(require,module,exports){
13164module.exports = function isBuffer(arg) {
13165 return arg && typeof arg === 'object'
13166 && typeof arg.copy === 'function'
13167 && typeof arg.fill === 'function'
13168 && typeof arg.readUInt8 === 'function';
13169}
13170},{}],32:[function(require,module,exports){
13171(function (process,global){
13172// Copyright Joyent, Inc. and other Node contributors.
13173//
13174// Permission is hereby granted, free of charge, to any person obtaining a
13175// copy of this software and associated documentation files (the
13176// "Software"), to deal in the Software without restriction, including
13177// without limitation the rights to use, copy, modify, merge, publish,
13178// distribute, sublicense, and/or sell copies of the Software, and to permit
13179// persons to whom the Software is furnished to do so, subject to the
13180// following conditions:
13181//
13182// The above copyright notice and this permission notice shall be included
13183// in all copies or substantial portions of the Software.
13184//
13185// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13186// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13187// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13188// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13189// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13190// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13191// USE OR OTHER DEALINGS IN THE SOFTWARE.
13192
13193var formatRegExp = /%[sdj%]/g;
13194exports.format = function(f) {
13195 if (!isString(f)) {
13196 var objects = [];
13197 for (var i = 0; i < arguments.length; i++) {
13198 objects.push(inspect(arguments[i]));
8b095871 13199 }
9987f0c1 13200 return objects.join(' ');
8b095871
IC
13201 }
13202
9987f0c1
IC
13203 var i = 1;
13204 var args = arguments;
13205 var len = args.length;
13206 var str = String(f).replace(formatRegExp, function(x) {
13207 if (x === '%%') return '%';
13208 if (i >= len) return x;
13209 switch (x) {
13210 case '%s': return String(args[i++]);
13211 case '%d': return Number(args[i++]);
13212 case '%j':
13213 try {
13214 return JSON.stringify(args[i++]);
13215 } catch (_) {
13216 return '[Circular]';
13217 }
13218 default:
13219 return x;
13220 }
13221 });
13222 for (var x = args[i]; i < len; x = args[++i]) {
13223 if (isNull(x) || !isObject(x)) {
13224 str += ' ' + x;
13225 } else {
13226 str += ' ' + inspect(x);
13227 }
13228 }
13229 return str;
13230};
8b095871
IC
13231
13232
9987f0c1
IC
13233// Mark that a method should not be used.
13234// Returns a modified function which warns once by default.
13235// If --no-deprecation is set, then it is a no-op.
13236exports.deprecate = function(fn, msg) {
13237 // Allow for deprecating things in the process of starting up.
13238 if (isUndefined(global.process)) {
13239 return function() {
13240 return exports.deprecate(fn, msg).apply(this, arguments);
13241 };
8b095871 13242 }
8b095871 13243
9987f0c1
IC
13244 if (process.noDeprecation === true) {
13245 return fn;
8b095871
IC
13246 }
13247
9987f0c1
IC
13248 var warned = false;
13249 function deprecated() {
13250 if (!warned) {
13251 if (process.throwDeprecation) {
13252 throw new Error(msg);
13253 } else if (process.traceDeprecation) {
13254 console.trace(msg);
13255 } else {
13256 console.error(msg);
13257 }
13258 warned = true;
13259 }
13260 return fn.apply(this, arguments);
8b095871
IC
13261 }
13262
9987f0c1 13263 return deprecated;
8b095871
IC
13264};
13265
8b095871 13266
9987f0c1
IC
13267var debugs = {};
13268var debugEnviron;
13269exports.debuglog = function(set) {
13270 if (isUndefined(debugEnviron))
13271 debugEnviron = process.env.NODE_DEBUG || '';
13272 set = set.toUpperCase();
13273 if (!debugs[set]) {
13274 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13275 var pid = process.pid;
13276 debugs[set] = function() {
13277 var msg = exports.format.apply(exports, arguments);
13278 console.error('%s %d: %s', set, pid, msg);
13279 };
13280 } else {
13281 debugs[set] = function() {};
13282 }
13283 }
13284 return debugs[set];
13285};
8b095871 13286
8b095871 13287
9987f0c1
IC
13288/**
13289 * Echos the value of a value. Trys to print the value out
13290 * in the best way possible given the different types.
13291 *
13292 * @param {Object} obj The object to print out.
13293 * @param {Object} opts Optional options object that alters the output.
13294 */
13295/* legacy: obj, showHidden, depth, colors*/
13296function inspect(obj, opts) {
13297 // default options
13298 var ctx = {
13299 seen: [],
13300 stylize: stylizeNoColor
13301 };
13302 // legacy...
13303 if (arguments.length >= 3) ctx.depth = arguments[2];
13304 if (arguments.length >= 4) ctx.colors = arguments[3];
13305 if (isBoolean(opts)) {
13306 // legacy...
13307 ctx.showHidden = opts;
13308 } else if (opts) {
13309 // got an "options" object
13310 exports._extend(ctx, opts);
13311 }
13312 // set default options
13313 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13314 if (isUndefined(ctx.depth)) ctx.depth = 2;
13315 if (isUndefined(ctx.colors)) ctx.colors = false;
13316 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13317 if (ctx.colors) ctx.stylize = stylizeWithColor;
13318 return formatValue(ctx, obj, ctx.depth);
13319}
13320exports.inspect = inspect;
8b095871 13321
8b095871 13322
9987f0c1
IC
13323// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13324inspect.colors = {
13325 'bold' : [1, 22],
13326 'italic' : [3, 23],
13327 'underline' : [4, 24],
13328 'inverse' : [7, 27],
13329 'white' : [37, 39],
13330 'grey' : [90, 39],
13331 'black' : [30, 39],
13332 'blue' : [34, 39],
13333 'cyan' : [36, 39],
13334 'green' : [32, 39],
13335 'magenta' : [35, 39],
13336 'red' : [31, 39],
13337 'yellow' : [33, 39]
13338};
8b095871 13339
9987f0c1
IC
13340// Don't use 'blue' not visible on cmd.exe
13341inspect.styles = {
13342 'special': 'cyan',
13343 'number': 'yellow',
13344 'boolean': 'yellow',
13345 'undefined': 'grey',
13346 'null': 'bold',
13347 'string': 'green',
13348 'date': 'magenta',
13349 // "name": intentionally not styling
13350 'regexp': 'red'
13351};
8b095871 13352
8b095871 13353
9987f0c1
IC
13354function stylizeWithColor(str, styleType) {
13355 var style = inspect.styles[styleType];
8b095871 13356
9987f0c1
IC
13357 if (style) {
13358 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13359 '\u001b[' + inspect.colors[style][1] + 'm';
13360 } else {
13361 return str;
8b095871 13362 }
9987f0c1 13363}
8b095871 13364
8b095871 13365
9987f0c1
IC
13366function stylizeNoColor(str, styleType) {
13367 return str;
13368}
8b095871 13369
8b095871 13370
9987f0c1
IC
13371function arrayToHash(array) {
13372 var hash = {};
8b095871 13373
9987f0c1
IC
13374 array.forEach(function(val, idx) {
13375 hash[val] = true;
13376 });
8b095871 13377
9987f0c1
IC
13378 return hash;
13379}
8b095871 13380
8b095871 13381
9987f0c1
IC
13382function formatValue(ctx, value, recurseTimes) {
13383 // Provide a hook for user-specified inspect functions.
13384 // Check that value is an object with an inspect function on it
13385 if (ctx.customInspect &&
13386 value &&
13387 isFunction(value.inspect) &&
13388 // Filter out the util module, it's inspect function is special
13389 value.inspect !== exports.inspect &&
13390 // Also filter out any prototype objects using the circular check.
13391 !(value.constructor && value.constructor.prototype === value)) {
13392 var ret = value.inspect(recurseTimes, ctx);
13393 if (!isString(ret)) {
13394 ret = formatValue(ctx, ret, recurseTimes);
8b095871 13395 }
9987f0c1 13396 return ret;
8b095871 13397 }
8b095871 13398
9987f0c1
IC
13399 // Primitive types cannot have properties
13400 var primitive = formatPrimitive(ctx, value);
13401 if (primitive) {
13402 return primitive;
8b095871 13403 }
8b095871 13404
9987f0c1
IC
13405 // Look up the keys of the object.
13406 var keys = Object.keys(value);
13407 var visibleKeys = arrayToHash(keys);
8b095871 13408
9987f0c1
IC
13409 if (ctx.showHidden) {
13410 keys = Object.getOwnPropertyNames(value);
8b095871 13411 }
8b095871 13412
9987f0c1
IC
13413 // IE doesn't make error fields non-enumerable
13414 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13415 if (isError(value)
13416 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13417 return formatError(value);
8b095871 13418 }
8b095871 13419
9987f0c1
IC
13420 // Some type of object without properties can be shortcutted.
13421 if (keys.length === 0) {
13422 if (isFunction(value)) {
13423 var name = value.name ? ': ' + value.name : '';
13424 return ctx.stylize('[Function' + name + ']', 'special');
8b095871 13425 }
9987f0c1
IC
13426 if (isRegExp(value)) {
13427 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
8b095871 13428 }
9987f0c1
IC
13429 if (isDate(value)) {
13430 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13431 }
13432 if (isError(value)) {
13433 return formatError(value);
8b095871
IC
13434 }
13435 }
13436
9987f0c1 13437 var base = '', array = false, braces = ['{', '}'];
8b095871 13438
9987f0c1
IC
13439 // Make Array say that they are Array
13440 if (isArray(value)) {
13441 array = true;
13442 braces = ['[', ']'];
13443 }
8b095871 13444
9987f0c1
IC
13445 // Make functions say that they are functions
13446 if (isFunction(value)) {
13447 var n = value.name ? ': ' + value.name : '';
13448 base = ' [Function' + n + ']';
13449 }
8b095871 13450
9987f0c1
IC
13451 // Make RegExps say that they are RegExps
13452 if (isRegExp(value)) {
13453 base = ' ' + RegExp.prototype.toString.call(value);
13454 }
8b095871 13455
9987f0c1
IC
13456 // Make dates with properties first say the date
13457 if (isDate(value)) {
13458 base = ' ' + Date.prototype.toUTCString.call(value);
13459 }
8b095871 13460
9987f0c1
IC
13461 // Make error with message first say the error
13462 if (isError(value)) {
13463 base = ' ' + formatError(value);
13464 }
8b095871 13465
9987f0c1
IC
13466 if (keys.length === 0 && (!array || value.length == 0)) {
13467 return braces[0] + base + braces[1];
13468 }
8b095871 13469
9987f0c1
IC
13470 if (recurseTimes < 0) {
13471 if (isRegExp(value)) {
13472 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
8b095871 13473 } else {
9987f0c1
IC
13474 return ctx.stylize('[Object]', 'special');
13475 }
13476 }
8b095871 13477
9987f0c1 13478 ctx.seen.push(value);
8b095871 13479
9987f0c1
IC
13480 var output;
13481 if (array) {
13482 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
13483 } else {
13484 output = keys.map(function(key) {
13485 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
13486 });
8b095871
IC
13487 }
13488
9987f0c1 13489 ctx.seen.pop();
8b095871 13490
9987f0c1
IC
13491 return reduceToSingleString(output, base, braces);
13492}
8b095871 13493
8b095871 13494
9987f0c1
IC
13495function formatPrimitive(ctx, value) {
13496 if (isUndefined(value))
13497 return ctx.stylize('undefined', 'undefined');
13498 if (isString(value)) {
13499 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
13500 .replace(/'/g, "\\'")
13501 .replace(/\\"/g, '"') + '\'';
13502 return ctx.stylize(simple, 'string');
8b095871 13503 }
9987f0c1
IC
13504 if (isNumber(value))
13505 return ctx.stylize('' + value, 'number');
13506 if (isBoolean(value))
13507 return ctx.stylize('' + value, 'boolean');
13508 // For some reason typeof null is "object", so special case here.
13509 if (isNull(value))
13510 return ctx.stylize('null', 'null');
8b095871
IC
13511}
13512
9987f0c1
IC
13513
13514function formatError(value) {
13515 return '[' + Error.prototype.toString.call(value) + ']';
8b095871
IC
13516}
13517
9987f0c1
IC
13518
13519function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
13520 var output = [];
13521 for (var i = 0, l = value.length; i < l; ++i) {
13522 if (hasOwnProperty(value, String(i))) {
13523 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13524 String(i), true));
13525 } else {
13526 output.push('');
13527 }
8b095871 13528 }
9987f0c1
IC
13529 keys.forEach(function(key) {
13530 if (!key.match(/^\d+$/)) {
13531 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
13532 key, true));
13533 }
13534 });
13535 return output;
8b095871
IC
13536}
13537
8b095871 13538
9987f0c1
IC
13539function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
13540 var name, str, desc;
13541 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
13542 if (desc.get) {
13543 if (desc.set) {
13544 str = ctx.stylize('[Getter/Setter]', 'special');
13545 } else {
13546 str = ctx.stylize('[Getter]', 'special');
13547 }
13548 } else {
13549 if (desc.set) {
13550 str = ctx.stylize('[Setter]', 'special');
13551 }
13552 }
13553 if (!hasOwnProperty(visibleKeys, key)) {
13554 name = '[' + key + ']';
13555 }
13556 if (!str) {
13557 if (ctx.seen.indexOf(desc.value) < 0) {
13558 if (isNull(recurseTimes)) {
13559 str = formatValue(ctx, desc.value, null);
13560 } else {
13561 str = formatValue(ctx, desc.value, recurseTimes - 1);
13562 }
13563 if (str.indexOf('\n') > -1) {
13564 if (array) {
13565 str = str.split('\n').map(function(line) {
13566 return ' ' + line;
13567 }).join('\n').substr(2);
13568 } else {
13569 str = '\n' + str.split('\n').map(function(line) {
13570 return ' ' + line;
13571 }).join('\n');
13572 }
13573 }
13574 } else {
13575 str = ctx.stylize('[Circular]', 'special');
13576 }
13577 }
13578 if (isUndefined(name)) {
13579 if (array && key.match(/^\d+$/)) {
13580 return str;
13581 }
13582 name = JSON.stringify('' + key);
13583 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
13584 name = name.substr(1, name.length - 2);
13585 name = ctx.stylize(name, 'name');
13586 } else {
13587 name = name.replace(/'/g, "\\'")
13588 .replace(/\\"/g, '"')
13589 .replace(/(^"|"$)/g, "'");
13590 name = ctx.stylize(name, 'string');
13591 }
13592 }
8b095871 13593
9987f0c1
IC
13594 return name + ': ' + str;
13595}
8b095871 13596
8b095871 13597
9987f0c1
IC
13598function reduceToSingleString(output, base, braces) {
13599 var numLinesEst = 0;
13600 var length = output.reduce(function(prev, cur) {
13601 numLinesEst++;
13602 if (cur.indexOf('\n') >= 0) numLinesEst++;
13603 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
13604 }, 0);
8b095871 13605
9987f0c1
IC
13606 if (length > 60) {
13607 return braces[0] +
13608 (base === '' ? '' : base + '\n ') +
13609 ' ' +
13610 output.join(',\n ') +
13611 ' ' +
13612 braces[1];
13613 }
8b095871 13614
9987f0c1
IC
13615 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
13616}
8b095871 13617
8b095871 13618
9987f0c1
IC
13619// NOTE: These type checking functions intentionally don't use `instanceof`
13620// because it is fragile and can be easily faked with `Object.create()`.
13621function isArray(ar) {
13622 return Array.isArray(ar);
8b095871 13623}
9987f0c1 13624exports.isArray = isArray;
8b095871 13625
9987f0c1
IC
13626function isBoolean(arg) {
13627 return typeof arg === 'boolean';
13628}
13629exports.isBoolean = isBoolean;
8b095871 13630
9987f0c1
IC
13631function isNull(arg) {
13632 return arg === null;
13633}
13634exports.isNull = isNull;
8b095871 13635
9987f0c1
IC
13636function isNullOrUndefined(arg) {
13637 return arg == null;
13638}
13639exports.isNullOrUndefined = isNullOrUndefined;
8b095871 13640
9987f0c1
IC
13641function isNumber(arg) {
13642 return typeof arg === 'number';
13643}
13644exports.isNumber = isNumber;
8b095871 13645
9987f0c1
IC
13646function isString(arg) {
13647 return typeof arg === 'string';
13648}
13649exports.isString = isString;
8b095871 13650
9987f0c1
IC
13651function isSymbol(arg) {
13652 return typeof arg === 'symbol';
13653}
13654exports.isSymbol = isSymbol;
8b095871 13655
9987f0c1
IC
13656function isUndefined(arg) {
13657 return arg === void 0;
8b095871 13658}
9987f0c1 13659exports.isUndefined = isUndefined;
8b095871 13660
9987f0c1
IC
13661function isRegExp(re) {
13662 return isObject(re) && objectToString(re) === '[object RegExp]';
13663}
13664exports.isRegExp = isRegExp;
8b095871 13665
9987f0c1
IC
13666function isObject(arg) {
13667 return typeof arg === 'object' && arg !== null;
13668}
13669exports.isObject = isObject;
8b095871 13670
9987f0c1
IC
13671function isDate(d) {
13672 return isObject(d) && objectToString(d) === '[object Date]';
13673}
13674exports.isDate = isDate;
8b095871 13675
9987f0c1
IC
13676function isError(e) {
13677 return isObject(e) &&
13678 (objectToString(e) === '[object Error]' || e instanceof Error);
13679}
13680exports.isError = isError;
8b095871 13681
9987f0c1
IC
13682function isFunction(arg) {
13683 return typeof arg === 'function';
13684}
13685exports.isFunction = isFunction;
8b095871 13686
9987f0c1
IC
13687function isPrimitive(arg) {
13688 return arg === null ||
13689 typeof arg === 'boolean' ||
13690 typeof arg === 'number' ||
13691 typeof arg === 'string' ||
13692 typeof arg === 'symbol' || // ES6 symbol
13693 typeof arg === 'undefined';
13694}
13695exports.isPrimitive = isPrimitive;
8b095871 13696
9987f0c1 13697exports.isBuffer = require('./support/isBuffer');
8b095871 13698
9987f0c1
IC
13699function objectToString(o) {
13700 return Object.prototype.toString.call(o);
8b095871
IC
13701}
13702
8b095871 13703
9987f0c1
IC
13704function pad(n) {
13705 return n < 10 ? '0' + n.toString(10) : n.toString(10);
13706}
8b095871 13707
8b095871 13708
9987f0c1
IC
13709var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
13710 'Oct', 'Nov', 'Dec'];
8b095871 13711
9987f0c1
IC
13712// 26 Feb 16:19:34
13713function timestamp() {
13714 var d = new Date();
13715 var time = [pad(d.getHours()),
13716 pad(d.getMinutes()),
13717 pad(d.getSeconds())].join(':');
13718 return [d.getDate(), months[d.getMonth()], time].join(' ');
13719}
13720
13721
13722// log is just a thin wrapper to console.log that prepends a timestamp
13723exports.log = function() {
13724 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
8b095871
IC
13725};
13726
13727
9987f0c1
IC
13728/**
13729 * Inherit the prototype methods from one constructor into another.
13730 *
13731 * The Function.prototype.inherits from lang.js rewritten as a standalone
13732 * function (not on Function.prototype). NOTE: If this file is to be loaded
13733 * during bootstrapping this function needs to be rewritten using some native
13734 * functions as prototype setup using normal JavaScript does not work as
13735 * expected during bootstrapping (see mirror.js in r114903).
13736 *
13737 * @param {function} ctor Constructor function which needs to inherit the
13738 * prototype.
13739 * @param {function} superCtor Constructor function to inherit prototype from.
13740 */
13741exports.inherits = require('inherits');
8b095871 13742
9987f0c1
IC
13743exports._extend = function(origin, add) {
13744 // Don't do anything if add isn't an object
13745 if (!add || !isObject(add)) return origin;
8b095871 13746
9987f0c1
IC
13747 var keys = Object.keys(add);
13748 var i = keys.length;
13749 while (i--) {
13750 origin[keys[i]] = add[keys[i]];
13751 }
13752 return origin;
13753};
8b095871 13754
9987f0c1
IC
13755function hasOwnProperty(obj, prop) {
13756 return Object.prototype.hasOwnProperty.call(obj, prop);
13757}
8b095871 13758
9987f0c1
IC
13759}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
13760},{"./support/isBuffer":31,"_process":12,"inherits":30}],33:[function(require,module,exports){
13761module.exports = {
13762 base58: require('bs58'),
13763 bitcoin: require('bitcoinjs-lib'),
13764 ecurve: require('ecurve'),
13765 BigInteger: require('bigi')
8b095871
IC
13766}
13767
9987f0c1
IC
13768},{"bigi":37,"bitcoinjs-lib":50,"bs58":79,"ecurve":89}],34:[function(require,module,exports){
13769// base-x encoding
13770// Forked from https://github.com/cryptocoinjs/bs58
13771// Originally written by Mike Hearn for BitcoinJ
13772// Copyright (c) 2011 Google Inc
13773// Ported to JavaScript by Stefan Thomas
13774// Merged Buffer refactorings from base58-native by Stephen Pair
13775// Copyright (c) 2013 BitPay Inc
8b095871 13776
9987f0c1 13777var Buffer = require('safe-buffer').Buffer
8b095871 13778
9987f0c1
IC
13779module.exports = function base (ALPHABET) {
13780 var ALPHABET_MAP = {}
13781 var BASE = ALPHABET.length
13782 var LEADER = ALPHABET.charAt(0)
8b095871 13783
9987f0c1
IC
13784 // pre-compute lookup table
13785 for (var z = 0; z < ALPHABET.length; z++) {
13786 var x = ALPHABET.charAt(z)
8b095871 13787
9987f0c1
IC
13788 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
13789 ALPHABET_MAP[x] = z
13790 }
8b095871 13791
9987f0c1
IC
13792 function encode (source) {
13793 if (source.length === 0) return ''
8b095871 13794
9987f0c1
IC
13795 var digits = [0]
13796 for (var i = 0; i < source.length; ++i) {
13797 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
13798 carry += digits[j] << 8
13799 digits[j] = carry % BASE
13800 carry = (carry / BASE) | 0
13801 }
8b095871 13802
9987f0c1
IC
13803 while (carry > 0) {
13804 digits.push(carry % BASE)
13805 carry = (carry / BASE) | 0
13806 }
13807 }
8b095871 13808
9987f0c1 13809 var string = ''
8b095871 13810
9987f0c1
IC
13811 // deal with leading zeros
13812 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
13813 // convert digits to a string
13814 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
8b095871 13815
9987f0c1
IC
13816 return string
13817 }
8b095871 13818
9987f0c1
IC
13819 function decodeUnsafe (string) {
13820 if (string.length === 0) return Buffer.allocUnsafe(0)
8b095871 13821
9987f0c1
IC
13822 var bytes = [0]
13823 for (var i = 0; i < string.length; i++) {
13824 var value = ALPHABET_MAP[string[i]]
13825 if (value === undefined) return
8b095871 13826
9987f0c1
IC
13827 for (var j = 0, carry = value; j < bytes.length; ++j) {
13828 carry += bytes[j] * BASE
13829 bytes[j] = carry & 0xff
13830 carry >>= 8
13831 }
8b095871 13832
9987f0c1
IC
13833 while (carry > 0) {
13834 bytes.push(carry & 0xff)
13835 carry >>= 8
13836 }
13837 }
8b095871 13838
9987f0c1
IC
13839 // deal with leading zeros
13840 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
13841 bytes.push(0)
13842 }
8b095871 13843
9987f0c1
IC
13844 return Buffer.from(bytes.reverse())
13845 }
8b095871 13846
9987f0c1
IC
13847 function decode (string) {
13848 var buffer = decodeUnsafe(string)
13849 if (buffer) return buffer
8b095871 13850
9987f0c1
IC
13851 throw new Error('Non-base' + BASE + ' character')
13852 }
8b095871 13853
9987f0c1
IC
13854 return {
13855 encode: encode,
13856 decodeUnsafe: decodeUnsafe,
13857 decode: decode
13858 }
13859}
8b095871 13860
9987f0c1
IC
13861},{"safe-buffer":98}],35:[function(require,module,exports){
13862// (public) Constructor
13863function BigInteger(a, b, c) {
13864 if (!(this instanceof BigInteger))
13865 return new BigInteger(a, b, c)
8b095871 13866
9987f0c1
IC
13867 if (a != null) {
13868 if ("number" == typeof a) this.fromNumber(a, b, c)
13869 else if (b == null && "string" != typeof a) this.fromString(a, 256)
13870 else this.fromString(a, b)
13871 }
13872}
8b095871 13873
9987f0c1 13874var proto = BigInteger.prototype
8b095871 13875
9987f0c1
IC
13876// duck-typed isBigInteger
13877proto.__bigi = require('../package.json').version
13878BigInteger.isBigInteger = function (obj, check_ver) {
13879 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
13880}
8b095871 13881
9987f0c1
IC
13882// Bits per digit
13883var dbits
8b095871 13884
9987f0c1
IC
13885// am: Compute w_j += (x*this_i), propagate carries,
13886// c is initial carry, returns final carry.
13887// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
13888// We need to select the fastest one that works in this environment.
8b095871 13889
9987f0c1
IC
13890// am1: use a single mult and divide to get the high bits,
13891// max digit bits should be 26 because
13892// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
13893function am1(i, x, w, j, c, n) {
13894 while (--n >= 0) {
13895 var v = x * this[i++] + w[j] + c
13896 c = Math.floor(v / 0x4000000)
13897 w[j++] = v & 0x3ffffff
13898 }
13899 return c
13900}
13901// am2 avoids a big mult-and-extract completely.
13902// Max digit bits should be <= 30 because we do bitwise ops
13903// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
13904function am2(i, x, w, j, c, n) {
13905 var xl = x & 0x7fff,
13906 xh = x >> 15
13907 while (--n >= 0) {
13908 var l = this[i] & 0x7fff
13909 var h = this[i++] >> 15
13910 var m = xh * l + h * xl
13911 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
13912 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
13913 w[j++] = l & 0x3fffffff
13914 }
13915 return c
13916}
13917// Alternately, set max digit bits to 28 since some
13918// browsers slow down when dealing with 32-bit numbers.
13919function am3(i, x, w, j, c, n) {
13920 var xl = x & 0x3fff,
13921 xh = x >> 14
13922 while (--n >= 0) {
13923 var l = this[i] & 0x3fff
13924 var h = this[i++] >> 14
13925 var m = xh * l + h * xl
13926 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
13927 c = (l >> 28) + (m >> 14) + xh * h
13928 w[j++] = l & 0xfffffff
13929 }
13930 return c
13931}
8b095871 13932
9987f0c1
IC
13933// wtf?
13934BigInteger.prototype.am = am1
13935dbits = 26
8b095871 13936
9987f0c1
IC
13937BigInteger.prototype.DB = dbits
13938BigInteger.prototype.DM = ((1 << dbits) - 1)
13939var DV = BigInteger.prototype.DV = (1 << dbits)
8b095871 13940
9987f0c1
IC
13941var BI_FP = 52
13942BigInteger.prototype.FV = Math.pow(2, BI_FP)
13943BigInteger.prototype.F1 = BI_FP - dbits
13944BigInteger.prototype.F2 = 2 * dbits - BI_FP
8b095871 13945
9987f0c1
IC
13946// Digit conversions
13947var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
13948var BI_RC = new Array()
13949var rr, vv
13950rr = "0".charCodeAt(0)
13951for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
13952rr = "a".charCodeAt(0)
13953for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
13954rr = "A".charCodeAt(0)
13955for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
8b095871 13956
9987f0c1
IC
13957function int2char(n) {
13958 return BI_RM.charAt(n)
13959}
8b095871 13960
9987f0c1
IC
13961function intAt(s, i) {
13962 var c = BI_RC[s.charCodeAt(i)]
13963 return (c == null) ? -1 : c
13964}
8b095871 13965
9987f0c1
IC
13966// (protected) copy this to r
13967function bnpCopyTo(r) {
13968 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
13969 r.t = this.t
13970 r.s = this.s
13971}
8b095871 13972
9987f0c1
IC
13973// (protected) set from integer value x, -DV <= x < DV
13974function bnpFromInt(x) {
13975 this.t = 1
13976 this.s = (x < 0) ? -1 : 0
13977 if (x > 0) this[0] = x
13978 else if (x < -1) this[0] = x + DV
13979 else this.t = 0
13980}
8b095871 13981
9987f0c1
IC
13982// return bigint initialized to value
13983function nbv(i) {
13984 var r = new BigInteger()
13985 r.fromInt(i)
13986 return r
8b095871
IC
13987}
13988
9987f0c1
IC
13989// (protected) set from string and radix
13990function bnpFromString(s, b) {
13991 var self = this
8b095871 13992
9987f0c1
IC
13993 var k
13994 if (b == 16) k = 4
13995 else if (b == 8) k = 3
13996 else if (b == 256) k = 8; // byte array
13997 else if (b == 2) k = 1
13998 else if (b == 32) k = 5
13999 else if (b == 4) k = 2
14000 else {
14001 self.fromRadix(s, b)
14002 return
14003 }
14004 self.t = 0
14005 self.s = 0
14006 var i = s.length,
14007 mi = false,
14008 sh = 0
14009 while (--i >= 0) {
14010 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
14011 if (x < 0) {
14012 if (s.charAt(i) == "-") mi = true
14013 continue
14014 }
14015 mi = false
14016 if (sh == 0)
14017 self[self.t++] = x
14018 else if (sh + k > self.DB) {
14019 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
14020 self[self.t++] = (x >> (self.DB - sh))
14021 } else
14022 self[self.t - 1] |= x << sh
14023 sh += k
14024 if (sh >= self.DB) sh -= self.DB
14025 }
14026 if (k == 8 && (s[0] & 0x80) != 0) {
14027 self.s = -1
14028 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
14029 }
14030 self.clamp()
14031 if (mi) BigInteger.ZERO.subTo(self, self)
14032}
8b095871 14033
9987f0c1
IC
14034// (protected) clamp off excess high words
14035function bnpClamp() {
14036 var c = this.s & this.DM
14037 while (this.t > 0 && this[this.t - 1] == c)--this.t
8b095871
IC
14038}
14039
9987f0c1
IC
14040// (public) return string representation in given radix
14041function bnToString(b) {
14042 var self = this
14043 if (self.s < 0) return "-" + self.negate()
14044 .toString(b)
14045 var k
14046 if (b == 16) k = 4
14047 else if (b == 8) k = 3
14048 else if (b == 2) k = 1
14049 else if (b == 32) k = 5
14050 else if (b == 4) k = 2
14051 else return self.toRadix(b)
14052 var km = (1 << k) - 1,
14053 d, m = false,
14054 r = "",
14055 i = self.t
14056 var p = self.DB - (i * self.DB) % k
14057 if (i-- > 0) {
14058 if (p < self.DB && (d = self[i] >> p) > 0) {
14059 m = true
14060 r = int2char(d)
14061 }
14062 while (i >= 0) {
14063 if (p < k) {
14064 d = (self[i] & ((1 << p) - 1)) << (k - p)
14065 d |= self[--i] >> (p += self.DB - k)
14066 } else {
14067 d = (self[i] >> (p -= k)) & km
14068 if (p <= 0) {
14069 p += self.DB
14070 --i
14071 }
14072 }
14073 if (d > 0) m = true
14074 if (m) r += int2char(d)
14075 }
8b095871 14076 }
9987f0c1 14077 return m ? r : "0"
8b095871
IC
14078}
14079
9987f0c1
IC
14080// (public) -this
14081function bnNegate() {
14082 var r = new BigInteger()
14083 BigInteger.ZERO.subTo(this, r)
14084 return r
14085}
8b095871 14086
9987f0c1
IC
14087// (public) |this|
14088function bnAbs() {
14089 return (this.s < 0) ? this.negate() : this
14090}
8b095871 14091
9987f0c1
IC
14092// (public) return + if this > a, - if this < a, 0 if equal
14093function bnCompareTo(a) {
14094 var r = this.s - a.s
14095 if (r != 0) return r
14096 var i = this.t
14097 r = i - a.t
14098 if (r != 0) return (this.s < 0) ? -r : r
14099 while (--i >= 0)
14100 if ((r = this[i] - a[i]) != 0) return r
14101 return 0
14102}
8b095871 14103
9987f0c1
IC
14104// returns bit length of the integer x
14105function nbits(x) {
14106 var r = 1,
14107 t
14108 if ((t = x >>> 16) != 0) {
14109 x = t
14110 r += 16
14111 }
14112 if ((t = x >> 8) != 0) {
14113 x = t
14114 r += 8
14115 }
14116 if ((t = x >> 4) != 0) {
14117 x = t
14118 r += 4
14119 }
14120 if ((t = x >> 2) != 0) {
14121 x = t
14122 r += 2
14123 }
14124 if ((t = x >> 1) != 0) {
14125 x = t
14126 r += 1
8b095871 14127 }
9987f0c1
IC
14128 return r
14129}
8b095871 14130
9987f0c1
IC
14131// (public) return the number of bits in "this"
14132function bnBitLength() {
14133 if (this.t <= 0) return 0
14134 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
14135}
8b095871 14136
9987f0c1
IC
14137// (public) return the number of bytes in "this"
14138function bnByteLength() {
14139 return this.bitLength() >> 3
14140}
8b095871 14141
9987f0c1
IC
14142// (protected) r = this << n*DB
14143function bnpDLShiftTo(n, r) {
14144 var i
14145 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
14146 for (i = n - 1; i >= 0; --i) r[i] = 0
14147 r.t = this.t + n
14148 r.s = this.s
14149}
8b095871 14150
9987f0c1
IC
14151// (protected) r = this >> n*DB
14152function bnpDRShiftTo(n, r) {
14153 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
14154 r.t = Math.max(this.t - n, 0)
14155 r.s = this.s
14156}
8b095871 14157
9987f0c1
IC
14158// (protected) r = this << n
14159function bnpLShiftTo(n, r) {
14160 var self = this
14161 var bs = n % self.DB
14162 var cbs = self.DB - bs
14163 var bm = (1 << cbs) - 1
14164 var ds = Math.floor(n / self.DB),
14165 c = (self.s << bs) & self.DM,
14166 i
14167 for (i = self.t - 1; i >= 0; --i) {
14168 r[i + ds + 1] = (self[i] >> cbs) | c
14169 c = (self[i] & bm) << bs
14170 }
14171 for (i = ds - 1; i >= 0; --i) r[i] = 0
14172 r[ds] = c
14173 r.t = self.t + ds + 1
14174 r.s = self.s
14175 r.clamp()
14176}
8b095871 14177
9987f0c1
IC
14178// (protected) r = this >> n
14179function bnpRShiftTo(n, r) {
14180 var self = this
14181 r.s = self.s
14182 var ds = Math.floor(n / self.DB)
14183 if (ds >= self.t) {
14184 r.t = 0
14185 return
8b095871 14186 }
9987f0c1
IC
14187 var bs = n % self.DB
14188 var cbs = self.DB - bs
14189 var bm = (1 << bs) - 1
14190 r[0] = self[ds] >> bs
14191 for (var i = ds + 1; i < self.t; ++i) {
14192 r[i - ds - 1] |= (self[i] & bm) << cbs
14193 r[i - ds] = self[i] >> bs
14194 }
14195 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
14196 r.t = self.t - ds
14197 r.clamp()
14198}
8b095871 14199
9987f0c1
IC
14200// (protected) r = this - a
14201function bnpSubTo(a, r) {
14202 var self = this
14203 var i = 0,
14204 c = 0,
14205 m = Math.min(a.t, self.t)
14206 while (i < m) {
14207 c += self[i] - a[i]
14208 r[i++] = c & self.DM
14209 c >>= self.DB
8b095871 14210 }
9987f0c1
IC
14211 if (a.t < self.t) {
14212 c -= a.s
14213 while (i < self.t) {
14214 c += self[i]
14215 r[i++] = c & self.DM
14216 c >>= self.DB
14217 }
14218 c += self.s
14219 } else {
14220 c += self.s
14221 while (i < a.t) {
14222 c -= a[i]
14223 r[i++] = c & self.DM
14224 c >>= self.DB
14225 }
14226 c -= a.s
14227 }
14228 r.s = (c < 0) ? -1 : 0
14229 if (c < -1) r[i++] = self.DV + c
14230 else if (c > 0) r[i++] = c
14231 r.t = i
14232 r.clamp()
8b095871
IC
14233}
14234
9987f0c1
IC
14235// (protected) r = this * a, r != this,a (HAC 14.12)
14236// "this" should be the larger one if appropriate.
14237function bnpMultiplyTo(a, r) {
14238 var x = this.abs(),
14239 y = a.abs()
14240 var i = x.t
14241 r.t = i + y.t
14242 while (--i >= 0) r[i] = 0
14243 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
14244 r.s = 0
14245 r.clamp()
14246 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
14247}
8b095871 14248
9987f0c1
IC
14249// (protected) r = this^2, r != this (HAC 14.16)
14250function bnpSquareTo(r) {
14251 var x = this.abs()
14252 var i = r.t = 2 * x.t
14253 while (--i >= 0) r[i] = 0
14254 for (i = 0; i < x.t - 1; ++i) {
14255 var c = x.am(i, x[i], r, 2 * i, 0, 1)
14256 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
14257 r[i + x.t] -= x.DV
14258 r[i + x.t + 1] = 1
14259 }
14260 }
14261 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
14262 r.s = 0
14263 r.clamp()
14264}
8b095871 14265
9987f0c1
IC
14266// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
14267// r != q, this != m. q or r may be null.
14268function bnpDivRemTo(m, q, r) {
14269 var self = this
14270 var pm = m.abs()
14271 if (pm.t <= 0) return
14272 var pt = self.abs()
14273 if (pt.t < pm.t) {
14274 if (q != null) q.fromInt(0)
14275 if (r != null) self.copyTo(r)
14276 return
14277 }
14278 if (r == null) r = new BigInteger()
14279 var y = new BigInteger(),
14280 ts = self.s,
14281 ms = m.s
14282 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
14283 if (nsh > 0) {
14284 pm.lShiftTo(nsh, y)
14285 pt.lShiftTo(nsh, r)
14286 } else {
14287 pm.copyTo(y)
14288 pt.copyTo(r)
14289 }
14290 var ys = y.t
14291 var y0 = y[ys - 1]
14292 if (y0 == 0) return
14293 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
14294 var d1 = self.FV / yt,
14295 d2 = (1 << self.F1) / yt,
14296 e = 1 << self.F2
14297 var i = r.t,
14298 j = i - ys,
14299 t = (q == null) ? new BigInteger() : q
14300 y.dlShiftTo(j, t)
14301 if (r.compareTo(t) >= 0) {
14302 r[r.t++] = 1
14303 r.subTo(t, r)
14304 }
14305 BigInteger.ONE.dlShiftTo(ys, t)
14306 t.subTo(y, y); // "negative" y so we can replace sub with am later
14307 while (y.t < ys) y[y.t++] = 0
14308 while (--j >= 0) {
14309 // Estimate quotient digit
14310 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
14311 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
14312 y.dlShiftTo(j, t)
14313 r.subTo(t, r)
14314 while (r[i] < --qd) r.subTo(t, r)
14315 }
14316 }
14317 if (q != null) {
14318 r.drShiftTo(ys, q)
14319 if (ts != ms) BigInteger.ZERO.subTo(q, q)
14320 }
14321 r.t = ys
14322 r.clamp()
14323 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
14324 if (ts < 0) BigInteger.ZERO.subTo(r, r)
14325}
8b095871 14326
9987f0c1
IC
14327// (public) this mod a
14328function bnMod(a) {
14329 var r = new BigInteger()
14330 this.abs()
14331 .divRemTo(a, null, r)
14332 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
14333 return r
14334}
8b095871 14335
9987f0c1
IC
14336// Modular reduction using "classic" algorithm
14337function Classic(m) {
14338 this.m = m
8b095871
IC
14339}
14340
9987f0c1
IC
14341function cConvert(x) {
14342 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
14343 else return x
8b095871
IC
14344}
14345
9987f0c1
IC
14346function cRevert(x) {
14347 return x
14348}
8b095871 14349
9987f0c1
IC
14350function cReduce(x) {
14351 x.divRemTo(this.m, null, x)
8b095871
IC
14352}
14353
9987f0c1
IC
14354function cMulTo(x, y, r) {
14355 x.multiplyTo(y, r)
14356 this.reduce(r)
8b095871
IC
14357}
14358
9987f0c1
IC
14359function cSqrTo(x, r) {
14360 x.squareTo(r)
14361 this.reduce(r)
14362}
8b095871 14363
9987f0c1
IC
14364Classic.prototype.convert = cConvert
14365Classic.prototype.revert = cRevert
14366Classic.prototype.reduce = cReduce
14367Classic.prototype.mulTo = cMulTo
14368Classic.prototype.sqrTo = cSqrTo
8b095871 14369
9987f0c1
IC
14370// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
14371// justification:
14372// xy == 1 (mod m)
14373// xy = 1+km
14374// xy(2-xy) = (1+km)(1-km)
14375// x[y(2-xy)] = 1-k^2m^2
14376// x[y(2-xy)] == 1 (mod m^2)
14377// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
14378// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
14379// JS multiply "overflows" differently from C/C++, so care is needed here.
14380function bnpInvDigit() {
14381 if (this.t < 1) return 0
14382 var x = this[0]
14383 if ((x & 1) == 0) return 0
14384 var y = x & 3; // y == 1/x mod 2^2
14385 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
14386 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
14387 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
14388 // last step - calculate inverse mod DV directly
14389 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
14390 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
14391 // we really want the negative inverse, and -DV < y < DV
14392 return (y > 0) ? this.DV - y : -y
14393}
8b095871 14394
9987f0c1
IC
14395// Montgomery reduction
14396function Montgomery(m) {
14397 this.m = m
14398 this.mp = m.invDigit()
14399 this.mpl = this.mp & 0x7fff
14400 this.mph = this.mp >> 15
14401 this.um = (1 << (m.DB - 15)) - 1
14402 this.mt2 = 2 * m.t
14403}
8b095871 14404
9987f0c1
IC
14405// xR mod m
14406function montConvert(x) {
14407 var r = new BigInteger()
14408 x.abs()
14409 .dlShiftTo(this.m.t, r)
14410 r.divRemTo(this.m, null, r)
14411 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
14412 return r
8b095871
IC
14413}
14414
9987f0c1
IC
14415// x/R mod m
14416function montRevert(x) {
14417 var r = new BigInteger()
14418 x.copyTo(r)
14419 this.reduce(r)
14420 return r
8b095871
IC
14421}
14422
9987f0c1
IC
14423// x = x/R mod m (HAC 14.32)
14424function montReduce(x) {
14425 while (x.t <= this.mt2) // pad x so am has enough room later
14426 x[x.t++] = 0
14427 for (var i = 0; i < this.m.t; ++i) {
14428 // faster way of calculating u0 = x[i]*mp mod DV
14429 var j = x[i] & 0x7fff
14430 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
14431 // use am to combine the multiply-shift-add into one call
14432 j = i + this.m.t
14433 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
14434 // propagate carry
14435 while (x[j] >= x.DV) {
14436 x[j] -= x.DV
14437 x[++j]++
14438 }
8b095871 14439 }
9987f0c1
IC
14440 x.clamp()
14441 x.drShiftTo(this.m.t, x)
14442 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
8b095871
IC
14443}
14444
9987f0c1
IC
14445// r = "x^2/R mod m"; x != r
14446function montSqrTo(x, r) {
14447 x.squareTo(r)
14448 this.reduce(r)
14449}
8b095871 14450
9987f0c1
IC
14451// r = "xy/R mod m"; x,y != r
14452function montMulTo(x, y, r) {
14453 x.multiplyTo(y, r)
14454 this.reduce(r)
14455}
8b095871 14456
9987f0c1
IC
14457Montgomery.prototype.convert = montConvert
14458Montgomery.prototype.revert = montRevert
14459Montgomery.prototype.reduce = montReduce
14460Montgomery.prototype.mulTo = montMulTo
14461Montgomery.prototype.sqrTo = montSqrTo
8b095871 14462
9987f0c1
IC
14463// (protected) true iff this is even
14464function bnpIsEven() {
14465 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
14466}
8b095871 14467
9987f0c1
IC
14468// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
14469function bnpExp(e, z) {
14470 if (e > 0xffffffff || e < 1) return BigInteger.ONE
14471 var r = new BigInteger(),
14472 r2 = new BigInteger(),
14473 g = z.convert(this),
14474 i = nbits(e) - 1
14475 g.copyTo(r)
14476 while (--i >= 0) {
14477 z.sqrTo(r, r2)
14478 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
14479 else {
14480 var t = r
14481 r = r2
14482 r2 = t
8b095871 14483 }
8b095871 14484 }
9987f0c1 14485 return z.revert(r)
8b095871
IC
14486}
14487
9987f0c1
IC
14488// (public) this^e % m, 0 <= e < 2^32
14489function bnModPowInt(e, m) {
14490 var z
14491 if (e < 256 || m.isEven()) z = new Classic(m)
14492 else z = new Montgomery(m)
14493 return this.exp(e, z)
14494}
8b095871 14495
9987f0c1
IC
14496// protected
14497proto.copyTo = bnpCopyTo
14498proto.fromInt = bnpFromInt
14499proto.fromString = bnpFromString
14500proto.clamp = bnpClamp
14501proto.dlShiftTo = bnpDLShiftTo
14502proto.drShiftTo = bnpDRShiftTo
14503proto.lShiftTo = bnpLShiftTo
14504proto.rShiftTo = bnpRShiftTo
14505proto.subTo = bnpSubTo
14506proto.multiplyTo = bnpMultiplyTo
14507proto.squareTo = bnpSquareTo
14508proto.divRemTo = bnpDivRemTo
14509proto.invDigit = bnpInvDigit
14510proto.isEven = bnpIsEven
14511proto.exp = bnpExp
8b095871 14512
9987f0c1
IC
14513// public
14514proto.toString = bnToString
14515proto.negate = bnNegate
14516proto.abs = bnAbs
14517proto.compareTo = bnCompareTo
14518proto.bitLength = bnBitLength
14519proto.byteLength = bnByteLength
14520proto.mod = bnMod
14521proto.modPowInt = bnModPowInt
8b095871 14522
9987f0c1
IC
14523// (public)
14524function bnClone() {
14525 var r = new BigInteger()
14526 this.copyTo(r)
14527 return r
14528}
8b095871 14529
9987f0c1
IC
14530// (public) return value as integer
14531function bnIntValue() {
14532 if (this.s < 0) {
14533 if (this.t == 1) return this[0] - this.DV
14534 else if (this.t == 0) return -1
14535 } else if (this.t == 1) return this[0]
14536 else if (this.t == 0) return 0
14537 // assumes 16 < DB < 32
14538 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
14539}
8b095871 14540
9987f0c1
IC
14541// (public) return value as byte
14542function bnByteValue() {
14543 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
14544}
8b095871 14545
9987f0c1
IC
14546// (public) return value as short (assumes DB>=16)
14547function bnShortValue() {
14548 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
14549}
8b095871 14550
9987f0c1
IC
14551// (protected) return x s.t. r^x < DV
14552function bnpChunkSize(r) {
14553 return Math.floor(Math.LN2 * this.DB / Math.log(r))
8b095871
IC
14554}
14555
9987f0c1
IC
14556// (public) 0 if this == 0, 1 if this > 0
14557function bnSigNum() {
14558 if (this.s < 0) return -1
14559 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
14560 else return 1
8b095871
IC
14561}
14562
9987f0c1
IC
14563// (protected) convert to radix string
14564function bnpToRadix(b) {
14565 if (b == null) b = 10
14566 if (this.signum() == 0 || b < 2 || b > 36) return "0"
14567 var cs = this.chunkSize(b)
14568 var a = Math.pow(b, cs)
14569 var d = nbv(a),
14570 y = new BigInteger(),
14571 z = new BigInteger(),
14572 r = ""
14573 this.divRemTo(d, y, z)
14574 while (y.signum() > 0) {
14575 r = (a + z.intValue())
14576 .toString(b)
14577 .substr(1) + r
14578 y.divRemTo(d, y, z)
8b095871 14579 }
9987f0c1
IC
14580 return z.intValue()
14581 .toString(b) + r
8b095871
IC
14582}
14583
9987f0c1
IC
14584// (protected) convert from radix string
14585function bnpFromRadix(s, b) {
14586 var self = this
14587 self.fromInt(0)
14588 if (b == null) b = 10
14589 var cs = self.chunkSize(b)
14590 var d = Math.pow(b, cs),
14591 mi = false,
14592 j = 0,
14593 w = 0
14594 for (var i = 0; i < s.length; ++i) {
14595 var x = intAt(s, i)
14596 if (x < 0) {
14597 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
14598 continue
14599 }
14600 w = b * w + x
14601 if (++j >= cs) {
14602 self.dMultiply(d)
14603 self.dAddOffset(w, 0)
14604 j = 0
14605 w = 0
14606 }
8b095871 14607 }
9987f0c1
IC
14608 if (j > 0) {
14609 self.dMultiply(Math.pow(b, j))
14610 self.dAddOffset(w, 0)
14611 }
14612 if (mi) BigInteger.ZERO.subTo(self, self)
8b095871
IC
14613}
14614
9987f0c1
IC
14615// (protected) alternate constructor
14616function bnpFromNumber(a, b, c) {
14617 var self = this
14618 if ("number" == typeof b) {
14619 // new BigInteger(int,int,RNG)
14620 if (a < 2) self.fromInt(1)
14621 else {
14622 self.fromNumber(a, c)
14623 if (!self.testBit(a - 1)) // force MSB set
14624 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
14625 if (self.isEven()) self.dAddOffset(1, 0); // force odd
14626 while (!self.isProbablePrime(b)) {
14627 self.dAddOffset(2, 0)
14628 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
14629 }
14630 }
14631 } else {
14632 // new BigInteger(int,RNG)
14633 var x = new Array(),
14634 t = a & 7
14635 x.length = (a >> 3) + 1
14636 b.nextBytes(x)
14637 if (t > 0) x[0] &= ((1 << t) - 1)
14638 else x[0] = 0
14639 self.fromString(x, 256)
14640 }
8b095871 14641}
8b095871 14642
9987f0c1
IC
14643// (public) convert to bigendian byte array
14644function bnToByteArray() {
14645 var self = this
14646 var i = self.t,
14647 r = new Array()
14648 r[0] = self.s
14649 var p = self.DB - (i * self.DB) % 8,
14650 d, k = 0
14651 if (i-- > 0) {
14652 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
14653 r[k++] = d | (self.s << (self.DB - p))
14654 while (i >= 0) {
14655 if (p < 8) {
14656 d = (self[i] & ((1 << p) - 1)) << (8 - p)
14657 d |= self[--i] >> (p += self.DB - 8)
14658 } else {
14659 d = (self[i] >> (p -= 8)) & 0xff
14660 if (p <= 0) {
14661 p += self.DB
14662 --i
14663 }
14664 }
14665 if ((d & 0x80) != 0) d |= -256
14666 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
14667 if (k > 0 || d != self.s) r[k++] = d
14668 }
14669 }
14670 return r
8b095871 14671}
8b095871 14672
9987f0c1
IC
14673function bnEquals(a) {
14674 return (this.compareTo(a) == 0)
8b095871 14675}
8b095871 14676
9987f0c1
IC
14677function bnMin(a) {
14678 return (this.compareTo(a) < 0) ? this : a
8b095871 14679}
8b095871 14680
9987f0c1
IC
14681function bnMax(a) {
14682 return (this.compareTo(a) > 0) ? this : a
8b095871 14683}
8b095871 14684
9987f0c1
IC
14685// (protected) r = this op a (bitwise)
14686function bnpBitwiseTo(a, op, r) {
14687 var self = this
14688 var i, f, m = Math.min(a.t, self.t)
14689 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
14690 if (a.t < self.t) {
14691 f = a.s & self.DM
14692 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
14693 r.t = self.t
14694 } else {
14695 f = self.s & self.DM
14696 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
14697 r.t = a.t
14698 }
14699 r.s = op(self.s, a.s)
14700 r.clamp()
8b095871 14701}
8b095871 14702
9987f0c1
IC
14703// (public) this & a
14704function op_and(x, y) {
14705 return x & y
8b095871 14706}
8b095871 14707
9987f0c1
IC
14708function bnAnd(a) {
14709 var r = new BigInteger()
14710 this.bitwiseTo(a, op_and, r)
14711 return r
8b095871 14712}
8b095871 14713
9987f0c1
IC
14714// (public) this | a
14715function op_or(x, y) {
14716 return x | y
8b095871 14717}
8b095871 14718
9987f0c1
IC
14719function bnOr(a) {
14720 var r = new BigInteger()
14721 this.bitwiseTo(a, op_or, r)
14722 return r
8b095871 14723}
8b095871 14724
9987f0c1
IC
14725// (public) this ^ a
14726function op_xor(x, y) {
14727 return x ^ y
8b095871 14728}
8b095871 14729
9987f0c1
IC
14730function bnXor(a) {
14731 var r = new BigInteger()
14732 this.bitwiseTo(a, op_xor, r)
14733 return r
8b095871 14734}
8b095871 14735
9987f0c1
IC
14736// (public) this & ~a
14737function op_andnot(x, y) {
14738 return x & ~y
8b095871 14739}
8b095871 14740
9987f0c1
IC
14741function bnAndNot(a) {
14742 var r = new BigInteger()
14743 this.bitwiseTo(a, op_andnot, r)
14744 return r
8b095871 14745}
8b095871 14746
9987f0c1
IC
14747// (public) ~this
14748function bnNot() {
14749 var r = new BigInteger()
14750 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
14751 r.t = this.t
14752 r.s = ~this.s
14753 return r
8b095871 14754}
8b095871 14755
9987f0c1
IC
14756// (public) this << n
14757function bnShiftLeft(n) {
14758 var r = new BigInteger()
14759 if (n < 0) this.rShiftTo(-n, r)
14760 else this.lShiftTo(n, r)
14761 return r
8b095871 14762}
8b095871 14763
9987f0c1
IC
14764// (public) this >> n
14765function bnShiftRight(n) {
14766 var r = new BigInteger()
14767 if (n < 0) this.lShiftTo(-n, r)
14768 else this.rShiftTo(n, r)
14769 return r
8b095871
IC
14770}
14771
9987f0c1
IC
14772// return index of lowest 1-bit in x, x < 2^31
14773function lbit(x) {
14774 if (x == 0) return -1
14775 var r = 0
14776 if ((x & 0xffff) == 0) {
14777 x >>= 16
14778 r += 16
8b095871 14779 }
9987f0c1
IC
14780 if ((x & 0xff) == 0) {
14781 x >>= 8
14782 r += 8
8b095871 14783 }
9987f0c1
IC
14784 if ((x & 0xf) == 0) {
14785 x >>= 4
14786 r += 4
8b095871 14787 }
9987f0c1
IC
14788 if ((x & 3) == 0) {
14789 x >>= 2
14790 r += 2
14791 }
14792 if ((x & 1) == 0)++r
14793 return r
14794}
8b095871 14795
9987f0c1
IC
14796// (public) returns index of lowest 1-bit (or -1 if none)
14797function bnGetLowestSetBit() {
14798 for (var i = 0; i < this.t; ++i)
14799 if (this[i] != 0) return i * this.DB + lbit(this[i])
14800 if (this.s < 0) return this.t * this.DB
14801 return -1
14802}
8b095871 14803
9987f0c1
IC
14804// return number of 1 bits in x
14805function cbit(x) {
14806 var r = 0
14807 while (x != 0) {
14808 x &= x - 1
14809 ++r
8b095871 14810 }
9987f0c1
IC
14811 return r
14812}
8b095871 14813
9987f0c1
IC
14814// (public) return number of set bits
14815function bnBitCount() {
14816 var r = 0,
14817 x = this.s & this.DM
14818 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
14819 return r
14820}
8b095871 14821
9987f0c1
IC
14822// (public) true iff nth bit is set
14823function bnTestBit(n) {
14824 var j = Math.floor(n / this.DB)
14825 if (j >= this.t) return (this.s != 0)
14826 return ((this[j] & (1 << (n % this.DB))) != 0)
14827}
8b095871 14828
9987f0c1
IC
14829// (protected) this op (1<<n)
14830function bnpChangeBit(n, op) {
14831 var r = BigInteger.ONE.shiftLeft(n)
14832 this.bitwiseTo(r, op, r)
14833 return r
14834}
8b095871 14835
9987f0c1
IC
14836// (public) this | (1<<n)
14837function bnSetBit(n) {
14838 return this.changeBit(n, op_or)
14839}
8b095871 14840
9987f0c1
IC
14841// (public) this & ~(1<<n)
14842function bnClearBit(n) {
14843 return this.changeBit(n, op_andnot)
14844}
8b095871 14845
9987f0c1
IC
14846// (public) this ^ (1<<n)
14847function bnFlipBit(n) {
14848 return this.changeBit(n, op_xor)
14849}
8b095871 14850
9987f0c1
IC
14851// (protected) r = this + a
14852function bnpAddTo(a, r) {
14853 var self = this
8b095871 14854
9987f0c1
IC
14855 var i = 0,
14856 c = 0,
14857 m = Math.min(a.t, self.t)
14858 while (i < m) {
14859 c += self[i] + a[i]
14860 r[i++] = c & self.DM
14861 c >>= self.DB
14862 }
14863 if (a.t < self.t) {
14864 c += a.s
14865 while (i < self.t) {
14866 c += self[i]
14867 r[i++] = c & self.DM
14868 c >>= self.DB
14869 }
14870 c += self.s
14871 } else {
14872 c += self.s
14873 while (i < a.t) {
14874 c += a[i]
14875 r[i++] = c & self.DM
14876 c >>= self.DB
14877 }
14878 c += a.s
14879 }
14880 r.s = (c < 0) ? -1 : 0
14881 if (c > 0) r[i++] = c
14882 else if (c < -1) r[i++] = self.DV + c
14883 r.t = i
14884 r.clamp()
14885}
8b095871 14886
9987f0c1
IC
14887// (public) this + a
14888function bnAdd(a) {
14889 var r = new BigInteger()
14890 this.addTo(a, r)
14891 return r
14892}
8b095871 14893
9987f0c1
IC
14894// (public) this - a
14895function bnSubtract(a) {
14896 var r = new BigInteger()
14897 this.subTo(a, r)
14898 return r
14899}
8b095871 14900
9987f0c1
IC
14901// (public) this * a
14902function bnMultiply(a) {
14903 var r = new BigInteger()
14904 this.multiplyTo(a, r)
14905 return r
14906}
8b095871 14907
9987f0c1
IC
14908// (public) this^2
14909function bnSquare() {
14910 var r = new BigInteger()
14911 this.squareTo(r)
14912 return r
14913}
8b095871 14914
9987f0c1
IC
14915// (public) this / a
14916function bnDivide(a) {
14917 var r = new BigInteger()
14918 this.divRemTo(a, r, null)
14919 return r
14920}
8b095871 14921
9987f0c1
IC
14922// (public) this % a
14923function bnRemainder(a) {
14924 var r = new BigInteger()
14925 this.divRemTo(a, null, r)
14926 return r
14927}
8b095871 14928
9987f0c1
IC
14929// (public) [this/a,this%a]
14930function bnDivideAndRemainder(a) {
14931 var q = new BigInteger(),
14932 r = new BigInteger()
14933 this.divRemTo(a, q, r)
14934 return new Array(q, r)
14935}
8b095871 14936
9987f0c1
IC
14937// (protected) this *= n, this >= 0, 1 < n < DV
14938function bnpDMultiply(n) {
14939 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
14940 ++this.t
14941 this.clamp()
8b095871
IC
14942}
14943
9987f0c1
IC
14944// (protected) this += n << w words, this >= 0
14945function bnpDAddOffset(n, w) {
14946 if (n == 0) return
14947 while (this.t <= w) this[this.t++] = 0
14948 this[w] += n
14949 while (this[w] >= this.DV) {
14950 this[w] -= this.DV
14951 if (++w >= this.t) this[this.t++] = 0
14952 ++this[w]
8b095871 14953 }
9987f0c1 14954}
8b095871 14955
9987f0c1
IC
14956// A "null" reducer
14957function NullExp() {}
8b095871 14958
9987f0c1
IC
14959function nNop(x) {
14960 return x
14961}
8b095871 14962
9987f0c1
IC
14963function nMulTo(x, y, r) {
14964 x.multiplyTo(y, r)
14965}
8b095871 14966
9987f0c1
IC
14967function nSqrTo(x, r) {
14968 x.squareTo(r)
14969}
8b095871 14970
9987f0c1
IC
14971NullExp.prototype.convert = nNop
14972NullExp.prototype.revert = nNop
14973NullExp.prototype.mulTo = nMulTo
14974NullExp.prototype.sqrTo = nSqrTo
8b095871 14975
9987f0c1
IC
14976// (public) this^e
14977function bnPow(e) {
14978 return this.exp(e, new NullExp())
14979}
8b095871 14980
9987f0c1
IC
14981// (protected) r = lower n words of "this * a", a.t <= n
14982// "this" should be the larger one if appropriate.
14983function bnpMultiplyLowerTo(a, n, r) {
14984 var i = Math.min(this.t + a.t, n)
14985 r.s = 0; // assumes a,this >= 0
14986 r.t = i
14987 while (i > 0) r[--i] = 0
14988 var j
14989 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
14990 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
14991 r.clamp()
14992}
8b095871 14993
9987f0c1
IC
14994// (protected) r = "this * a" without lower n words, n > 0
14995// "this" should be the larger one if appropriate.
14996function bnpMultiplyUpperTo(a, n, r) {
14997 --n
14998 var i = r.t = this.t + a.t - n
14999 r.s = 0; // assumes a,this >= 0
15000 while (--i >= 0) r[i] = 0
15001 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
15002 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
15003 r.clamp()
15004 r.drShiftTo(1, r)
15005}
8b095871 15006
9987f0c1
IC
15007// Barrett modular reduction
15008function Barrett(m) {
15009 // setup Barrett
15010 this.r2 = new BigInteger()
15011 this.q3 = new BigInteger()
15012 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
15013 this.mu = this.r2.divide(m)
15014 this.m = m
15015}
8b095871 15016
9987f0c1
IC
15017function barrettConvert(x) {
15018 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
15019 else if (x.compareTo(this.m) < 0) return x
15020 else {
15021 var r = new BigInteger()
15022 x.copyTo(r)
15023 this.reduce(r)
15024 return r
8b095871 15025 }
9987f0c1 15026}
8b095871 15027
9987f0c1
IC
15028function barrettRevert(x) {
15029 return x
15030}
8b095871 15031
9987f0c1
IC
15032// x = x mod m (HAC 14.42)
15033function barrettReduce(x) {
15034 var self = this
15035 x.drShiftTo(self.m.t - 1, self.r2)
15036 if (x.t > self.m.t + 1) {
15037 x.t = self.m.t + 1
15038 x.clamp()
8b095871 15039 }
9987f0c1
IC
15040 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
15041 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
15042 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
15043 x.subTo(self.r2, x)
15044 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
15045}
8b095871 15046
9987f0c1
IC
15047// r = x^2 mod m; x != r
15048function barrettSqrTo(x, r) {
15049 x.squareTo(r)
15050 this.reduce(r)
15051}
8b095871 15052
9987f0c1
IC
15053// r = x*y mod m; x,y != r
15054function barrettMulTo(x, y, r) {
15055 x.multiplyTo(y, r)
15056 this.reduce(r)
15057}
8b095871 15058
9987f0c1
IC
15059Barrett.prototype.convert = barrettConvert
15060Barrett.prototype.revert = barrettRevert
15061Barrett.prototype.reduce = barrettReduce
15062Barrett.prototype.mulTo = barrettMulTo
15063Barrett.prototype.sqrTo = barrettSqrTo
8b095871 15064
9987f0c1
IC
15065// (public) this^e % m (HAC 14.85)
15066function bnModPow(e, m) {
15067 var i = e.bitLength(),
15068 k, r = nbv(1),
15069 z
15070 if (i <= 0) return r
15071 else if (i < 18) k = 1
15072 else if (i < 48) k = 3
15073 else if (i < 144) k = 4
15074 else if (i < 768) k = 5
15075 else k = 6
15076 if (i < 8)
15077 z = new Classic(m)
15078 else if (m.isEven())
15079 z = new Barrett(m)
15080 else
15081 z = new Montgomery(m)
8b095871 15082
9987f0c1
IC
15083 // precomputation
15084 var g = new Array(),
15085 n = 3,
15086 k1 = k - 1,
15087 km = (1 << k) - 1
15088 g[1] = z.convert(this)
15089 if (k > 1) {
15090 var g2 = new BigInteger()
15091 z.sqrTo(g[1], g2)
15092 while (n <= km) {
15093 g[n] = new BigInteger()
15094 z.mulTo(g2, g[n - 2], g[n])
15095 n += 2
8b095871 15096 }
9987f0c1 15097 }
8b095871 15098
9987f0c1
IC
15099 var j = e.t - 1,
15100 w, is1 = true,
15101 r2 = new BigInteger(),
15102 t
15103 i = nbits(e[j]) - 1
15104 while (j >= 0) {
15105 if (i >= k1) w = (e[j] >> (i - k1)) & km
15106 else {
15107 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
15108 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
8b095871
IC
15109 }
15110
9987f0c1
IC
15111 n = k
15112 while ((w & 1) == 0) {
15113 w >>= 1
15114 --n
15115 }
15116 if ((i -= n) < 0) {
15117 i += this.DB
15118 --j
15119 }
15120 if (is1) { // ret == 1, don't bother squaring or multiplying it
15121 g[w].copyTo(r)
15122 is1 = false
15123 } else {
15124 while (n > 1) {
15125 z.sqrTo(r, r2)
15126 z.sqrTo(r2, r)
15127 n -= 2
15128 }
15129 if (n > 0) z.sqrTo(r, r2)
15130 else {
15131 t = r
15132 r = r2
15133 r2 = t
15134 }
15135 z.mulTo(r2, g[w], r)
8b095871 15136 }
8b095871 15137
9987f0c1
IC
15138 while (j >= 0 && (e[j] & (1 << i)) == 0) {
15139 z.sqrTo(r, r2)
15140 t = r
15141 r = r2
15142 r2 = t
15143 if (--i < 0) {
15144 i = this.DB - 1
15145 --j
15146 }
15147 }
15148 }
15149 return z.revert(r)
8b095871
IC
15150}
15151
9987f0c1
IC
15152// (public) gcd(this,a) (HAC 14.54)
15153function bnGCD(a) {
15154 var x = (this.s < 0) ? this.negate() : this.clone()
15155 var y = (a.s < 0) ? a.negate() : a.clone()
15156 if (x.compareTo(y) < 0) {
15157 var t = x
15158 x = y
15159 y = t
15160 }
15161 var i = x.getLowestSetBit(),
15162 g = y.getLowestSetBit()
15163 if (g < 0) return x
15164 if (i < g) g = i
15165 if (g > 0) {
15166 x.rShiftTo(g, x)
15167 y.rShiftTo(g, y)
15168 }
15169 while (x.signum() > 0) {
15170 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
15171 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
15172 if (x.compareTo(y) >= 0) {
15173 x.subTo(y, x)
15174 x.rShiftTo(1, x)
15175 } else {
15176 y.subTo(x, y)
15177 y.rShiftTo(1, y)
15178 }
15179 }
15180 if (g > 0) y.lShiftTo(g, y)
15181 return y
8b095871
IC
15182}
15183
9987f0c1
IC
15184// (protected) this % n, n < 2^26
15185function bnpModInt(n) {
15186 if (n <= 0) return 0
15187 var d = this.DV % n,
15188 r = (this.s < 0) ? n - 1 : 0
15189 if (this.t > 0)
15190 if (d == 0) r = this[0] % n
15191 else
15192 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
15193 return r
8b095871 15194}
8b095871 15195
9987f0c1
IC
15196// (public) 1/this % m (HAC 14.61)
15197function bnModInverse(m) {
15198 var ac = m.isEven()
15199 if (this.signum() === 0) throw new Error('division by zero')
15200 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
15201 var u = m.clone(),
15202 v = this.clone()
15203 var a = nbv(1),
15204 b = nbv(0),
15205 c = nbv(0),
15206 d = nbv(1)
15207 while (u.signum() != 0) {
15208 while (u.isEven()) {
15209 u.rShiftTo(1, u)
15210 if (ac) {
15211 if (!a.isEven() || !b.isEven()) {
15212 a.addTo(this, a)
15213 b.subTo(m, b)
15214 }
15215 a.rShiftTo(1, a)
15216 } else if (!b.isEven()) b.subTo(m, b)
15217 b.rShiftTo(1, b)
8b095871 15218 }
9987f0c1
IC
15219 while (v.isEven()) {
15220 v.rShiftTo(1, v)
15221 if (ac) {
15222 if (!c.isEven() || !d.isEven()) {
15223 c.addTo(this, c)
15224 d.subTo(m, d)
8b095871 15225 }
9987f0c1
IC
15226 c.rShiftTo(1, c)
15227 } else if (!d.isEven()) d.subTo(m, d)
15228 d.rShiftTo(1, d)
8b095871 15229 }
9987f0c1
IC
15230 if (u.compareTo(v) >= 0) {
15231 u.subTo(v, u)
15232 if (ac) a.subTo(c, a)
15233 b.subTo(d, b)
8b095871 15234 } else {
9987f0c1
IC
15235 v.subTo(u, v)
15236 if (ac) c.subTo(a, c)
15237 d.subTo(b, d)
8b095871
IC
15238 }
15239 }
9987f0c1
IC
15240 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
15241 while (d.compareTo(m) >= 0) d.subTo(m, d)
15242 while (d.signum() < 0) d.addTo(m, d)
15243 return d
15244}
8b095871 15245
9987f0c1
IC
15246var lowprimes = [
15247 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
15248 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
15249 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
15250 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
15251 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
15252 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
15253 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
15254 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
15255 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
15256 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
15257 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
15258]
8b095871 15259
9987f0c1 15260var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
8b095871 15261
9987f0c1
IC
15262// (public) test primality with certainty >= 1-.5^t
15263function bnIsProbablePrime(t) {
15264 var i, x = this.abs()
15265 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
15266 for (i = 0; i < lowprimes.length; ++i)
15267 if (x[0] == lowprimes[i]) return true
15268 return false
8b095871 15269 }
9987f0c1
IC
15270 if (x.isEven()) return false
15271 i = 1
15272 while (i < lowprimes.length) {
15273 var m = lowprimes[i],
15274 j = i + 1
15275 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
15276 m = x.modInt(m)
15277 while (i < j) if (m % lowprimes[i++] == 0) return false
15278 }
15279 return x.millerRabin(t)
15280}
8b095871 15281
9987f0c1
IC
15282// (protected) true if probably prime (HAC 4.24, Miller-Rabin)
15283function bnpMillerRabin(t) {
15284 var n1 = this.subtract(BigInteger.ONE)
15285 var k = n1.getLowestSetBit()
15286 if (k <= 0) return false
15287 var r = n1.shiftRight(k)
15288 t = (t + 1) >> 1
15289 if (t > lowprimes.length) t = lowprimes.length
15290 var a = new BigInteger(null)
15291 var j, bases = []
15292 for (var i = 0; i < t; ++i) {
15293 for (;;) {
15294 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
15295 if (bases.indexOf(j) == -1) break
15296 }
15297 bases.push(j)
15298 a.fromInt(j)
15299 var y = a.modPow(r, this)
15300 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
15301 var j = 1
15302 while (j++ < k && y.compareTo(n1) != 0) {
15303 y = y.modPowInt(2, this)
15304 if (y.compareTo(BigInteger.ONE) == 0) return false
8b095871 15305 }
9987f0c1 15306 if (y.compareTo(n1) != 0) return false
8b095871 15307 }
8b095871 15308 }
9987f0c1
IC
15309 return true
15310}
8b095871 15311
9987f0c1
IC
15312// protected
15313proto.chunkSize = bnpChunkSize
15314proto.toRadix = bnpToRadix
15315proto.fromRadix = bnpFromRadix
15316proto.fromNumber = bnpFromNumber
15317proto.bitwiseTo = bnpBitwiseTo
15318proto.changeBit = bnpChangeBit
15319proto.addTo = bnpAddTo
15320proto.dMultiply = bnpDMultiply
15321proto.dAddOffset = bnpDAddOffset
15322proto.multiplyLowerTo = bnpMultiplyLowerTo
15323proto.multiplyUpperTo = bnpMultiplyUpperTo
15324proto.modInt = bnpModInt
15325proto.millerRabin = bnpMillerRabin
8b095871 15326
9987f0c1
IC
15327// public
15328proto.clone = bnClone
15329proto.intValue = bnIntValue
15330proto.byteValue = bnByteValue
15331proto.shortValue = bnShortValue
15332proto.signum = bnSigNum
15333proto.toByteArray = bnToByteArray
15334proto.equals = bnEquals
15335proto.min = bnMin
15336proto.max = bnMax
15337proto.and = bnAnd
15338proto.or = bnOr
15339proto.xor = bnXor
15340proto.andNot = bnAndNot
15341proto.not = bnNot
15342proto.shiftLeft = bnShiftLeft
15343proto.shiftRight = bnShiftRight
15344proto.getLowestSetBit = bnGetLowestSetBit
15345proto.bitCount = bnBitCount
15346proto.testBit = bnTestBit
15347proto.setBit = bnSetBit
15348proto.clearBit = bnClearBit
15349proto.flipBit = bnFlipBit
15350proto.add = bnAdd
15351proto.subtract = bnSubtract
15352proto.multiply = bnMultiply
15353proto.divide = bnDivide
15354proto.remainder = bnRemainder
15355proto.divideAndRemainder = bnDivideAndRemainder
15356proto.modPow = bnModPow
15357proto.modInverse = bnModInverse
15358proto.pow = bnPow
15359proto.gcd = bnGCD
15360proto.isProbablePrime = bnIsProbablePrime
8b095871 15361
9987f0c1
IC
15362// JSBN-specific extension
15363proto.square = bnSquare
15364
15365// constants
15366BigInteger.ZERO = nbv(0)
15367BigInteger.ONE = nbv(1)
15368BigInteger.valueOf = nbv
8b095871 15369
9987f0c1
IC
15370module.exports = BigInteger
15371
15372},{"../package.json":38}],36:[function(require,module,exports){
15373(function (Buffer){
15374// FIXME: Kind of a weird way to throw exceptions, consider removing
15375var assert = require('assert')
15376var BigInteger = require('./bigi')
8b095871
IC
15377
15378/**
9987f0c1 15379 * Turns a byte array into a big integer.
8b095871 15380 *
9987f0c1
IC
15381 * This function will interpret a byte array as a big integer in big
15382 * endian notation.
8b095871 15383 */
9987f0c1
IC
15384BigInteger.fromByteArrayUnsigned = function(byteArray) {
15385 // BigInteger expects a DER integer conformant byte array
15386 if (byteArray[0] & 0x80) {
15387 return new BigInteger([0].concat(byteArray))
8b095871 15388 }
8b095871 15389
9987f0c1
IC
15390 return new BigInteger(byteArray)
15391}
8b095871 15392
9987f0c1
IC
15393/**
15394 * Returns a byte array representation of the big integer.
15395 *
15396 * This returns the absolute of the contained value in big endian
15397 * form. A value of zero results in an empty array.
15398 */
15399BigInteger.prototype.toByteArrayUnsigned = function() {
15400 var byteArray = this.toByteArray()
15401 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
15402}
8b095871 15403
9987f0c1
IC
15404BigInteger.fromDERInteger = function(byteArray) {
15405 return new BigInteger(byteArray)
15406}
8b095871 15407
9987f0c1
IC
15408/*
15409 * Converts BigInteger to a DER integer representation.
15410 *
15411 * The format for this value uses the most significant bit as a sign
15412 * bit. If the most significant bit is already set and the integer is
15413 * positive, a 0x00 is prepended.
15414 *
15415 * Examples:
15416 *
15417 * 0 => 0x00
15418 * 1 => 0x01
15419 * -1 => 0xff
15420 * 127 => 0x7f
15421 * -127 => 0x81
15422 * 128 => 0x0080
15423 * -128 => 0x80
15424 * 255 => 0x00ff
15425 * -255 => 0xff01
15426 * 16300 => 0x3fac
15427 * -16300 => 0xc054
15428 * 62300 => 0x00f35c
15429 * -62300 => 0xff0ca4
15430*/
15431BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
8b095871 15432
9987f0c1
IC
15433BigInteger.fromBuffer = function(buffer) {
15434 // BigInteger expects a DER integer conformant byte array
15435 if (buffer[0] & 0x80) {
15436 var byteArray = Array.prototype.slice.call(buffer)
8b095871 15437
9987f0c1 15438 return new BigInteger([0].concat(byteArray))
8b095871 15439 }
9987f0c1
IC
15440
15441 return new BigInteger(buffer)
8b095871
IC
15442}
15443
9987f0c1
IC
15444BigInteger.fromHex = function(hex) {
15445 if (hex === '') return BigInteger.ZERO
8b095871 15446
9987f0c1
IC
15447 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
15448 assert.equal(hex.length % 2, 0, 'Incomplete hex')
15449 return new BigInteger(hex, 16)
8b095871
IC
15450}
15451
9987f0c1
IC
15452BigInteger.prototype.toBuffer = function(size) {
15453 var byteArray = this.toByteArrayUnsigned()
15454 var zeros = []
8b095871 15455
9987f0c1
IC
15456 var padding = size - byteArray.length
15457 while (zeros.length < padding) zeros.push(0)
8b095871 15458
9987f0c1
IC
15459 return new Buffer(zeros.concat(byteArray))
15460}
8b095871 15461
9987f0c1
IC
15462BigInteger.prototype.toHex = function(size) {
15463 return this.toBuffer(size).toString('hex')
8b095871
IC
15464}
15465
9987f0c1
IC
15466}).call(this,require("buffer").Buffer)
15467},{"./bigi":35,"assert":1,"buffer":4}],37:[function(require,module,exports){
15468var BigInteger = require('./bigi')
8b095871 15469
9987f0c1
IC
15470//addons
15471require('./convert')
15472
15473module.exports = BigInteger
15474},{"./bigi":35,"./convert":36}],38:[function(require,module,exports){
15475module.exports={
15476 "_args": [
15477 [
15478 "bigi",
15479 "/home/ian/git/bitcoin/bitcoinjs-lib-browser"
15480 ]
15481 ],
15482 "_from": "bigi@latest",
15483 "_id": "bigi@1.4.2",
15484 "_inCache": true,
15485 "_installable": true,
15486 "_location": "/bigi",
15487 "_nodeVersion": "6.1.0",
15488 "_npmOperationalInternal": {
15489 "host": "packages-12-west.internal.npmjs.com",
15490 "tmp": "tmp/bigi-1.4.2.tgz_1469584192413_0.6801238611806184"
15491 },
15492 "_npmUser": {
15493 "email": "jprichardson@gmail.com",
15494 "name": "jprichardson"
15495 },
15496 "_npmVersion": "3.8.6",
15497 "_phantomChildren": {},
15498 "_requested": {
15499 "name": "bigi",
15500 "raw": "bigi",
15501 "rawSpec": "",
15502 "scope": null,
15503 "spec": "latest",
15504 "type": "tag"
15505 },
15506 "_requiredBy": [
15507 "#USER",
15508 "/bitcoinjs-lib",
15509 "/ecurve"
15510 ],
15511 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
15512 "_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15513 "_shrinkwrap": null,
15514 "_spec": "bigi",
15515 "_where": "/home/ian/git/bitcoin/bitcoinjs-lib-browser",
15516 "bugs": {
15517 "url": "https://github.com/cryptocoinjs/bigi/issues"
15518 },
15519 "dependencies": {},
15520 "description": "Big integers.",
15521 "devDependencies": {
15522 "coveralls": "^2.11.2",
15523 "istanbul": "^0.3.5",
15524 "jshint": "^2.5.1",
15525 "mocha": "^2.1.0",
15526 "mochify": "^2.1.0"
15527 },
15528 "directories": {},
15529 "dist": {
15530 "shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
15531 "tarball": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz"
15532 },
15533 "gitHead": "c25308081c896ff84702303722bf5ecd8b3f78e3",
15534 "homepage": "https://github.com/cryptocoinjs/bigi#readme",
15535 "keywords": [
15536 "cryptography",
15537 "math",
15538 "bitcoin",
15539 "arbitrary",
15540 "precision",
15541 "arithmetic",
15542 "big",
15543 "integer",
15544 "int",
15545 "number",
15546 "biginteger",
15547 "bigint",
15548 "bignumber",
15549 "decimal",
15550 "float"
15551 ],
15552 "main": "./lib/index.js",
15553 "maintainers": [
15554 {
15555 "email": "boydb@midnightdesign.ws",
15556 "name": "midnightlightning"
15557 },
15558 {
15559 "email": "sidazhang89@gmail.com",
15560 "name": "sidazhang"
15561 },
15562 {
15563 "email": "npm@shesek.info",
15564 "name": "nadav"
15565 },
15566 {
15567 "email": "jprichardson@gmail.com",
15568 "name": "jprichardson"
8b095871 15569 }
9987f0c1
IC
15570 ],
15571 "name": "bigi",
15572 "optionalDependencies": {},
15573 "readme": "ERROR: No README data found!",
15574 "repository": {
15575 "type": "git",
15576 "url": "git+https://github.com/cryptocoinjs/bigi.git"
15577 },
15578 "scripts": {
15579 "browser-test": "mochify --wd -R spec",
15580 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
15581 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info",
15582 "jshint": "jshint --config jshint.json lib/*.js ; true",
15583 "test": "_mocha -- test/*.js",
15584 "unit": "mocha"
15585 },
15586 "testling": {
15587 "browsers": [
15588 "ie/9..latest",
15589 "firefox/latest",
15590 "chrome/latest",
15591 "safari/6.0..latest",
15592 "iphone/6.0..latest",
15593 "android-browser/4.2..latest"
15594 ],
15595 "files": "test/*.js",
15596 "harness": "mocha"
15597 },
15598 "version": "1.4.2"
15599}
8b095871 15600
9987f0c1
IC
15601},{}],39:[function(require,module,exports){
15602// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
15603// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15604// NOTE: SIGHASH byte ignored AND restricted, truncate before use
8b095871 15605
9987f0c1 15606var Buffer = require('safe-buffer').Buffer
8b095871 15607
9987f0c1
IC
15608function check (buffer) {
15609 if (buffer.length < 8) return false
15610 if (buffer.length > 72) return false
15611 if (buffer[0] !== 0x30) return false
15612 if (buffer[1] !== buffer.length - 2) return false
15613 if (buffer[2] !== 0x02) return false
8b095871 15614
9987f0c1
IC
15615 var lenR = buffer[3]
15616 if (lenR === 0) return false
15617 if (5 + lenR >= buffer.length) return false
15618 if (buffer[4 + lenR] !== 0x02) return false
8b095871 15619
9987f0c1
IC
15620 var lenS = buffer[5 + lenR]
15621 if (lenS === 0) return false
15622 if ((6 + lenR + lenS) !== buffer.length) return false
8b095871 15623
9987f0c1
IC
15624 if (buffer[4] & 0x80) return false
15625 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
8b095871 15626
9987f0c1
IC
15627 if (buffer[lenR + 6] & 0x80) return false
15628 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
15629 return true
15630}
8b095871 15631
9987f0c1
IC
15632function decode (buffer) {
15633 if (buffer.length < 8) throw new Error('DER sequence length is too short')
15634 if (buffer.length > 72) throw new Error('DER sequence length is too long')
15635 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
15636 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
15637 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
8b095871 15638
9987f0c1
IC
15639 var lenR = buffer[3]
15640 if (lenR === 0) throw new Error('R length is zero')
15641 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
15642 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
8b095871 15643
9987f0c1
IC
15644 var lenS = buffer[5 + lenR]
15645 if (lenS === 0) throw new Error('S length is zero')
15646 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
8b095871 15647
9987f0c1
IC
15648 if (buffer[4] & 0x80) throw new Error('R value is negative')
15649 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
8b095871 15650
9987f0c1
IC
15651 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
15652 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
8b095871 15653
9987f0c1
IC
15654 // non-BIP66 - extract R, S values
15655 return {
15656 r: buffer.slice(4, 4 + lenR),
15657 s: buffer.slice(6 + lenR)
8b095871 15658 }
9987f0c1 15659}
8b095871 15660
9987f0c1
IC
15661/*
15662 * Expects r and s to be positive DER integers.
15663 *
15664 * The DER format uses the most significant bit as a sign bit (& 0x80).
15665 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
15666 *
15667 * Examples:
15668 *
15669 * 0 => 0x00
15670 * 1 => 0x01
15671 * -1 => 0xff
15672 * 127 => 0x7f
15673 * -127 => 0x81
15674 * 128 => 0x0080
15675 * -128 => 0x80
15676 * 255 => 0x00ff
15677 * -255 => 0xff01
15678 * 16300 => 0x3fac
15679 * -16300 => 0xc054
15680 * 62300 => 0x00f35c
15681 * -62300 => 0xff0ca4
15682*/
15683function encode (r, s) {
15684 var lenR = r.length
15685 var lenS = s.length
15686 if (lenR === 0) throw new Error('R length is zero')
15687 if (lenS === 0) throw new Error('S length is zero')
15688 if (lenR > 33) throw new Error('R length is too long')
15689 if (lenS > 33) throw new Error('S length is too long')
15690 if (r[0] & 0x80) throw new Error('R value is negative')
15691 if (s[0] & 0x80) throw new Error('S value is negative')
15692 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
15693 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
8b095871 15694
9987f0c1 15695 var signature = Buffer.allocUnsafe(6 + lenR + lenS)
8b095871 15696
9987f0c1
IC
15697 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
15698 signature[0] = 0x30
15699 signature[1] = signature.length - 2
15700 signature[2] = 0x02
15701 signature[3] = r.length
15702 r.copy(signature, 4)
15703 signature[4 + lenR] = 0x02
15704 signature[5 + lenR] = s.length
15705 s.copy(signature, 6 + lenR)
8b095871 15706
9987f0c1 15707 return signature
8b095871
IC
15708}
15709
9987f0c1
IC
15710module.exports = {
15711 check: check,
15712 decode: decode,
15713 encode: encode
8b095871
IC
15714}
15715
9987f0c1
IC
15716},{"safe-buffer":98}],40:[function(require,module,exports){
15717module.exports={
15718 "OP_FALSE": 0,
15719 "OP_0": 0,
15720 "OP_PUSHDATA1": 76,
15721 "OP_PUSHDATA2": 77,
15722 "OP_PUSHDATA4": 78,
15723 "OP_1NEGATE": 79,
15724 "OP_RESERVED": 80,
15725 "OP_1": 81,
15726 "OP_TRUE": 81,
15727 "OP_2": 82,
15728 "OP_3": 83,
15729 "OP_4": 84,
15730 "OP_5": 85,
15731 "OP_6": 86,
15732 "OP_7": 87,
15733 "OP_8": 88,
15734 "OP_9": 89,
15735 "OP_10": 90,
15736 "OP_11": 91,
15737 "OP_12": 92,
15738 "OP_13": 93,
15739 "OP_14": 94,
15740 "OP_15": 95,
15741 "OP_16": 96,
15742
15743 "OP_NOP": 97,
15744 "OP_VER": 98,
15745 "OP_IF": 99,
15746 "OP_NOTIF": 100,
15747 "OP_VERIF": 101,
15748 "OP_VERNOTIF": 102,
15749 "OP_ELSE": 103,
15750 "OP_ENDIF": 104,
15751 "OP_VERIFY": 105,
15752 "OP_RETURN": 106,
15753
15754 "OP_TOALTSTACK": 107,
15755 "OP_FROMALTSTACK": 108,
15756 "OP_2DROP": 109,
15757 "OP_2DUP": 110,
15758 "OP_3DUP": 111,
15759 "OP_2OVER": 112,
15760 "OP_2ROT": 113,
15761 "OP_2SWAP": 114,
15762 "OP_IFDUP": 115,
15763 "OP_DEPTH": 116,
15764 "OP_DROP": 117,
15765 "OP_DUP": 118,
15766 "OP_NIP": 119,
15767 "OP_OVER": 120,
15768 "OP_PICK": 121,
15769 "OP_ROLL": 122,
15770 "OP_ROT": 123,
15771 "OP_SWAP": 124,
15772 "OP_TUCK": 125,
15773
15774 "OP_CAT": 126,
15775 "OP_SUBSTR": 127,
15776 "OP_LEFT": 128,
15777 "OP_RIGHT": 129,
15778 "OP_SIZE": 130,
15779
15780 "OP_INVERT": 131,
15781 "OP_AND": 132,
15782 "OP_OR": 133,
15783 "OP_XOR": 134,
15784 "OP_EQUAL": 135,
15785 "OP_EQUALVERIFY": 136,
15786 "OP_RESERVED1": 137,
15787 "OP_RESERVED2": 138,
15788
15789 "OP_1ADD": 139,
15790 "OP_1SUB": 140,
15791 "OP_2MUL": 141,
15792 "OP_2DIV": 142,
15793 "OP_NEGATE": 143,
15794 "OP_ABS": 144,
15795 "OP_NOT": 145,
15796 "OP_0NOTEQUAL": 146,
15797 "OP_ADD": 147,
15798 "OP_SUB": 148,
15799 "OP_MUL": 149,
15800 "OP_DIV": 150,
15801 "OP_MOD": 151,
15802 "OP_LSHIFT": 152,
15803 "OP_RSHIFT": 153,
15804
15805 "OP_BOOLAND": 154,
15806 "OP_BOOLOR": 155,
15807 "OP_NUMEQUAL": 156,
15808 "OP_NUMEQUALVERIFY": 157,
15809 "OP_NUMNOTEQUAL": 158,
15810 "OP_LESSTHAN": 159,
15811 "OP_GREATERTHAN": 160,
15812 "OP_LESSTHANOREQUAL": 161,
15813 "OP_GREATERTHANOREQUAL": 162,
15814 "OP_MIN": 163,
15815 "OP_MAX": 164,
15816
15817 "OP_WITHIN": 165,
15818
15819 "OP_RIPEMD160": 166,
15820 "OP_SHA1": 167,
15821 "OP_SHA256": 168,
15822 "OP_HASH160": 169,
15823 "OP_HASH256": 170,
15824 "OP_CODESEPARATOR": 171,
15825 "OP_CHECKSIG": 172,
15826 "OP_CHECKSIGVERIFY": 173,
15827 "OP_CHECKMULTISIG": 174,
15828 "OP_CHECKMULTISIGVERIFY": 175,
15829
15830 "OP_NOP1": 176,
15831 "OP_NOP2": 177,
15832 "OP_CHECKLOCKTIMEVERIFY": 177,
15833
15834 "OP_NOP3": 178,
15835 "OP_NOP4": 179,
15836 "OP_NOP5": 180,
15837 "OP_NOP6": 181,
15838 "OP_NOP7": 182,
15839 "OP_NOP8": 183,
15840 "OP_NOP9": 184,
15841 "OP_NOP10": 185,
15842
15843 "OP_PUBKEYHASH": 253,
15844 "OP_PUBKEY": 254,
15845 "OP_INVALIDOPCODE": 255
15846}
15847
15848},{}],41:[function(require,module,exports){
15849var OPS = require('./index.json')
15850
15851var map = {}
15852for (var op in OPS) {
15853 var code = OPS[op]
15854 map[code] = op
15855}
15856
15857module.exports = map
15858
15859},{"./index.json":40}],42:[function(require,module,exports){
15860var Buffer = require('safe-buffer').Buffer
15861var bs58check = require('bs58check')
15862var bscript = require('./script')
15863var networks = require('./networks')
15864var typeforce = require('typeforce')
15865var types = require('./types')
8b095871 15866
9987f0c1
IC
15867function fromBase58Check (address) {
15868 var payload = bs58check.decode(address)
15869 if (payload.length < 21) throw new TypeError(address + ' is too short')
15870 if (payload.length > 21) throw new TypeError(address + ' is too long')
8b095871 15871
9987f0c1
IC
15872 var version = payload.readUInt8(0)
15873 var hash = payload.slice(1)
8b095871 15874
9987f0c1 15875 return { hash: hash, version: version }
8b095871
IC
15876}
15877
9987f0c1
IC
15878function toBase58Check (hash, version) {
15879 typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments)
8b095871 15880
9987f0c1
IC
15881 var payload = Buffer.allocUnsafe(21)
15882 payload.writeUInt8(version, 0)
15883 hash.copy(payload, 1)
8b095871 15884
9987f0c1 15885 return bs58check.encode(payload)
8b095871
IC
15886}
15887
9987f0c1
IC
15888function fromOutputScript (outputScript, network) {
15889 network = network || networks.bitcoin
8b095871 15890
9987f0c1
IC
15891 if (bscript.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash)
15892 if (bscript.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash)
8b095871 15893
9987f0c1 15894 throw new Error(bscript.toASM(outputScript) + ' has no matching Address')
8b095871
IC
15895}
15896
9987f0c1
IC
15897function toOutputScript (address, network) {
15898 network = network || networks.bitcoin
8b095871 15899
9987f0c1
IC
15900 var decode = fromBase58Check(address)
15901 if (decode.version === network.pubKeyHash) return bscript.pubKeyHash.output.encode(decode.hash)
15902 if (decode.version === network.scriptHash) return bscript.scriptHash.output.encode(decode.hash)
8b095871 15903
9987f0c1 15904 throw new Error(address + ' has no matching Script')
8b095871 15905}
8b095871 15906
9987f0c1
IC
15907module.exports = {
15908 fromBase58Check: fromBase58Check,
15909 fromOutputScript: fromOutputScript,
15910 toBase58Check: toBase58Check,
15911 toOutputScript: toOutputScript
8b095871 15912}
8b095871 15913
9987f0c1
IC
15914},{"./networks":51,"./script":52,"./types":78,"bs58check":80,"safe-buffer":98,"typeforce":109}],43:[function(require,module,exports){
15915var Buffer = require('safe-buffer').Buffer
15916var bcrypto = require('./crypto')
15917var fastMerkleRoot = require('merkle-lib/fastRoot')
15918var typeforce = require('typeforce')
15919var types = require('./types')
15920var varuint = require('varuint-bitcoin')
8b095871 15921
9987f0c1 15922var Transaction = require('./transaction')
8b095871 15923
9987f0c1
IC
15924function Block () {
15925 this.version = 1
15926 this.prevHash = null
15927 this.merkleRoot = null
15928 this.timestamp = 0
15929 this.bits = 0
15930 this.nonce = 0
8b095871 15931}
8b095871 15932
9987f0c1
IC
15933Block.fromBuffer = function (buffer) {
15934 if (buffer.length < 80) throw new Error('Buffer too small (< 80 bytes)')
8b095871 15935
9987f0c1
IC
15936 var offset = 0
15937 function readSlice (n) {
15938 offset += n
15939 return buffer.slice(offset - n, offset)
15940 }
8b095871 15941
9987f0c1
IC
15942 function readUInt32 () {
15943 var i = buffer.readUInt32LE(offset)
15944 offset += 4
15945 return i
15946 }
8b095871 15947
9987f0c1
IC
15948 function readInt32 () {
15949 var i = buffer.readInt32LE(offset)
15950 offset += 4
15951 return i
15952 }
8b095871 15953
9987f0c1
IC
15954 var block = new Block()
15955 block.version = readInt32()
15956 block.prevHash = readSlice(32)
15957 block.merkleRoot = readSlice(32)
15958 block.timestamp = readUInt32()
15959 block.bits = readUInt32()
15960 block.nonce = readUInt32()
8b095871 15961
9987f0c1 15962 if (buffer.length === 80) return block
8b095871 15963
9987f0c1
IC
15964 function readVarInt () {
15965 var vi = varuint.decode(buffer, offset)
15966 offset += varuint.decode.bytes
15967 return vi
15968 }
8b095871 15969
9987f0c1
IC
15970 function readTransaction () {
15971 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
15972 offset += tx.byteLength()
15973 return tx
15974 }
8b095871 15975
9987f0c1
IC
15976 var nTransactions = readVarInt()
15977 block.transactions = []
8b095871 15978
9987f0c1
IC
15979 for (var i = 0; i < nTransactions; ++i) {
15980 var tx = readTransaction()
15981 block.transactions.push(tx)
15982 }
8b095871 15983
9987f0c1 15984 return block
8b095871
IC
15985}
15986
9987f0c1
IC
15987Block.prototype.byteLength = function (headersOnly) {
15988 if (headersOnly || !this.transactions) return 80
8b095871 15989
9987f0c1
IC
15990 return 80 + varuint.encodingLength(this.transactions.length) + this.transactions.reduce(function (a, x) {
15991 return a + x.byteLength()
15992 }, 0)
8b095871
IC
15993}
15994
9987f0c1
IC
15995Block.fromHex = function (hex) {
15996 return Block.fromBuffer(Buffer.from(hex, 'hex'))
15997}
8b095871 15998
9987f0c1
IC
15999Block.prototype.getHash = function () {
16000 return bcrypto.hash256(this.toBuffer(true))
16001}
8b095871 16002
9987f0c1
IC
16003Block.prototype.getId = function () {
16004 return this.getHash().reverse().toString('hex')
8b095871
IC
16005}
16006
9987f0c1
IC
16007Block.prototype.getUTCDate = function () {
16008 var date = new Date(0) // epoch
16009 date.setUTCSeconds(this.timestamp)
8b095871 16010
9987f0c1 16011 return date
8b095871 16012}
8b095871 16013
9987f0c1
IC
16014// TODO: buffer, offset compatibility
16015Block.prototype.toBuffer = function (headersOnly) {
16016 var buffer = Buffer.allocUnsafe(this.byteLength(headersOnly))
16017
16018 var offset = 0
16019 function writeSlice (slice) {
16020 slice.copy(buffer, offset)
16021 offset += slice.length
16022 }
8b095871 16023
9987f0c1
IC
16024 function writeInt32 (i) {
16025 buffer.writeInt32LE(i, offset)
16026 offset += 4
16027 }
16028 function writeUInt32 (i) {
16029 buffer.writeUInt32LE(i, offset)
16030 offset += 4
16031 }
8b095871 16032
9987f0c1
IC
16033 writeInt32(this.version)
16034 writeSlice(this.prevHash)
16035 writeSlice(this.merkleRoot)
16036 writeUInt32(this.timestamp)
16037 writeUInt32(this.bits)
16038 writeUInt32(this.nonce)
8b095871 16039
9987f0c1 16040 if (headersOnly || !this.transactions) return buffer
8b095871 16041
9987f0c1
IC
16042 varuint.encode(this.transactions.length, buffer, offset)
16043 offset += varuint.encode.bytes
8b095871 16044
9987f0c1
IC
16045 this.transactions.forEach(function (tx) {
16046 var txSize = tx.byteLength() // TODO: extract from toBuffer?
16047 tx.toBuffer(buffer, offset)
16048 offset += txSize
16049 })
8b095871 16050
9987f0c1
IC
16051 return buffer
16052}
8b095871 16053
9987f0c1
IC
16054Block.prototype.toHex = function (headersOnly) {
16055 return this.toBuffer(headersOnly).toString('hex')
16056}
8b095871 16057
9987f0c1
IC
16058Block.calculateTarget = function (bits) {
16059 var exponent = ((bits & 0xff000000) >> 24) - 3
16060 var mantissa = bits & 0x007fffff
16061 var target = Buffer.alloc(32, 0)
16062 target.writeUInt32BE(mantissa, 28 - exponent)
16063 return target
8b095871
IC
16064}
16065
9987f0c1
IC
16066Block.calculateMerkleRoot = function (transactions) {
16067 typeforce([{ getHash: types.Function }], transactions)
16068 if (transactions.length === 0) throw TypeError('Cannot compute merkle root for zero transactions')
8b095871 16069
9987f0c1
IC
16070 var hashes = transactions.map(function (transaction) {
16071 return transaction.getHash()
16072 })
8b095871 16073
9987f0c1
IC
16074 return fastMerkleRoot(hashes, bcrypto.hash256)
16075}
8b095871 16076
9987f0c1
IC
16077Block.prototype.checkMerkleRoot = function () {
16078 if (!this.transactions) return false
8b095871 16079
9987f0c1
IC
16080 var actualMerkleRoot = Block.calculateMerkleRoot(this.transactions)
16081 return this.merkleRoot.compare(actualMerkleRoot) === 0
16082}
8b095871 16083
9987f0c1
IC
16084Block.prototype.checkProofOfWork = function () {
16085 var hash = this.getHash().reverse()
16086 var target = Block.calculateTarget(this.bits)
8b095871 16087
9987f0c1
IC
16088 return hash.compare(target) <= 0
16089}
8b095871 16090
9987f0c1 16091module.exports = Block
8b095871 16092
9987f0c1
IC
16093},{"./crypto":45,"./transaction":76,"./types":78,"merkle-lib/fastRoot":94,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],44:[function(require,module,exports){
16094var pushdata = require('pushdata-bitcoin')
16095var varuint = require('varuint-bitcoin')
8b095871 16096
9987f0c1
IC
16097// https://github.com/feross/buffer/blob/master/index.js#L1127
16098function verifuint (value, max) {
16099 if (typeof value !== 'number') throw new Error('cannot write a non-number as a number')
16100 if (value < 0) throw new Error('specified a negative value for writing an unsigned value')
16101 if (value > max) throw new Error('RangeError: value out of range')
16102 if (Math.floor(value) !== value) throw new Error('value has a fractional component')
8b095871
IC
16103}
16104
9987f0c1
IC
16105function readUInt64LE (buffer, offset) {
16106 var a = buffer.readUInt32LE(offset)
16107 var b = buffer.readUInt32LE(offset + 4)
16108 b *= 0x100000000
8b095871 16109
9987f0c1 16110 verifuint(b + a, 0x001fffffffffffff)
8b095871 16111
9987f0c1 16112 return b + a
8b095871
IC
16113}
16114
9987f0c1
IC
16115function writeUInt64LE (buffer, value, offset) {
16116 verifuint(value, 0x001fffffffffffff)
8b095871 16117
9987f0c1
IC
16118 buffer.writeInt32LE(value & -1, offset)
16119 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16120 return offset + 8
8b095871
IC
16121}
16122
9987f0c1
IC
16123// TODO: remove in 4.0.0?
16124function readVarInt (buffer, offset) {
16125 var result = varuint.decode(buffer, offset)
8b095871 16126
9987f0c1
IC
16127 return {
16128 number: result,
16129 size: varuint.decode.bytes
8b095871 16130 }
9987f0c1 16131}
8b095871 16132
9987f0c1
IC
16133// TODO: remove in 4.0.0?
16134function writeVarInt (buffer, number, offset) {
16135 varuint.encode(number, buffer, offset)
16136 return varuint.encode.bytes
8b095871
IC
16137}
16138
16139module.exports = {
9987f0c1
IC
16140 pushDataSize: pushdata.encodingLength,
16141 readPushDataInt: pushdata.decode,
16142 readUInt64LE: readUInt64LE,
16143 readVarInt: readVarInt,
16144 varIntBuffer: varuint.encode,
16145 varIntSize: varuint.encodingLength,
16146 writePushDataInt: pushdata.encode,
16147 writeUInt64LE: writeUInt64LE,
16148 writeVarInt: writeVarInt
8b095871
IC
16149}
16150
9987f0c1
IC
16151},{"pushdata-bitcoin":95,"varuint-bitcoin":111}],45:[function(require,module,exports){
16152var createHash = require('create-hash')
8b095871 16153
9987f0c1
IC
16154function ripemd160 (buffer) {
16155 return createHash('rmd160').update(buffer).digest()
16156}
8b095871 16157
9987f0c1
IC
16158function sha1 (buffer) {
16159 return createHash('sha1').update(buffer).digest()
8b095871
IC
16160}
16161
9987f0c1
IC
16162function sha256 (buffer) {
16163 return createHash('sha256').update(buffer).digest()
16164}
8b095871 16165
9987f0c1
IC
16166function hash160 (buffer) {
16167 return ripemd160(sha256(buffer))
16168}
8b095871 16169
9987f0c1
IC
16170function hash256 (buffer) {
16171 return sha256(sha256(buffer))
8b095871
IC
16172}
16173
9987f0c1
IC
16174module.exports = {
16175 hash160: hash160,
16176 hash256: hash256,
16177 ripemd160: ripemd160,
16178 sha1: sha1,
16179 sha256: sha256
8b095871
IC
16180}
16181
9987f0c1
IC
16182},{"create-hash":82}],46:[function(require,module,exports){
16183var Buffer = require('safe-buffer').Buffer
16184var createHmac = require('create-hmac')
16185var typeforce = require('typeforce')
16186var types = require('./types')
8b095871 16187
9987f0c1
IC
16188var BigInteger = require('bigi')
16189var ECSignature = require('./ecsignature')
8b095871 16190
9987f0c1
IC
16191var ZERO = Buffer.alloc(1, 0)
16192var ONE = Buffer.alloc(1, 1)
8b095871 16193
9987f0c1
IC
16194var ecurve = require('ecurve')
16195var secp256k1 = ecurve.getCurveByName('secp256k1')
8b095871 16196
9987f0c1
IC
16197// https://tools.ietf.org/html/rfc6979#section-3.2
16198function deterministicGenerateK (hash, x, checkSig) {
16199 typeforce(types.tuple(
16200 types.Hash256bit,
16201 types.Buffer256bit,
16202 types.Function
16203 ), arguments)
8b095871 16204
9987f0c1
IC
16205 // Step A, ignored as hash already provided
16206 // Step B
16207 // Step C
16208 var k = Buffer.alloc(32, 0)
16209 var v = Buffer.alloc(32, 1)
8b095871 16210
9987f0c1
IC
16211 // Step D
16212 k = createHmac('sha256', k)
16213 .update(v)
16214 .update(ZERO)
16215 .update(x)
16216 .update(hash)
16217 .digest()
8b095871 16218
9987f0c1
IC
16219 // Step E
16220 v = createHmac('sha256', k).update(v).digest()
8b095871 16221
9987f0c1
IC
16222 // Step F
16223 k = createHmac('sha256', k)
16224 .update(v)
16225 .update(ONE)
16226 .update(x)
16227 .update(hash)
16228 .digest()
8b095871 16229
9987f0c1
IC
16230 // Step G
16231 v = createHmac('sha256', k).update(v).digest()
8b095871 16232
9987f0c1
IC
16233 // Step H1/H2a, ignored as tlen === qlen (256 bit)
16234 // Step H2b
16235 v = createHmac('sha256', k).update(v).digest()
8b095871 16236
9987f0c1 16237 var T = BigInteger.fromBuffer(v)
8b095871 16238
9987f0c1
IC
16239 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
16240 while (T.signum() <= 0 || T.compareTo(secp256k1.n) >= 0 || !checkSig(T)) {
16241 k = createHmac('sha256', k)
16242 .update(v)
16243 .update(ZERO)
16244 .digest()
16245
16246 v = createHmac('sha256', k).update(v).digest()
16247
16248 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
16249 // Step H2b again
16250 v = createHmac('sha256', k).update(v).digest()
16251 T = BigInteger.fromBuffer(v)
8b095871
IC
16252 }
16253
9987f0c1 16254 return T
8b095871
IC
16255}
16256
9987f0c1 16257var N_OVER_TWO = secp256k1.n.shiftRight(1)
8b095871 16258
9987f0c1
IC
16259function sign (hash, d) {
16260 typeforce(types.tuple(types.Hash256bit, types.BigInt), arguments)
8b095871 16261
9987f0c1
IC
16262 var x = d.toBuffer(32)
16263 var e = BigInteger.fromBuffer(hash)
16264 var n = secp256k1.n
16265 var G = secp256k1.G
8b095871 16266
9987f0c1
IC
16267 var r, s
16268 deterministicGenerateK(hash, x, function (k) {
16269 var Q = G.multiply(k)
8b095871 16270
9987f0c1 16271 if (secp256k1.isInfinity(Q)) return false
8b095871 16272
9987f0c1
IC
16273 r = Q.affineX.mod(n)
16274 if (r.signum() === 0) return false
8b095871 16275
9987f0c1
IC
16276 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
16277 if (s.signum() === 0) return false
8b095871 16278
9987f0c1
IC
16279 return true
16280 })
16281
16282 // enforce low S values, see bip62: 'low s values in signatures'
16283 if (s.compareTo(N_OVER_TWO) > 0) {
16284 s = n.subtract(s)
8b095871 16285 }
8b095871 16286
9987f0c1 16287 return new ECSignature(r, s)
8b095871 16288}
8b095871 16289
9987f0c1
IC
16290function verify (hash, signature, Q) {
16291 typeforce(types.tuple(
16292 types.Hash256bit,
16293 types.ECSignature,
16294 types.ECPoint
16295 ), arguments)
8b095871 16296
9987f0c1
IC
16297 var n = secp256k1.n
16298 var G = secp256k1.G
8b095871 16299
9987f0c1
IC
16300 var r = signature.r
16301 var s = signature.s
8b095871 16302
9987f0c1
IC
16303 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
16304 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
16305 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
8b095871 16306
9987f0c1
IC
16307 // 1.4.2 H = Hash(M), already done by the user
16308 // 1.4.3 e = H
16309 var e = BigInteger.fromBuffer(hash)
8b095871 16310
9987f0c1
IC
16311 // Compute s^-1
16312 var sInv = s.modInverse(n)
8b095871 16313
9987f0c1
IC
16314 // 1.4.4 Compute u1 = es^−1 mod n
16315 // u2 = rs^−1 mod n
16316 var u1 = e.multiply(sInv).mod(n)
16317 var u2 = r.multiply(sInv).mod(n)
8b095871 16318
9987f0c1
IC
16319 // 1.4.5 Compute R = (xR, yR)
16320 // R = u1G + u2Q
16321 var R = G.multiplyTwo(u1, Q, u2)
8b095871 16322
9987f0c1
IC
16323 // 1.4.5 (cont.) Enforce R is not at infinity
16324 if (secp256k1.isInfinity(R)) return false
8b095871 16325
9987f0c1
IC
16326 // 1.4.6 Convert the field element R.x to an integer
16327 var xR = R.affineX
8b095871 16328
9987f0c1
IC
16329 // 1.4.7 Set v = xR mod n
16330 var v = xR.mod(n)
8b095871 16331
9987f0c1
IC
16332 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
16333 return v.equals(r)
8b095871
IC
16334}
16335
9987f0c1
IC
16336module.exports = {
16337 deterministicGenerateK: deterministicGenerateK,
16338 sign: sign,
16339 verify: verify,
8b095871 16340
9987f0c1
IC
16341 // TODO: remove
16342 __curve: secp256k1
16343}
8b095871 16344
9987f0c1
IC
16345},{"./ecsignature":48,"./types":78,"bigi":37,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],47:[function(require,module,exports){
16346var baddress = require('./address')
16347var bcrypto = require('./crypto')
16348var ecdsa = require('./ecdsa')
16349var randomBytes = require('randombytes')
16350var typeforce = require('typeforce')
16351var types = require('./types')
16352var wif = require('wif')
8b095871 16353
9987f0c1
IC
16354var NETWORKS = require('./networks')
16355var BigInteger = require('bigi')
8b095871 16356
9987f0c1
IC
16357var ecurve = require('ecurve')
16358var secp256k1 = ecdsa.__curve
8b095871 16359
9987f0c1
IC
16360function ECPair (d, Q, options) {
16361 if (options) {
16362 typeforce({
16363 compressed: types.maybe(types.Boolean),
16364 network: types.maybe(types.Network)
16365 }, options)
16366 }
8b095871 16367
9987f0c1 16368 options = options || {}
8b095871 16369
9987f0c1
IC
16370 if (d) {
16371 if (d.signum() <= 0) throw new Error('Private key must be greater than 0')
16372 if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order')
16373 if (Q) throw new TypeError('Unexpected publicKey parameter')
8b095871 16374
9987f0c1
IC
16375 this.d = d
16376 } else {
16377 typeforce(types.ECPoint, Q)
8b095871 16378
9987f0c1 16379 this.__Q = Q
8b095871 16380 }
8b095871 16381
9987f0c1
IC
16382 this.compressed = options.compressed === undefined ? true : options.compressed
16383 this.network = options.network || NETWORKS.bitcoin
8b095871
IC
16384}
16385
9987f0c1
IC
16386Object.defineProperty(ECPair.prototype, 'Q', {
16387 get: function () {
16388 if (!this.__Q && this.d) {
16389 this.__Q = secp256k1.G.multiply(this.d)
16390 }
8b095871 16391
9987f0c1 16392 return this.__Q
8b095871 16393 }
9987f0c1 16394})
8b095871 16395
9987f0c1
IC
16396ECPair.fromPublicKeyBuffer = function (buffer, network) {
16397 var Q = ecurve.Point.decodeFrom(secp256k1, buffer)
8b095871 16398
9987f0c1
IC
16399 return new ECPair(null, Q, {
16400 compressed: Q.compressed,
16401 network: network
16402 })
16403}
8b095871 16404
9987f0c1
IC
16405ECPair.fromWIF = function (string, network) {
16406 var decoded = wif.decode(string)
16407 var version = decoded.version
8b095871 16408
9987f0c1
IC
16409 // list of networks?
16410 if (types.Array(network)) {
16411 network = network.filter(function (x) {
16412 return version === x.wif
16413 }).pop()
16414
16415 if (!network) throw new Error('Unknown network version')
16416
16417 // otherwise, assume a network object (or default to bitcoin)
16418 } else {
16419 network = network || NETWORKS.bitcoin
16420
16421 if (version !== network.wif) throw new Error('Invalid network version')
8b095871
IC
16422 }
16423
9987f0c1
IC
16424 var d = BigInteger.fromBuffer(decoded.privateKey)
16425
16426 return new ECPair(d, null, {
16427 compressed: decoded.compressed,
16428 network: network
16429 })
8b095871
IC
16430}
16431
9987f0c1
IC
16432ECPair.makeRandom = function (options) {
16433 options = options || {}
16434
16435 var rng = options.rng || randomBytes
16436
16437 var d
16438 do {
16439 var buffer = rng(32)
16440 typeforce(types.Buffer256bit, buffer)
16441
16442 d = BigInteger.fromBuffer(buffer)
16443 } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0)
16444
16445 return new ECPair(d, null, options)
8b095871
IC
16446}
16447
9987f0c1
IC
16448ECPair.prototype.getAddress = function () {
16449 return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash)
8b095871
IC
16450}
16451
9987f0c1
IC
16452ECPair.prototype.getNetwork = function () {
16453 return this.network
8b095871
IC
16454}
16455
9987f0c1
IC
16456ECPair.prototype.getPublicKeyBuffer = function () {
16457 return this.Q.getEncoded(this.compressed)
8b095871
IC
16458}
16459
9987f0c1
IC
16460ECPair.prototype.sign = function (hash) {
16461 if (!this.d) throw new Error('Missing private key')
16462
16463 return ecdsa.sign(hash, this.d)
8b095871
IC
16464}
16465
9987f0c1
IC
16466ECPair.prototype.toWIF = function () {
16467 if (!this.d) throw new Error('Missing private key')
16468
16469 return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed)
8b095871
IC
16470}
16471
9987f0c1
IC
16472ECPair.prototype.verify = function (hash, signature) {
16473 return ecdsa.verify(hash, signature, this.Q)
16474}
8b095871 16475
9987f0c1 16476module.exports = ECPair
8b095871 16477
9987f0c1
IC
16478},{"./address":42,"./crypto":45,"./ecdsa":46,"./networks":51,"./types":78,"bigi":37,"ecurve":89,"randombytes":96,"typeforce":109,"wif":112}],48:[function(require,module,exports){
16479(function (Buffer){
16480var bip66 = require('bip66')
16481var typeforce = require('typeforce')
16482var types = require('./types')
8b095871 16483
9987f0c1 16484var BigInteger = require('bigi')
8b095871 16485
9987f0c1
IC
16486function ECSignature (r, s) {
16487 typeforce(types.tuple(types.BigInt, types.BigInt), arguments)
8b095871 16488
9987f0c1
IC
16489 this.r = r
16490 this.s = s
16491}
16492
16493ECSignature.parseCompact = function (buffer) {
16494 if (buffer.length !== 65) throw new Error('Invalid signature length')
16495
16496 var flagByte = buffer.readUInt8(0) - 27
16497 if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter')
16498
16499 var compressed = !!(flagByte & 4)
16500 var recoveryParam = flagByte & 3
16501
16502 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
16503 var s = BigInteger.fromBuffer(buffer.slice(33))
16504
16505 return {
16506 compressed: compressed,
16507 i: recoveryParam,
16508 signature: new ECSignature(r, s)
8b095871 16509 }
9987f0c1 16510}
8b095871 16511
9987f0c1
IC
16512ECSignature.fromDER = function (buffer) {
16513 var decode = bip66.decode(buffer)
16514 var r = BigInteger.fromDERInteger(decode.r)
16515 var s = BigInteger.fromDERInteger(decode.s)
8b095871 16516
9987f0c1
IC
16517 return new ECSignature(r, s)
16518}
16519
16520// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
16521ECSignature.parseScriptSignature = function (buffer) {
16522 var hashType = buffer.readUInt8(buffer.length - 1)
16523 var hashTypeMod = hashType & ~0x80
16524
16525 if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType)
16526
16527 return {
16528 signature: ECSignature.fromDER(buffer.slice(0, -1)),
16529 hashType: hashType
8b095871 16530 }
9987f0c1 16531}
8b095871 16532
9987f0c1
IC
16533ECSignature.prototype.toCompact = function (i, compressed) {
16534 if (compressed) {
16535 i += 4
16536 }
16537
16538 i += 27
16539
16540 var buffer = Buffer.alloc(65)
16541 buffer.writeUInt8(i, 0)
16542 this.r.toBuffer(32).copy(buffer, 1)
16543 this.s.toBuffer(32).copy(buffer, 33)
16544
16545 return buffer
8b095871
IC
16546}
16547
9987f0c1
IC
16548ECSignature.prototype.toDER = function () {
16549 var r = Buffer.from(this.r.toDERInteger())
16550 var s = Buffer.from(this.s.toDERInteger())
16551
16552 return bip66.encode(r, s)
16553}
16554
16555ECSignature.prototype.toScriptSignature = function (hashType) {
16556 var hashTypeMod = hashType & ~0x80
16557 if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType)
16558
16559 var hashTypeBuffer = Buffer.alloc(1)
16560 hashTypeBuffer.writeUInt8(hashType, 0)
16561
16562 return Buffer.concat([this.toDER(), hashTypeBuffer])
16563}
16564
16565module.exports = ECSignature
8b095871
IC
16566
16567}).call(this,require("buffer").Buffer)
9987f0c1
IC
16568},{"./types":78,"bigi":37,"bip66":39,"buffer":4,"typeforce":109}],49:[function(require,module,exports){
16569var Buffer = require('safe-buffer').Buffer
16570var base58check = require('bs58check')
16571var bcrypto = require('./crypto')
16572var createHmac = require('create-hmac')
16573var typeforce = require('typeforce')
16574var types = require('./types')
16575var NETWORKS = require('./networks')
16576
16577var BigInteger = require('bigi')
16578var ECPair = require('./ecpair')
16579
16580var ecurve = require('ecurve')
16581var curve = ecurve.getCurveByName('secp256k1')
16582
16583function HDNode (keyPair, chainCode) {
16584 typeforce(types.tuple('ECPair', types.Buffer256bit), arguments)
16585
16586 if (!keyPair.compressed) throw new TypeError('BIP32 only allows compressed keyPairs')
16587
16588 this.keyPair = keyPair
16589 this.chainCode = chainCode
16590 this.depth = 0
16591 this.index = 0
16592 this.parentFingerprint = 0x00000000
8b095871
IC
16593}
16594
9987f0c1
IC
16595HDNode.HIGHEST_BIT = 0x80000000
16596HDNode.LENGTH = 78
16597HDNode.MASTER_SECRET = Buffer.from('Bitcoin seed', 'utf8')
8b095871 16598
9987f0c1
IC
16599HDNode.fromSeedBuffer = function (seed, network) {
16600 typeforce(types.tuple(types.Buffer, types.maybe(types.Network)), arguments)
8b095871 16601
9987f0c1
IC
16602 if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits')
16603 if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits')
8b095871 16604
9987f0c1
IC
16605 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
16606 var IL = I.slice(0, 32)
16607 var IR = I.slice(32)
8b095871 16608
9987f0c1
IC
16609 // In case IL is 0 or >= n, the master key is invalid
16610 // This is handled by the ECPair constructor
16611 var pIL = BigInteger.fromBuffer(IL)
16612 var keyPair = new ECPair(pIL, null, {
16613 network: network
16614 })
8b095871 16615
9987f0c1
IC
16616 return new HDNode(keyPair, IR)
16617}
8b095871 16618
9987f0c1
IC
16619HDNode.fromSeedHex = function (hex, network) {
16620 return HDNode.fromSeedBuffer(Buffer.from(hex, 'hex'), network)
8b095871
IC
16621}
16622
9987f0c1
IC
16623HDNode.fromBase58 = function (string, networks) {
16624 var buffer = base58check.decode(string)
16625 if (buffer.length !== 78) throw new Error('Invalid buffer length')
8b095871 16626
9987f0c1
IC
16627 // 4 bytes: version bytes
16628 var version = buffer.readUInt32BE(0)
16629 var network
8b095871 16630
9987f0c1
IC
16631 // list of networks?
16632 if (Array.isArray(networks)) {
16633 network = networks.filter(function (x) {
16634 return version === x.bip32.private ||
16635 version === x.bip32.public
16636 }).pop()
8b095871 16637
9987f0c1
IC
16638 if (!network) throw new Error('Unknown network version')
16639
16640 // otherwise, assume a network object (or default to bitcoin)
16641 } else {
16642 network = networks || NETWORKS.bitcoin
8b095871
IC
16643 }
16644
9987f0c1
IC
16645 if (version !== network.bip32.private &&
16646 version !== network.bip32.public) throw new Error('Invalid network version')
8b095871 16647
9987f0c1
IC
16648 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
16649 var depth = buffer[4]
8b095871 16650
9987f0c1
IC
16651 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16652 var parentFingerprint = buffer.readUInt32BE(5)
16653 if (depth === 0) {
16654 if (parentFingerprint !== 0x00000000) throw new Error('Invalid parent fingerprint')
16655 }
8b095871 16656
9987f0c1
IC
16657 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16658 // This is encoded in MSB order. (0x00000000 if master key)
16659 var index = buffer.readUInt32BE(9)
16660 if (depth === 0 && index !== 0) throw new Error('Invalid index')
16661
16662 // 32 bytes: the chain code
16663 var chainCode = buffer.slice(13, 45)
16664 var keyPair
16665
16666 // 33 bytes: private key data (0x00 + k)
16667 if (version === network.bip32.private) {
16668 if (buffer.readUInt8(45) !== 0x00) throw new Error('Invalid private key')
16669
16670 var d = BigInteger.fromBuffer(buffer.slice(46, 78))
16671 keyPair = new ECPair(d, null, { network: network })
16672
16673 // 33 bytes: public key data (0x02 + X or 0x03 + X)
16674 } else {
16675 var Q = ecurve.Point.decodeFrom(curve, buffer.slice(45, 78))
16676 // Q.compressed is assumed, if somehow this assumption is broken, `new HDNode` will throw
16677
16678 // Verify that the X coordinate in the public point corresponds to a point on the curve.
16679 // If not, the extended public key is invalid.
16680 curve.validate(Q)
16681
16682 keyPair = new ECPair(null, Q, { network: network })
16683 }
16684
16685 var hd = new HDNode(keyPair, chainCode)
16686 hd.depth = depth
16687 hd.index = index
16688 hd.parentFingerprint = parentFingerprint
16689
16690 return hd
8b095871
IC
16691}
16692
9987f0c1
IC
16693HDNode.prototype.getAddress = function () {
16694 return this.keyPair.getAddress()
16695}
8b095871 16696
9987f0c1
IC
16697HDNode.prototype.getIdentifier = function () {
16698 return bcrypto.hash160(this.keyPair.getPublicKeyBuffer())
16699}
8b095871 16700
9987f0c1
IC
16701HDNode.prototype.getFingerprint = function () {
16702 return this.getIdentifier().slice(0, 4)
16703}
8b095871 16704
9987f0c1
IC
16705HDNode.prototype.getNetwork = function () {
16706 return this.keyPair.getNetwork()
8b095871
IC
16707}
16708
9987f0c1
IC
16709HDNode.prototype.getPublicKeyBuffer = function () {
16710 return this.keyPair.getPublicKeyBuffer()
16711}
8b095871 16712
9987f0c1
IC
16713HDNode.prototype.neutered = function () {
16714 var neuteredKeyPair = new ECPair(null, this.keyPair.Q, {
16715 network: this.keyPair.network
16716 })
8b095871 16717
9987f0c1
IC
16718 var neutered = new HDNode(neuteredKeyPair, this.chainCode)
16719 neutered.depth = this.depth
16720 neutered.index = this.index
16721 neutered.parentFingerprint = this.parentFingerprint
8b095871 16722
9987f0c1
IC
16723 return neutered
16724}
8b095871 16725
9987f0c1
IC
16726HDNode.prototype.sign = function (hash) {
16727 return this.keyPair.sign(hash)
16728}
8b095871 16729
9987f0c1
IC
16730HDNode.prototype.verify = function (hash, signature) {
16731 return this.keyPair.verify(hash, signature)
8b095871
IC
16732}
16733
9987f0c1
IC
16734HDNode.prototype.toBase58 = function (__isPrivate) {
16735 if (__isPrivate !== undefined) throw new TypeError('Unsupported argument in 2.0.0')
8b095871 16736
9987f0c1
IC
16737 // Version
16738 var network = this.keyPair.network
16739 var version = (!this.isNeutered()) ? network.bip32.private : network.bip32.public
16740 var buffer = Buffer.allocUnsafe(78)
8b095871 16741
9987f0c1
IC
16742 // 4 bytes: version bytes
16743 buffer.writeUInt32BE(version, 0)
8b095871 16744
9987f0c1
IC
16745 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
16746 buffer.writeUInt8(this.depth, 4)
16747
16748 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
16749 buffer.writeUInt32BE(this.parentFingerprint, 5)
16750
16751 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
16752 // This is encoded in big endian. (0x00000000 if master key)
16753 buffer.writeUInt32BE(this.index, 9)
16754
16755 // 32 bytes: the chain code
16756 this.chainCode.copy(buffer, 13)
16757
16758 // 33 bytes: the public key or private key data
16759 if (!this.isNeutered()) {
16760 // 0x00 + k for private keys
16761 buffer.writeUInt8(0, 45)
16762 this.keyPair.d.toBuffer(32).copy(buffer, 46)
16763
16764 // 33 bytes: the public key
16765 } else {
16766 // X9.62 encoding for public keys
16767 this.keyPair.getPublicKeyBuffer().copy(buffer, 45)
16768 }
16769
16770 return base58check.encode(buffer)
8b095871
IC
16771}
16772
9987f0c1
IC
16773// https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
16774HDNode.prototype.derive = function (index) {
16775 typeforce(types.UInt32, index)
16776
16777 var isHardened = index >= HDNode.HIGHEST_BIT
16778 var data = Buffer.allocUnsafe(37)
16779
16780 // Hardened child
16781 if (isHardened) {
16782 if (this.isNeutered()) throw new TypeError('Could not derive hardened child key')
8b095871 16783
9987f0c1
IC
16784 // data = 0x00 || ser256(kpar) || ser32(index)
16785 data[0] = 0x00
16786 this.keyPair.d.toBuffer(32).copy(data, 1)
16787 data.writeUInt32BE(index, 33)
8b095871 16788
9987f0c1
IC
16789 // Normal child
16790 } else {
16791 // data = serP(point(kpar)) || ser32(index)
16792 // = serP(Kpar) || ser32(index)
16793 this.keyPair.getPublicKeyBuffer().copy(data, 0)
16794 data.writeUInt32BE(index, 33)
16795 }
8b095871 16796
9987f0c1
IC
16797 var I = createHmac('sha512', this.chainCode).update(data).digest()
16798 var IL = I.slice(0, 32)
16799 var IR = I.slice(32)
8b095871 16800
9987f0c1 16801 var pIL = BigInteger.fromBuffer(IL)
8b095871 16802
9987f0c1
IC
16803 // In case parse256(IL) >= n, proceed with the next value for i
16804 if (pIL.compareTo(curve.n) >= 0) {
16805 return this.derive(index + 1)
8b095871
IC
16806 }
16807
9987f0c1
IC
16808 // Private parent key -> private child key
16809 var derivedKeyPair
16810 if (!this.isNeutered()) {
16811 // ki = parse256(IL) + kpar (mod n)
16812 var ki = pIL.add(this.keyPair.d).mod(curve.n)
8b095871 16813
9987f0c1
IC
16814 // In case ki == 0, proceed with the next value for i
16815 if (ki.signum() === 0) {
16816 return this.derive(index + 1)
16817 }
16818
16819 derivedKeyPair = new ECPair(ki, null, {
16820 network: this.keyPair.network
16821 })
16822
16823 // Public parent key -> public child key
16824 } else {
16825 // Ki = point(parse256(IL)) + Kpar
16826 // = G*IL + Kpar
16827 var Ki = curve.G.multiply(pIL).add(this.keyPair.Q)
16828
16829 // In case Ki is the point at infinity, proceed with the next value for i
16830 if (curve.isInfinity(Ki)) {
16831 return this.derive(index + 1)
16832 }
16833
16834 derivedKeyPair = new ECPair(null, Ki, {
16835 network: this.keyPair.network
16836 })
16837 }
16838
16839 var hd = new HDNode(derivedKeyPair, IR)
16840 hd.depth = this.depth + 1
16841 hd.index = index
16842 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
16843
16844 return hd
8b095871
IC
16845}
16846
9987f0c1
IC
16847HDNode.prototype.deriveHardened = function (index) {
16848 typeforce(types.UInt31, index)
8b095871 16849
9987f0c1
IC
16850 // Only derives hardened private keys by default
16851 return this.derive(index + HDNode.HIGHEST_BIT)
16852}
8b095871 16853
9987f0c1
IC
16854// Private === not neutered
16855// Public === neutered
16856HDNode.prototype.isNeutered = function () {
16857 return !(this.keyPair.d)
8b095871
IC
16858}
16859
9987f0c1
IC
16860HDNode.prototype.derivePath = function (path) {
16861 typeforce(types.BIP32Path, path)
8b095871 16862
9987f0c1
IC
16863 var splitPath = path.split('/')
16864 if (splitPath[0] === 'm') {
16865 if (this.parentFingerprint) {
16866 throw new Error('Not a master node')
16867 }
8b095871 16868
9987f0c1
IC
16869 splitPath = splitPath.slice(1)
16870 }
8b095871 16871
9987f0c1
IC
16872 return splitPath.reduce(function (prevHd, indexStr) {
16873 var index
16874 if (indexStr.slice(-1) === "'") {
16875 index = parseInt(indexStr.slice(0, -1), 10)
16876 return prevHd.deriveHardened(index)
16877 } else {
16878 index = parseInt(indexStr, 10)
16879 return prevHd.derive(index)
16880 }
16881 }, this)
16882}
8b095871 16883
9987f0c1 16884module.exports = HDNode
8b095871 16885
9987f0c1
IC
16886},{"./crypto":45,"./ecpair":47,"./networks":51,"./types":78,"bigi":37,"bs58check":80,"create-hmac":85,"ecurve":89,"safe-buffer":98,"typeforce":109}],50:[function(require,module,exports){
16887module.exports = {
16888 Block: require('./block'),
16889 ECPair: require('./ecpair'),
16890 ECSignature: require('./ecsignature'),
16891 HDNode: require('./hdnode'),
16892 Transaction: require('./transaction'),
16893 TransactionBuilder: require('./transaction_builder'),
8b095871 16894
9987f0c1
IC
16895 address: require('./address'),
16896 bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
16897 crypto: require('./crypto'),
16898 networks: require('./networks'),
16899 opcodes: require('bitcoin-ops'),
16900 script: require('./script')
8b095871
IC
16901}
16902
9987f0c1
IC
16903},{"./address":42,"./block":43,"./bufferutils":44,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./hdnode":49,"./networks":51,"./script":52,"./transaction":76,"./transaction_builder":77,"bitcoin-ops":40}],51:[function(require,module,exports){
16904// https://en.bitcoin.it/wiki/List_of_address_prefixes
16905// Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
8b095871 16906
9987f0c1
IC
16907module.exports = {
16908 bitcoin: {
16909 messagePrefix: '\x18Bitcoin Signed Message:\n',
16910 bip32: {
16911 public: 0x0488b21e,
16912 private: 0x0488ade4
16913 },
16914 pubKeyHash: 0x00,
16915 scriptHash: 0x05,
16916 wif: 0x80
16917 },
16918 testnet: {
16919 messagePrefix: '\x18Bitcoin Signed Message:\n',
16920 bip32: {
16921 public: 0x043587cf,
16922 private: 0x04358394
16923 },
16924 pubKeyHash: 0x6f,
16925 scriptHash: 0xc4,
16926 wif: 0xef
16927 },
16928 litecoin: {
16929 messagePrefix: '\x19Litecoin Signed Message:\n',
16930 bip32: {
16931 public: 0x019da462,
16932 private: 0x019d9cfe
16933 },
16934 pubKeyHash: 0x30,
16935 scriptHash: 0x32,
16936 wif: 0xb0
16937 }
16938}
8b095871 16939
9987f0c1
IC
16940},{}],52:[function(require,module,exports){
16941var Buffer = require('safe-buffer').Buffer
16942var bip66 = require('bip66')
16943var pushdata = require('pushdata-bitcoin')
16944var typeforce = require('typeforce')
16945var types = require('./types')
16946var scriptNumber = require('./script_number')
16947
16948var OPS = require('bitcoin-ops')
16949var REVERSE_OPS = require('bitcoin-ops/map')
16950var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
16951
16952function isOPInt (value) {
16953 return types.Number(value) &&
16954 ((value === OPS.OP_0) ||
16955 (value >= OPS.OP_1 && value <= OPS.OP_16) ||
16956 (value === OPS.OP_1NEGATE))
8b095871
IC
16957}
16958
9987f0c1
IC
16959function isPushOnlyChunk (value) {
16960 return types.Buffer(value) || isOPInt(value)
8b095871
IC
16961}
16962
9987f0c1
IC
16963function isPushOnly (value) {
16964 return types.Array(value) && value.every(isPushOnlyChunk)
16965}
8b095871 16966
9987f0c1
IC
16967function compile (chunks) {
16968 // TODO: remove me
16969 if (Buffer.isBuffer(chunks)) return chunks
8b095871 16970
9987f0c1 16971 typeforce(types.Array, chunks)
8b095871 16972
9987f0c1
IC
16973 var bufferSize = chunks.reduce(function (accum, chunk) {
16974 // data chunk
16975 if (Buffer.isBuffer(chunk)) {
16976 // adhere to BIP62.3, minimal push policy
16977 if (chunk.length === 1 && (chunk[0] === 0x81 || (chunk[0] >= 1 && chunk[0] <= 16))) {
16978 return accum + 1
16979 }
8b095871 16980
9987f0c1
IC
16981 return accum + pushdata.encodingLength(chunk.length) + chunk.length
16982 }
8b095871 16983
9987f0c1
IC
16984 // opcode
16985 return accum + 1
16986 }, 0.0)
8b095871 16987
9987f0c1
IC
16988 var buffer = Buffer.allocUnsafe(bufferSize)
16989 var offset = 0
8b095871 16990
9987f0c1
IC
16991 chunks.forEach(function (chunk) {
16992 // data chunk
16993 if (Buffer.isBuffer(chunk)) {
16994 // adhere to BIP62.3, minimal push policy
16995 if (chunk.length === 1 && chunk[0] >= 1 && chunk[0] <= 16) {
16996 var opcode = OP_INT_BASE + chunk[0]
16997 buffer.writeUInt8(opcode, offset)
16998 offset += 1
16999 return
17000 }
8b095871 17001
9987f0c1
IC
17002 if (chunk.length === 1 && chunk[0] === 0x81) {
17003 buffer.writeUInt8(OPS.OP_1NEGATE, offset)
17004 offset += 1
17005 return
17006 }
8b095871 17007
9987f0c1 17008 offset += pushdata.encode(buffer, chunk.length, offset)
8b095871 17009
9987f0c1
IC
17010 chunk.copy(buffer, offset)
17011 offset += chunk.length
8b095871 17012
9987f0c1
IC
17013 // opcode
17014 } else {
17015 buffer.writeUInt8(chunk, offset)
17016 offset += 1
17017 }
17018 })
8b095871 17019
9987f0c1
IC
17020 if (offset !== buffer.length) throw new Error('Could not decode chunks')
17021 return buffer
17022}
8b095871 17023
9987f0c1
IC
17024function decompile (buffer) {
17025 // TODO: remove me
17026 if (types.Array(buffer)) return buffer
8b095871 17027
9987f0c1 17028 typeforce(types.Buffer, buffer)
8b095871 17029
9987f0c1
IC
17030 var chunks = []
17031 var i = 0
8b095871 17032
9987f0c1
IC
17033 while (i < buffer.length) {
17034 var opcode = buffer[i]
8b095871 17035
9987f0c1
IC
17036 // data chunk
17037 if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
17038 var d = pushdata.decode(buffer, i)
8b095871 17039
9987f0c1
IC
17040 // did reading a pushDataInt fail? empty script
17041 if (d === null) return []
17042 i += d.size
8b095871 17043
9987f0c1
IC
17044 // attempt to read too much data? empty script
17045 if (i + d.number > buffer.length) return []
8b095871 17046
9987f0c1
IC
17047 var data = buffer.slice(i, i + d.number)
17048 i += d.number
8b095871 17049
9987f0c1 17050 chunks.push(data)
8b095871 17051
9987f0c1
IC
17052 // opcode
17053 } else {
17054 chunks.push(opcode)
8b095871 17055
9987f0c1
IC
17056 i += 1
17057 }
17058 }
17059
17060 return chunks
8b095871
IC
17061}
17062
9987f0c1
IC
17063function toASM (chunks) {
17064 if (Buffer.isBuffer(chunks)) {
17065 chunks = decompile(chunks)
17066 }
8b095871 17067
9987f0c1
IC
17068 return chunks.map(function (chunk) {
17069 // data?
17070 if (Buffer.isBuffer(chunk)) return chunk.toString('hex')
8b095871 17071
9987f0c1
IC
17072 // opcode!
17073 return REVERSE_OPS[chunk]
17074 }).join(' ')
17075}
8b095871 17076
9987f0c1
IC
17077function fromASM (asm) {
17078 typeforce(types.String, asm)
8b095871 17079
9987f0c1
IC
17080 return compile(asm.split(' ').map(function (chunkStr) {
17081 // opcode?
17082 if (OPS[chunkStr] !== undefined) return OPS[chunkStr]
17083 typeforce(types.Hex, chunkStr)
8b095871 17084
9987f0c1
IC
17085 // data!
17086 return Buffer.from(chunkStr, 'hex')
17087 }))
17088}
8b095871 17089
9987f0c1
IC
17090function toStack (chunks) {
17091 chunks = decompile(chunks)
17092 typeforce(isPushOnly, chunks)
8b095871 17093
9987f0c1
IC
17094 return chunks.map(function (op) {
17095 if (Buffer.isBuffer(op)) return op
17096 if (op === OPS.OP_0) return Buffer.allocUnsafe(0)
17097
17098 return scriptNumber.encode(op - OP_INT_BASE)
17099 })
8b095871
IC
17100}
17101
9987f0c1
IC
17102function isCanonicalPubKey (buffer) {
17103 if (!Buffer.isBuffer(buffer)) return false
17104 if (buffer.length < 33) return false
8b095871 17105
9987f0c1
IC
17106 switch (buffer[0]) {
17107 case 0x02:
17108 case 0x03:
17109 return buffer.length === 33
17110 case 0x04:
17111 return buffer.length === 65
17112 }
8b095871 17113
9987f0c1 17114 return false
8b095871
IC
17115}
17116
9987f0c1
IC
17117function isDefinedHashType (hashType) {
17118 var hashTypeMod = hashType & ~0x80
8b095871 17119
9987f0c1
IC
17120// return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE
17121 return hashTypeMod > 0x00 && hashTypeMod < 0x04
8b095871
IC
17122}
17123
9987f0c1
IC
17124function isCanonicalSignature (buffer) {
17125 if (!Buffer.isBuffer(buffer)) return false
17126 if (!isDefinedHashType(buffer[buffer.length - 1])) return false
8b095871 17127
9987f0c1 17128 return bip66.check(buffer.slice(0, -1))
8b095871
IC
17129}
17130
9987f0c1
IC
17131module.exports = {
17132 compile: compile,
17133 decompile: decompile,
17134 fromASM: fromASM,
17135 toASM: toASM,
17136 toStack: toStack,
8b095871 17137
9987f0c1 17138 number: require('./script_number'),
8b095871 17139
9987f0c1
IC
17140 isCanonicalPubKey: isCanonicalPubKey,
17141 isCanonicalSignature: isCanonicalSignature,
17142 isPushOnly: isPushOnly,
17143 isDefinedHashType: isDefinedHashType
8b095871
IC
17144}
17145
9987f0c1
IC
17146var templates = require('./templates')
17147for (var key in templates) {
17148 module.exports[key] = templates[key]
8b095871
IC
17149}
17150
9987f0c1
IC
17151},{"./script_number":53,"./templates":54,"./types":78,"bip66":39,"bitcoin-ops":40,"bitcoin-ops/map":41,"pushdata-bitcoin":95,"safe-buffer":98,"typeforce":109}],53:[function(require,module,exports){
17152var Buffer = require('safe-buffer').Buffer
8b095871 17153
9987f0c1
IC
17154function decode (buffer, maxLength, minimal) {
17155 maxLength = maxLength || 4
17156 minimal = minimal === undefined ? true : minimal
8b095871 17157
9987f0c1
IC
17158 var length = buffer.length
17159 if (length === 0) return 0
17160 if (length > maxLength) throw new TypeError('Script number overflow')
17161 if (minimal) {
17162 if ((buffer[length - 1] & 0x7f) === 0) {
17163 if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number')
17164 }
17165 }
8b095871 17166
9987f0c1
IC
17167 // 40-bit
17168 if (length === 5) {
17169 var a = buffer.readUInt32LE(0)
17170 var b = buffer.readUInt8(4)
8b095871 17171
9987f0c1
IC
17172 if (b & 0x80) return -(((b & ~0x80) * 0x100000000) + a)
17173 return (b * 0x100000000) + a
17174 }
8b095871 17175
9987f0c1 17176 var result = 0
8b095871 17177
9987f0c1
IC
17178 // 32-bit / 24-bit / 16-bit / 8-bit
17179 for (var i = 0; i < length; ++i) {
17180 result |= buffer[i] << (8 * i)
8b095871
IC
17181 }
17182
9987f0c1
IC
17183 if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
17184 return result
17185}
8b095871 17186
9987f0c1
IC
17187function scriptNumSize (i) {
17188 return i > 0x7fffffff ? 5
17189 : i > 0x7fffff ? 4
17190 : i > 0x7fff ? 3
17191 : i > 0x7f ? 2
17192 : i > 0x00 ? 1
17193 : 0
8b095871
IC
17194}
17195
9987f0c1
IC
17196function encode (number) {
17197 var value = Math.abs(number)
17198 var size = scriptNumSize(value)
17199 var buffer = Buffer.allocUnsafe(size)
17200 var negative = number < 0
8b095871 17201
9987f0c1
IC
17202 for (var i = 0; i < size; ++i) {
17203 buffer.writeUInt8(value & 0xff, i)
17204 value >>= 8
17205 }
8b095871 17206
9987f0c1
IC
17207 if (buffer[size - 1] & 0x80) {
17208 buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1)
17209 } else if (negative) {
17210 buffer[size - 1] |= 0x80
17211 }
17212
17213 return buffer
8b095871
IC
17214}
17215
9987f0c1
IC
17216module.exports = {
17217 decode: decode,
17218 encode: encode
17219}
8b095871 17220
9987f0c1
IC
17221},{"safe-buffer":98}],54:[function(require,module,exports){
17222var decompile = require('../script').decompile
17223var multisig = require('./multisig')
17224var nullData = require('./nulldata')
17225var pubKey = require('./pubkey')
17226var pubKeyHash = require('./pubkeyhash')
17227var scriptHash = require('./scripthash')
17228var witnessPubKeyHash = require('./witnesspubkeyhash')
17229var witnessScriptHash = require('./witnessscripthash')
17230var witnessCommitment = require('./witnesscommitment')
17231
17232var types = {
17233 MULTISIG: 'multisig',
17234 NONSTANDARD: 'nonstandard',
17235 NULLDATA: 'nulldata',
17236 P2PK: 'pubkey',
17237 P2PKH: 'pubkeyhash',
17238 P2SH: 'scripthash',
17239 P2WPKH: 'witnesspubkeyhash',
17240 P2WSH: 'witnessscripthash',
17241 WITNESS_COMMITMENT: 'witnesscommitment'
17242}
8b095871 17243
9987f0c1
IC
17244function classifyOutput (script) {
17245 if (witnessPubKeyHash.output.check(script)) return types.P2WPKH
17246 if (witnessScriptHash.output.check(script)) return types.P2WSH
17247 if (pubKeyHash.output.check(script)) return types.P2PKH
17248 if (scriptHash.output.check(script)) return types.P2SH
8b095871 17249
9987f0c1
IC
17250 // XXX: optimization, below functions .decompile before use
17251 var chunks = decompile(script)
17252 if (multisig.output.check(chunks)) return types.MULTISIG
17253 if (pubKey.output.check(chunks)) return types.P2PK
17254 if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT
17255 if (nullData.output.check(chunks)) return types.NULLDATA
8b095871 17256
9987f0c1 17257 return types.NONSTANDARD
8b095871
IC
17258}
17259
9987f0c1
IC
17260function classifyInput (script, allowIncomplete) {
17261 // XXX: optimization, below functions .decompile before use
17262 var chunks = decompile(script)
8b095871 17263
9987f0c1
IC
17264 if (pubKeyHash.input.check(chunks)) return types.P2PKH
17265 if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH
17266 if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG
17267 if (pubKey.input.check(chunks)) return types.P2PK
8b095871 17268
9987f0c1 17269 return types.NONSTANDARD
8b095871
IC
17270}
17271
9987f0c1
IC
17272function classifyWitness (script, allowIncomplete) {
17273 // XXX: optimization, below functions .decompile before use
17274 var chunks = decompile(script)
8b095871 17275
9987f0c1
IC
17276 if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH
17277 if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH
8b095871 17278
9987f0c1
IC
17279 return types.NONSTANDARD
17280}
8b095871 17281
9987f0c1
IC
17282module.exports = {
17283 classifyInput: classifyInput,
17284 classifyOutput: classifyOutput,
17285 classifyWitness: classifyWitness,
17286 multisig: multisig,
17287 nullData: nullData,
17288 pubKey: pubKey,
17289 pubKeyHash: pubKeyHash,
17290 scriptHash: scriptHash,
17291 witnessPubKeyHash: witnessPubKeyHash,
17292 witnessScriptHash: witnessScriptHash,
17293 witnessCommitment: witnessCommitment,
17294 types: types
17295}
17296
17297},{"../script":52,"./multisig":55,"./nulldata":58,"./pubkey":59,"./pubkeyhash":62,"./scripthash":65,"./witnesscommitment":68,"./witnesspubkeyhash":70,"./witnessscripthash":73}],55:[function(require,module,exports){
17298module.exports = {
17299 input: require('./input'),
17300 output: require('./output')
8b095871
IC
17301}
17302
9987f0c1
IC
17303},{"./input":56,"./output":57}],56:[function(require,module,exports){
17304// OP_0 [signatures ...]
8b095871 17305
9987f0c1
IC
17306var Buffer = require('safe-buffer').Buffer
17307var bscript = require('../../script')
17308var typeforce = require('typeforce')
17309var OPS = require('bitcoin-ops')
8b095871 17310
9987f0c1
IC
17311function partialSignature (value) {
17312 return value === OPS.OP_0 || bscript.isCanonicalSignature(value)
17313}
8b095871 17314
9987f0c1
IC
17315function check (script, allowIncomplete) {
17316 var chunks = bscript.decompile(script)
17317 if (chunks.length < 2) return false
17318 if (chunks[0] !== OPS.OP_0) return false
8b095871 17319
9987f0c1
IC
17320 if (allowIncomplete) {
17321 return chunks.slice(1).every(partialSignature)
17322 }
8b095871 17323
9987f0c1 17324 return chunks.slice(1).every(bscript.isCanonicalSignature)
8b095871 17325}
9987f0c1 17326check.toJSON = function () { return 'multisig input' }
8b095871 17327
9987f0c1 17328var EMPTY_BUFFER = Buffer.allocUnsafe(0)
8b095871 17329
9987f0c1
IC
17330function encodeStack (signatures, scriptPubKey) {
17331 typeforce([partialSignature], signatures)
8b095871 17332
9987f0c1
IC
17333 if (scriptPubKey) {
17334 var scriptData = bscript.multisig.output.decode(scriptPubKey)
17335
17336 if (signatures.length < scriptData.m) {
17337 throw new TypeError('Not enough signatures provided')
17338 }
8b095871 17339
9987f0c1
IC
17340 if (signatures.length > scriptData.pubKeys.length) {
17341 throw new TypeError('Too many signatures provided')
17342 }
17343 }
17344
17345 return [].concat(EMPTY_BUFFER, signatures)
8b095871
IC
17346}
17347
9987f0c1
IC
17348function encode (signatures, scriptPubKey) {
17349 return bscript.compile(encodeStack(signatures, scriptPubKey))
8b095871
IC
17350}
17351
9987f0c1
IC
17352function decodeStack (stack, allowIncomplete) {
17353 typeforce(check, stack, allowIncomplete)
17354 return stack.slice(1)
8b095871
IC
17355}
17356
9987f0c1
IC
17357function decode (buffer, allowIncomplete) {
17358 var stack = bscript.decompile(buffer)
17359 return decodeStack(stack, allowIncomplete)
17360}
8b095871 17361
9987f0c1
IC
17362module.exports = {
17363 check: check,
17364 decode: decode,
17365 decodeStack: decodeStack,
17366 encode: encode,
17367 encodeStack: encodeStack
17368}
8b095871 17369
9987f0c1
IC
17370},{"../../script":52,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],57:[function(require,module,exports){
17371// m [pubKeys ...] n OP_CHECKMULTISIG
8b095871 17372
9987f0c1
IC
17373var bscript = require('../../script')
17374var types = require('../../types')
17375var typeforce = require('typeforce')
17376var OPS = require('bitcoin-ops')
17377var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
17378
17379function check (script, allowIncomplete) {
17380 var chunks = bscript.decompile(script)
17381
17382 if (chunks.length < 4) return false
17383 if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
17384 if (!types.Number(chunks[0])) return false
17385 if (!types.Number(chunks[chunks.length - 2])) return false
17386 var m = chunks[0] - OP_INT_BASE
17387 var n = chunks[chunks.length - 2] - OP_INT_BASE
17388
17389 if (m <= 0) return false
17390 if (n > 16) return false
17391 if (m > n) return false
17392 if (n !== chunks.length - 3) return false
17393 if (allowIncomplete) return true
17394
17395 var keys = chunks.slice(1, -2)
17396 return keys.every(bscript.isCanonicalPubKey)
17397}
17398check.toJSON = function () { return 'multi-sig output' }
17399
17400function encode (m, pubKeys) {
17401 typeforce({
17402 m: types.Number,
17403 pubKeys: [bscript.isCanonicalPubKey]
17404 }, {
17405 m: m,
17406 pubKeys: pubKeys
17407 })
8b095871 17408
9987f0c1
IC
17409 var n = pubKeys.length
17410 if (n < m) throw new TypeError('Not enough pubKeys provided')
8b095871 17411
9987f0c1
IC
17412 return bscript.compile([].concat(
17413 OP_INT_BASE + m,
17414 pubKeys,
17415 OP_INT_BASE + n,
17416 OPS.OP_CHECKMULTISIG
17417 ))
17418}
8b095871 17419
9987f0c1
IC
17420function decode (buffer, allowIncomplete) {
17421 var chunks = bscript.decompile(buffer)
17422 typeforce(check, chunks, allowIncomplete)
8b095871 17423
9987f0c1
IC
17424 return {
17425 m: chunks[0] - OP_INT_BASE,
17426 pubKeys: chunks.slice(1, -2)
8b095871 17427 }
9987f0c1 17428}
8b095871 17429
9987f0c1
IC
17430module.exports = {
17431 check: check,
17432 decode: decode,
17433 encode: encode
17434}
8b095871 17435
9987f0c1
IC
17436},{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],58:[function(require,module,exports){
17437// OP_RETURN {data}
8b095871 17438
9987f0c1
IC
17439var bscript = require('../script')
17440var types = require('../types')
17441var typeforce = require('typeforce')
17442var OPS = require('bitcoin-ops')
8b095871 17443
9987f0c1
IC
17444function check (script) {
17445 var buffer = bscript.compile(script)
8b095871 17446
9987f0c1
IC
17447 return buffer.length > 1 &&
17448 buffer[0] === OPS.OP_RETURN
17449}
17450check.toJSON = function () { return 'null data output' }
8b095871 17451
9987f0c1
IC
17452function encode (data) {
17453 typeforce(types.Buffer, data)
8b095871 17454
9987f0c1
IC
17455 return bscript.compile([OPS.OP_RETURN, data])
17456}
8b095871 17457
9987f0c1
IC
17458function decode (buffer) {
17459 typeforce(check, buffer)
17460
17461 return buffer.slice(2)
17462}
8b095871 17463
9987f0c1
IC
17464module.exports = {
17465 output: {
17466 check: check,
17467 decode: decode,
17468 encode: encode
8b095871 17469 }
9987f0c1 17470}
8b095871 17471
9987f0c1
IC
17472},{"../script":52,"../types":78,"bitcoin-ops":40,"typeforce":109}],59:[function(require,module,exports){
17473arguments[4][55][0].apply(exports,arguments)
17474},{"./input":60,"./output":61,"dup":55}],60:[function(require,module,exports){
17475// {signature}
8b095871 17476
9987f0c1
IC
17477var bscript = require('../../script')
17478var types = require('../../types')
17479var typeforce = require('typeforce')
8b095871 17480
9987f0c1
IC
17481function check (script) {
17482 var chunks = bscript.decompile(script)
8b095871 17483
9987f0c1
IC
17484 return chunks.length === 1 &&
17485 bscript.isCanonicalSignature(chunks[0])
17486}
17487check.toJSON = function () { return 'pubKey input' }
8b095871 17488
9987f0c1
IC
17489function encodeStack (signature) {
17490 typeforce(types.Buffer, signature)
17491 return [signature]
8b095871
IC
17492}
17493
9987f0c1
IC
17494function encode (signature) {
17495 return bscript.compile(encodeStack(signature))
17496}
8b095871 17497
9987f0c1
IC
17498function decodeStack (stack) {
17499 typeforce(check, stack)
17500 return stack[0]
17501}
8b095871 17502
9987f0c1
IC
17503function decode (buffer) {
17504 var stack = bscript.decompile(buffer)
17505 return decodeStack(stack)
17506}
8b095871 17507
9987f0c1
IC
17508module.exports = {
17509 check: check,
17510 decode: decode,
17511 decodeStack: decodeStack,
17512 encode: encode,
17513 encodeStack: encodeStack
8b095871
IC
17514}
17515
9987f0c1
IC
17516},{"../../script":52,"../../types":78,"typeforce":109}],61:[function(require,module,exports){
17517// {pubKey} OP_CHECKSIG
8b095871 17518
9987f0c1
IC
17519var bscript = require('../../script')
17520var typeforce = require('typeforce')
17521var OPS = require('bitcoin-ops')
8b095871 17522
9987f0c1
IC
17523function check (script) {
17524 var chunks = bscript.decompile(script)
8b095871 17525
9987f0c1
IC
17526 return chunks.length === 2 &&
17527 bscript.isCanonicalPubKey(chunks[0]) &&
17528 chunks[1] === OPS.OP_CHECKSIG
17529}
17530check.toJSON = function () { return 'pubKey output' }
8b095871 17531
9987f0c1
IC
17532function encode (pubKey) {
17533 typeforce(bscript.isCanonicalPubKey, pubKey)
8b095871 17534
9987f0c1
IC
17535 return bscript.compile([pubKey, OPS.OP_CHECKSIG])
17536}
8b095871 17537
9987f0c1
IC
17538function decode (buffer) {
17539 var chunks = bscript.decompile(buffer)
17540 typeforce(check, chunks)
8b095871 17541
9987f0c1
IC
17542 return chunks[0]
17543}
8b095871 17544
9987f0c1
IC
17545module.exports = {
17546 check: check,
17547 decode: decode,
17548 encode: encode
17549}
8b095871 17550
9987f0c1
IC
17551},{"../../script":52,"bitcoin-ops":40,"typeforce":109}],62:[function(require,module,exports){
17552arguments[4][55][0].apply(exports,arguments)
17553},{"./input":63,"./output":64,"dup":55}],63:[function(require,module,exports){
17554// {signature} {pubKey}
8b095871 17555
9987f0c1
IC
17556var bscript = require('../../script')
17557var types = require('../../types')
17558var typeforce = require('typeforce')
8b095871 17559
9987f0c1
IC
17560function check (script) {
17561 var chunks = bscript.decompile(script)
8b095871 17562
9987f0c1
IC
17563 return chunks.length === 2 &&
17564 bscript.isCanonicalSignature(chunks[0]) &&
17565 bscript.isCanonicalPubKey(chunks[1])
8b095871 17566}
9987f0c1 17567check.toJSON = function () { return 'pubKeyHash input' }
8b095871 17568
9987f0c1
IC
17569function encodeStack (signature, pubKey) {
17570 typeforce({
17571 signature: types.Buffer, pubKey: types.Buffer
17572 }, {
17573 signature: signature, pubKey: pubKey
17574 })
8b095871 17575
9987f0c1 17576 return [signature, pubKey]
8b095871
IC
17577}
17578
9987f0c1
IC
17579function encode (signature, pubKey) {
17580 return bscript.compile(encodeStack(signature, pubKey))
8b095871
IC
17581}
17582
9987f0c1
IC
17583function decodeStack (stack) {
17584 typeforce(check, stack)
8b095871 17585
9987f0c1
IC
17586 return {
17587 signature: stack[0],
17588 pubKey: stack[1]
17589 }
8b095871
IC
17590}
17591
9987f0c1
IC
17592function decode (buffer) {
17593 var stack = bscript.decompile(buffer)
17594 return decodeStack(stack)
8b095871
IC
17595}
17596
9987f0c1
IC
17597module.exports = {
17598 check: check,
17599 decode: decode,
17600 decodeStack: decodeStack,
17601 encode: encode,
17602 encodeStack: encodeStack
8b095871
IC
17603}
17604
9987f0c1
IC
17605},{"../../script":52,"../../types":78,"typeforce":109}],64:[function(require,module,exports){
17606// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
8b095871 17607
9987f0c1
IC
17608var bscript = require('../../script')
17609var types = require('../../types')
17610var typeforce = require('typeforce')
17611var OPS = require('bitcoin-ops')
8b095871 17612
9987f0c1
IC
17613function check (script) {
17614 var buffer = bscript.compile(script)
8b095871 17615
9987f0c1
IC
17616 return buffer.length === 25 &&
17617 buffer[0] === OPS.OP_DUP &&
17618 buffer[1] === OPS.OP_HASH160 &&
17619 buffer[2] === 0x14 &&
17620 buffer[23] === OPS.OP_EQUALVERIFY &&
17621 buffer[24] === OPS.OP_CHECKSIG
8b095871 17622}
9987f0c1 17623check.toJSON = function () { return 'pubKeyHash output' }
8b095871 17624
9987f0c1
IC
17625function encode (pubKeyHash) {
17626 typeforce(types.Hash160bit, pubKeyHash)
8b095871 17627
9987f0c1
IC
17628 return bscript.compile([
17629 OPS.OP_DUP,
17630 OPS.OP_HASH160,
17631 pubKeyHash,
17632 OPS.OP_EQUALVERIFY,
17633 OPS.OP_CHECKSIG
17634 ])
8b095871
IC
17635}
17636
9987f0c1
IC
17637function decode (buffer) {
17638 typeforce(check, buffer)
8b095871 17639
9987f0c1 17640 return buffer.slice(3, 23)
8b095871
IC
17641}
17642
9987f0c1
IC
17643module.exports = {
17644 check: check,
17645 decode: decode,
17646 encode: encode
8b095871
IC
17647}
17648
9987f0c1
IC
17649},{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],65:[function(require,module,exports){
17650arguments[4][55][0].apply(exports,arguments)
17651},{"./input":66,"./output":67,"dup":55}],66:[function(require,module,exports){
17652// <scriptSig> {serialized scriptPubKey script}
8b095871 17653
9987f0c1
IC
17654var Buffer = require('safe-buffer').Buffer
17655var bscript = require('../../script')
17656var typeforce = require('typeforce')
8b095871 17657
9987f0c1
IC
17658function check (script, allowIncomplete) {
17659 var chunks = bscript.decompile(script)
17660 if (chunks.length < 1) return false
8b095871 17661
9987f0c1
IC
17662 var lastChunk = chunks[chunks.length - 1]
17663 if (!Buffer.isBuffer(lastChunk)) return false
8b095871 17664
9987f0c1
IC
17665 var scriptSigChunks = bscript.decompile(bscript.compile(chunks.slice(0, -1)))
17666 var redeemScriptChunks = bscript.decompile(lastChunk)
8b095871 17667
9987f0c1
IC
17668 // is redeemScript a valid script?
17669 if (redeemScriptChunks.length === 0) return false
17670
17671 // is redeemScriptSig push only?
17672 if (!bscript.isPushOnly(scriptSigChunks)) return false
17673
17674 var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete)
17675 var outputType = bscript.classifyOutput(redeemScriptChunks)
17676 if (chunks.length === 1) {
17677 return outputType === bscript.types.P2WSH || outputType === bscript.types.P2WPKH
17678 }
17679 return inputType === outputType
8b095871 17680}
9987f0c1 17681check.toJSON = function () { return 'scriptHash input' }
8b095871 17682
9987f0c1
IC
17683function encodeStack (redeemScriptStack, redeemScript) {
17684 var serializedScriptPubKey = bscript.compile(redeemScript)
8b095871 17685
9987f0c1
IC
17686 return [].concat(redeemScriptStack, serializedScriptPubKey)
17687}
8b095871 17688
9987f0c1
IC
17689function encode (redeemScriptSig, redeemScript) {
17690 var redeemScriptStack = bscript.decompile(redeemScriptSig)
8b095871 17691
9987f0c1
IC
17692 return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
17693}
8b095871 17694
9987f0c1
IC
17695function decodeStack (stack) {
17696 typeforce(check, stack)
17697
17698 return {
17699 redeemScriptStack: stack.slice(0, -1),
17700 redeemScript: stack[stack.length - 1]
17701 }
8b095871
IC
17702}
17703
9987f0c1
IC
17704function decode (buffer) {
17705 var stack = bscript.decompile(buffer)
17706 var result = decodeStack(stack)
17707 result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
17708 delete result.redeemScriptStack
17709 return result
17710}
8b095871 17711
9987f0c1
IC
17712module.exports = {
17713 check: check,
17714 decode: decode,
17715 decodeStack: decodeStack,
17716 encode: encode,
17717 encodeStack: encodeStack
17718}
8b095871 17719
9987f0c1
IC
17720},{"../../script":52,"safe-buffer":98,"typeforce":109}],67:[function(require,module,exports){
17721// OP_HASH160 {scriptHash} OP_EQUAL
8b095871 17722
9987f0c1
IC
17723var bscript = require('../../script')
17724var types = require('../../types')
17725var typeforce = require('typeforce')
17726var OPS = require('bitcoin-ops')
8b095871 17727
9987f0c1
IC
17728function check (script) {
17729 var buffer = bscript.compile(script)
8b095871 17730
9987f0c1
IC
17731 return buffer.length === 23 &&
17732 buffer[0] === OPS.OP_HASH160 &&
17733 buffer[1] === 0x14 &&
17734 buffer[22] === OPS.OP_EQUAL
8b095871 17735}
9987f0c1 17736check.toJSON = function () { return 'scriptHash output' }
8b095871 17737
9987f0c1
IC
17738function encode (scriptHash) {
17739 typeforce(types.Hash160bit, scriptHash)
8b095871 17740
9987f0c1
IC
17741 return bscript.compile([OPS.OP_HASH160, scriptHash, OPS.OP_EQUAL])
17742}
8b095871 17743
9987f0c1
IC
17744function decode (buffer) {
17745 typeforce(check, buffer)
8b095871 17746
9987f0c1
IC
17747 return buffer.slice(2, 22)
17748}
8b095871 17749
9987f0c1
IC
17750module.exports = {
17751 check: check,
17752 decode: decode,
17753 encode: encode
8b095871
IC
17754}
17755
9987f0c1
IC
17756},{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],68:[function(require,module,exports){
17757module.exports = {
17758 output: require('./output')
17759}
8b095871 17760
9987f0c1
IC
17761},{"./output":69}],69:[function(require,module,exports){
17762// OP_RETURN {aa21a9ed} {commitment}
8b095871 17763
9987f0c1
IC
17764var Buffer = require('safe-buffer').Buffer
17765var bscript = require('../../script')
17766var types = require('../../types')
17767var typeforce = require('typeforce')
17768var OPS = require('bitcoin-ops')
8b095871 17769
9987f0c1 17770var HEADER = Buffer.from('aa21a9ed', 'hex')
8b095871 17771
9987f0c1
IC
17772function check (script) {
17773 var buffer = bscript.compile(script)
17774
17775 return buffer.length > 37 &&
17776 buffer[0] === OPS.OP_RETURN &&
17777 buffer[1] === 0x24 &&
17778 buffer.slice(2, 6).equals(HEADER)
8b095871
IC
17779}
17780
9987f0c1 17781check.toJSON = function () { return 'Witness commitment output' }
8b095871 17782
9987f0c1
IC
17783function encode (commitment) {
17784 typeforce(types.Hash256bit, commitment)
8b095871 17785
9987f0c1
IC
17786 var buffer = Buffer.allocUnsafe(36)
17787 HEADER.copy(buffer, 0)
17788 commitment.copy(buffer, 4)
8b095871 17789
9987f0c1
IC
17790 return bscript.compile([OPS.OP_RETURN, buffer])
17791}
8b095871 17792
9987f0c1
IC
17793function decode (buffer) {
17794 typeforce(check, buffer)
8b095871 17795
9987f0c1
IC
17796 return bscript.decompile(buffer)[1].slice(4, 36)
17797}
8b095871 17798
9987f0c1
IC
17799module.exports = {
17800 check: check,
17801 decode: decode,
17802 encode: encode
17803}
8b095871 17804
9987f0c1
IC
17805},{"../../script":52,"../../types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],70:[function(require,module,exports){
17806arguments[4][55][0].apply(exports,arguments)
17807},{"./input":71,"./output":72,"dup":55}],71:[function(require,module,exports){
17808// {signature} {pubKey}
8b095871 17809
9987f0c1 17810var pkh = require('../pubkeyhash/input')
8b095871 17811
9987f0c1
IC
17812module.exports = {
17813 check: pkh.check,
17814 decodeStack: pkh.decodeStack,
17815 encodeStack: pkh.encodeStack
8b095871
IC
17816}
17817
9987f0c1
IC
17818},{"../pubkeyhash/input":63}],72:[function(require,module,exports){
17819// OP_0 {pubKeyHash}
8b095871 17820
9987f0c1
IC
17821var bscript = require('../../script')
17822var types = require('../../types')
17823var typeforce = require('typeforce')
17824var OPS = require('bitcoin-ops')
8b095871 17825
9987f0c1
IC
17826function check (script) {
17827 var buffer = bscript.compile(script)
8b095871 17828
9987f0c1
IC
17829 return buffer.length === 22 &&
17830 buffer[0] === OPS.OP_0 &&
17831 buffer[1] === 0x14
17832}
17833check.toJSON = function () { return 'Witness pubKeyHash output' }
8b095871 17834
9987f0c1
IC
17835function encode (pubKeyHash) {
17836 typeforce(types.Hash160bit, pubKeyHash)
8b095871 17837
9987f0c1
IC
17838 return bscript.compile([OPS.OP_0, pubKeyHash])
17839}
8b095871 17840
9987f0c1
IC
17841function decode (buffer) {
17842 typeforce(check, buffer)
17843
17844 return buffer.slice(2)
8b095871
IC
17845}
17846
9987f0c1
IC
17847module.exports = {
17848 check: check,
17849 decode: decode,
17850 encode: encode
17851}
8b095871 17852
9987f0c1
IC
17853},{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],73:[function(require,module,exports){
17854arguments[4][55][0].apply(exports,arguments)
17855},{"./input":74,"./output":75,"dup":55}],74:[function(require,module,exports){
17856// {signature} {pubKey}
8b095871 17857
9987f0c1 17858var p2sh = require('../scripthash/input')
8b095871 17859
9987f0c1
IC
17860module.exports = {
17861 check: p2sh.check,
17862 decodeStack: p2sh.decodeStack,
17863 encodeStack: p2sh.encodeStack
17864}
8b095871 17865
9987f0c1
IC
17866},{"../scripthash/input":66}],75:[function(require,module,exports){
17867// OP_0 {scriptHash}
8b095871 17868
9987f0c1
IC
17869var bscript = require('../../script')
17870var types = require('../../types')
17871var typeforce = require('typeforce')
17872var OPS = require('bitcoin-ops')
8b095871 17873
9987f0c1
IC
17874function check (script) {
17875 var buffer = bscript.compile(script)
17876
17877 return buffer.length === 34 &&
17878 buffer[0] === OPS.OP_0 &&
17879 buffer[1] === 0x20
8b095871 17880}
9987f0c1 17881check.toJSON = function () { return 'Witness scriptHash output' }
8b095871 17882
9987f0c1
IC
17883function encode (scriptHash) {
17884 typeforce(types.Hash256bit, scriptHash)
8b095871 17885
9987f0c1
IC
17886 return bscript.compile([OPS.OP_0, scriptHash])
17887}
8b095871 17888
9987f0c1
IC
17889function decode (buffer) {
17890 typeforce(check, buffer)
8b095871 17891
9987f0c1
IC
17892 return buffer.slice(2)
17893}
8b095871 17894
9987f0c1
IC
17895module.exports = {
17896 check: check,
17897 decode: decode,
17898 encode: encode
17899}
8b095871 17900
9987f0c1
IC
17901},{"../../script":52,"../../types":78,"bitcoin-ops":40,"typeforce":109}],76:[function(require,module,exports){
17902var Buffer = require('safe-buffer').Buffer
17903var bcrypto = require('./crypto')
17904var bscript = require('./script')
17905var bufferutils = require('./bufferutils')
17906var opcodes = require('bitcoin-ops')
17907var typeforce = require('typeforce')
17908var types = require('./types')
17909var varuint = require('varuint-bitcoin')
8b095871 17910
9987f0c1
IC
17911function varSliceSize (someScript) {
17912 var length = someScript.length
8b095871 17913
9987f0c1
IC
17914 return varuint.encodingLength(length) + length
17915}
8b095871 17916
9987f0c1
IC
17917function vectorSize (someVector) {
17918 var length = someVector.length
17919
17920 return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
17921 return sum + varSliceSize(witness)
17922 }, 0)
8b095871
IC
17923}
17924
9987f0c1
IC
17925function Transaction () {
17926 this.version = 1
17927 this.locktime = 0
17928 this.ins = []
17929 this.outs = []
17930}
8b095871 17931
9987f0c1
IC
17932Transaction.DEFAULT_SEQUENCE = 0xffffffff
17933Transaction.SIGHASH_ALL = 0x01
17934Transaction.SIGHASH_NONE = 0x02
17935Transaction.SIGHASH_SINGLE = 0x03
17936Transaction.SIGHASH_ANYONECANPAY = 0x80
17937Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
17938Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
8b095871 17939
9987f0c1
IC
17940var EMPTY_SCRIPT = Buffer.allocUnsafe(0)
17941var EMPTY_WITNESS = []
17942var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex')
17943var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex')
17944var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex')
17945var BLANK_OUTPUT = {
17946 script: EMPTY_SCRIPT,
17947 valueBuffer: VALUE_UINT64_MAX
17948}
8b095871 17949
9987f0c1
IC
17950Transaction.fromBuffer = function (buffer, __noStrict) {
17951 var offset = 0
17952 function readSlice (n) {
17953 offset += n
17954 return buffer.slice(offset - n, offset)
17955 }
8b095871 17956
9987f0c1
IC
17957 function readUInt32 () {
17958 var i = buffer.readUInt32LE(offset)
17959 offset += 4
17960 return i
17961 }
8b095871 17962
9987f0c1
IC
17963 function readInt32 () {
17964 var i = buffer.readInt32LE(offset)
17965 offset += 4
17966 return i
17967 }
8b095871 17968
9987f0c1
IC
17969 function readUInt64 () {
17970 var i = bufferutils.readUInt64LE(buffer, offset)
17971 offset += 8
17972 return i
8b095871
IC
17973 }
17974
9987f0c1
IC
17975 function readVarInt () {
17976 var vi = varuint.decode(buffer, offset)
17977 offset += varuint.decode.bytes
17978 return vi
17979 }
8b095871 17980
9987f0c1
IC
17981 function readVarSlice () {
17982 return readSlice(readVarInt())
17983 }
8b095871 17984
9987f0c1
IC
17985 function readVector () {
17986 var count = readVarInt()
17987 var vector = []
17988 for (var i = 0; i < count; i++) vector.push(readVarSlice())
17989 return vector
17990 }
8b095871 17991
9987f0c1
IC
17992 var tx = new Transaction()
17993 tx.version = readInt32()
8b095871 17994
9987f0c1
IC
17995 var marker = buffer.readUInt8(offset)
17996 var flag = buffer.readUInt8(offset + 1)
8b095871 17997
9987f0c1
IC
17998 var hasWitnesses = false
17999 if (marker === Transaction.ADVANCED_TRANSACTION_MARKER &&
18000 flag === Transaction.ADVANCED_TRANSACTION_FLAG) {
18001 offset += 2
18002 hasWitnesses = true
18003 }
8b095871 18004
9987f0c1
IC
18005 var vinLen = readVarInt()
18006 for (var i = 0; i < vinLen; ++i) {
18007 tx.ins.push({
18008 hash: readSlice(32),
18009 index: readUInt32(),
18010 script: readVarSlice(),
18011 sequence: readUInt32(),
18012 witness: EMPTY_WITNESS
18013 })
18014 }
8b095871 18015
9987f0c1
IC
18016 var voutLen = readVarInt()
18017 for (i = 0; i < voutLen; ++i) {
18018 tx.outs.push({
18019 value: readUInt64(),
18020 script: readVarSlice()
18021 })
8b095871
IC
18022 }
18023
9987f0c1
IC
18024 if (hasWitnesses) {
18025 for (i = 0; i < vinLen; ++i) {
18026 tx.ins[i].witness = readVector()
18027 }
8b095871 18028
9987f0c1
IC
18029 // was this pointless?
18030 if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data')
18031 }
8b095871 18032
9987f0c1 18033 tx.locktime = readUInt32()
8b095871 18034
9987f0c1
IC
18035 if (__noStrict) return tx
18036 if (offset !== buffer.length) throw new Error('Transaction has unexpected data')
8b095871 18037
9987f0c1
IC
18038 return tx
18039}
8b095871 18040
9987f0c1
IC
18041Transaction.fromHex = function (hex) {
18042 return Transaction.fromBuffer(Buffer.from(hex, 'hex'))
8b095871 18043}
8b095871 18044
9987f0c1
IC
18045Transaction.isCoinbaseHash = function (buffer) {
18046 typeforce(types.Hash256bit, buffer)
18047 for (var i = 0; i < 32; ++i) {
18048 if (buffer[i] !== 0) return false
8b095871 18049 }
9987f0c1 18050 return true
8b095871 18051}
9987f0c1
IC
18052
18053Transaction.prototype.isCoinbase = function () {
18054 return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash)
8b095871
IC
18055}
18056
9987f0c1
IC
18057Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) {
18058 typeforce(types.tuple(
18059 types.Hash256bit,
18060 types.UInt32,
18061 types.maybe(types.UInt32),
18062 types.maybe(types.Buffer)
18063 ), arguments)
8b095871 18064
9987f0c1
IC
18065 if (types.Null(sequence)) {
18066 sequence = Transaction.DEFAULT_SEQUENCE
18067 }
18068
18069 // Add the input and return the input's index
18070 return (this.ins.push({
18071 hash: hash,
18072 index: index,
18073 script: scriptSig || EMPTY_SCRIPT,
18074 sequence: sequence,
18075 witness: EMPTY_WITNESS
18076 }) - 1)
8b095871
IC
18077}
18078
9987f0c1
IC
18079Transaction.prototype.addOutput = function (scriptPubKey, value) {
18080 typeforce(types.tuple(types.Buffer, types.Satoshi), arguments)
8b095871 18081
9987f0c1
IC
18082 // Add the output and return the output's index
18083 return (this.outs.push({
18084 script: scriptPubKey,
18085 value: value
18086 }) - 1)
8b095871
IC
18087}
18088
9987f0c1
IC
18089Transaction.prototype.hasWitnesses = function () {
18090 return this.ins.some(function (x) {
18091 return x.witness.length !== 0
18092 })
18093}
8b095871 18094
9987f0c1
IC
18095Transaction.prototype.weight = function () {
18096 var base = this.__byteLength(false)
18097 var total = this.__byteLength(true)
18098 return base * 3 + total
8b095871
IC
18099}
18100
9987f0c1
IC
18101Transaction.prototype.virtualSize = function () {
18102 return Math.ceil(this.weight() / 4)
18103}
8b095871 18104
9987f0c1
IC
18105Transaction.prototype.byteLength = function () {
18106 return this.__byteLength(true)
8b095871
IC
18107}
18108
9987f0c1
IC
18109Transaction.prototype.__byteLength = function (__allowWitness) {
18110 var hasWitnesses = __allowWitness && this.hasWitnesses()
18111
18112 return (
18113 (hasWitnesses ? 10 : 8) +
18114 varuint.encodingLength(this.ins.length) +
18115 varuint.encodingLength(this.outs.length) +
18116 this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
18117 this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
18118 (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
18119 )
8b095871
IC
18120}
18121
9987f0c1
IC
18122Transaction.prototype.clone = function () {
18123 var newTx = new Transaction()
18124 newTx.version = this.version
18125 newTx.locktime = this.locktime
18126
18127 newTx.ins = this.ins.map(function (txIn) {
18128 return {
18129 hash: txIn.hash,
18130 index: txIn.index,
18131 script: txIn.script,
18132 sequence: txIn.sequence,
18133 witness: txIn.witness
8b095871 18134 }
9987f0c1 18135 })
8b095871 18136
9987f0c1
IC
18137 newTx.outs = this.outs.map(function (txOut) {
18138 return {
18139 script: txOut.script,
18140 value: txOut.value
18141 }
18142 })
8b095871 18143
9987f0c1
IC
18144 return newTx
18145}
18146
18147/**
18148 * Hash transaction for signing a specific input.
18149 *
18150 * Bitcoin uses a different hash for each signed transaction input.
18151 * This method copies the transaction, makes the necessary changes based on the
18152 * hashType, and then hashes the result.
18153 * This hash can then be used to sign the provided transaction input.
18154 */
18155Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18156 typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments)
18157
18158 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29
18159 if (inIndex >= this.ins.length) return ONE
18160
18161 // ignore OP_CODESEPARATOR
18162 var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) {
18163 return x !== opcodes.OP_CODESEPARATOR
18164 }))
18165
18166 var txTmp = this.clone()
18167
18168 // SIGHASH_NONE: ignore all outputs? (wildcard payee)
18169 if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) {
18170 txTmp.outs = []
18171
18172 // ignore sequence numbers (except at inIndex)
18173 txTmp.ins.forEach(function (input, i) {
18174 if (i === inIndex) return
18175
18176 input.sequence = 0
18177 })
18178
18179 // SIGHASH_SINGLE: ignore all outputs, except at the same index?
18180 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) {
18181 // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60
18182 if (inIndex >= this.outs.length) return ONE
18183
18184 // truncate outputs after
18185 txTmp.outs.length = inIndex + 1
18186
18187 // "blank" outputs before
18188 for (var i = 0; i < inIndex; i++) {
18189 txTmp.outs[i] = BLANK_OUTPUT
8b095871
IC
18190 }
18191
9987f0c1
IC
18192 // ignore sequence numbers (except at inIndex)
18193 txTmp.ins.forEach(function (input, y) {
18194 if (y === inIndex) return
8b095871 18195
9987f0c1
IC
18196 input.sequence = 0
18197 })
8b095871 18198 }
8b095871 18199
9987f0c1
IC
18200 // SIGHASH_ANYONECANPAY: ignore inputs entirely?
18201 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18202 txTmp.ins = [txTmp.ins[inIndex]]
18203 txTmp.ins[0].script = ourScript
18204
18205 // SIGHASH_ALL: only ignore input scripts
18206 } else {
18207 // "blank" others input scripts
18208 txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT })
18209 txTmp.ins[inIndex].script = ourScript
18210 }
18211
18212 // serialize and hash
18213 var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4)
18214 buffer.writeInt32LE(hashType, buffer.length - 4)
18215 txTmp.__toBuffer(buffer, 0, false)
18216
18217 return bcrypto.hash256(buffer)
8b095871
IC
18218}
18219
9987f0c1
IC
18220Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) {
18221 typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments)
18222
18223 var tbuffer, toffset
18224 function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) }
18225 function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) }
18226 function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) }
18227 function writeVarInt (i) {
18228 varuint.encode(i, tbuffer, toffset)
18229 toffset += varuint.encode.bytes
18230 }
18231 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18232
18233 var hashOutputs = ZERO
18234 var hashPrevouts = ZERO
18235 var hashSequence = ZERO
18236
18237 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) {
18238 tbuffer = Buffer.allocUnsafe(36 * this.ins.length)
18239 toffset = 0
18240
18241 this.ins.forEach(function (txIn) {
18242 writeSlice(txIn.hash)
18243 writeUInt32(txIn.index)
18244 })
18245
18246 hashPrevouts = bcrypto.hash256(tbuffer)
18247 }
18248
18249 if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) &&
18250 (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18251 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18252 tbuffer = Buffer.allocUnsafe(4 * this.ins.length)
18253 toffset = 0
18254
18255 this.ins.forEach(function (txIn) {
18256 writeUInt32(txIn.sequence)
18257 })
18258
18259 hashSequence = bcrypto.hash256(tbuffer)
18260 }
18261
18262 if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE &&
18263 (hashType & 0x1f) !== Transaction.SIGHASH_NONE) {
18264 var txOutsSize = this.outs.reduce(function (sum, output) {
18265 return sum + 8 + varSliceSize(output.script)
18266 }, 0)
18267
18268 tbuffer = Buffer.allocUnsafe(txOutsSize)
18269 toffset = 0
18270
18271 this.outs.forEach(function (out) {
18272 writeUInt64(out.value)
18273 writeVarSlice(out.script)
18274 })
18275
18276 hashOutputs = bcrypto.hash256(tbuffer)
18277 } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) {
18278 var output = this.outs[inIndex]
18279
18280 tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script))
18281 toffset = 0
18282 writeUInt64(output.value)
18283 writeVarSlice(output.script)
18284
18285 hashOutputs = bcrypto.hash256(tbuffer)
18286 }
18287
18288 tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript))
18289 toffset = 0
18290
18291 var input = this.ins[inIndex]
18292 writeUInt32(this.version)
18293 writeSlice(hashPrevouts)
18294 writeSlice(hashSequence)
18295 writeSlice(input.hash)
18296 writeUInt32(input.index)
18297 writeVarSlice(prevOutScript)
18298 writeUInt64(value)
18299 writeUInt32(input.sequence)
18300 writeSlice(hashOutputs)
18301 writeUInt32(this.locktime)
18302 writeUInt32(hashType)
18303 return bcrypto.hash256(tbuffer)
8b095871
IC
18304}
18305
9987f0c1
IC
18306Transaction.prototype.getHash = function () {
18307 return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
18308}
8b095871 18309
9987f0c1
IC
18310Transaction.prototype.getId = function () {
18311 // transaction hash's are displayed in reverse order
18312 return this.getHash().reverse().toString('hex')
18313}
8b095871 18314
9987f0c1
IC
18315Transaction.prototype.toBuffer = function (buffer, initialOffset) {
18316 return this.__toBuffer(buffer, initialOffset, true)
18317}
8b095871 18318
9987f0c1
IC
18319Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) {
18320 if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness))
8b095871 18321
9987f0c1
IC
18322 var offset = initialOffset || 0
18323 function writeSlice (slice) { offset += slice.copy(buffer, offset) }
18324 function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) }
18325 function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) }
18326 function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) }
18327 function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) }
18328 function writeVarInt (i) {
18329 varuint.encode(i, buffer, offset)
18330 offset += varuint.encode.bytes
18331 }
18332 function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) }
18333 function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) }
8b095871 18334
9987f0c1 18335 writeInt32(this.version)
8b095871 18336
9987f0c1 18337 var hasWitnesses = __allowWitness && this.hasWitnesses()
8b095871 18338
9987f0c1
IC
18339 if (hasWitnesses) {
18340 writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
18341 writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
18342 }
8b095871 18343
9987f0c1 18344 writeVarInt(this.ins.length)
8b095871 18345
9987f0c1
IC
18346 this.ins.forEach(function (txIn) {
18347 writeSlice(txIn.hash)
18348 writeUInt32(txIn.index)
18349 writeVarSlice(txIn.script)
18350 writeUInt32(txIn.sequence)
18351 })
8b095871 18352
9987f0c1
IC
18353 writeVarInt(this.outs.length)
18354 this.outs.forEach(function (txOut) {
18355 if (!txOut.valueBuffer) {
18356 writeUInt64(txOut.value)
18357 } else {
18358 writeSlice(txOut.valueBuffer)
8b095871 18359 }
8b095871 18360
9987f0c1
IC
18361 writeVarSlice(txOut.script)
18362 })
8b095871 18363
9987f0c1
IC
18364 if (hasWitnesses) {
18365 this.ins.forEach(function (input) {
18366 writeVector(input.witness)
18367 })
18368 }
8b095871 18369
9987f0c1 18370 writeUInt32(this.locktime)
8b095871 18371
9987f0c1
IC
18372 // avoid slicing unless necessary
18373 if (initialOffset !== undefined) return buffer.slice(initialOffset, offset)
18374 return buffer
18375}
8b095871 18376
9987f0c1
IC
18377Transaction.prototype.toHex = function () {
18378 return this.toBuffer().toString('hex')
18379}
8b095871 18380
9987f0c1
IC
18381Transaction.prototype.setInputScript = function (index, scriptSig) {
18382 typeforce(types.tuple(types.Number, types.Buffer), arguments)
8b095871 18383
9987f0c1
IC
18384 this.ins[index].script = scriptSig
18385}
8b095871 18386
9987f0c1
IC
18387Transaction.prototype.setWitness = function (index, witness) {
18388 typeforce(types.tuple(types.Number, [types.Buffer]), arguments)
18389
18390 this.ins[index].witness = witness
18391}
18392
18393module.exports = Transaction
18394
18395},{"./bufferutils":44,"./crypto":45,"./script":52,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109,"varuint-bitcoin":111}],77:[function(require,module,exports){
18396var Buffer = require('safe-buffer').Buffer
18397var baddress = require('./address')
18398var bcrypto = require('./crypto')
18399var bscript = require('./script')
18400var networks = require('./networks')
18401var ops = require('bitcoin-ops')
18402var typeforce = require('typeforce')
18403var types = require('./types')
18404var scriptTypes = bscript.types
18405var SIGNABLE = [bscript.types.P2PKH, bscript.types.P2PK, bscript.types.MULTISIG]
18406var P2SH = SIGNABLE.concat([bscript.types.P2WPKH, bscript.types.P2WSH])
18407
18408var ECPair = require('./ecpair')
18409var ECSignature = require('./ecsignature')
18410var Transaction = require('./transaction')
18411
18412function extractChunks (type, chunks, script) {
18413 var pubKeys = []
18414 var signatures = []
18415 switch (type) {
18416 case scriptTypes.P2PKH:
18417 // if (redeemScript) throw new Error('Nonstandard... P2SH(P2PKH)')
18418 pubKeys = chunks.slice(1)
18419 signatures = chunks.slice(0, 1)
18420 break
18421
18422 case scriptTypes.P2PK:
18423 pubKeys[0] = script ? bscript.pubKey.output.decode(script) : undefined
18424 signatures = chunks.slice(0, 1)
18425 break
18426
18427 case scriptTypes.MULTISIG:
18428 if (script) {
18429 var multisig = bscript.multisig.output.decode(script)
18430 pubKeys = multisig.pubKeys
18431 }
18432
18433 signatures = chunks.slice(1).map(function (chunk) {
18434 return chunk.length === 0 ? undefined : chunk
18435 })
18436 break
18437 }
18438
18439 return {
18440 pubKeys: pubKeys,
18441 signatures: signatures
18442 }
18443}
18444function expandInput (scriptSig, witnessStack) {
18445 if (scriptSig.length === 0 && witnessStack.length === 0) return {}
18446
18447 var prevOutScript
18448 var prevOutType
18449 var scriptType
18450 var script
18451 var redeemScript
18452 var witnessScript
18453 var witnessScriptType
18454 var redeemScriptType
18455 var witness = false
18456 var p2wsh = false
18457 var p2sh = false
18458 var witnessProgram
18459 var chunks
18460
18461 var scriptSigChunks = bscript.decompile(scriptSig)
18462 var sigType = bscript.classifyInput(scriptSigChunks, true)
18463 if (sigType === scriptTypes.P2SH) {
18464 p2sh = true
18465 redeemScript = scriptSigChunks[scriptSigChunks.length - 1]
18466 redeemScriptType = bscript.classifyOutput(redeemScript)
18467 prevOutScript = bscript.scriptHash.output.encode(bcrypto.hash160(redeemScript))
18468 prevOutType = scriptTypes.P2SH
18469 script = redeemScript
18470 }
18471
18472 var classifyWitness = bscript.classifyWitness(witnessStack)
18473 if (classifyWitness === scriptTypes.P2WSH) {
18474 witnessScript = witnessStack[witnessStack.length - 1]
18475 witnessScriptType = bscript.classifyOutput(witnessScript)
18476 p2wsh = true
18477 if (scriptSig.length === 0) {
18478 prevOutScript = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18479 prevOutType = scriptTypes.P2WSH
18480 if (typeof redeemScript !== 'undefined') {
18481 throw new Error('Redeem script given when unnecessary')
18482 }
18483 // bare witness
18484 } else {
18485 if (!redeemScript) {
18486 throw new Error('No redeemScript provided for P2WSH, but scriptSig non-empty')
18487 }
18488 witnessProgram = bscript.witnessScriptHash.output.encode(bcrypto.sha256(witnessScript))
18489 if (!redeemScript.equals(witnessProgram)) {
18490 throw new Error('Redeem script didn\'t match witnessScript')
18491 }
8b095871 18492 }
8b095871 18493
9987f0c1
IC
18494 if (SIGNABLE.indexOf(bscript.classifyOutput(witnessScript)) === -1) {
18495 throw new Error('unsupported witness script')
18496 }
18497 script = witnessScript
18498 scriptType = witnessScriptType
18499 chunks = witnessStack.slice(0, -1)
18500 } else if (classifyWitness === scriptTypes.P2WPKH) {
18501 var key = witnessStack[witnessStack.length - 1]
18502 var keyHash = bcrypto.hash160(key)
18503 if (scriptSig.length === 0) {
18504 prevOutScript = bscript.witnessPubKeyHash.output.encode(keyHash)
18505 prevOutType = scriptTypes.P2WPKH
18506 if (typeof redeemScript !== 'undefined') {
18507 throw new Error('Redeem script given when unnecessary')
18508 }
18509 } else {
18510 if (!redeemScript) {
18511 throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t empty')
18512 }
18513 witnessProgram = bscript.witnessPubKeyHash.output.encode(keyHash)
18514 if (!redeemScript.equals(witnessProgram)) {
18515 throw new Error('Redeem script did not have the right witness program')
18516 }
18517 }
8b095871 18518
9987f0c1
IC
18519 scriptType = scriptTypes.P2PKH
18520 chunks = witnessStack
18521 } else if (redeemScript) {
18522 if (P2SH.indexOf(redeemScriptType) === -1) {
18523 throw new Error('Bad redeemscript!')
8b095871 18524 }
8b095871 18525
9987f0c1
IC
18526 script = redeemScript
18527 scriptType = redeemScriptType
18528 chunks = scriptSigChunks.slice(0, -1)
18529 } else {
18530 prevOutType = scriptType = bscript.classifyInput(scriptSig)
18531 chunks = scriptSigChunks
8b095871 18532 }
8b095871 18533
9987f0c1 18534 var expanded = extractChunks(scriptType, chunks, script)
8b095871 18535
9987f0c1
IC
18536 var result = {
18537 pubKeys: expanded.pubKeys,
18538 signatures: expanded.signatures,
18539 prevOutScript: prevOutScript,
18540 prevOutType: prevOutType,
18541 signType: scriptType,
18542 signScript: script,
18543 witness: Boolean(witness)
18544 }
8b095871 18545
9987f0c1
IC
18546 if (p2sh) {
18547 result.redeemScript = redeemScript
18548 result.redeemScriptType = redeemScriptType
18549 }
8b095871 18550
9987f0c1
IC
18551 if (p2wsh) {
18552 result.witnessScript = witnessScript
18553 result.witnessScriptType = witnessScriptType
8b095871
IC
18554 }
18555
9987f0c1 18556 return result
8b095871
IC
18557}
18558
9987f0c1
IC
18559// could be done in expandInput, but requires the original Transaction for hashForSignature
18560function fixMultisigOrder (input, transaction, vin) {
18561 if (input.redeemScriptType !== scriptTypes.MULTISIG || !input.redeemScript) return
18562 if (input.pubKeys.length === input.signatures.length) return
8b095871 18563
9987f0c1 18564 var unmatched = input.signatures.concat()
8b095871 18565
9987f0c1
IC
18566 input.signatures = input.pubKeys.map(function (pubKey) {
18567 var keyPair = ECPair.fromPublicKeyBuffer(pubKey)
18568 var match
8b095871 18569
9987f0c1
IC
18570 // check for a signature
18571 unmatched.some(function (signature, i) {
18572 // skip if undefined || OP_0
18573 if (!signature) return false
8b095871 18574
9987f0c1
IC
18575 // TODO: avoid O(n) hashForSignature
18576 var parsed = ECSignature.parseScriptSignature(signature)
18577 var hash = transaction.hashForSignature(vin, input.redeemScript, parsed.hashType)
8b095871 18578
9987f0c1
IC
18579 // skip if signature does not match pubKey
18580 if (!keyPair.verify(hash, parsed.signature)) return false
8b095871 18581
9987f0c1
IC
18582 // remove matched signature from unmatched
18583 unmatched[i] = undefined
18584 match = signature
8b095871 18585
9987f0c1
IC
18586 return true
18587 })
8b095871 18588
9987f0c1
IC
18589 return match
18590 })
18591}
8b095871 18592
9987f0c1
IC
18593function expandOutput (script, scriptType, ourPubKey) {
18594 typeforce(types.Buffer, script)
8b095871 18595
9987f0c1
IC
18596 var scriptChunks = bscript.decompile(script)
18597 if (!scriptType) {
18598 scriptType = bscript.classifyOutput(script)
8b095871 18599 }
8b095871 18600
9987f0c1 18601 var pubKeys = []
8b095871 18602
9987f0c1
IC
18603 switch (scriptType) {
18604 // does our hash160(pubKey) match the output scripts?
18605 case scriptTypes.P2PKH:
18606 if (!ourPubKey) break
8b095871 18607
9987f0c1
IC
18608 var pkh1 = scriptChunks[2]
18609 var pkh2 = bcrypto.hash160(ourPubKey)
18610 if (pkh1.equals(pkh2)) pubKeys = [ourPubKey]
18611 break
8b095871 18612
9987f0c1
IC
18613 // does our hash160(pubKey) match the output scripts?
18614 case scriptTypes.P2WPKH:
18615 if (!ourPubKey) break
8b095871 18616
9987f0c1
IC
18617 var wpkh1 = scriptChunks[1]
18618 var wpkh2 = bcrypto.hash160(ourPubKey)
18619 if (wpkh1.equals(wpkh2)) pubKeys = [ourPubKey]
18620 break
8b095871 18621
9987f0c1
IC
18622 case scriptTypes.P2PK:
18623 pubKeys = scriptChunks.slice(0, 1)
18624 break
18625
18626 case scriptTypes.MULTISIG:
18627 pubKeys = scriptChunks.slice(1, -2)
18628 break
8b095871 18629
9987f0c1
IC
18630 default: return { scriptType: scriptType }
18631 }
8b095871 18632
9987f0c1
IC
18633 return {
18634 pubKeys: pubKeys,
18635 scriptType: scriptType,
18636 signatures: pubKeys.map(function () { return undefined })
18637 }
8b095871
IC
18638}
18639
9987f0c1
IC
18640function checkP2shInput (input, redeemScriptHash) {
18641 if (input.prevOutType) {
18642 if (input.prevOutType !== scriptTypes.P2SH) throw new Error('PrevOutScript must be P2SH')
8b095871 18643
9987f0c1
IC
18644 var prevOutScriptScriptHash = bscript.decompile(input.prevOutScript)[1]
18645 if (!prevOutScriptScriptHash.equals(redeemScriptHash)) throw new Error('Inconsistent hash160(RedeemScript)')
18646 }
8b095871
IC
18647}
18648
9987f0c1
IC
18649function checkP2WSHInput (input, witnessScriptHash) {
18650 if (input.prevOutType) {
18651 if (input.prevOutType !== scriptTypes.P2WSH) throw new Error('PrevOutScript must be P2WSH')
8b095871 18652
9987f0c1
IC
18653 var scriptHash = bscript.decompile(input.prevOutScript)[1]
18654 if (!scriptHash.equals(witnessScriptHash)) throw new Error('Inconsistent sha25(WitnessScript)')
18655 }
8b095871
IC
18656}
18657
9987f0c1
IC
18658function prepareInput (input, kpPubKey, redeemScript, witnessValue, witnessScript) {
18659 var expanded
18660 var prevOutType
18661 var prevOutScript
8b095871 18662
9987f0c1
IC
18663 var p2sh = false
18664 var p2shType
18665 var redeemScriptHash
18666
18667 var witness = false
18668 var p2wsh = false
18669 var witnessType
18670 var witnessScriptHash
18671
18672 var signType
18673 var signScript
18674
18675 if (redeemScript && witnessScript) {
18676 redeemScriptHash = bcrypto.hash160(redeemScript)
18677 witnessScriptHash = bcrypto.sha256(witnessScript)
18678 checkP2shInput(input, redeemScriptHash)
18679
18680 if (!redeemScript.equals(bscript.witnessScriptHash.output.encode(witnessScriptHash))) throw new Error('Witness script inconsistent with redeem script')
18681
18682 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18683 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18684 prevOutType = bscript.types.P2SH
18685 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18686 p2sh = witness = p2wsh = true
18687 p2shType = bscript.types.P2WSH
18688 signType = witnessType = expanded.scriptType
18689 signScript = witnessScript
18690 } else if (redeemScript) {
18691 redeemScriptHash = bcrypto.hash160(redeemScript)
18692 checkP2shInput(input, redeemScriptHash)
18693
18694 expanded = expandOutput(redeemScript, undefined, kpPubKey)
18695 if (!expanded.pubKeys) throw new Error('RedeemScript not supported "' + bscript.toASM(redeemScript) + '"')
18696
18697 prevOutType = bscript.types.P2SH
18698 prevOutScript = bscript.scriptHash.output.encode(redeemScriptHash)
18699 p2sh = true
18700 signType = p2shType = expanded.scriptType
18701 signScript = redeemScript
18702 witness = signType === bscript.types.P2WPKH
18703 } else if (witnessScript) {
18704 witnessScriptHash = bcrypto.sha256(witnessScript)
18705 checkP2WSHInput(input, witnessScriptHash)
18706
18707 expanded = expandOutput(witnessScript, undefined, kpPubKey)
18708 if (!expanded.pubKeys) throw new Error('WitnessScript not supported "' + bscript.toASM(redeemScript) + '"')
18709
18710 prevOutType = bscript.types.P2WSH
18711 prevOutScript = bscript.witnessScriptHash.output.encode(witnessScriptHash)
18712 witness = p2wsh = true
18713 signType = witnessType = expanded.scriptType
18714 signScript = witnessScript
18715 } else if (input.prevOutType) {
18716 // embedded scripts are not possible without a redeemScript
18717 if (input.prevOutType === scriptTypes.P2SH ||
18718 input.prevOutType === scriptTypes.P2WSH) {
18719 throw new Error('PrevOutScript is ' + input.prevOutType + ', requires redeemScript')
18720 }
18721
18722 prevOutType = input.prevOutType
18723 prevOutScript = input.prevOutScript
18724 expanded = expandOutput(input.prevOutScript, input.prevOutType, kpPubKey)
18725 if (!expanded.pubKeys) return
18726
18727 witness = (input.prevOutType === scriptTypes.P2WPKH)
18728 signType = prevOutType
18729 signScript = prevOutScript
18730 } else {
18731 prevOutScript = bscript.pubKeyHash.output.encode(bcrypto.hash160(kpPubKey))
18732 expanded = expandOutput(prevOutScript, scriptTypes.P2PKH, kpPubKey)
18733 prevOutType = scriptTypes.P2PKH
18734 witness = false
18735 signType = prevOutType
18736 signScript = prevOutScript
18737 }
8b095871 18738
9987f0c1
IC
18739 if (witness && !types.Satoshi(witnessValue)) {
18740 throw new Error('Input was witness but not given witness value')
18741 }
8b095871 18742
9987f0c1
IC
18743 if (signType === scriptTypes.P2WPKH) {
18744 signScript = bscript.pubKeyHash.output.encode(bscript.witnessPubKeyHash.output.decode(signScript))
18745 }
8b095871 18746
9987f0c1
IC
18747 if (p2sh) {
18748 input.redeemScript = redeemScript
18749 input.redeemScriptType = p2shType
18750 }
8b095871 18751
9987f0c1
IC
18752 if (p2wsh) {
18753 input.witnessScript = witnessScript
18754 input.witnessScriptType = witnessType
18755 }
8b095871 18756
9987f0c1
IC
18757 input.pubKeys = expanded.pubKeys
18758 input.signatures = expanded.signatures
18759 input.signScript = signScript
18760 input.signType = signType
18761 input.prevOutScript = prevOutScript
18762 input.prevOutType = prevOutType
18763 input.witness = witness
8b095871
IC
18764}
18765
9987f0c1
IC
18766function buildStack (type, signatures, pubKeys, allowIncomplete) {
18767 if (type === scriptTypes.P2PKH) {
18768 if (signatures.length === 1 && Buffer.isBuffer(signatures[0]) && pubKeys.length === 1) return bscript.pubKeyHash.input.encodeStack(signatures[0], pubKeys[0])
18769 } else if (type === scriptTypes.P2PK) {
18770 if (signatures.length === 1 && Buffer.isBuffer(signatures[0])) return bscript.pubKey.input.encodeStack(signatures[0])
18771 } else if (type === scriptTypes.MULTISIG) {
18772 if (signatures.length > 0) {
18773 signatures = signatures.map(function (signature) {
18774 return signature || ops.OP_0
18775 })
18776 if (!allowIncomplete) {
18777 // remove blank signatures
18778 signatures = signatures.filter(function (x) { return x !== ops.OP_0 })
18779 }
8b095871 18780
9987f0c1
IC
18781 return bscript.multisig.input.encodeStack(signatures /* see if it's necessary first */)
18782 }
18783 } else {
18784 throw new Error('Not yet supported')
18785 }
8b095871 18786
9987f0c1 18787 if (!allowIncomplete) throw new Error('Not enough signatures provided')
8b095871 18788
9987f0c1 18789 return []
8b095871
IC
18790}
18791
9987f0c1
IC
18792function buildInput (input, allowIncomplete) {
18793 var scriptType = input.prevOutType
18794 var sig = []
18795 var witness = []
18796 if (SIGNABLE.indexOf(scriptType) !== -1) {
18797 sig = buildStack(scriptType, input.signatures, input.pubKeys, allowIncomplete)
8b095871
IC
18798 }
18799
9987f0c1
IC
18800 var p2sh = false
18801 if (scriptType === bscript.types.P2SH) {
18802 // We can remove this error later when we have a guarantee prepareInput
18803 // rejects unsignable scripts - it MUST be signable at this point.
18804 if (P2SH.indexOf(input.redeemScriptType) === -1) {
18805 throw new Error('Impossible to sign this type')
18806 }
18807 p2sh = true
18808 if (SIGNABLE.indexOf(input.redeemScriptType) !== -1) {
18809 sig = buildStack(input.redeemScriptType, input.signatures, input.pubKeys, allowIncomplete)
18810 }
18811 // If it wasn't SIGNABLE, it's witness, defer to that
18812 scriptType = input.redeemScriptType
8b095871
IC
18813 }
18814
9987f0c1
IC
18815 if (scriptType === bscript.types.P2WPKH) {
18816 // P2WPKH is a special case of P2PKH
18817 witness = buildStack(bscript.types.P2PKH, input.signatures, input.pubKeys, allowIncomplete)
18818 } else if (scriptType === bscript.types.P2WSH) {
18819 // We can remove this check later
18820 if (SIGNABLE.indexOf(input.witnessScriptType) !== -1) {
18821 witness = buildStack(input.witnessScriptType, input.signatures, input.pubKeys, allowIncomplete)
18822 witness.push(input.witnessScript)
18823 } else {
18824 // We can remove this error later when we have a guarantee prepareInput
18825 // rejects unsignble scripts - it MUST be signable at this point.
18826 throw new Error()
18827 }
8b095871 18828
9987f0c1 18829 scriptType = input.witnessScriptType
8b095871
IC
18830 }
18831
9987f0c1
IC
18832 // append redeemScript if necessary
18833 if (p2sh) {
18834 sig.push(input.redeemScript)
8b095871
IC
18835 }
18836
9987f0c1
IC
18837 return {
18838 type: scriptType,
18839 script: bscript.compile(sig),
18840 witness: witness
8b095871 18841 }
8b095871
IC
18842}
18843
9987f0c1
IC
18844function TransactionBuilder (network, maximumFeeRate) {
18845 this.prevTxMap = {}
18846 this.network = network || networks.bitcoin
8b095871 18847
9987f0c1
IC
18848 // WARNING: This is __NOT__ to be relied on, its just another potential safety mechanism (safety in-depth)
18849 this.maximumFeeRate = maximumFeeRate || 1000
8b095871 18850
9987f0c1
IC
18851 this.inputs = []
18852 this.tx = new Transaction()
8b095871
IC
18853}
18854
9987f0c1
IC
18855TransactionBuilder.prototype.setLockTime = function (locktime) {
18856 typeforce(types.UInt32, locktime)
8b095871 18857
9987f0c1
IC
18858 // if any signatures exist, throw
18859 if (this.inputs.some(function (input) {
18860 if (!input.signatures) return false
18861
18862 return input.signatures.some(function (s) { return s })
18863 })) {
18864 throw new Error('No, this would invalidate signatures')
18865 }
18866
18867 this.tx.locktime = locktime
8b095871
IC
18868}
18869
9987f0c1
IC
18870TransactionBuilder.prototype.setVersion = function (version) {
18871 typeforce(types.UInt32, version)
8b095871 18872
9987f0c1
IC
18873 // XXX: this might eventually become more complex depending on what the versions represent
18874 this.tx.version = version
18875}
8b095871 18876
9987f0c1
IC
18877TransactionBuilder.fromTransaction = function (transaction, network) {
18878 var txb = new TransactionBuilder(network)
8b095871 18879
9987f0c1
IC
18880 // Copy transaction fields
18881 txb.setVersion(transaction.version)
18882 txb.setLockTime(transaction.locktime)
8b095871 18883
9987f0c1
IC
18884 // Copy outputs (done first to avoid signature invalidation)
18885 transaction.outs.forEach(function (txOut) {
18886 txb.addOutput(txOut.script, txOut.value)
18887 })
8b095871 18888
9987f0c1
IC
18889 // Copy inputs
18890 transaction.ins.forEach(function (txIn) {
18891 txb.__addInputUnsafe(txIn.hash, txIn.index, {
18892 sequence: txIn.sequence,
18893 script: txIn.script,
18894 witness: txIn.witness
18895 })
8b095871
IC
18896 })
18897
9987f0c1
IC
18898 // fix some things not possible through the public API
18899 txb.inputs.forEach(function (input, i) {
18900 fixMultisigOrder(input, transaction, i)
18901 })
8b095871 18902
9987f0c1 18903 return txb
8b095871
IC
18904}
18905
9987f0c1
IC
18906TransactionBuilder.prototype.addInput = function (txHash, vout, sequence, prevOutScript) {
18907 if (!this.__canModifyInputs()) {
18908 throw new Error('No, this would invalidate signatures')
18909 }
8b095871 18910
9987f0c1 18911 var value
8b095871 18912
9987f0c1
IC
18913 // is it a hex string?
18914 if (typeof txHash === 'string') {
18915 // transaction hashs's are displayed in reverse order, un-reverse it
18916 txHash = Buffer.from(txHash, 'hex').reverse()
8b095871 18917
9987f0c1
IC
18918 // is it a Transaction object?
18919 } else if (txHash instanceof Transaction) {
18920 var txOut = txHash.outs[vout]
18921 prevOutScript = txOut.script
18922 value = txOut.value
8b095871 18923
9987f0c1
IC
18924 txHash = txHash.getHash()
18925 }
8b095871 18926
9987f0c1
IC
18927 return this.__addInputUnsafe(txHash, vout, {
18928 sequence: sequence,
18929 prevOutScript: prevOutScript,
18930 value: value
18931 })
18932}
8b095871 18933
9987f0c1
IC
18934TransactionBuilder.prototype.__addInputUnsafe = function (txHash, vout, options) {
18935 if (Transaction.isCoinbaseHash(txHash)) {
18936 throw new Error('coinbase inputs not supported')
18937 }
8b095871 18938
9987f0c1
IC
18939 var prevTxOut = txHash.toString('hex') + ':' + vout
18940 if (this.prevTxMap[prevTxOut] !== undefined) throw new Error('Duplicate TxOut: ' + prevTxOut)
8b095871 18941
9987f0c1 18942 var input = {}
8b095871 18943
9987f0c1
IC
18944 // derive what we can from the scriptSig
18945 if (options.script !== undefined) {
18946 input = expandInput(options.script, options.witness || [])
8b095871
IC
18947 }
18948
9987f0c1
IC
18949 // if an input value was given, retain it
18950 if (options.value !== undefined) {
18951 input.value = options.value
8b095871 18952 }
8b095871 18953
9987f0c1
IC
18954 // derive what we can from the previous transactions output script
18955 if (!input.prevOutScript && options.prevOutScript) {
18956 var prevOutType
8b095871 18957
9987f0c1
IC
18958 if (!input.pubKeys && !input.signatures) {
18959 var expanded = expandOutput(options.prevOutScript)
8b095871 18960
9987f0c1
IC
18961 if (expanded.pubKeys) {
18962 input.pubKeys = expanded.pubKeys
18963 input.signatures = expanded.signatures
18964 }
8b095871 18965
9987f0c1
IC
18966 prevOutType = expanded.scriptType
18967 }
8b095871 18968
9987f0c1
IC
18969 input.prevOutScript = options.prevOutScript
18970 input.prevOutType = prevOutType || bscript.classifyOutput(options.prevOutScript)
18971 }
8b095871 18972
9987f0c1
IC
18973 var vin = this.tx.addInput(txHash, vout, options.sequence, options.scriptSig)
18974 this.inputs[vin] = input
18975 this.prevTxMap[prevTxOut] = vin
8b095871 18976
9987f0c1
IC
18977 return vin
18978}
8b095871 18979
9987f0c1
IC
18980TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
18981 if (!this.__canModifyOutputs()) {
18982 throw new Error('No, this would invalidate signatures')
8b095871
IC
18983 }
18984
9987f0c1
IC
18985 // Attempt to get a script if it's a base58 address string
18986 if (typeof scriptPubKey === 'string') {
18987 scriptPubKey = baddress.toOutputScript(scriptPubKey, this.network)
8b095871 18988 }
8b095871 18989
9987f0c1
IC
18990 return this.tx.addOutput(scriptPubKey, value)
18991}
8b095871 18992
9987f0c1
IC
18993TransactionBuilder.prototype.build = function () {
18994 return this.__build(false)
18995}
18996TransactionBuilder.prototype.buildIncomplete = function () {
18997 return this.__build(true)
18998}
8b095871 18999
9987f0c1
IC
19000TransactionBuilder.prototype.__build = function (allowIncomplete) {
19001 if (!allowIncomplete) {
19002 if (!this.tx.ins.length) throw new Error('Transaction has no inputs')
19003 if (!this.tx.outs.length) throw new Error('Transaction has no outputs')
19004 }
8b095871 19005
9987f0c1
IC
19006 var tx = this.tx.clone()
19007 // Create script signatures from inputs
19008 this.inputs.forEach(function (input, i) {
19009 var scriptType = input.witnessScriptType || input.redeemScriptType || input.prevOutType
19010 if (!scriptType && !allowIncomplete) throw new Error('Transaction is not complete')
19011 var result = buildInput(input, allowIncomplete)
8b095871 19012
9987f0c1
IC
19013 // skip if no result
19014 if (!allowIncomplete) {
19015 if (SIGNABLE.indexOf(result.type) === -1 && result.type !== bscript.types.P2WPKH) {
19016 throw new Error(result.type + ' not supported')
19017 }
19018 }
8b095871 19019
9987f0c1
IC
19020 tx.setInputScript(i, result.script)
19021 tx.setWitness(i, result.witness)
19022 })
8b095871 19023
9987f0c1
IC
19024 if (!allowIncomplete) {
19025 // do not rely on this, its merely a last resort
19026 if (this.__overMaximumFees(tx.byteLength())) {
19027 throw new Error('Transaction has absurd fees')
19028 }
19029 }
8b095871 19030
9987f0c1 19031 return tx
8b095871
IC
19032}
19033
9987f0c1
IC
19034function canSign (input) {
19035 return input.prevOutScript !== undefined &&
19036 input.signScript !== undefined &&
19037 input.pubKeys !== undefined &&
19038 input.signatures !== undefined &&
19039 input.signatures.length === input.pubKeys.length &&
19040 input.pubKeys.length > 0 &&
19041 input.witness !== undefined
8b095871
IC
19042}
19043
9987f0c1
IC
19044TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashType, witnessValue, witnessScript) {
19045 if (keyPair.network !== this.network) throw new Error('Inconsistent network')
19046 if (!this.inputs[vin]) throw new Error('No input at index: ' + vin)
19047 hashType = hashType || Transaction.SIGHASH_ALL
8b095871 19048
9987f0c1 19049 var input = this.inputs[vin]
8b095871 19050
9987f0c1
IC
19051 // if redeemScript was previously provided, enforce consistency
19052 if (input.redeemScript !== undefined &&
19053 redeemScript &&
19054 !input.redeemScript.equals(redeemScript)) {
19055 throw new Error('Inconsistent redeemScript')
19056 }
8b095871 19057
9987f0c1
IC
19058 var kpPubKey = keyPair.getPublicKeyBuffer()
19059 if (!canSign(input)) {
19060 prepareInput(input, kpPubKey, redeemScript, witnessValue, witnessScript)
19061 if (!canSign(input)) throw Error(input.prevOutType + ' not supported')
19062 }
8b095871 19063
9987f0c1
IC
19064 // ready to sign
19065 var signatureHash
19066 if (input.witness) {
19067 signatureHash = this.tx.hashForWitnessV0(vin, input.signScript, witnessValue, hashType)
8b095871 19068 } else {
9987f0c1 19069 signatureHash = this.tx.hashForSignature(vin, input.signScript, hashType)
8b095871 19070 }
9987f0c1
IC
19071 // enforce in order signing of public keys
19072 var signed = input.pubKeys.some(function (pubKey, i) {
19073 if (!kpPubKey.equals(pubKey)) return false
19074 if (input.signatures[i]) throw new Error('Signature already exists')
8b095871 19075
9987f0c1
IC
19076 input.signatures[i] = keyPair.sign(signatureHash).toScriptSignature(hashType)
19077 return true
19078 })
8b095871 19079
9987f0c1 19080 if (!signed) throw new Error('Key pair cannot sign for this input')
8b095871
IC
19081}
19082
9987f0c1
IC
19083function signatureHashType (buffer) {
19084 return buffer.readUInt8(buffer.length - 1)
8b095871
IC
19085}
19086
9987f0c1
IC
19087TransactionBuilder.prototype.__canModifyInputs = function () {
19088 return this.inputs.every(function (input) {
19089 // any signatures?
19090 if (input.signatures === undefined) return true
8b095871 19091
9987f0c1
IC
19092 return input.signatures.every(function (signature) {
19093 if (!signature) return true
19094 var hashType = signatureHashType(signature)
8b095871 19095
9987f0c1
IC
19096 // if SIGHASH_ANYONECANPAY is set, signatures would not
19097 // be invalidated by more inputs
19098 return hashType & Transaction.SIGHASH_ANYONECANPAY
19099 })
19100 })
8b095871
IC
19101}
19102
9987f0c1
IC
19103TransactionBuilder.prototype.__canModifyOutputs = function () {
19104 var nInputs = this.tx.ins.length
19105 var nOutputs = this.tx.outs.length
8b095871 19106
9987f0c1
IC
19107 return this.inputs.every(function (input) {
19108 if (input.signatures === undefined) return true
8b095871 19109
9987f0c1
IC
19110 return input.signatures.every(function (signature) {
19111 if (!signature) return true
19112 var hashType = signatureHashType(signature)
8b095871 19113
9987f0c1
IC
19114 var hashTypeMod = hashType & 0x1f
19115 if (hashTypeMod === Transaction.SIGHASH_NONE) return true
19116 if (hashTypeMod === Transaction.SIGHASH_SINGLE) {
19117 // if SIGHASH_SINGLE is set, and nInputs > nOutputs
19118 // some signatures would be invalidated by the addition
19119 // of more outputs
19120 return nInputs <= nOutputs
19121 }
19122 })
19123 })
8b095871
IC
19124}
19125
9987f0c1
IC
19126TransactionBuilder.prototype.__overMaximumFees = function (bytes) {
19127 // not all inputs will have .value defined
19128 var incoming = this.inputs.reduce(function (a, x) { return a + (x.value >>> 0) }, 0)
8b095871 19129
9987f0c1
IC
19130 // but all outputs do, and if we have any input value
19131 // we can immediately determine if the outputs are too small
19132 var outgoing = this.tx.outs.reduce(function (a, x) { return a + x.value }, 0)
19133 var fee = incoming - outgoing
19134 var feeRate = fee / bytes
8b095871 19135
9987f0c1 19136 return feeRate > this.maximumFeeRate
8b095871
IC
19137}
19138
9987f0c1 19139module.exports = TransactionBuilder
8b095871 19140
9987f0c1
IC
19141},{"./address":42,"./crypto":45,"./ecpair":47,"./ecsignature":48,"./networks":51,"./script":52,"./transaction":76,"./types":78,"bitcoin-ops":40,"safe-buffer":98,"typeforce":109}],78:[function(require,module,exports){
19142var typeforce = require('typeforce')
8b095871 19143
9987f0c1
IC
19144var UINT31_MAX = Math.pow(2, 31) - 1
19145function UInt31 (value) {
19146 return typeforce.UInt32(value) && value <= UINT31_MAX
19147}
8b095871 19148
9987f0c1
IC
19149function BIP32Path (value) {
19150 return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/)
19151}
19152BIP32Path.toJSON = function () { return 'BIP32 derivation path' }
8b095871 19153
9987f0c1
IC
19154var SATOSHI_MAX = 21 * 1e14
19155function Satoshi (value) {
19156 return typeforce.UInt53(value) && value <= SATOSHI_MAX
19157}
8b095871 19158
9987f0c1
IC
19159// external dependent types
19160var BigInt = typeforce.quacksLike('BigInteger')
19161var ECPoint = typeforce.quacksLike('Point')
8b095871 19162
9987f0c1
IC
19163// exposed, external API
19164var ECSignature = typeforce.compile({ r: BigInt, s: BigInt })
19165var Network = typeforce.compile({
19166 messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String),
19167 bip32: {
19168 public: typeforce.UInt32,
19169 private: typeforce.UInt32
19170 },
19171 pubKeyHash: typeforce.UInt8,
19172 scriptHash: typeforce.UInt8,
19173 wif: typeforce.UInt8
19174})
8b095871 19175
9987f0c1
IC
19176// extend typeforce types with ours
19177var types = {
19178 BigInt: BigInt,
19179 BIP32Path: BIP32Path,
19180 Buffer256bit: typeforce.BufferN(32),
19181 ECPoint: ECPoint,
19182 ECSignature: ECSignature,
19183 Hash160bit: typeforce.BufferN(20),
19184 Hash256bit: typeforce.BufferN(32),
19185 Network: Network,
19186 Satoshi: Satoshi,
19187 UInt31: UInt31
19188}
8b095871 19189
9987f0c1
IC
19190for (var typeName in typeforce) {
19191 types[typeName] = typeforce[typeName]
19192}
8b095871 19193
9987f0c1 19194module.exports = types
8b095871 19195
9987f0c1
IC
19196},{"typeforce":109}],79:[function(require,module,exports){
19197var basex = require('base-x')
19198var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
8b095871 19199
9987f0c1 19200module.exports = basex(ALPHABET)
8b095871 19201
9987f0c1
IC
19202},{"base-x":34}],80:[function(require,module,exports){
19203(function (Buffer){
19204'use strict'
8b095871 19205
9987f0c1
IC
19206var base58 = require('bs58')
19207var createHash = require('create-hash')
8b095871 19208
9987f0c1
IC
19209// SHA256(SHA256(buffer))
19210function sha256x2 (buffer) {
19211 var tmp = createHash('sha256').update(buffer).digest()
19212 return createHash('sha256').update(tmp).digest()
19213}
8b095871 19214
9987f0c1
IC
19215// Encode a buffer as a base58-check encoded string
19216function encode (payload) {
19217 var checksum = sha256x2(payload)
8b095871 19218
9987f0c1
IC
19219 return base58.encode(Buffer.concat([
19220 payload,
19221 checksum
19222 ], payload.length + 4))
19223}
8b095871 19224
9987f0c1
IC
19225function decodeRaw (buffer) {
19226 var payload = buffer.slice(0, -4)
19227 var checksum = buffer.slice(-4)
19228 var newChecksum = sha256x2(payload)
8b095871 19229
9987f0c1
IC
19230 if (checksum[0] ^ newChecksum[0] |
19231 checksum[1] ^ newChecksum[1] |
19232 checksum[2] ^ newChecksum[2] |
19233 checksum[3] ^ newChecksum[3]) return
8b095871 19234
9987f0c1
IC
19235 return payload
19236}
8b095871 19237
9987f0c1
IC
19238// Decode a base58-check encoded string to a buffer, no result if checksum is wrong
19239function decodeUnsafe (string) {
19240 var buffer = base58.decodeUnsafe(string)
19241 if (!buffer) return
8b095871 19242
9987f0c1
IC
19243 return decodeRaw(buffer)
19244}
8b095871 19245
9987f0c1
IC
19246function decode (string) {
19247 var buffer = base58.decode(string)
19248 var payload = decodeRaw(buffer)
19249 if (!payload) throw new Error('Invalid checksum')
19250 return payload
19251}
8b095871 19252
9987f0c1
IC
19253module.exports = {
19254 encode: encode,
19255 decode: decode,
19256 decodeUnsafe: decodeUnsafe
19257}
8b095871 19258
9987f0c1
IC
19259}).call(this,require("buffer").Buffer)
19260},{"bs58":79,"buffer":4,"create-hash":82}],81:[function(require,module,exports){
19261var Buffer = require('safe-buffer').Buffer
19262var Transform = require('stream').Transform
19263var StringDecoder = require('string_decoder').StringDecoder
19264var inherits = require('inherits')
8b095871 19265
9987f0c1
IC
19266function CipherBase (hashMode) {
19267 Transform.call(this)
19268 this.hashMode = typeof hashMode === 'string'
19269 if (this.hashMode) {
19270 this[hashMode] = this._finalOrDigest
19271 } else {
19272 this.final = this._finalOrDigest
8b095871 19273 }
9987f0c1
IC
19274 if (this._final) {
19275 this.__final = this._final
19276 this._final = null
19277 }
19278 this._decoder = null
19279 this._encoding = null
8b095871 19280}
9987f0c1 19281inherits(CipherBase, Transform)
8b095871 19282
9987f0c1
IC
19283CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
19284 if (typeof data === 'string') {
19285 data = Buffer.from(data, inputEnc)
19286 }
8b095871 19287
9987f0c1
IC
19288 var outData = this._update(data)
19289 if (this.hashMode) return this
8b095871 19290
9987f0c1
IC
19291 if (outputEnc) {
19292 outData = this._toString(outData, outputEnc)
19293 }
8b095871 19294
9987f0c1
IC
19295 return outData
19296}
8b095871 19297
9987f0c1
IC
19298CipherBase.prototype.setAutoPadding = function () {}
19299CipherBase.prototype.getAuthTag = function () {
19300 throw new Error('trying to get auth tag in unsupported state')
19301}
8b095871 19302
9987f0c1
IC
19303CipherBase.prototype.setAuthTag = function () {
19304 throw new Error('trying to set auth tag in unsupported state')
19305}
8b095871 19306
9987f0c1
IC
19307CipherBase.prototype.setAAD = function () {
19308 throw new Error('trying to set aad in unsupported state')
19309}
8b095871 19310
9987f0c1
IC
19311CipherBase.prototype._transform = function (data, _, next) {
19312 var err
19313 try {
19314 if (this.hashMode) {
19315 this._update(data)
19316 } else {
19317 this.push(this._update(data))
19318 }
19319 } catch (e) {
19320 err = e
19321 } finally {
19322 next(err)
19323 }
19324}
19325CipherBase.prototype._flush = function (done) {
19326 var err
19327 try {
19328 this.push(this.__final())
19329 } catch (e) {
19330 err = e
8b095871
IC
19331 }
19332
9987f0c1
IC
19333 done(err)
19334}
19335CipherBase.prototype._finalOrDigest = function (outputEnc) {
19336 var outData = this.__final() || Buffer.alloc(0)
19337 if (outputEnc) {
19338 outData = this._toString(outData, outputEnc, true)
19339 }
19340 return outData
8b095871
IC
19341}
19342
9987f0c1
IC
19343CipherBase.prototype._toString = function (value, enc, fin) {
19344 if (!this._decoder) {
19345 this._decoder = new StringDecoder(enc)
19346 this._encoding = enc
19347 }
8b095871 19348
9987f0c1 19349 if (this._encoding !== enc) throw new Error('can\'t switch encodings')
8b095871 19350
9987f0c1
IC
19351 var out = this._decoder.write(value)
19352 if (fin) {
19353 out += this._decoder.end()
19354 }
8b095871 19355
9987f0c1
IC
19356 return out
19357}
8b095871 19358
9987f0c1 19359module.exports = CipherBase
8b095871 19360
9987f0c1
IC
19361},{"inherits":93,"safe-buffer":98,"stream":27,"string_decoder":28}],82:[function(require,module,exports){
19362(function (Buffer){
19363'use strict'
19364var inherits = require('inherits')
19365var md5 = require('./md5')
19366var RIPEMD160 = require('ripemd160')
19367var sha = require('sha.js')
8b095871 19368
9987f0c1
IC
19369var Base = require('cipher-base')
19370
19371function HashNoConstructor (hash) {
19372 Base.call(this, 'digest')
8b095871 19373
9987f0c1
IC
19374 this._hash = hash
19375 this.buffers = []
8b095871
IC
19376}
19377
9987f0c1 19378inherits(HashNoConstructor, Base)
8b095871 19379
9987f0c1
IC
19380HashNoConstructor.prototype._update = function (data) {
19381 this.buffers.push(data)
8b095871
IC
19382}
19383
9987f0c1
IC
19384HashNoConstructor.prototype._final = function () {
19385 var buf = Buffer.concat(this.buffers)
19386 var r = this._hash(buf)
19387 this.buffers = null
8b095871 19388
9987f0c1
IC
19389 return r
19390}
8b095871 19391
9987f0c1
IC
19392function Hash (hash) {
19393 Base.call(this, 'digest')
8b095871 19394
9987f0c1
IC
19395 this._hash = hash
19396}
8b095871 19397
9987f0c1 19398inherits(Hash, Base)
8b095871 19399
9987f0c1
IC
19400Hash.prototype._update = function (data) {
19401 this._hash.update(data)
19402}
8b095871 19403
9987f0c1
IC
19404Hash.prototype._final = function () {
19405 return this._hash.digest()
19406}
8b095871 19407
9987f0c1
IC
19408module.exports = function createHash (alg) {
19409 alg = alg.toLowerCase()
19410 if (alg === 'md5') return new HashNoConstructor(md5)
19411 if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
8b095871 19412
9987f0c1
IC
19413 return new Hash(sha(alg))
19414}
8b095871 19415
9987f0c1
IC
19416}).call(this,require("buffer").Buffer)
19417},{"./md5":84,"buffer":4,"cipher-base":81,"inherits":93,"ripemd160":97,"sha.js":100}],83:[function(require,module,exports){
19418(function (Buffer){
19419'use strict'
19420var intSize = 4
19421var zeroBuffer = new Buffer(intSize)
19422zeroBuffer.fill(0)
8b095871 19423
9987f0c1
IC
19424var charSize = 8
19425var hashSize = 16
8b095871 19426
9987f0c1
IC
19427function toArray (buf) {
19428 if ((buf.length % intSize) !== 0) {
19429 var len = buf.length + (intSize - (buf.length % intSize))
19430 buf = Buffer.concat([buf, zeroBuffer], len)
19431 }
8b095871 19432
9987f0c1
IC
19433 var arr = new Array(buf.length >>> 2)
19434 for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
19435 arr[j] = buf.readInt32LE(i)
8b095871
IC
19436 }
19437
9987f0c1 19438 return arr
8b095871
IC
19439}
19440
9987f0c1
IC
19441module.exports = function hash (buf, fn) {
19442 var arr = fn(toArray(buf), buf.length * charSize)
19443 buf = new Buffer(hashSize)
19444 for (var i = 0; i < arr.length; i++) {
19445 buf.writeInt32LE(arr[i], i << 2, true)
19446 }
19447 return buf
8b095871
IC
19448}
19449
19450}).call(this,require("buffer").Buffer)
9987f0c1
IC
19451},{"buffer":4}],84:[function(require,module,exports){
19452'use strict'
19453/*
19454 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
19455 * Digest Algorithm, as defined in RFC 1321.
19456 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
19457 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
19458 * Distributed under the BSD License
19459 * See http://pajhome.org.uk/crypt/md5 for more info.
19460 */
8b095871 19461
9987f0c1 19462var makeHash = require('./make-hash')
8b095871 19463
9987f0c1
IC
19464/*
19465 * Calculate the MD5 of an array of little-endian words, and a bit length
19466 */
19467function core_md5 (x, len) {
19468 /* append padding */
19469 x[len >> 5] |= 0x80 << ((len) % 32)
19470 x[(((len + 64) >>> 9) << 4) + 14] = len
19471
19472 var a = 1732584193
19473 var b = -271733879
19474 var c = -1732584194
19475 var d = 271733878
19476
19477 for (var i = 0; i < x.length; i += 16) {
19478 var olda = a
19479 var oldb = b
19480 var oldc = c
19481 var oldd = d
19482
19483 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)
19484 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)
19485 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)
19486 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)
19487 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)
19488 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)
19489 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)
19490 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)
19491 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)
19492 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)
19493 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)
19494 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)
19495 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)
19496 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)
19497 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)
19498 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)
19499
19500 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)
19501 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)
19502 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)
19503 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)
19504 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)
19505 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)
19506 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)
19507 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)
19508 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)
19509 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)
19510 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)
19511 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)
19512 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)
19513 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)
19514 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)
19515 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)
19516
19517 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)
19518 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)
19519 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)
19520 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)
19521 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)
19522 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)
19523 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)
19524 b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)
19525 a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)
19526 d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)
19527 c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)
19528 b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)
19529 a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)
19530 d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)
19531 c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)
19532 b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)
19533
19534 a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)
19535 d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)
19536 c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)
19537 b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)
19538 a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)
19539 d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)
19540 c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)
19541 b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)
19542 a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)
19543 d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)
19544 c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)
19545 b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)
19546 a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)
19547 d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)
19548 c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)
19549 b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)
19550
19551 a = safe_add(a, olda)
19552 b = safe_add(b, oldb)
19553 c = safe_add(c, oldc)
19554 d = safe_add(d, oldd)
19555 }
19556
19557 return [a, b, c, d]
19558}
8b095871 19559
9987f0c1
IC
19560/*
19561 * These functions implement the four basic operations the algorithm uses.
19562 */
19563function md5_cmn (q, a, b, x, s, t) {
19564 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
8b095871
IC
19565}
19566
9987f0c1
IC
19567function md5_ff (a, b, c, d, x, s, t) {
19568 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
19569}
8b095871 19570
9987f0c1
IC
19571function md5_gg (a, b, c, d, x, s, t) {
19572 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
19573}
8b095871 19574
9987f0c1
IC
19575function md5_hh (a, b, c, d, x, s, t) {
19576 return md5_cmn(b ^ c ^ d, a, b, x, s, t)
19577}
8b095871 19578
9987f0c1
IC
19579function md5_ii (a, b, c, d, x, s, t) {
19580 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
19581}
8b095871 19582
9987f0c1
IC
19583/*
19584 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
19585 * to work around bugs in some JS interpreters.
19586 */
19587function safe_add (x, y) {
19588 var lsw = (x & 0xFFFF) + (y & 0xFFFF)
19589 var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
19590 return (msw << 16) | (lsw & 0xFFFF)
19591}
8b095871 19592
9987f0c1
IC
19593/*
19594 * Bitwise rotate a 32-bit number to the left.
19595 */
19596function bit_rol (num, cnt) {
19597 return (num << cnt) | (num >>> (32 - cnt))
19598}
8b095871 19599
9987f0c1
IC
19600module.exports = function md5 (buf) {
19601 return makeHash(buf, core_md5)
8b095871
IC
19602}
19603
9987f0c1
IC
19604},{"./make-hash":83}],85:[function(require,module,exports){
19605'use strict'
19606var inherits = require('inherits')
19607var Legacy = require('./legacy')
19608var Base = require('cipher-base')
19609var Buffer = require('safe-buffer').Buffer
19610var md5 = require('create-hash/md5')
19611var RIPEMD160 = require('ripemd160')
8b095871 19612
9987f0c1 19613var sha = require('sha.js')
8b095871 19614
9987f0c1 19615var ZEROS = Buffer.alloc(128)
8b095871 19616
9987f0c1
IC
19617function Hmac (alg, key) {
19618 Base.call(this, 'digest')
19619 if (typeof key === 'string') {
19620 key = Buffer.from(key)
19621 }
8b095871 19622
9987f0c1 19623 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
8b095871 19624
9987f0c1
IC
19625 this._alg = alg
19626 this._key = key
19627 if (key.length > blocksize) {
19628 var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19629 key = hash.update(key).digest()
19630 } else if (key.length < blocksize) {
19631 key = Buffer.concat([key, ZEROS], blocksize)
19632 }
8b095871 19633
9987f0c1
IC
19634 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19635 var opad = this._opad = Buffer.allocUnsafe(blocksize)
8b095871 19636
9987f0c1
IC
19637 for (var i = 0; i < blocksize; i++) {
19638 ipad[i] = key[i] ^ 0x36
19639 opad[i] = key[i] ^ 0x5C
8b095871 19640 }
9987f0c1
IC
19641 this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
19642 this._hash.update(ipad)
19643}
8b095871 19644
9987f0c1
IC
19645inherits(Hmac, Base)
19646
19647Hmac.prototype._update = function (data) {
19648 this._hash.update(data)
8b095871
IC
19649}
19650
9987f0c1
IC
19651Hmac.prototype._final = function () {
19652 var h = this._hash.digest()
19653 var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
19654 return hash.update(this._opad).update(h).digest()
8b095871
IC
19655}
19656
9987f0c1
IC
19657module.exports = function createHmac (alg, key) {
19658 alg = alg.toLowerCase()
19659 if (alg === 'rmd160' || alg === 'ripemd160') {
19660 return new Hmac('rmd160', key)
19661 }
19662 if (alg === 'md5') {
19663 return new Legacy(md5, key)
19664 }
19665 return new Hmac(alg, key)
19666}
8b095871 19667
9987f0c1
IC
19668},{"./legacy":86,"cipher-base":81,"create-hash/md5":84,"inherits":93,"ripemd160":97,"safe-buffer":98,"sha.js":100}],86:[function(require,module,exports){
19669'use strict'
19670var inherits = require('inherits')
19671var Buffer = require('safe-buffer').Buffer
8b095871 19672
9987f0c1 19673var Base = require('cipher-base')
8b095871 19674
9987f0c1
IC
19675var ZEROS = Buffer.alloc(128)
19676var blocksize = 64
8b095871 19677
9987f0c1
IC
19678function Hmac (alg, key) {
19679 Base.call(this, 'digest')
19680 if (typeof key === 'string') {
19681 key = Buffer.from(key)
8b095871
IC
19682 }
19683
9987f0c1
IC
19684 this._alg = alg
19685 this._key = key
8b095871 19686
9987f0c1
IC
19687 if (key.length > blocksize) {
19688 key = alg(key)
19689 } else if (key.length < blocksize) {
19690 key = Buffer.concat([key, ZEROS], blocksize)
19691 }
8b095871 19692
9987f0c1
IC
19693 var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
19694 var opad = this._opad = Buffer.allocUnsafe(blocksize)
8b095871 19695
9987f0c1
IC
19696 for (var i = 0; i < blocksize; i++) {
19697 ipad[i] = key[i] ^ 0x36
19698 opad[i] = key[i] ^ 0x5C
19699 }
8b095871 19700
9987f0c1 19701 this._hash = [ipad]
8b095871
IC
19702}
19703
9987f0c1 19704inherits(Hmac, Base)
8b095871 19705
9987f0c1
IC
19706Hmac.prototype._update = function (data) {
19707 this._hash.push(data)
8b095871
IC
19708}
19709
9987f0c1
IC
19710Hmac.prototype._final = function () {
19711 var h = this._alg(Buffer.concat(this._hash))
19712 return this._alg(Buffer.concat([this._opad, h]))
8b095871 19713}
9987f0c1 19714module.exports = Hmac
8b095871 19715
9987f0c1 19716},{"cipher-base":81,"inherits":93,"safe-buffer":98}],87:[function(require,module,exports){
8b095871 19717var assert = require('assert')
8b095871
IC
19718var BigInteger = require('bigi')
19719
9987f0c1 19720var Point = require('./point')
8b095871 19721
9987f0c1
IC
19722function Curve (p, a, b, Gx, Gy, n, h) {
19723 this.p = p
19724 this.a = a
19725 this.b = b
19726 this.G = Point.fromAffine(this, Gx, Gy)
19727 this.n = n
19728 this.h = h
8b095871 19729
9987f0c1 19730 this.infinity = new Point(this, null, null, BigInteger.ZERO)
8b095871 19731
9987f0c1
IC
19732 // result caching
19733 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
8b095871 19734
9987f0c1
IC
19735 // determine size of p in bytes
19736 this.pLength = Math.floor((this.p.bitLength() + 7) / 8)
19737}
8b095871 19738
9987f0c1
IC
19739Curve.prototype.pointFromX = function (isOdd, x) {
19740 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
19741 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
8b095871 19742
9987f0c1
IC
19743 var y = beta
19744 if (beta.isEven() ^ !isOdd) {
19745 y = this.p.subtract(y) // -y % p
8b095871 19746 }
9987f0c1
IC
19747
19748 return Point.fromAffine(this, x, y)
8b095871
IC
19749}
19750
9987f0c1
IC
19751Curve.prototype.isInfinity = function (Q) {
19752 if (Q === this.infinity) return true
8b095871 19753
9987f0c1
IC
19754 return Q.z.signum() === 0 && Q.y.signum() !== 0
19755}
8b095871 19756
9987f0c1
IC
19757Curve.prototype.isOnCurve = function (Q) {
19758 if (this.isInfinity(Q)) return true
8b095871 19759
9987f0c1
IC
19760 var x = Q.affineX
19761 var y = Q.affineY
19762 var a = this.a
19763 var b = this.b
19764 var p = this.p
8b095871 19765
9987f0c1
IC
19766 // Check that xQ and yQ are integers in the interval [0, p - 1]
19767 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
19768 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
8b095871 19769
9987f0c1
IC
19770 // and check that y^2 = x^3 + ax + b (mod p)
19771 var lhs = y.square().mod(p)
19772 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
19773 return lhs.equals(rhs)
19774}
8b095871 19775
9987f0c1
IC
19776/**
19777 * Validate an elliptic curve point.
19778 *
19779 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
19780 */
19781Curve.prototype.validate = function (Q) {
19782 // Check Q != O
19783 assert(!this.isInfinity(Q), 'Point is at infinity')
19784 assert(this.isOnCurve(Q), 'Point is not on the curve')
19785
19786 // Check nQ = O (where Q is a scalar multiple of G)
19787 var nQ = Q.multiply(this.n)
19788 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
8b095871 19789
9987f0c1
IC
19790 return true
19791}
8b095871 19792
9987f0c1 19793module.exports = Curve
8b095871 19794
9987f0c1
IC
19795},{"./point":91,"assert":1,"bigi":37}],88:[function(require,module,exports){
19796module.exports={
19797 "secp128r1": {
19798 "p": "fffffffdffffffffffffffffffffffff",
19799 "a": "fffffffdfffffffffffffffffffffffc",
19800 "b": "e87579c11079f43dd824993c2cee5ed3",
19801 "n": "fffffffe0000000075a30d1b9038a115",
19802 "h": "01",
19803 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
19804 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
19805 },
19806 "secp160k1": {
19807 "p": "fffffffffffffffffffffffffffffffeffffac73",
19808 "a": "00",
19809 "b": "07",
19810 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
19811 "h": "01",
19812 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
19813 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
19814 },
19815 "secp160r1": {
19816 "p": "ffffffffffffffffffffffffffffffff7fffffff",
19817 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
19818 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
19819 "n": "0100000000000000000001f4c8f927aed3ca752257",
19820 "h": "01",
19821 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
19822 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
19823 },
19824 "secp192k1": {
19825 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
19826 "a": "00",
19827 "b": "03",
19828 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
19829 "h": "01",
19830 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
19831 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
19832 },
19833 "secp192r1": {
19834 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
19835 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
19836 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
19837 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
19838 "h": "01",
19839 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
19840 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
19841 },
19842 "secp256k1": {
19843 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
19844 "a": "00",
19845 "b": "07",
19846 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
19847 "h": "01",
19848 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
19849 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
19850 },
19851 "secp256r1": {
19852 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
19853 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
19854 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
19855 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
19856 "h": "01",
19857 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
19858 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
19859 }
8b095871
IC
19860}
19861
9987f0c1
IC
19862},{}],89:[function(require,module,exports){
19863var Point = require('./point')
19864var Curve = require('./curve')
8b095871 19865
9987f0c1 19866var getCurveByName = require('./names')
8b095871 19867
9987f0c1
IC
19868module.exports = {
19869 Curve: Curve,
19870 Point: Point,
19871 getCurveByName: getCurveByName
8b095871
IC
19872}
19873
9987f0c1
IC
19874},{"./curve":87,"./names":90,"./point":91}],90:[function(require,module,exports){
19875var BigInteger = require('bigi')
8b095871 19876
9987f0c1
IC
19877var curves = require('./curves.json')
19878var Curve = require('./curve')
8b095871 19879
9987f0c1
IC
19880function getCurveByName (name) {
19881 var curve = curves[name]
19882 if (!curve) return null
8b095871 19883
9987f0c1
IC
19884 var p = new BigInteger(curve.p, 16)
19885 var a = new BigInteger(curve.a, 16)
19886 var b = new BigInteger(curve.b, 16)
19887 var n = new BigInteger(curve.n, 16)
19888 var h = new BigInteger(curve.h, 16)
19889 var Gx = new BigInteger(curve.Gx, 16)
19890 var Gy = new BigInteger(curve.Gy, 16)
8b095871 19891
9987f0c1 19892 return new Curve(p, a, b, Gx, Gy, n, h)
8b095871
IC
19893}
19894
9987f0c1 19895module.exports = getCurveByName
8b095871 19896
9987f0c1
IC
19897},{"./curve":87,"./curves.json":88,"bigi":37}],91:[function(require,module,exports){
19898(function (Buffer){
19899var assert = require('assert')
19900var BigInteger = require('bigi')
8b095871 19901
9987f0c1 19902var THREE = BigInteger.valueOf(3)
8b095871 19903
9987f0c1
IC
19904function Point (curve, x, y, z) {
19905 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
8b095871 19906
9987f0c1
IC
19907 this.curve = curve
19908 this.x = x
19909 this.y = y
19910 this.z = z
19911 this._zInv = null
8b095871 19912
9987f0c1 19913 this.compressed = true
8b095871
IC
19914}
19915
9987f0c1
IC
19916Object.defineProperty(Point.prototype, 'zInv', {
19917 get: function () {
19918 if (this._zInv === null) {
19919 this._zInv = this.z.modInverse(this.curve.p)
19920 }
8b095871 19921
9987f0c1
IC
19922 return this._zInv
19923 }
19924})
8b095871 19925
9987f0c1
IC
19926Object.defineProperty(Point.prototype, 'affineX', {
19927 get: function () {
19928 return this.x.multiply(this.zInv).mod(this.curve.p)
19929 }
19930})
19931
19932Object.defineProperty(Point.prototype, 'affineY', {
19933 get: function () {
19934 return this.y.multiply(this.zInv).mod(this.curve.p)
19935 }
19936})
19937
19938Point.fromAffine = function (curve, x, y) {
19939 return new Point(curve, x, y, BigInteger.ONE)
8b095871
IC
19940}
19941
9987f0c1
IC
19942Point.prototype.equals = function (other) {
19943 if (other === this) return true
19944 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
19945 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
8b095871 19946
9987f0c1
IC
19947 // u = Y2 * Z1 - Y1 * Z2
19948 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
8b095871 19949
9987f0c1 19950 if (u.signum() !== 0) return false
8b095871 19951
9987f0c1
IC
19952 // v = X2 * Z1 - X1 * Z2
19953 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
8b095871 19954
9987f0c1
IC
19955 return v.signum() === 0
19956}
8b095871 19957
9987f0c1
IC
19958Point.prototype.negate = function () {
19959 var y = this.curve.p.subtract(this.y)
8b095871 19960
9987f0c1 19961 return new Point(this.curve, this.x, y, this.z)
8b095871
IC
19962}
19963
9987f0c1
IC
19964Point.prototype.add = function (b) {
19965 if (this.curve.isInfinity(this)) return b
19966 if (this.curve.isInfinity(b)) return this
19967
19968 var x1 = this.x
19969 var y1 = this.y
19970 var x2 = b.x
19971 var y2 = b.y
8b095871 19972
9987f0c1
IC
19973 // u = Y2 * Z1 - Y1 * Z2
19974 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
19975 // v = X2 * Z1 - X1 * Z2
19976 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
8b095871 19977
9987f0c1
IC
19978 if (v.signum() === 0) {
19979 if (u.signum() === 0) {
19980 return this.twice() // this == b, so double
19981 }
8b095871 19982
9987f0c1 19983 return this.curve.infinity // this = -b, so infinity
8b095871 19984 }
9987f0c1
IC
19985
19986 var v2 = v.square()
19987 var v3 = v2.multiply(v)
19988 var x1v2 = x1.multiply(v2)
19989 var zu2 = u.square().multiply(this.z)
19990
19991 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
19992 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
19993 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
19994 var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)
19995 // z3 = v^3 * z1 * z2
19996 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
19997
19998 return new Point(this.curve, x3, y3, z3)
8b095871
IC
19999}
20000
9987f0c1
IC
20001Point.prototype.twice = function () {
20002 if (this.curve.isInfinity(this)) return this
20003 if (this.y.signum() === 0) return this.curve.infinity
8b095871 20004
9987f0c1
IC
20005 var x1 = this.x
20006 var y1 = this.y
8b095871 20007
9987f0c1
IC
20008 var y1z1 = y1.multiply(this.z).mod(this.curve.p)
20009 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
20010 var a = this.curve.a
8b095871 20011
9987f0c1
IC
20012 // w = 3 * x1^2 + a * z1^2
20013 var w = x1.square().multiply(THREE)
8b095871 20014
9987f0c1
IC
20015 if (a.signum() !== 0) {
20016 w = w.add(this.z.square().multiply(a))
20017 }
8b095871 20018
9987f0c1
IC
20019 w = w.mod(this.curve.p)
20020 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
20021 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
20022 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
20023 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
20024 // z3 = 8 * (y1 * z1)^3
20025 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
8b095871 20026
9987f0c1 20027 return new Point(this.curve, x3, y3, z3)
8b095871
IC
20028}
20029
9987f0c1
IC
20030// Simple NAF (Non-Adjacent Form) multiplication algorithm
20031// TODO: modularize the multiplication algorithm
20032Point.prototype.multiply = function (k) {
20033 if (this.curve.isInfinity(this)) return this
20034 if (k.signum() === 0) return this.curve.infinity
8b095871 20035
9987f0c1
IC
20036 var e = k
20037 var h = e.multiply(THREE)
8b095871 20038
9987f0c1
IC
20039 var neg = this.negate()
20040 var R = this
8b095871 20041
9987f0c1
IC
20042 for (var i = h.bitLength() - 2; i > 0; --i) {
20043 var hBit = h.testBit(i)
20044 var eBit = e.testBit(i)
8b095871 20045
9987f0c1 20046 R = R.twice()
8b095871 20047
9987f0c1
IC
20048 if (hBit !== eBit) {
20049 R = R.add(hBit ? this : neg)
20050 }
8b095871
IC
20051 }
20052
9987f0c1
IC
20053 return R
20054}
8b095871 20055
9987f0c1
IC
20056// Compute this*j + x*k (simultaneous multiplication)
20057Point.prototype.multiplyTwo = function (j, x, k) {
20058 var i = Math.max(j.bitLength(), k.bitLength()) - 1
20059 var R = this.curve.infinity
20060 var both = this.add(x)
20061
20062 while (i >= 0) {
20063 var jBit = j.testBit(i)
20064 var kBit = k.testBit(i)
20065
20066 R = R.twice()
20067
20068 if (jBit) {
20069 if (kBit) {
20070 R = R.add(both)
20071 } else {
20072 R = R.add(this)
20073 }
20074 } else if (kBit) {
20075 R = R.add(x)
20076 }
20077 --i
8b095871
IC
20078 }
20079
9987f0c1
IC
20080 return R
20081}
8b095871 20082
9987f0c1
IC
20083Point.prototype.getEncoded = function (compressed) {
20084 if (compressed == null) compressed = this.compressed
20085 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
8b095871 20086
9987f0c1
IC
20087 var x = this.affineX
20088 var y = this.affineY
20089 var byteLength = this.curve.pLength
20090 var buffer
20091
20092 // 0x02/0x03 | X
20093 if (compressed) {
20094 buffer = new Buffer(1 + byteLength)
20095 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
8b095871 20096
9987f0c1 20097 // 0x04 | X | Y
8b095871 20098 } else {
9987f0c1
IC
20099 buffer = new Buffer(1 + byteLength + byteLength)
20100 buffer.writeUInt8(0x04, 0)
8b095871 20101
9987f0c1 20102 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
8b095871
IC
20103 }
20104
9987f0c1 20105 x.toBuffer(byteLength).copy(buffer, 1)
8b095871 20106
9987f0c1 20107 return buffer
8b095871
IC
20108}
20109
9987f0c1
IC
20110Point.decodeFrom = function (curve, buffer) {
20111 var type = buffer.readUInt8(0)
20112 var compressed = (type !== 4)
8b095871 20113
9987f0c1
IC
20114 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
20115 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
8b095871 20116
9987f0c1
IC
20117 var Q
20118 if (compressed) {
20119 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
20120 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
8b095871 20121
9987f0c1
IC
20122 var isOdd = (type === 0x03)
20123 Q = curve.pointFromX(isOdd, x)
20124 } else {
20125 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
8b095871 20126
9987f0c1
IC
20127 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
20128 Q = Point.fromAffine(curve, x, y)
20129 }
8b095871 20130
9987f0c1
IC
20131 Q.compressed = compressed
20132 return Q
8b095871
IC
20133}
20134
9987f0c1
IC
20135Point.prototype.toString = function () {
20136 if (this.curve.isInfinity(this)) return '(INFINITY)'
8b095871 20137
9987f0c1
IC
20138 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
20139}
8b095871 20140
9987f0c1 20141module.exports = Point
8b095871 20142
9987f0c1
IC
20143}).call(this,require("buffer").Buffer)
20144},{"assert":1,"bigi":37,"buffer":4}],92:[function(require,module,exports){
20145(function (Buffer){
20146'use strict'
20147var Transform = require('stream').Transform
20148var inherits = require('inherits')
8b095871 20149
9987f0c1
IC
20150function HashBase (blockSize) {
20151 Transform.call(this)
8b095871 20152
9987f0c1
IC
20153 this._block = new Buffer(blockSize)
20154 this._blockSize = blockSize
20155 this._blockOffset = 0
20156 this._length = [0, 0, 0, 0]
8b095871 20157
9987f0c1
IC
20158 this._finalized = false
20159}
8b095871 20160
9987f0c1 20161inherits(HashBase, Transform)
8b095871 20162
9987f0c1
IC
20163HashBase.prototype._transform = function (chunk, encoding, callback) {
20164 var error = null
20165 try {
20166 if (encoding !== 'buffer') chunk = new Buffer(chunk, encoding)
20167 this.update(chunk)
20168 } catch (err) {
20169 error = err
20170 }
8b095871 20171
9987f0c1
IC
20172 callback(error)
20173}
8b095871 20174
9987f0c1
IC
20175HashBase.prototype._flush = function (callback) {
20176 var error = null
20177 try {
20178 this.push(this._digest())
20179 } catch (err) {
20180 error = err
8b095871
IC
20181 }
20182
9987f0c1 20183 callback(error)
8b095871
IC
20184}
20185
9987f0c1
IC
20186HashBase.prototype.update = function (data, encoding) {
20187 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
20188 if (this._finalized) throw new Error('Digest already called')
20189 if (!Buffer.isBuffer(data)) data = new Buffer(data, encoding || 'binary')
8b095871 20190
9987f0c1
IC
20191 // consume data
20192 var block = this._block
20193 var offset = 0
20194 while (this._blockOffset + data.length - offset >= this._blockSize) {
20195 for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
20196 this._update()
20197 this._blockOffset = 0
20198 }
20199 while (offset < data.length) block[this._blockOffset++] = data[offset++]
8b095871 20200
9987f0c1
IC
20201 // update length
20202 for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
20203 this._length[j] += carry
20204 carry = (this._length[j] / 0x0100000000) | 0
20205 if (carry > 0) this._length[j] -= 0x0100000000 * carry
20206 }
8b095871 20207
9987f0c1
IC
20208 return this
20209}
8b095871 20210
9987f0c1
IC
20211HashBase.prototype._update = function (data) {
20212 throw new Error('_update is not implemented')
20213}
8b095871 20214
9987f0c1
IC
20215HashBase.prototype.digest = function (encoding) {
20216 if (this._finalized) throw new Error('Digest already called')
20217 this._finalized = true
8b095871 20218
9987f0c1
IC
20219 var digest = this._digest()
20220 if (encoding !== undefined) digest = digest.toString(encoding)
20221 return digest
20222}
8b095871 20223
9987f0c1
IC
20224HashBase.prototype._digest = function () {
20225 throw new Error('_digest is not implemented')
20226}
8b095871 20227
9987f0c1 20228module.exports = HashBase
8b095871 20229
9987f0c1
IC
20230}).call(this,require("buffer").Buffer)
20231},{"buffer":4,"inherits":93,"stream":27}],93:[function(require,module,exports){
20232arguments[4][8][0].apply(exports,arguments)
20233},{"dup":8}],94:[function(require,module,exports){
20234(function (Buffer){
20235// constant-space merkle root calculation algorithm
20236module.exports = function fastRoot (values, digestFn) {
20237 if (!Array.isArray(values)) throw TypeError('Expected values Array')
20238 if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
8b095871 20239
9987f0c1
IC
20240 var length = values.length
20241 var results = values.concat()
8b095871 20242
9987f0c1
IC
20243 while (length > 1) {
20244 var j = 0
8b095871 20245
9987f0c1
IC
20246 for (var i = 0; i < length; i += 2, ++j) {
20247 var left = results[i]
20248 var right = i + 1 === length ? left : results[i + 1]
20249 var data = Buffer.concat([left, right])
8b095871 20250
9987f0c1 20251 results[j] = digestFn(data)
8b095871
IC
20252 }
20253
9987f0c1 20254 length = j
8b095871
IC
20255 }
20256
9987f0c1 20257 return results[0]
8b095871
IC
20258}
20259
8b095871 20260}).call(this,require("buffer").Buffer)
9987f0c1
IC
20261},{"buffer":4}],95:[function(require,module,exports){
20262var OPS = require('bitcoin-ops')
20263
20264function encodingLength (i) {
20265 return i < OPS.OP_PUSHDATA1 ? 1
20266 : i <= 0xff ? 2
20267 : i <= 0xffff ? 3
20268 : 5
8b095871
IC
20269}
20270
9987f0c1
IC
20271function encode (buffer, number, offset) {
20272 var size = encodingLength(number)
8b095871 20273
9987f0c1
IC
20274 // ~6 bit
20275 if (size === 1) {
20276 buffer.writeUInt8(number, offset)
8b095871 20277
9987f0c1
IC
20278 // 8 bit
20279 } else if (size === 2) {
20280 buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
20281 buffer.writeUInt8(number, offset + 1)
20282
20283 // 16 bit
20284 } else if (size === 3) {
20285 buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
20286 buffer.writeUInt16LE(number, offset + 1)
8b095871 20287
9987f0c1
IC
20288 // 32 bit
20289 } else {
20290 buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
20291 buffer.writeUInt32LE(number, offset + 1)
20292 }
8b095871 20293
9987f0c1 20294 return size
8b095871
IC
20295}
20296
9987f0c1
IC
20297function decode (buffer, offset) {
20298 var opcode = buffer.readUInt8(offset)
20299 var number, size
8b095871 20300
9987f0c1
IC
20301 // ~6 bit
20302 if (opcode < OPS.OP_PUSHDATA1) {
20303 number = opcode
20304 size = 1
8b095871 20305
9987f0c1
IC
20306 // 8 bit
20307 } else if (opcode === OPS.OP_PUSHDATA1) {
20308 if (offset + 2 > buffer.length) return null
20309 number = buffer.readUInt8(offset + 1)
20310 size = 2
8b095871 20311
9987f0c1
IC
20312 // 16 bit
20313 } else if (opcode === OPS.OP_PUSHDATA2) {
20314 if (offset + 3 > buffer.length) return null
20315 number = buffer.readUInt16LE(offset + 1)
20316 size = 3
8b095871 20317
9987f0c1
IC
20318 // 32 bit
20319 } else {
20320 if (offset + 5 > buffer.length) return null
20321 if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
8b095871 20322
9987f0c1
IC
20323 number = buffer.readUInt32LE(offset + 1)
20324 size = 5
20325 }
8b095871 20326
9987f0c1
IC
20327 return {
20328 opcode: opcode,
20329 number: number,
20330 size: size
20331 }
8b095871
IC
20332}
20333
20334module.exports = {
9987f0c1
IC
20335 encodingLength: encodingLength,
20336 encode: encode,
20337 decode: decode
8b095871
IC
20338}
20339
9987f0c1
IC
20340},{"bitcoin-ops":40}],96:[function(require,module,exports){
20341(function (process,global){
20342'use strict'
8b095871 20343
9987f0c1
IC
20344function oldBrowser () {
20345 throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
8b095871
IC
20346}
20347
9987f0c1
IC
20348var Buffer = require('safe-buffer').Buffer
20349var crypto = global.crypto || global.msCrypto
8b095871 20350
9987f0c1
IC
20351if (crypto && crypto.getRandomValues) {
20352 module.exports = randomBytes
20353} else {
20354 module.exports = oldBrowser
20355}
8b095871 20356
9987f0c1
IC
20357function randomBytes (size, cb) {
20358 // phantomjs needs to throw
20359 if (size > 65536) throw new Error('requested too many random bytes')
20360 // in case browserify isn't using the Uint8Array version
20361 var rawBytes = new global.Uint8Array(size)
8b095871 20362
9987f0c1
IC
20363 // This will not work in older browsers.
20364 // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
20365 if (size > 0) { // getRandomValues fails on IE if size == 0
20366 crypto.getRandomValues(rawBytes)
8b095871 20367 }
8b095871 20368
9987f0c1
IC
20369 // XXX: phantomjs doesn't like a buffer being passed here
20370 var bytes = Buffer.from(rawBytes.buffer)
8b095871 20371
9987f0c1
IC
20372 if (typeof cb === 'function') {
20373 return process.nextTick(function () {
20374 cb(null, bytes)
20375 })
20376 }
8b095871 20377
9987f0c1 20378 return bytes
8b095871
IC
20379}
20380
9987f0c1
IC
20381}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20382},{"_process":12,"safe-buffer":98}],97:[function(require,module,exports){
20383(function (Buffer){
20384'use strict'
20385var inherits = require('inherits')
20386var HashBase = require('hash-base')
8b095871 20387
9987f0c1
IC
20388function RIPEMD160 () {
20389 HashBase.call(this, 64)
8b095871 20390
9987f0c1
IC
20391 // state
20392 this._a = 0x67452301
20393 this._b = 0xefcdab89
20394 this._c = 0x98badcfe
20395 this._d = 0x10325476
20396 this._e = 0xc3d2e1f0
8b095871
IC
20397}
20398
9987f0c1
IC
20399inherits(RIPEMD160, HashBase)
20400
20401RIPEMD160.prototype._update = function () {
20402 var m = new Array(16)
20403 for (var i = 0; i < 16; ++i) m[i] = this._block.readInt32LE(i * 4)
20404
20405 var al = this._a
20406 var bl = this._b
20407 var cl = this._c
20408 var dl = this._d
20409 var el = this._e
20410
20411 // Mj = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
20412 // K = 0x00000000
20413 // Sj = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
20414 al = fn1(al, bl, cl, dl, el, m[0], 0x00000000, 11); cl = rotl(cl, 10)
20415 el = fn1(el, al, bl, cl, dl, m[1], 0x00000000, 14); bl = rotl(bl, 10)
20416 dl = fn1(dl, el, al, bl, cl, m[2], 0x00000000, 15); al = rotl(al, 10)
20417 cl = fn1(cl, dl, el, al, bl, m[3], 0x00000000, 12); el = rotl(el, 10)
20418 bl = fn1(bl, cl, dl, el, al, m[4], 0x00000000, 5); dl = rotl(dl, 10)
20419 al = fn1(al, bl, cl, dl, el, m[5], 0x00000000, 8); cl = rotl(cl, 10)
20420 el = fn1(el, al, bl, cl, dl, m[6], 0x00000000, 7); bl = rotl(bl, 10)
20421 dl = fn1(dl, el, al, bl, cl, m[7], 0x00000000, 9); al = rotl(al, 10)
20422 cl = fn1(cl, dl, el, al, bl, m[8], 0x00000000, 11); el = rotl(el, 10)
20423 bl = fn1(bl, cl, dl, el, al, m[9], 0x00000000, 13); dl = rotl(dl, 10)
20424 al = fn1(al, bl, cl, dl, el, m[10], 0x00000000, 14); cl = rotl(cl, 10)
20425 el = fn1(el, al, bl, cl, dl, m[11], 0x00000000, 15); bl = rotl(bl, 10)
20426 dl = fn1(dl, el, al, bl, cl, m[12], 0x00000000, 6); al = rotl(al, 10)
20427 cl = fn1(cl, dl, el, al, bl, m[13], 0x00000000, 7); el = rotl(el, 10)
20428 bl = fn1(bl, cl, dl, el, al, m[14], 0x00000000, 9); dl = rotl(dl, 10)
20429 al = fn1(al, bl, cl, dl, el, m[15], 0x00000000, 8); cl = rotl(cl, 10)
20430
20431 // Mj = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
20432 // K = 0x5a827999
20433 // Sj = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
20434 el = fn2(el, al, bl, cl, dl, m[7], 0x5a827999, 7); bl = rotl(bl, 10)
20435 dl = fn2(dl, el, al, bl, cl, m[4], 0x5a827999, 6); al = rotl(al, 10)
20436 cl = fn2(cl, dl, el, al, bl, m[13], 0x5a827999, 8); el = rotl(el, 10)
20437 bl = fn2(bl, cl, dl, el, al, m[1], 0x5a827999, 13); dl = rotl(dl, 10)
20438 al = fn2(al, bl, cl, dl, el, m[10], 0x5a827999, 11); cl = rotl(cl, 10)
20439 el = fn2(el, al, bl, cl, dl, m[6], 0x5a827999, 9); bl = rotl(bl, 10)
20440 dl = fn2(dl, el, al, bl, cl, m[15], 0x5a827999, 7); al = rotl(al, 10)
20441 cl = fn2(cl, dl, el, al, bl, m[3], 0x5a827999, 15); el = rotl(el, 10)
20442 bl = fn2(bl, cl, dl, el, al, m[12], 0x5a827999, 7); dl = rotl(dl, 10)
20443 al = fn2(al, bl, cl, dl, el, m[0], 0x5a827999, 12); cl = rotl(cl, 10)
20444 el = fn2(el, al, bl, cl, dl, m[9], 0x5a827999, 15); bl = rotl(bl, 10)
20445 dl = fn2(dl, el, al, bl, cl, m[5], 0x5a827999, 9); al = rotl(al, 10)
20446 cl = fn2(cl, dl, el, al, bl, m[2], 0x5a827999, 11); el = rotl(el, 10)
20447 bl = fn2(bl, cl, dl, el, al, m[14], 0x5a827999, 7); dl = rotl(dl, 10)
20448 al = fn2(al, bl, cl, dl, el, m[11], 0x5a827999, 13); cl = rotl(cl, 10)
20449 el = fn2(el, al, bl, cl, dl, m[8], 0x5a827999, 12); bl = rotl(bl, 10)
20450
20451 // Mj = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
20452 // K = 0x6ed9eba1
20453 // Sj = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
20454 dl = fn3(dl, el, al, bl, cl, m[3], 0x6ed9eba1, 11); al = rotl(al, 10)
20455 cl = fn3(cl, dl, el, al, bl, m[10], 0x6ed9eba1, 13); el = rotl(el, 10)
20456 bl = fn3(bl, cl, dl, el, al, m[14], 0x6ed9eba1, 6); dl = rotl(dl, 10)
20457 al = fn3(al, bl, cl, dl, el, m[4], 0x6ed9eba1, 7); cl = rotl(cl, 10)
20458 el = fn3(el, al, bl, cl, dl, m[9], 0x6ed9eba1, 14); bl = rotl(bl, 10)
20459 dl = fn3(dl, el, al, bl, cl, m[15], 0x6ed9eba1, 9); al = rotl(al, 10)
20460 cl = fn3(cl, dl, el, al, bl, m[8], 0x6ed9eba1, 13); el = rotl(el, 10)
20461 bl = fn3(bl, cl, dl, el, al, m[1], 0x6ed9eba1, 15); dl = rotl(dl, 10)
20462 al = fn3(al, bl, cl, dl, el, m[2], 0x6ed9eba1, 14); cl = rotl(cl, 10)
20463 el = fn3(el, al, bl, cl, dl, m[7], 0x6ed9eba1, 8); bl = rotl(bl, 10)
20464 dl = fn3(dl, el, al, bl, cl, m[0], 0x6ed9eba1, 13); al = rotl(al, 10)
20465 cl = fn3(cl, dl, el, al, bl, m[6], 0x6ed9eba1, 6); el = rotl(el, 10)
20466 bl = fn3(bl, cl, dl, el, al, m[13], 0x6ed9eba1, 5); dl = rotl(dl, 10)
20467 al = fn3(al, bl, cl, dl, el, m[11], 0x6ed9eba1, 12); cl = rotl(cl, 10)
20468 el = fn3(el, al, bl, cl, dl, m[5], 0x6ed9eba1, 7); bl = rotl(bl, 10)
20469 dl = fn3(dl, el, al, bl, cl, m[12], 0x6ed9eba1, 5); al = rotl(al, 10)
20470
20471 // Mj = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
20472 // K = 0x8f1bbcdc
20473 // Sj = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
20474 cl = fn4(cl, dl, el, al, bl, m[1], 0x8f1bbcdc, 11); el = rotl(el, 10)
20475 bl = fn4(bl, cl, dl, el, al, m[9], 0x8f1bbcdc, 12); dl = rotl(dl, 10)
20476 al = fn4(al, bl, cl, dl, el, m[11], 0x8f1bbcdc, 14); cl = rotl(cl, 10)
20477 el = fn4(el, al, bl, cl, dl, m[10], 0x8f1bbcdc, 15); bl = rotl(bl, 10)
20478 dl = fn4(dl, el, al, bl, cl, m[0], 0x8f1bbcdc, 14); al = rotl(al, 10)
20479 cl = fn4(cl, dl, el, al, bl, m[8], 0x8f1bbcdc, 15); el = rotl(el, 10)
20480 bl = fn4(bl, cl, dl, el, al, m[12], 0x8f1bbcdc, 9); dl = rotl(dl, 10)
20481 al = fn4(al, bl, cl, dl, el, m[4], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20482 el = fn4(el, al, bl, cl, dl, m[13], 0x8f1bbcdc, 9); bl = rotl(bl, 10)
20483 dl = fn4(dl, el, al, bl, cl, m[3], 0x8f1bbcdc, 14); al = rotl(al, 10)
20484 cl = fn4(cl, dl, el, al, bl, m[7], 0x8f1bbcdc, 5); el = rotl(el, 10)
20485 bl = fn4(bl, cl, dl, el, al, m[15], 0x8f1bbcdc, 6); dl = rotl(dl, 10)
20486 al = fn4(al, bl, cl, dl, el, m[14], 0x8f1bbcdc, 8); cl = rotl(cl, 10)
20487 el = fn4(el, al, bl, cl, dl, m[5], 0x8f1bbcdc, 6); bl = rotl(bl, 10)
20488 dl = fn4(dl, el, al, bl, cl, m[6], 0x8f1bbcdc, 5); al = rotl(al, 10)
20489 cl = fn4(cl, dl, el, al, bl, m[2], 0x8f1bbcdc, 12); el = rotl(el, 10)
20490
20491 // Mj = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
20492 // K = 0xa953fd4e
20493 // Sj = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
20494 bl = fn5(bl, cl, dl, el, al, m[4], 0xa953fd4e, 9); dl = rotl(dl, 10)
20495 al = fn5(al, bl, cl, dl, el, m[0], 0xa953fd4e, 15); cl = rotl(cl, 10)
20496 el = fn5(el, al, bl, cl, dl, m[5], 0xa953fd4e, 5); bl = rotl(bl, 10)
20497 dl = fn5(dl, el, al, bl, cl, m[9], 0xa953fd4e, 11); al = rotl(al, 10)
20498 cl = fn5(cl, dl, el, al, bl, m[7], 0xa953fd4e, 6); el = rotl(el, 10)
20499 bl = fn5(bl, cl, dl, el, al, m[12], 0xa953fd4e, 8); dl = rotl(dl, 10)
20500 al = fn5(al, bl, cl, dl, el, m[2], 0xa953fd4e, 13); cl = rotl(cl, 10)
20501 el = fn5(el, al, bl, cl, dl, m[10], 0xa953fd4e, 12); bl = rotl(bl, 10)
20502 dl = fn5(dl, el, al, bl, cl, m[14], 0xa953fd4e, 5); al = rotl(al, 10)
20503 cl = fn5(cl, dl, el, al, bl, m[1], 0xa953fd4e, 12); el = rotl(el, 10)
20504 bl = fn5(bl, cl, dl, el, al, m[3], 0xa953fd4e, 13); dl = rotl(dl, 10)
20505 al = fn5(al, bl, cl, dl, el, m[8], 0xa953fd4e, 14); cl = rotl(cl, 10)
20506 el = fn5(el, al, bl, cl, dl, m[11], 0xa953fd4e, 11); bl = rotl(bl, 10)
20507 dl = fn5(dl, el, al, bl, cl, m[6], 0xa953fd4e, 8); al = rotl(al, 10)
20508 cl = fn5(cl, dl, el, al, bl, m[15], 0xa953fd4e, 5); el = rotl(el, 10)
20509 bl = fn5(bl, cl, dl, el, al, m[13], 0xa953fd4e, 6); dl = rotl(dl, 10)
20510
20511 var ar = this._a
20512 var br = this._b
20513 var cr = this._c
20514 var dr = this._d
20515 var er = this._e
20516
20517 // M'j = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
20518 // K' = 0x50a28be6
20519 // S'j = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
20520 ar = fn5(ar, br, cr, dr, er, m[5], 0x50a28be6, 8); cr = rotl(cr, 10)
20521 er = fn5(er, ar, br, cr, dr, m[14], 0x50a28be6, 9); br = rotl(br, 10)
20522 dr = fn5(dr, er, ar, br, cr, m[7], 0x50a28be6, 9); ar = rotl(ar, 10)
20523 cr = fn5(cr, dr, er, ar, br, m[0], 0x50a28be6, 11); er = rotl(er, 10)
20524 br = fn5(br, cr, dr, er, ar, m[9], 0x50a28be6, 13); dr = rotl(dr, 10)
20525 ar = fn5(ar, br, cr, dr, er, m[2], 0x50a28be6, 15); cr = rotl(cr, 10)
20526 er = fn5(er, ar, br, cr, dr, m[11], 0x50a28be6, 15); br = rotl(br, 10)
20527 dr = fn5(dr, er, ar, br, cr, m[4], 0x50a28be6, 5); ar = rotl(ar, 10)
20528 cr = fn5(cr, dr, er, ar, br, m[13], 0x50a28be6, 7); er = rotl(er, 10)
20529 br = fn5(br, cr, dr, er, ar, m[6], 0x50a28be6, 7); dr = rotl(dr, 10)
20530 ar = fn5(ar, br, cr, dr, er, m[15], 0x50a28be6, 8); cr = rotl(cr, 10)
20531 er = fn5(er, ar, br, cr, dr, m[8], 0x50a28be6, 11); br = rotl(br, 10)
20532 dr = fn5(dr, er, ar, br, cr, m[1], 0x50a28be6, 14); ar = rotl(ar, 10)
20533 cr = fn5(cr, dr, er, ar, br, m[10], 0x50a28be6, 14); er = rotl(er, 10)
20534 br = fn5(br, cr, dr, er, ar, m[3], 0x50a28be6, 12); dr = rotl(dr, 10)
20535 ar = fn5(ar, br, cr, dr, er, m[12], 0x50a28be6, 6); cr = rotl(cr, 10)
20536
20537 // M'j = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
20538 // K' = 0x5c4dd124
20539 // S'j = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
20540 er = fn4(er, ar, br, cr, dr, m[6], 0x5c4dd124, 9); br = rotl(br, 10)
20541 dr = fn4(dr, er, ar, br, cr, m[11], 0x5c4dd124, 13); ar = rotl(ar, 10)
20542 cr = fn4(cr, dr, er, ar, br, m[3], 0x5c4dd124, 15); er = rotl(er, 10)
20543 br = fn4(br, cr, dr, er, ar, m[7], 0x5c4dd124, 7); dr = rotl(dr, 10)
20544 ar = fn4(ar, br, cr, dr, er, m[0], 0x5c4dd124, 12); cr = rotl(cr, 10)
20545 er = fn4(er, ar, br, cr, dr, m[13], 0x5c4dd124, 8); br = rotl(br, 10)
20546 dr = fn4(dr, er, ar, br, cr, m[5], 0x5c4dd124, 9); ar = rotl(ar, 10)
20547 cr = fn4(cr, dr, er, ar, br, m[10], 0x5c4dd124, 11); er = rotl(er, 10)
20548 br = fn4(br, cr, dr, er, ar, m[14], 0x5c4dd124, 7); dr = rotl(dr, 10)
20549 ar = fn4(ar, br, cr, dr, er, m[15], 0x5c4dd124, 7); cr = rotl(cr, 10)
20550 er = fn4(er, ar, br, cr, dr, m[8], 0x5c4dd124, 12); br = rotl(br, 10)
20551 dr = fn4(dr, er, ar, br, cr, m[12], 0x5c4dd124, 7); ar = rotl(ar, 10)
20552 cr = fn4(cr, dr, er, ar, br, m[4], 0x5c4dd124, 6); er = rotl(er, 10)
20553 br = fn4(br, cr, dr, er, ar, m[9], 0x5c4dd124, 15); dr = rotl(dr, 10)
20554 ar = fn4(ar, br, cr, dr, er, m[1], 0x5c4dd124, 13); cr = rotl(cr, 10)
20555 er = fn4(er, ar, br, cr, dr, m[2], 0x5c4dd124, 11); br = rotl(br, 10)
20556
20557 // M'j = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
20558 // K' = 0x6d703ef3
20559 // S'j = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
20560 dr = fn3(dr, er, ar, br, cr, m[15], 0x6d703ef3, 9); ar = rotl(ar, 10)
20561 cr = fn3(cr, dr, er, ar, br, m[5], 0x6d703ef3, 7); er = rotl(er, 10)
20562 br = fn3(br, cr, dr, er, ar, m[1], 0x6d703ef3, 15); dr = rotl(dr, 10)
20563 ar = fn3(ar, br, cr, dr, er, m[3], 0x6d703ef3, 11); cr = rotl(cr, 10)
20564 er = fn3(er, ar, br, cr, dr, m[7], 0x6d703ef3, 8); br = rotl(br, 10)
20565 dr = fn3(dr, er, ar, br, cr, m[14], 0x6d703ef3, 6); ar = rotl(ar, 10)
20566 cr = fn3(cr, dr, er, ar, br, m[6], 0x6d703ef3, 6); er = rotl(er, 10)
20567 br = fn3(br, cr, dr, er, ar, m[9], 0x6d703ef3, 14); dr = rotl(dr, 10)
20568 ar = fn3(ar, br, cr, dr, er, m[11], 0x6d703ef3, 12); cr = rotl(cr, 10)
20569 er = fn3(er, ar, br, cr, dr, m[8], 0x6d703ef3, 13); br = rotl(br, 10)
20570 dr = fn3(dr, er, ar, br, cr, m[12], 0x6d703ef3, 5); ar = rotl(ar, 10)
20571 cr = fn3(cr, dr, er, ar, br, m[2], 0x6d703ef3, 14); er = rotl(er, 10)
20572 br = fn3(br, cr, dr, er, ar, m[10], 0x6d703ef3, 13); dr = rotl(dr, 10)
20573 ar = fn3(ar, br, cr, dr, er, m[0], 0x6d703ef3, 13); cr = rotl(cr, 10)
20574 er = fn3(er, ar, br, cr, dr, m[4], 0x6d703ef3, 7); br = rotl(br, 10)
20575 dr = fn3(dr, er, ar, br, cr, m[13], 0x6d703ef3, 5); ar = rotl(ar, 10)
20576
20577 // M'j = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
20578 // K' = 0x7a6d76e9
20579 // S'j = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
20580 cr = fn2(cr, dr, er, ar, br, m[8], 0x7a6d76e9, 15); er = rotl(er, 10)
20581 br = fn2(br, cr, dr, er, ar, m[6], 0x7a6d76e9, 5); dr = rotl(dr, 10)
20582 ar = fn2(ar, br, cr, dr, er, m[4], 0x7a6d76e9, 8); cr = rotl(cr, 10)
20583 er = fn2(er, ar, br, cr, dr, m[1], 0x7a6d76e9, 11); br = rotl(br, 10)
20584 dr = fn2(dr, er, ar, br, cr, m[3], 0x7a6d76e9, 14); ar = rotl(ar, 10)
20585 cr = fn2(cr, dr, er, ar, br, m[11], 0x7a6d76e9, 14); er = rotl(er, 10)
20586 br = fn2(br, cr, dr, er, ar, m[15], 0x7a6d76e9, 6); dr = rotl(dr, 10)
20587 ar = fn2(ar, br, cr, dr, er, m[0], 0x7a6d76e9, 14); cr = rotl(cr, 10)
20588 er = fn2(er, ar, br, cr, dr, m[5], 0x7a6d76e9, 6); br = rotl(br, 10)
20589 dr = fn2(dr, er, ar, br, cr, m[12], 0x7a6d76e9, 9); ar = rotl(ar, 10)
20590 cr = fn2(cr, dr, er, ar, br, m[2], 0x7a6d76e9, 12); er = rotl(er, 10)
20591 br = fn2(br, cr, dr, er, ar, m[13], 0x7a6d76e9, 9); dr = rotl(dr, 10)
20592 ar = fn2(ar, br, cr, dr, er, m[9], 0x7a6d76e9, 12); cr = rotl(cr, 10)
20593 er = fn2(er, ar, br, cr, dr, m[7], 0x7a6d76e9, 5); br = rotl(br, 10)
20594 dr = fn2(dr, er, ar, br, cr, m[10], 0x7a6d76e9, 15); ar = rotl(ar, 10)
20595 cr = fn2(cr, dr, er, ar, br, m[14], 0x7a6d76e9, 8); er = rotl(er, 10)
20596
20597 // M'j = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
20598 // K' = 0x00000000
20599 // S'j = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
20600 br = fn1(br, cr, dr, er, ar, m[12], 0x00000000, 8); dr = rotl(dr, 10)
20601 ar = fn1(ar, br, cr, dr, er, m[15], 0x00000000, 5); cr = rotl(cr, 10)
20602 er = fn1(er, ar, br, cr, dr, m[10], 0x00000000, 12); br = rotl(br, 10)
20603 dr = fn1(dr, er, ar, br, cr, m[4], 0x00000000, 9); ar = rotl(ar, 10)
20604 cr = fn1(cr, dr, er, ar, br, m[1], 0x00000000, 12); er = rotl(er, 10)
20605 br = fn1(br, cr, dr, er, ar, m[5], 0x00000000, 5); dr = rotl(dr, 10)
20606 ar = fn1(ar, br, cr, dr, er, m[8], 0x00000000, 14); cr = rotl(cr, 10)
20607 er = fn1(er, ar, br, cr, dr, m[7], 0x00000000, 6); br = rotl(br, 10)
20608 dr = fn1(dr, er, ar, br, cr, m[6], 0x00000000, 8); ar = rotl(ar, 10)
20609 cr = fn1(cr, dr, er, ar, br, m[2], 0x00000000, 13); er = rotl(er, 10)
20610 br = fn1(br, cr, dr, er, ar, m[13], 0x00000000, 6); dr = rotl(dr, 10)
20611 ar = fn1(ar, br, cr, dr, er, m[14], 0x00000000, 5); cr = rotl(cr, 10)
20612 er = fn1(er, ar, br, cr, dr, m[0], 0x00000000, 15); br = rotl(br, 10)
20613 dr = fn1(dr, er, ar, br, cr, m[3], 0x00000000, 13); ar = rotl(ar, 10)
20614 cr = fn1(cr, dr, er, ar, br, m[9], 0x00000000, 11); er = rotl(er, 10)
20615 br = fn1(br, cr, dr, er, ar, m[11], 0x00000000, 11); dr = rotl(dr, 10)
20616
20617 // change state
20618 var t = (this._b + cl + dr) | 0
20619 this._b = (this._c + dl + er) | 0
20620 this._c = (this._d + el + ar) | 0
20621 this._d = (this._e + al + br) | 0
20622 this._e = (this._a + bl + cr) | 0
20623 this._a = t
20624}
20625
20626RIPEMD160.prototype._digest = function () {
20627 // create padding and handle blocks
20628 this._block[this._blockOffset++] = 0x80
20629 if (this._blockOffset > 56) {
20630 this._block.fill(0, this._blockOffset, 64)
20631 this._update()
20632 this._blockOffset = 0
20633 }
20634
20635 this._block.fill(0, this._blockOffset, 56)
20636 this._block.writeUInt32LE(this._length[0], 56)
20637 this._block.writeUInt32LE(this._length[1], 60)
20638 this._update()
20639
20640 // produce result
20641 var buffer = new Buffer(20)
20642 buffer.writeInt32LE(this._a, 0)
20643 buffer.writeInt32LE(this._b, 4)
20644 buffer.writeInt32LE(this._c, 8)
20645 buffer.writeInt32LE(this._d, 12)
20646 buffer.writeInt32LE(this._e, 16)
20647 return buffer
20648}
8b095871 20649
9987f0c1
IC
20650function rotl (x, n) {
20651 return (x << n) | (x >>> (32 - n))
20652}
8b095871 20653
9987f0c1
IC
20654function fn1 (a, b, c, d, e, m, k, s) {
20655 return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
20656}
8b095871 20657
9987f0c1
IC
20658function fn2 (a, b, c, d, e, m, k, s) {
20659 return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
20660}
8b095871 20661
9987f0c1
IC
20662function fn3 (a, b, c, d, e, m, k, s) {
20663 return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
20664}
8b095871 20665
9987f0c1
IC
20666function fn4 (a, b, c, d, e, m, k, s) {
20667 return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
20668}
8b095871 20669
9987f0c1
IC
20670function fn5 (a, b, c, d, e, m, k, s) {
20671 return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
20672}
8b095871 20673
9987f0c1 20674module.exports = RIPEMD160
8b095871 20675
9987f0c1
IC
20676}).call(this,require("buffer").Buffer)
20677},{"buffer":4,"hash-base":92,"inherits":93}],98:[function(require,module,exports){
20678arguments[4][26][0].apply(exports,arguments)
20679},{"buffer":4,"dup":26}],99:[function(require,module,exports){
20680(function (Buffer){
20681// prototype class for hash functions
20682function Hash (blockSize, finalSize) {
20683 this._block = new Buffer(blockSize)
20684 this._finalSize = finalSize
20685 this._blockSize = blockSize
20686 this._len = 0
20687 this._s = 0
20688}
20689
20690Hash.prototype.update = function (data, enc) {
20691 if (typeof data === 'string') {
20692 enc = enc || 'utf8'
20693 data = new Buffer(data, enc)
8b095871
IC
20694 }
20695
9987f0c1
IC
20696 var l = this._len += data.length
20697 var s = this._s || 0
20698 var f = 0
20699 var buffer = this._block
8b095871 20700
9987f0c1
IC
20701 while (s < l) {
20702 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
20703 var ch = (t - f)
8b095871 20704
9987f0c1
IC
20705 for (var i = 0; i < ch; i++) {
20706 buffer[(s % this._blockSize) + i] = data[i + f]
8b095871
IC
20707 }
20708
9987f0c1
IC
20709 s += ch
20710 f += ch
8b095871 20711
9987f0c1
IC
20712 if ((s % this._blockSize) === 0) {
20713 this._update(buffer)
20714 }
20715 }
20716 this._s = s
8b095871 20717
9987f0c1
IC
20718 return this
20719}
8b095871 20720
9987f0c1
IC
20721Hash.prototype.digest = function (enc) {
20722 // Suppose the length of the message M, in bits, is l
20723 var l = this._len * 8
8b095871 20724
9987f0c1
IC
20725 // Append the bit 1 to the end of the message
20726 this._block[this._len % this._blockSize] = 0x80
8b095871 20727
9987f0c1
IC
20728 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
20729 this._block.fill(0, this._len % this._blockSize + 1)
8b095871 20730
9987f0c1
IC
20731 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
20732 this._update(this._block)
20733 this._block.fill(0)
20734 }
8b095871 20735
9987f0c1
IC
20736 // to this append the block which is equal to the number l written in binary
20737 // TODO: handle case where l is > Math.pow(2, 29)
20738 this._block.writeInt32BE(l, this._blockSize - 4)
8b095871 20739
9987f0c1 20740 var hash = this._update(this._block) || this._hash()
8b095871 20741
9987f0c1 20742 return enc ? hash.toString(enc) : hash
8b095871
IC
20743}
20744
9987f0c1
IC
20745Hash.prototype._update = function () {
20746 throw new Error('_update must be implemented by subclass')
8b095871
IC
20747}
20748
9987f0c1 20749module.exports = Hash
8b095871 20750
9987f0c1
IC
20751}).call(this,require("buffer").Buffer)
20752},{"buffer":4}],100:[function(require,module,exports){
20753var exports = module.exports = function SHA (algorithm) {
20754 algorithm = algorithm.toLowerCase()
8b095871 20755
9987f0c1
IC
20756 var Algorithm = exports[algorithm]
20757 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
8b095871 20758
9987f0c1 20759 return new Algorithm()
8b095871
IC
20760}
20761
9987f0c1
IC
20762exports.sha = require('./sha')
20763exports.sha1 = require('./sha1')
20764exports.sha224 = require('./sha224')
20765exports.sha256 = require('./sha256')
20766exports.sha384 = require('./sha384')
20767exports.sha512 = require('./sha512')
8b095871 20768
9987f0c1 20769},{"./sha":101,"./sha1":102,"./sha224":103,"./sha256":104,"./sha384":105,"./sha512":106}],101:[function(require,module,exports){
8b095871 20770(function (Buffer){
9987f0c1
IC
20771/*
20772 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
20773 * in FIPS PUB 180-1
20774 * This source code is derived from sha1.js of the same repository.
20775 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
20776 * operation was added.
20777 */
8b095871 20778
9987f0c1
IC
20779var inherits = require('inherits')
20780var Hash = require('./hash')
8b095871 20781
9987f0c1
IC
20782var K = [
20783 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20784]
8b095871 20785
9987f0c1 20786var W = new Array(80)
8b095871 20787
9987f0c1
IC
20788function Sha () {
20789 this.init()
20790 this._w = W
8b095871 20791
9987f0c1 20792 Hash.call(this, 64, 56)
8b095871
IC
20793}
20794
9987f0c1 20795inherits(Sha, Hash)
8b095871 20796
9987f0c1
IC
20797Sha.prototype.init = function () {
20798 this._a = 0x67452301
20799 this._b = 0xefcdab89
20800 this._c = 0x98badcfe
20801 this._d = 0x10325476
20802 this._e = 0xc3d2e1f0
8b095871 20803
9987f0c1 20804 return this
8b095871
IC
20805}
20806
9987f0c1
IC
20807function rotl5 (num) {
20808 return (num << 5) | (num >>> 27)
8b095871
IC
20809}
20810
9987f0c1
IC
20811function rotl30 (num) {
20812 return (num << 30) | (num >>> 2)
8b095871
IC
20813}
20814
9987f0c1
IC
20815function ft (s, b, c, d) {
20816 if (s === 0) return (b & c) | ((~b) & d)
20817 if (s === 2) return (b & c) | (b & d) | (c & d)
20818 return b ^ c ^ d
8b095871
IC
20819}
20820
9987f0c1
IC
20821Sha.prototype._update = function (M) {
20822 var W = this._w
8b095871 20823
9987f0c1
IC
20824 var a = this._a | 0
20825 var b = this._b | 0
20826 var c = this._c | 0
20827 var d = this._d | 0
20828 var e = this._e | 0
8b095871 20829
9987f0c1
IC
20830 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20831 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
8b095871 20832
9987f0c1
IC
20833 for (var j = 0; j < 80; ++j) {
20834 var s = ~~(j / 20)
20835 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
8b095871 20836
9987f0c1
IC
20837 e = d
20838 d = c
20839 c = rotl30(b)
20840 b = a
20841 a = t
20842 }
8b095871 20843
9987f0c1
IC
20844 this._a = (a + this._a) | 0
20845 this._b = (b + this._b) | 0
20846 this._c = (c + this._c) | 0
20847 this._d = (d + this._d) | 0
20848 this._e = (e + this._e) | 0
8b095871
IC
20849}
20850
9987f0c1
IC
20851Sha.prototype._hash = function () {
20852 var H = new Buffer(20)
8b095871 20853
9987f0c1
IC
20854 H.writeInt32BE(this._a | 0, 0)
20855 H.writeInt32BE(this._b | 0, 4)
20856 H.writeInt32BE(this._c | 0, 8)
20857 H.writeInt32BE(this._d | 0, 12)
20858 H.writeInt32BE(this._e | 0, 16)
8b095871 20859
9987f0c1 20860 return H
8b095871
IC
20861}
20862
9987f0c1 20863module.exports = Sha
8b095871 20864
9987f0c1
IC
20865}).call(this,require("buffer").Buffer)
20866},{"./hash":99,"buffer":4,"inherits":93}],102:[function(require,module,exports){
20867(function (Buffer){
20868/*
20869 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
20870 * in FIPS PUB 180-1
20871 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
20872 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20873 * Distributed under the BSD License
20874 * See http://pajhome.org.uk/crypt/md5 for details.
20875 */
8b095871 20876
9987f0c1
IC
20877var inherits = require('inherits')
20878var Hash = require('./hash')
8b095871 20879
9987f0c1
IC
20880var K = [
20881 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
20882]
8b095871 20883
9987f0c1 20884var W = new Array(80)
8b095871 20885
9987f0c1
IC
20886function Sha1 () {
20887 this.init()
20888 this._w = W
8b095871 20889
9987f0c1 20890 Hash.call(this, 64, 56)
8b095871
IC
20891}
20892
9987f0c1 20893inherits(Sha1, Hash)
8b095871 20894
9987f0c1
IC
20895Sha1.prototype.init = function () {
20896 this._a = 0x67452301
20897 this._b = 0xefcdab89
20898 this._c = 0x98badcfe
20899 this._d = 0x10325476
20900 this._e = 0xc3d2e1f0
8b095871 20901
9987f0c1 20902 return this
8b095871
IC
20903}
20904
9987f0c1
IC
20905function rotl1 (num) {
20906 return (num << 1) | (num >>> 31)
20907}
8b095871 20908
9987f0c1
IC
20909function rotl5 (num) {
20910 return (num << 5) | (num >>> 27)
8b095871
IC
20911}
20912
9987f0c1
IC
20913function rotl30 (num) {
20914 return (num << 30) | (num >>> 2)
8b095871
IC
20915}
20916
9987f0c1
IC
20917function ft (s, b, c, d) {
20918 if (s === 0) return (b & c) | ((~b) & d)
20919 if (s === 2) return (b & c) | (b & d) | (c & d)
20920 return b ^ c ^ d
8b095871
IC
20921}
20922
9987f0c1
IC
20923Sha1.prototype._update = function (M) {
20924 var W = this._w
8b095871 20925
9987f0c1
IC
20926 var a = this._a | 0
20927 var b = this._b | 0
20928 var c = this._c | 0
20929 var d = this._d | 0
20930 var e = this._e | 0
8b095871 20931
9987f0c1
IC
20932 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
20933 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
8b095871 20934
9987f0c1
IC
20935 for (var j = 0; j < 80; ++j) {
20936 var s = ~~(j / 20)
20937 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
8b095871 20938
9987f0c1
IC
20939 e = d
20940 d = c
20941 c = rotl30(b)
20942 b = a
20943 a = t
20944 }
8b095871 20945
9987f0c1
IC
20946 this._a = (a + this._a) | 0
20947 this._b = (b + this._b) | 0
20948 this._c = (c + this._c) | 0
20949 this._d = (d + this._d) | 0
20950 this._e = (e + this._e) | 0
8b095871
IC
20951}
20952
9987f0c1
IC
20953Sha1.prototype._hash = function () {
20954 var H = new Buffer(20)
20955
20956 H.writeInt32BE(this._a | 0, 0)
20957 H.writeInt32BE(this._b | 0, 4)
20958 H.writeInt32BE(this._c | 0, 8)
20959 H.writeInt32BE(this._d | 0, 12)
20960 H.writeInt32BE(this._e | 0, 16)
8b095871 20961
9987f0c1 20962 return H
8b095871
IC
20963}
20964
9987f0c1 20965module.exports = Sha1
8b095871 20966
9987f0c1
IC
20967}).call(this,require("buffer").Buffer)
20968},{"./hash":99,"buffer":4,"inherits":93}],103:[function(require,module,exports){
20969(function (Buffer){
20970/**
20971 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
20972 * in FIPS 180-2
20973 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
20974 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
20975 *
20976 */
8b095871 20977
9987f0c1
IC
20978var inherits = require('inherits')
20979var Sha256 = require('./sha256')
20980var Hash = require('./hash')
8b095871 20981
9987f0c1 20982var W = new Array(64)
8b095871 20983
9987f0c1
IC
20984function Sha224 () {
20985 this.init()
8b095871 20986
9987f0c1 20987 this._w = W // new Array(64)
8b095871 20988
9987f0c1 20989 Hash.call(this, 64, 56)
8b095871
IC
20990}
20991
9987f0c1 20992inherits(Sha224, Sha256)
8b095871 20993
9987f0c1
IC
20994Sha224.prototype.init = function () {
20995 this._a = 0xc1059ed8
20996 this._b = 0x367cd507
20997 this._c = 0x3070dd17
20998 this._d = 0xf70e5939
20999 this._e = 0xffc00b31
21000 this._f = 0x68581511
21001 this._g = 0x64f98fa7
21002 this._h = 0xbefa4fa4
21003
21004 return this
8b095871
IC
21005}
21006
9987f0c1
IC
21007Sha224.prototype._hash = function () {
21008 var H = new Buffer(28)
8b095871 21009
9987f0c1
IC
21010 H.writeInt32BE(this._a, 0)
21011 H.writeInt32BE(this._b, 4)
21012 H.writeInt32BE(this._c, 8)
21013 H.writeInt32BE(this._d, 12)
21014 H.writeInt32BE(this._e, 16)
21015 H.writeInt32BE(this._f, 20)
21016 H.writeInt32BE(this._g, 24)
8b095871 21017
9987f0c1 21018 return H
8b095871
IC
21019}
21020
9987f0c1 21021module.exports = Sha224
8b095871 21022
9987f0c1
IC
21023}).call(this,require("buffer").Buffer)
21024},{"./hash":99,"./sha256":104,"buffer":4,"inherits":93}],104:[function(require,module,exports){
21025(function (Buffer){
21026/**
21027 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
21028 * in FIPS 180-2
21029 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
21030 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
21031 *
21032 */
8b095871 21033
9987f0c1
IC
21034var inherits = require('inherits')
21035var Hash = require('./hash')
8b095871 21036
9987f0c1
IC
21037var K = [
21038 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
21039 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
21040 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
21041 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
21042 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
21043 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
21044 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
21045 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
21046 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
21047 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
21048 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
21049 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
21050 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
21051 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
21052 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
21053 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
21054]
8b095871 21055
9987f0c1 21056var W = new Array(64)
8b095871 21057
9987f0c1
IC
21058function Sha256 () {
21059 this.init()
8b095871 21060
9987f0c1 21061 this._w = W // new Array(64)
8b095871 21062
9987f0c1
IC
21063 Hash.call(this, 64, 56)
21064}
8b095871 21065
9987f0c1 21066inherits(Sha256, Hash)
8b095871 21067
9987f0c1
IC
21068Sha256.prototype.init = function () {
21069 this._a = 0x6a09e667
21070 this._b = 0xbb67ae85
21071 this._c = 0x3c6ef372
21072 this._d = 0xa54ff53a
21073 this._e = 0x510e527f
21074 this._f = 0x9b05688c
21075 this._g = 0x1f83d9ab
21076 this._h = 0x5be0cd19
8b095871 21077
9987f0c1
IC
21078 return this
21079}
8b095871 21080
9987f0c1
IC
21081function ch (x, y, z) {
21082 return z ^ (x & (y ^ z))
8b095871
IC
21083}
21084
9987f0c1
IC
21085function maj (x, y, z) {
21086 return (x & y) | (z & (x | y))
8b095871
IC
21087}
21088
9987f0c1
IC
21089function sigma0 (x) {
21090 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
8b095871
IC
21091}
21092
9987f0c1
IC
21093function sigma1 (x) {
21094 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
21095}
8b095871 21096
9987f0c1
IC
21097function gamma0 (x) {
21098 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
21099}
8b095871 21100
9987f0c1
IC
21101function gamma1 (x) {
21102 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
21103}
8b095871 21104
9987f0c1
IC
21105Sha256.prototype._update = function (M) {
21106 var W = this._w
8b095871 21107
9987f0c1
IC
21108 var a = this._a | 0
21109 var b = this._b | 0
21110 var c = this._c | 0
21111 var d = this._d | 0
21112 var e = this._e | 0
21113 var f = this._f | 0
21114 var g = this._g | 0
21115 var h = this._h | 0
8b095871 21116
9987f0c1
IC
21117 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
21118 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
8b095871 21119
9987f0c1
IC
21120 for (var j = 0; j < 64; ++j) {
21121 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
21122 var T2 = (sigma0(a) + maj(a, b, c)) | 0
8b095871 21123
9987f0c1
IC
21124 h = g
21125 g = f
21126 f = e
21127 e = (d + T1) | 0
21128 d = c
21129 c = b
21130 b = a
21131 a = (T1 + T2) | 0
8b095871
IC
21132 }
21133
9987f0c1
IC
21134 this._a = (a + this._a) | 0
21135 this._b = (b + this._b) | 0
21136 this._c = (c + this._c) | 0
21137 this._d = (d + this._d) | 0
21138 this._e = (e + this._e) | 0
21139 this._f = (f + this._f) | 0
21140 this._g = (g + this._g) | 0
21141 this._h = (h + this._h) | 0
8b095871
IC
21142}
21143
9987f0c1
IC
21144Sha256.prototype._hash = function () {
21145 var H = new Buffer(32)
8b095871 21146
9987f0c1
IC
21147 H.writeInt32BE(this._a, 0)
21148 H.writeInt32BE(this._b, 4)
21149 H.writeInt32BE(this._c, 8)
21150 H.writeInt32BE(this._d, 12)
21151 H.writeInt32BE(this._e, 16)
21152 H.writeInt32BE(this._f, 20)
21153 H.writeInt32BE(this._g, 24)
21154 H.writeInt32BE(this._h, 28)
8b095871 21155
9987f0c1 21156 return H
8b095871
IC
21157}
21158
9987f0c1 21159module.exports = Sha256
8b095871 21160
9987f0c1
IC
21161}).call(this,require("buffer").Buffer)
21162},{"./hash":99,"buffer":4,"inherits":93}],105:[function(require,module,exports){
21163(function (Buffer){
21164var inherits = require('inherits')
21165var SHA512 = require('./sha512')
21166var Hash = require('./hash')
8b095871 21167
9987f0c1 21168var W = new Array(160)
8b095871 21169
9987f0c1
IC
21170function Sha384 () {
21171 this.init()
21172 this._w = W
8b095871 21173
9987f0c1
IC
21174 Hash.call(this, 128, 112)
21175}
8b095871 21176
9987f0c1 21177inherits(Sha384, SHA512)
8b095871 21178
9987f0c1
IC
21179Sha384.prototype.init = function () {
21180 this._ah = 0xcbbb9d5d
21181 this._bh = 0x629a292a
21182 this._ch = 0x9159015a
21183 this._dh = 0x152fecd8
21184 this._eh = 0x67332667
21185 this._fh = 0x8eb44a87
21186 this._gh = 0xdb0c2e0d
21187 this._hh = 0x47b5481d
8b095871 21188
9987f0c1
IC
21189 this._al = 0xc1059ed8
21190 this._bl = 0x367cd507
21191 this._cl = 0x3070dd17
21192 this._dl = 0xf70e5939
21193 this._el = 0xffc00b31
21194 this._fl = 0x68581511
21195 this._gl = 0x64f98fa7
21196 this._hl = 0xbefa4fa4
8b095871 21197
9987f0c1 21198 return this
8b095871
IC
21199}
21200
9987f0c1
IC
21201Sha384.prototype._hash = function () {
21202 var H = new Buffer(48)
8b095871 21203
9987f0c1
IC
21204 function writeInt64BE (h, l, offset) {
21205 H.writeInt32BE(h, offset)
21206 H.writeInt32BE(l, offset + 4)
21207 }
8b095871 21208
9987f0c1
IC
21209 writeInt64BE(this._ah, this._al, 0)
21210 writeInt64BE(this._bh, this._bl, 8)
21211 writeInt64BE(this._ch, this._cl, 16)
21212 writeInt64BE(this._dh, this._dl, 24)
21213 writeInt64BE(this._eh, this._el, 32)
21214 writeInt64BE(this._fh, this._fl, 40)
8b095871 21215
9987f0c1
IC
21216 return H
21217}
8b095871 21218
9987f0c1 21219module.exports = Sha384
8b095871 21220
9987f0c1
IC
21221}).call(this,require("buffer").Buffer)
21222},{"./hash":99,"./sha512":106,"buffer":4,"inherits":93}],106:[function(require,module,exports){
21223(function (Buffer){
21224var inherits = require('inherits')
21225var Hash = require('./hash')
8b095871 21226
9987f0c1
IC
21227var K = [
21228 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
21229 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
21230 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
21231 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
21232 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
21233 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
21234 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
21235 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
21236 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
21237 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
21238 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
21239 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
21240 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
21241 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
21242 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
21243 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
21244 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
21245 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
21246 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
21247 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
21248 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
21249 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
21250 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
21251 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
21252 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
21253 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
21254 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
21255 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
21256 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
21257 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
21258 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
21259 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
21260 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
21261 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
21262 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
21263 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
21264 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
21265 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
21266 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
21267 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
21268]
8b095871 21269
9987f0c1 21270var W = new Array(160)
8b095871 21271
9987f0c1
IC
21272function Sha512 () {
21273 this.init()
21274 this._w = W
8b095871 21275
9987f0c1
IC
21276 Hash.call(this, 128, 112)
21277}
8b095871 21278
9987f0c1 21279inherits(Sha512, Hash)
8b095871 21280
9987f0c1
IC
21281Sha512.prototype.init = function () {
21282 this._ah = 0x6a09e667
21283 this._bh = 0xbb67ae85
21284 this._ch = 0x3c6ef372
21285 this._dh = 0xa54ff53a
21286 this._eh = 0x510e527f
21287 this._fh = 0x9b05688c
21288 this._gh = 0x1f83d9ab
21289 this._hh = 0x5be0cd19
8b095871 21290
9987f0c1
IC
21291 this._al = 0xf3bcc908
21292 this._bl = 0x84caa73b
21293 this._cl = 0xfe94f82b
21294 this._dl = 0x5f1d36f1
21295 this._el = 0xade682d1
21296 this._fl = 0x2b3e6c1f
21297 this._gl = 0xfb41bd6b
21298 this._hl = 0x137e2179
8b095871 21299
9987f0c1 21300 return this
8b095871
IC
21301}
21302
9987f0c1
IC
21303function Ch (x, y, z) {
21304 return z ^ (x & (y ^ z))
8b095871
IC
21305}
21306
9987f0c1
IC
21307function maj (x, y, z) {
21308 return (x & y) | (z & (x | y))
8b095871
IC
21309}
21310
9987f0c1
IC
21311function sigma0 (x, xl) {
21312 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
21313}
8b095871 21314
9987f0c1
IC
21315function sigma1 (x, xl) {
21316 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
21317}
8b095871 21318
9987f0c1
IC
21319function Gamma0 (x, xl) {
21320 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
8b095871
IC
21321}
21322
9987f0c1
IC
21323function Gamma0l (x, xl) {
21324 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
21325}
8b095871 21326
9987f0c1
IC
21327function Gamma1 (x, xl) {
21328 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
21329}
8b095871 21330
9987f0c1
IC
21331function Gamma1l (x, xl) {
21332 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
21333}
8b095871 21334
9987f0c1
IC
21335function getCarry (a, b) {
21336 return (a >>> 0) < (b >>> 0) ? 1 : 0
8b095871
IC
21337}
21338
9987f0c1
IC
21339Sha512.prototype._update = function (M) {
21340 var W = this._w
8b095871 21341
9987f0c1
IC
21342 var ah = this._ah | 0
21343 var bh = this._bh | 0
21344 var ch = this._ch | 0
21345 var dh = this._dh | 0
21346 var eh = this._eh | 0
21347 var fh = this._fh | 0
21348 var gh = this._gh | 0
21349 var hh = this._hh | 0
8b095871 21350
9987f0c1
IC
21351 var al = this._al | 0
21352 var bl = this._bl | 0
21353 var cl = this._cl | 0
21354 var dl = this._dl | 0
21355 var el = this._el | 0
21356 var fl = this._fl | 0
21357 var gl = this._gl | 0
21358 var hl = this._hl | 0
8b095871 21359
9987f0c1
IC
21360 for (var i = 0; i < 32; i += 2) {
21361 W[i] = M.readInt32BE(i * 4)
21362 W[i + 1] = M.readInt32BE(i * 4 + 4)
21363 }
21364 for (; i < 160; i += 2) {
21365 var xh = W[i - 15 * 2]
21366 var xl = W[i - 15 * 2 + 1]
21367 var gamma0 = Gamma0(xh, xl)
21368 var gamma0l = Gamma0l(xl, xh)
8b095871 21369
9987f0c1
IC
21370 xh = W[i - 2 * 2]
21371 xl = W[i - 2 * 2 + 1]
21372 var gamma1 = Gamma1(xh, xl)
21373 var gamma1l = Gamma1l(xl, xh)
8b095871 21374
9987f0c1
IC
21375 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
21376 var Wi7h = W[i - 7 * 2]
21377 var Wi7l = W[i - 7 * 2 + 1]
8b095871 21378
9987f0c1
IC
21379 var Wi16h = W[i - 16 * 2]
21380 var Wi16l = W[i - 16 * 2 + 1]
8b095871 21381
9987f0c1
IC
21382 var Wil = (gamma0l + Wi7l) | 0
21383 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
21384 Wil = (Wil + gamma1l) | 0
21385 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
21386 Wil = (Wil + Wi16l) | 0
21387 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
8b095871 21388
9987f0c1
IC
21389 W[i] = Wih
21390 W[i + 1] = Wil
8b095871
IC
21391 }
21392
9987f0c1
IC
21393 for (var j = 0; j < 160; j += 2) {
21394 Wih = W[j]
21395 Wil = W[j + 1]
8b095871 21396
9987f0c1
IC
21397 var majh = maj(ah, bh, ch)
21398 var majl = maj(al, bl, cl)
8b095871 21399
9987f0c1
IC
21400 var sigma0h = sigma0(ah, al)
21401 var sigma0l = sigma0(al, ah)
21402 var sigma1h = sigma1(eh, el)
21403 var sigma1l = sigma1(el, eh)
8b095871 21404
9987f0c1
IC
21405 // t1 = h + sigma1 + ch + K[j] + W[j]
21406 var Kih = K[j]
21407 var Kil = K[j + 1]
8b095871 21408
9987f0c1
IC
21409 var chh = Ch(eh, fh, gh)
21410 var chl = Ch(el, fl, gl)
8b095871 21411
9987f0c1
IC
21412 var t1l = (hl + sigma1l) | 0
21413 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
21414 t1l = (t1l + chl) | 0
21415 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
21416 t1l = (t1l + Kil) | 0
21417 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
21418 t1l = (t1l + Wil) | 0
21419 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
8b095871 21420
9987f0c1
IC
21421 // t2 = sigma0 + maj
21422 var t2l = (sigma0l + majl) | 0
21423 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
21424
21425 hh = gh
21426 hl = gl
21427 gh = fh
21428 gl = fl
21429 fh = eh
21430 fl = el
21431 el = (dl + t1l) | 0
21432 eh = (dh + t1h + getCarry(el, dl)) | 0
21433 dh = ch
21434 dl = cl
21435 ch = bh
21436 cl = bl
21437 bh = ah
21438 bl = al
21439 al = (t1l + t2l) | 0
21440 ah = (t1h + t2h + getCarry(al, t1l)) | 0
21441 }
8b095871 21442
9987f0c1
IC
21443 this._al = (this._al + al) | 0
21444 this._bl = (this._bl + bl) | 0
21445 this._cl = (this._cl + cl) | 0
21446 this._dl = (this._dl + dl) | 0
21447 this._el = (this._el + el) | 0
21448 this._fl = (this._fl + fl) | 0
21449 this._gl = (this._gl + gl) | 0
21450 this._hl = (this._hl + hl) | 0
8b095871 21451
9987f0c1
IC
21452 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
21453 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
21454 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
21455 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
21456 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
21457 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
21458 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
21459 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
21460}
8b095871 21461
9987f0c1
IC
21462Sha512.prototype._hash = function () {
21463 var H = new Buffer(64)
8b095871 21464
9987f0c1
IC
21465 function writeInt64BE (h, l, offset) {
21466 H.writeInt32BE(h, offset)
21467 H.writeInt32BE(l, offset + 4)
8b095871
IC
21468 }
21469
9987f0c1
IC
21470 writeInt64BE(this._ah, this._al, 0)
21471 writeInt64BE(this._bh, this._bl, 8)
21472 writeInt64BE(this._ch, this._cl, 16)
21473 writeInt64BE(this._dh, this._dl, 24)
21474 writeInt64BE(this._eh, this._el, 32)
21475 writeInt64BE(this._fh, this._fl, 40)
21476 writeInt64BE(this._gh, this._gl, 48)
21477 writeInt64BE(this._hh, this._hl, 56)
21478
21479 return H
8b095871
IC
21480}
21481
9987f0c1 21482module.exports = Sha512
8b095871 21483
9987f0c1
IC
21484}).call(this,require("buffer").Buffer)
21485},{"./hash":99,"buffer":4,"inherits":93}],107:[function(require,module,exports){
21486var inherits = require('inherits')
21487var native = require('./native')
8b095871 21488
9987f0c1
IC
21489function TfTypeError (type, value, valueTypeName) {
21490 this.__error = Error.call(this)
21491 this.__type = type
21492 this.__value = value
21493 this.__valueTypeName = valueTypeName
8b095871 21494
9987f0c1
IC
21495 var message
21496 Object.defineProperty(this, 'message', {
21497 enumerable: true,
21498 get: function () {
21499 if (message) return message
8b095871 21500
9987f0c1
IC
21501 valueTypeName = valueTypeName || getValueTypeName(value)
21502 message = tfErrorString(type, value, valueTypeName)
8b095871 21503
9987f0c1
IC
21504 return message
21505 }
8b095871 21506 })
9987f0c1 21507}
8b095871 21508
9987f0c1
IC
21509function TfPropertyTypeError (type, property, label, value, error, valueTypeName) {
21510 this.__error = error || Error.call(this)
21511 this.__label = label
21512 this.__property = property
21513 this.__type = type
21514 this.__value = value
21515 this.__valueTypeName = valueTypeName
8b095871 21516
9987f0c1
IC
21517 var message
21518 Object.defineProperty(this, 'message', {
21519 enumerable: true,
21520 get: function () {
21521 if (message) return message
21522 if (type) {
21523 valueTypeName = valueTypeName || getValueTypeName(value)
21524 message = tfPropertyErrorString(type, label, property, value, valueTypeName)
21525 } else {
21526 message = 'Unexpected property "' + property + '"'
21527 }
8b095871 21528
9987f0c1
IC
21529 return message
21530 }
8b095871 21531 })
8b095871
IC
21532}
21533
9987f0c1
IC
21534// inherit from Error, assign stack
21535[TfTypeError, TfPropertyTypeError].forEach(function (tfErrorType) {
21536 inherits(tfErrorType, Error)
21537 Object.defineProperty(tfErrorType, 'stack', {
21538 get: function () { return this.__error.stack }
21539 })
21540})
8b095871 21541
9987f0c1
IC
21542function tfCustomError (expected, actual) {
21543 return new TfTypeError(expected, {}, actual)
21544}
8b095871 21545
9987f0c1
IC
21546function tfSubError (e, property, label) {
21547 // sub child?
21548 if (e instanceof TfPropertyTypeError) {
21549 property = property + '.' + e.__property
21550 label = e.__label
8b095871 21551
9987f0c1
IC
21552 return new TfPropertyTypeError(
21553 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21554 )
8b095871
IC
21555 }
21556
9987f0c1
IC
21557 // child?
21558 if (e instanceof TfTypeError) {
21559 return new TfPropertyTypeError(
21560 e.__type, property, label, e.__value, e.__error, e.__valueTypeName
21561 )
21562 }
8b095871 21563
9987f0c1
IC
21564 return e
21565}
8b095871 21566
9987f0c1
IC
21567function getTypeName (fn) {
21568 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]
21569}
8b095871 21570
9987f0c1
IC
21571function getValueTypeName (value) {
21572 return native.Nil(value) ? '' : getTypeName(value.constructor)
21573}
8b095871 21574
9987f0c1
IC
21575function getValue (value) {
21576 if (native.Function(value)) return ''
21577 if (native.String(value)) return JSON.stringify(value)
21578 if (value && native.Object(value)) return ''
21579 return value
21580}
8b095871 21581
9987f0c1
IC
21582function tfJSON (type) {
21583 if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)
21584 if (native.Array(type)) return 'Array'
21585 if (type && native.Object(type)) return 'Object'
8b095871 21586
9987f0c1
IC
21587 return type !== undefined ? type : ''
21588}
8b095871 21589
9987f0c1
IC
21590function tfErrorString (type, value, valueTypeName) {
21591 var valueJson = getValue(value)
8b095871 21592
9987f0c1
IC
21593 return 'Expected ' + tfJSON(type) + ', got' +
21594 (valueTypeName !== '' ? ' ' + valueTypeName : '') +
21595 (valueJson !== '' ? ' ' + valueJson : '')
8b095871
IC
21596}
21597
9987f0c1
IC
21598function tfPropertyErrorString (type, label, name, value, valueTypeName) {
21599 var description = '" of type '
21600 if (label === 'key') description = '" with key type '
8b095871 21601
9987f0c1 21602 return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)
8b095871
IC
21603}
21604
9987f0c1
IC
21605module.exports = {
21606 TfTypeError: TfTypeError,
21607 TfPropertyTypeError: TfPropertyTypeError,
21608 tfCustomError: tfCustomError,
21609 tfSubError: tfSubError,
21610 tfJSON: tfJSON,
21611 getValueTypeName: getValueTypeName
8b095871
IC
21612}
21613
9987f0c1
IC
21614},{"./native":110,"inherits":93}],108:[function(require,module,exports){
21615(function (Buffer){
21616var NATIVE = require('./native')
21617var ERRORS = require('./errors')
21618
21619function _Buffer (value) {
21620 return Buffer.isBuffer(value)
8b095871
IC
21621}
21622
9987f0c1
IC
21623function Hex (value) {
21624 return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)
21625}
8b095871 21626
9987f0c1
IC
21627function _LengthN (type, length) {
21628 var name = type.toJSON()
8b095871 21629
9987f0c1
IC
21630 function Length (value) {
21631 if (!type(value)) return false
21632 if (value.length === length) return true
8b095871 21633
9987f0c1
IC
21634 throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')
21635 }
21636 Length.toJSON = function () { return name }
8b095871 21637
9987f0c1
IC
21638 return Length
21639}
8b095871 21640
9987f0c1
IC
21641var _ArrayN = _LengthN.bind(null, NATIVE.Array)
21642var _BufferN = _LengthN.bind(null, _Buffer)
21643var _HexN = _LengthN.bind(null, Hex)
8b095871 21644
9987f0c1 21645var UINT53_MAX = Math.pow(2, 53) - 1
8b095871 21646
9987f0c1
IC
21647function Finite (value) {
21648 return typeof value === 'number' && isFinite(value)
21649}
21650function Int8 (value) { return ((value << 24) >> 24) === value }
21651function Int16 (value) { return ((value << 16) >> 16) === value }
21652function Int32 (value) { return (value | 0) === value }
21653function UInt8 (value) { return (value & 0xff) === value }
21654function UInt16 (value) { return (value & 0xffff) === value }
21655function UInt32 (value) { return (value >>> 0) === value }
21656function UInt53 (value) {
21657 return typeof value === 'number' &&
21658 value >= 0 &&
21659 value <= UINT53_MAX &&
21660 Math.floor(value) === value
21661}
8b095871 21662
9987f0c1
IC
21663var types = {
21664 ArrayN: _ArrayN,
21665 Buffer: _Buffer,
21666 BufferN: _BufferN,
21667 Finite: Finite,
21668 Hex: Hex,
21669 HexN: _HexN,
21670 Int8: Int8,
21671 Int16: Int16,
21672 Int32: Int32,
21673 UInt8: UInt8,
21674 UInt16: UInt16,
21675 UInt32: UInt32,
21676 UInt53: UInt53
21677}
8b095871 21678
9987f0c1
IC
21679for (var typeName in types) {
21680 types[typeName].toJSON = function (t) {
21681 return t
21682 }.bind(null, typeName)
21683}
8b095871 21684
9987f0c1 21685module.exports = types
8b095871 21686
9987f0c1
IC
21687}).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
21688},{"../../../../../.nvm/versions/node/v6.0.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":9,"./errors":107,"./native":110}],109:[function(require,module,exports){
21689var ERRORS = require('./errors')
21690var NATIVE = require('./native')
8b095871 21691
9987f0c1
IC
21692// short-hand
21693var tfJSON = ERRORS.tfJSON
21694var TfTypeError = ERRORS.TfTypeError
21695var TfPropertyTypeError = ERRORS.TfPropertyTypeError
21696var tfSubError = ERRORS.tfSubError
21697var getValueTypeName = ERRORS.getValueTypeName
8b095871 21698
9987f0c1
IC
21699var TYPES = {
21700 arrayOf: function arrayOf (type) {
21701 type = compile(type)
8b095871 21702
9987f0c1
IC
21703 function _arrayOf (array, strict) {
21704 if (!NATIVE.Array(array)) return false
8b095871 21705
9987f0c1
IC
21706 return array.every(function (value, i) {
21707 try {
21708 return typeforce(type, value, strict)
21709 } catch (e) {
21710 throw tfSubError(e, i)
21711 }
21712 })
8b095871 21713 }
9987f0c1 21714 _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' }
8b095871 21715
9987f0c1
IC
21716 return _arrayOf
21717 },
8b095871 21718
9987f0c1
IC
21719 maybe: function maybe (type) {
21720 type = compile(type)
8b095871 21721
9987f0c1
IC
21722 function _maybe (value, strict) {
21723 return NATIVE.Nil(value) || type(value, strict, maybe)
21724 }
21725 _maybe.toJSON = function () { return '?' + tfJSON(type) }
8b095871 21726
9987f0c1
IC
21727 return _maybe
21728 },
8b095871 21729
9987f0c1
IC
21730 map: function map (propertyType, propertyKeyType) {
21731 propertyType = compile(propertyType)
21732 if (propertyKeyType) propertyKeyType = compile(propertyKeyType)
8b095871 21733
9987f0c1
IC
21734 function _map (value, strict) {
21735 if (!NATIVE.Object(value, strict)) return false
21736 if (NATIVE.Nil(value, strict)) return false
8b095871 21737
9987f0c1
IC
21738 for (var propertyName in value) {
21739 try {
21740 if (propertyKeyType) {
21741 typeforce(propertyKeyType, propertyName, strict)
21742 }
21743 } catch (e) {
21744 throw tfSubError(e, propertyName, 'key')
8b095871
IC
21745 }
21746
9987f0c1
IC
21747 try {
21748 var propertyValue = value[propertyName]
21749 typeforce(propertyType, propertyValue, strict)
21750 } catch (e) {
21751 throw tfSubError(e, propertyName)
8b095871
IC
21752 }
21753 }
21754
9987f0c1
IC
21755 return true
21756 }
8b095871 21757
9987f0c1
IC
21758 if (propertyKeyType) {
21759 _map.toJSON = function () {
21760 return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
8b095871 21761 }
9987f0c1
IC
21762 } else {
21763 _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
8b095871
IC
21764 }
21765
9987f0c1
IC
21766 return _map
21767 },
8b095871 21768
9987f0c1
IC
21769 object: function object (uncompiled) {
21770 var type = {}
8b095871 21771
9987f0c1
IC
21772 for (var typePropertyName in uncompiled) {
21773 type[typePropertyName] = compile(uncompiled[typePropertyName])
21774 }
8b095871 21775
9987f0c1
IC
21776 function _object (value, strict) {
21777 if (!NATIVE.Object(value)) return false
21778 if (NATIVE.Nil(value)) return false
8b095871 21779
9987f0c1 21780 var propertyName
8b095871 21781
9987f0c1
IC
21782 try {
21783 for (propertyName in type) {
21784 var propertyType = type[propertyName]
21785 var propertyValue = value[propertyName]
8b095871 21786
9987f0c1
IC
21787 typeforce(propertyType, propertyValue, strict)
21788 }
21789 } catch (e) {
21790 throw tfSubError(e, propertyName)
21791 }
8b095871 21792
9987f0c1
IC
21793 if (strict) {
21794 for (propertyName in value) {
21795 if (type[propertyName]) continue
8b095871 21796
9987f0c1
IC
21797 throw new TfPropertyTypeError(undefined, propertyName)
21798 }
21799 }
8b095871 21800
9987f0c1
IC
21801 return true
21802 }
21803 _object.toJSON = function () { return tfJSON(type) }
8b095871 21804
9987f0c1
IC
21805 return _object
21806 },
8b095871 21807
9987f0c1
IC
21808 oneOf: function oneOf () {
21809 var types = [].slice.call(arguments).map(compile)
8b095871 21810
9987f0c1
IC
21811 function _oneOf (value, strict) {
21812 return types.some(function (type) {
21813 try {
21814 return typeforce(type, value, strict)
21815 } catch (e) {
21816 return false
21817 }
21818 })
21819 }
21820 _oneOf.toJSON = function () { return types.map(tfJSON).join('|') }
8b095871 21821
9987f0c1
IC
21822 return _oneOf
21823 },
8b095871 21824
9987f0c1
IC
21825 quacksLike: function quacksLike (type) {
21826 function _quacksLike (value) {
21827 return type === getValueTypeName(value)
21828 }
21829 _quacksLike.toJSON = function () { return type }
8b095871 21830
9987f0c1
IC
21831 return _quacksLike
21832 },
8b095871 21833
9987f0c1
IC
21834 tuple: function tuple () {
21835 var types = [].slice.call(arguments).map(compile)
8b095871 21836
9987f0c1
IC
21837 function _tuple (values, strict) {
21838 return types.every(function (type, i) {
21839 try {
21840 return typeforce(type, values[i], strict)
21841 } catch (e) {
21842 throw tfSubError(e, i)
21843 }
21844 }) && (!strict || values.length === arguments.length)
21845 }
21846 _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }
8b095871 21847
9987f0c1
IC
21848 return _tuple
21849 },
8b095871 21850
9987f0c1
IC
21851 value: function value (expected) {
21852 function _value (actual) {
21853 return actual === expected
21854 }
21855 _value.toJSON = function () { return expected }
8b095871 21856
9987f0c1 21857 return _value
8b095871
IC
21858 }
21859}
21860
9987f0c1
IC
21861function compile (type) {
21862 if (NATIVE.String(type)) {
21863 if (type[0] === '?') return TYPES.maybe(compile(type.slice(1)))
8b095871 21864
9987f0c1
IC
21865 return NATIVE[type] || TYPES.quacksLike(type)
21866 } else if (type && NATIVE.Object(type)) {
21867 if (NATIVE.Array(type)) return TYPES.arrayOf(compile(type[0]))
8b095871 21868
9987f0c1
IC
21869 return TYPES.object(type)
21870 } else if (NATIVE.Function(type)) {
21871 return type
21872 }
8b095871 21873
9987f0c1
IC
21874 return TYPES.value(type)
21875}
8b095871 21876
9987f0c1
IC
21877function typeforce (type, value, strict, surrogate) {
21878 if (NATIVE.Function(type)) {
21879 if (type(value, strict)) return true
8b095871 21880
9987f0c1 21881 throw new TfTypeError(surrogate || type, value)
ab78acc6 21882 }
8b095871 21883
9987f0c1
IC
21884 // JIT
21885 return typeforce(compile(type), value, strict)
21886}
8b095871 21887
9987f0c1
IC
21888// assign types to typeforce function
21889for (var typeName in NATIVE) {
21890 typeforce[typeName] = NATIVE[typeName]
8b095871
IC
21891}
21892
9987f0c1
IC
21893for (typeName in TYPES) {
21894 typeforce[typeName] = TYPES[typeName]
8b095871
IC
21895}
21896
9987f0c1
IC
21897var EXTRA = require('./extra')
21898for (typeName in EXTRA) {
21899 typeforce[typeName] = EXTRA[typeName]
8b095871
IC
21900}
21901
9987f0c1
IC
21902// async wrapper
21903function __async (type, value, strict, callback) {
21904 // default to falsy strict if using shorthand overload
21905 if (typeof strict === 'function') return __async(type, value, false, strict)
8b095871 21906
9987f0c1
IC
21907 try {
21908 typeforce(type, value, strict)
21909 } catch (e) {
21910 return callback(e)
21911 }
8b095871 21912
9987f0c1
IC
21913 callback()
21914}
8b095871 21915
9987f0c1
IC
21916typeforce.async = __async
21917typeforce.compile = compile
21918typeforce.TfTypeError = TfTypeError
21919typeforce.TfPropertyTypeError = TfPropertyTypeError
8b095871 21920
9987f0c1 21921module.exports = typeforce
8b095871 21922
9987f0c1
IC
21923},{"./errors":107,"./extra":108,"./native":110}],110:[function(require,module,exports){
21924var types = {
21925 Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },
21926 Boolean: function (value) { return typeof value === 'boolean' },
21927 Function: function (value) { return typeof value === 'function' },
21928 Nil: function (value) { return value === undefined || value === null },
21929 Number: function (value) { return typeof value === 'number' },
21930 Object: function (value) { return typeof value === 'object' },
21931 String: function (value) { return typeof value === 'string' },
21932 '': function () { return true }
21933}
8b095871 21934
9987f0c1
IC
21935// TODO: deprecate
21936types.Null = types.Nil
8b095871 21937
9987f0c1
IC
21938for (var typeName in types) {
21939 types[typeName].toJSON = function (t) {
21940 return t
21941 }.bind(null, typeName)
21942}
8b095871 21943
9987f0c1 21944module.exports = types
8b095871 21945
9987f0c1
IC
21946},{}],111:[function(require,module,exports){
21947(function (Buffer){
21948'use strict'
8b095871 21949
9987f0c1
IC
21950// Number.MAX_SAFE_INTEGER
21951var MAX_SAFE_INTEGER = 9007199254740991
8b095871 21952
9987f0c1
IC
21953function checkUInt53 (n) {
21954 if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range')
8b095871
IC
21955}
21956
9987f0c1
IC
21957function encode (number, buffer, offset) {
21958 checkUInt53(number)
8b095871 21959
9987f0c1
IC
21960 if (!buffer) buffer = new Buffer(encodingLength(number))
21961 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
21962 if (!offset) offset = 0
8b095871 21963
9987f0c1
IC
21964 // 8 bit
21965 if (number < 0xfd) {
21966 buffer.writeUInt8(number, offset)
21967 encode.bytes = 1
8b095871 21968
9987f0c1
IC
21969 // 16 bit
21970 } else if (number <= 0xffff) {
21971 buffer.writeUInt8(0xfd, offset)
21972 buffer.writeUInt16LE(number, offset + 1)
21973 encode.bytes = 3
8b095871 21974
9987f0c1
IC
21975 // 32 bit
21976 } else if (number <= 0xffffffff) {
21977 buffer.writeUInt8(0xfe, offset)
21978 buffer.writeUInt32LE(number, offset + 1)
21979 encode.bytes = 5
8b095871 21980
9987f0c1
IC
21981 // 64 bit
21982 } else {
21983 buffer.writeUInt8(0xff, offset)
21984 buffer.writeUInt32LE(number >>> 0, offset + 1)
21985 buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
21986 encode.bytes = 9
ab78acc6 21987 }
8b095871 21988
9987f0c1 21989 return buffer
8b095871
IC
21990}
21991
9987f0c1
IC
21992function decode (buffer, offset) {
21993 if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance')
21994 if (!offset) offset = 0
8b095871 21995
9987f0c1 21996 var first = buffer.readUInt8(offset)
8b095871 21997
9987f0c1
IC
21998 // 8 bit
21999 if (first < 0xfd) {
22000 decode.bytes = 1
22001 return first
8b095871 22002
9987f0c1
IC
22003 // 16 bit
22004 } else if (first === 0xfd) {
22005 decode.bytes = 3
22006 return buffer.readUInt16LE(offset + 1)
8b095871 22007
9987f0c1
IC
22008 // 32 bit
22009 } else if (first === 0xfe) {
22010 decode.bytes = 5
22011 return buffer.readUInt32LE(offset + 1)
8b095871 22012
9987f0c1
IC
22013 // 64 bit
22014 } else {
22015 decode.bytes = 9
22016 var lo = buffer.readUInt32LE(offset + 1)
22017 var hi = buffer.readUInt32LE(offset + 5)
22018 var number = hi * 0x0100000000 + lo
22019 checkUInt53(number)
8b095871 22020
9987f0c1 22021 return number
8b095871 22022 }
ab78acc6
IC
22023}
22024
9987f0c1
IC
22025function encodingLength (number) {
22026 checkUInt53(number)
8b095871 22027
9987f0c1
IC
22028 return (
22029 number < 0xfd ? 1
22030 : number <= 0xffff ? 3
22031 : number <= 0xffffffff ? 5
22032 : 9
22033 )
ab78acc6 22034}
3af2954a 22035
9987f0c1 22036module.exports = { encode: encode, decode: decode, encodingLength: encodingLength }
3af2954a 22037
9987f0c1
IC
22038}).call(this,require("buffer").Buffer)
22039},{"buffer":4}],112:[function(require,module,exports){
22040(function (Buffer){
22041var bs58check = require('bs58check')
3af2954a 22042
9987f0c1
IC
22043function decodeRaw (buffer, version) {
22044 // check version only if defined
22045 if (version !== undefined && buffer[0] !== version) throw new Error('Invalid network version')
3af2954a 22046
9987f0c1
IC
22047 // uncompressed
22048 if (buffer.length === 33) {
22049 return {
22050 version: buffer[0],
22051 privateKey: buffer.slice(1, 33),
22052 compressed: false
ab78acc6 22053 }
9987f0c1 22054 }
8b095871 22055
9987f0c1
IC
22056 // invalid length
22057 if (buffer.length !== 34) throw new Error('Invalid WIF length')
8b095871 22058
9987f0c1
IC
22059 // invalid compression flag
22060 if (buffer[33] !== 0x01) throw new Error('Invalid compression flag')
8b095871 22061
9987f0c1
IC
22062 return {
22063 version: buffer[0],
22064 privateKey: buffer.slice(1, 33),
22065 compressed: true
22066 }
22067}
3af2954a 22068
9987f0c1
IC
22069function encodeRaw (version, privateKey, compressed) {
22070 var result = new Buffer(compressed ? 34 : 33)
8b095871 22071
9987f0c1
IC
22072 result.writeUInt8(version, 0)
22073 privateKey.copy(result, 1)
3af2954a 22074
9987f0c1
IC
22075 if (compressed) {
22076 result[33] = 0x01
22077 }
8b095871 22078
9987f0c1
IC
22079 return result
22080}
8b095871 22081
9987f0c1
IC
22082function decode (string, version) {
22083 return decodeRaw(bs58check.decode(string), version)
ab78acc6 22084}
3af2954a 22085
9987f0c1
IC
22086function encode (version, privateKey, compressed) {
22087 if (typeof version === 'number') return bs58check.encode(encodeRaw(version, privateKey, compressed))
8b095871 22088
9987f0c1
IC
22089 return bs58check.encode(
22090 encodeRaw(
22091 version.version,
22092 version.privateKey,
22093 version.compressed
22094 )
22095 )
ab78acc6 22096}
3af2954a 22097
9987f0c1
IC
22098module.exports = {
22099 decode: decode,
22100 decodeRaw: decodeRaw,
22101 encode: encode,
22102 encodeRaw: encodeRaw
22103}
8b095871
IC
22104
22105}).call(this,require("buffer").Buffer)
9987f0c1 22106},{"bs58check":80,"buffer":4}]},{},[33])(33)
8b095871 22107});</script>
9987f0c1
IC
22108 <script>bitcoinjs.bitcoin.networks.shadow = {
22109 messagePrefix: "unused",
8b095871
IC
22110 bip32: {
22111 public: 0xEE80286A,
22112 private: 0xEE8031E8
22113 },
22114 pubKeyHash: 0x3f,
22115 scriptHash: 0x7d,
22116 wif: 0xbf,
8b095871
IC
22117};
22118
9987f0c1
IC
22119bitcoinjs.bitcoin.networks.shadowtn = {
22120 messagePrefix: "unused",
8b095871
IC
22121 bip32: {
22122 public: 0x76C0FDFB,
22123 private: 0x76C1077A
22124 },
22125 pubKeyHash: 0x7f,
22126 scriptHash: 0xc4,
22127 wif: 0xff,
8b095871 22128};
3af2954a 22129
9987f0c1
IC
22130bitcoinjs.bitcoin.networks.clam = {
22131 messagePrefix: "unused",
8b095871
IC
22132 bip32: {
22133 public: 0xa8c26d64,
22134 private: 0xa8c17826
22135 },
22136 pubKeyHash: 0x89,
9987f0c1 22137 scriptHash: 0x00, // TODO set this correctly
8b095871
IC
22138 wif: 0x85,
22139};
3af2954a 22140
9987f0c1
IC
22141bitcoinjs.bitcoin.networks.crown = {
22142 messagePrefix: "unused",
0921f370 22143 bip32: {
22144 public: 0x0488b21e,
22145 private: 0x0488ade4
22146 },
22147 pubKeyHash: 0x00,
22148 scriptHash: 0x05,
22149 wif: 0x80,
22150};
22151
9987f0c1
IC
22152bitcoinjs.bitcoin.networks.dash = {
22153 messagePrefix: "unused",
8b095871
IC
22154 bip32: {
22155 public: 0x0488b21e,
22156 private: 0x0488ade4
22157 },
22158 pubKeyHash: 0x4c,
22159 scriptHash: 0x10,
22160 wif: 0xcc,
22161};
ab78acc6 22162
9987f0c1
IC
22163bitcoinjs.bitcoin.networks.dashtn = {
22164 messagePrefix: "unused",
c0386f3b
KR
22165 bip32: {
22166 public: 0x043587cf,
22167 private: 0x04358394
22168 },
22169 pubKeyHash: 0x8c,
22170 scriptHash: 0x13,
22171 wif: 0xef,
22172};
22173
9987f0c1
IC
22174bitcoinjs.bitcoin.networks.game = {
22175 messagePrefix: "unused",
f88fab20 22176 bip32: {
22177 public: 0x0488b21e,
22178 private: 0x0488ade4
22179 },
22180 pubKeyHash: 0x26,
22181 scriptHash: 0x05,
22182 wif: 0xa6,
22183};
22184
9987f0c1
IC
22185bitcoinjs.bitcoin.networks.namecoin = {
22186 messagePrefix: "unused",
8b095871
IC
22187 bip32: {
22188 public: 0x0488b21e,
22189 private: 0x0488ade4
22190 },
22191 pubKeyHash: 0x34,
9987f0c1 22192 scriptHash: 0x00, // TODO set this correctly
8b095871
IC
22193 wif: 0x80,
22194};
3af2954a 22195
9987f0c1
IC
22196bitcoinjs.bitcoin.networks.peercoin = {
22197 messagePrefix: "unused",
8b095871
IC
22198 bip32: {
22199 public: 0x0488b21e,
22200 private: 0x0488ade4
22201 },
22202 pubKeyHash: 0x37,
9987f0c1 22203 scriptHash: 0x00, // TODO set this correctly
8b095871
IC
22204 wif: 0xb7,
22205};
3af2954a 22206
9987f0c1
IC
22207bitcoinjs.bitcoin.networks.slimcoin = {
22208 messagePrefix: "unused",
01e81e53
GH
22209 bip32: {
22210 public: 0xef6adf10,
22211 private: 0xef69ea80
22212 },
22213 pubKeyHash: 0x3f,
22214 scriptHash: 0x7d,
22215 wif: 0x46,
22216};
22217
9987f0c1
IC
22218bitcoinjs.bitcoin.networks.slimcointn = {
22219 messagePrefix: "unused",
01e81e53
GH
22220 bip32: {
22221 public: 0x043587CF,
22222 private: 0x04358394
22223 },
22224 pubKeyHash: 0x6f,
22225 scriptHash: 0xc4,
22226 wif: 0x57,
22227};
22228
9987f0c1
IC
22229bitcoinjs.bitcoin.networks.dogecoin = {
22230 messagePrefix: '\x19Dogecoin Signed Message:\n',
22231 bip32: {
22232 public: 0x02facafd,
22233 private: 0x02fac398
22234 },
22235 pubKeyHash: 0x1e,
22236 scriptHash: 0x16,
22237 wif: 0x9e,
22238},
22239
22240bitcoinjs.bitcoin.networks.viacoin = {
22241 messagePrefix: '\x18Viacoin Signed Message:\n',
22242 bip32: {
22243 public: 0x0488b21e,
22244 private: 0x0488ade4
22245 },
22246 pubKeyHash: 0x47,
22247 scriptHash: 0x21,
22248 wif: 0xc7,
22249},
22250
22251bitcoinjs.bitcoin.networks.viacointestnet = {
22252 messagePrefix: '\x18Viacoin Signed Message:\n',
22253 bip32: {
22254 public: 0x043587cf,
22255 private: 0x04358394
22256 },
22257 pubKeyHash: 0x7f,
22258 scriptHash: 0xc4,
22259 wif: 0xff,
22260},
22261
22262bitcoinjs.bitcoin.networks.gamerscoin = {
22263 messagePrefix: '\x19Gamerscoin Signed Message:\n',
22264 bip32: {
22265 public: 0x019da462,
22266 private: 0x019d9cfe
22267 },
22268 pubKeyHash: 0x26,
22269 scriptHash: 0x05,
22270 wif: 0xA6,
22271},
22272
22273bitcoinjs.bitcoin.networks.jumbucks = {
22274 messagePrefix: '\x19Jumbucks Signed Message:\n',
22275 bip32: {
22276 public: 0x037a689a,
22277 private: 0x037a6460
22278 },
22279 pubKeyHash: 0x2b,
22280 scriptHash: 0x05,
22281 wif: 0xab,
22282},
22283
22284bitcoinjs.bitcoin.networks.zetacoin = {
22285 messagePrefix: '\x18Zetacoin Signed Message:\n',
22286 bip32: {
22287 public: 0x0488b21e,
22288 private: 0x0488ade4
22289 },
22290 pubKeyHash: 0x50,
22291 scriptHash: 0x09,
22292 wif: 0xe0,
22293}
b3cc3930
IC
22294
22295bitcoinjs.bitcoin.networks.myriadcoin = {
22296 messagePrefix: "unused",
22297 bip32: {
22298 public: 0x0488b21e,
22299 private: 0x0488ade4
22300 },
22301 pubKeyHash: 0x32,
22302 scriptHash: 0x00, // TODO set this correctly
22303 wif: 0xb2,
22304};
f128bd58
IC
22305
22306bitcoinjs.bitcoin.networks.pivx = {
22307 messagePrefix: "unused",
22308 bip32: {
22309 public: 0x022d2533,
22310 private: 0x0221312b
22311 },
22312 pubKeyHash: 0x1e,
22313 scriptHash: 0x0d,
22314 wif: 0xd4,
22315};
22316
22317bitcoinjs.bitcoin.networks.pivxtestnet = {
22318 messagePrefix: "unused",
22319 bip32: {
22320 public: 0x3a8061a0,
22321 private: 0x3a805837
22322 },
22323 pubKeyHash: 0x8b,
22324 scriptHash: 0x13,
22325 wif: 0xef,
22326};
8b095871
IC
22327</script>
22328 <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){
22329(function (global){
22330'use strict';
3af2954a 22331
8b095871
IC
22332// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
22333// original notice:
3af2954a 22334
8b095871
IC
22335/*!
22336 * The buffer module from node.js, for the browser.
22337 *
22338 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22339 * @license MIT
22340 */
22341function compare(a, b) {
22342 if (a === b) {
22343 return 0;
22344 }
3af2954a 22345
8b095871
IC
22346 var x = a.length;
22347 var y = b.length;
3af2954a 22348
8b095871
IC
22349 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
22350 if (a[i] !== b[i]) {
22351 x = a[i];
22352 y = b[i];
22353 break;
22354 }
22355 }
3af2954a 22356
8b095871
IC
22357 if (x < y) {
22358 return -1;
22359 }
22360 if (y < x) {
22361 return 1;
22362 }
22363 return 0;
ab78acc6 22364}
8b095871
IC
22365function isBuffer(b) {
22366 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
22367 return global.Buffer.isBuffer(b);
22368 }
22369 return !!(b != null && b._isBuffer);
ab78acc6 22370}
3af2954a 22371
8b095871
IC
22372// based on node assert, original notice:
22373
22374// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
22375//
22376// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
22377//
22378// Originally from narwhal.js (http://narwhaljs.org)
22379// Copyright (c) 2009 Thomas Robinson <280north.com>
22380//
22381// Permission is hereby granted, free of charge, to any person obtaining a copy
22382// of this software and associated documentation files (the 'Software'), to
22383// deal in the Software without restriction, including without limitation the
22384// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22385// sell copies of the Software, and to permit persons to whom the Software is
22386// furnished to do so, subject to the following conditions:
22387//
22388// The above copyright notice and this permission notice shall be included in
22389// all copies or substantial portions of the Software.
22390//
22391// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22392// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22393// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22394// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22395// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22396// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22397
22398var util = require('util/');
22399var hasOwn = Object.prototype.hasOwnProperty;
22400var pSlice = Array.prototype.slice;
22401var functionsHaveNames = (function () {
22402 return function foo() {}.name === 'foo';
22403}());
22404function pToString (obj) {
22405 return Object.prototype.toString.call(obj);
22406}
22407function isView(arrbuf) {
22408 if (isBuffer(arrbuf)) {
22409 return false;
ab78acc6 22410 }
8b095871
IC
22411 if (typeof global.ArrayBuffer !== 'function') {
22412 return false;
22413 }
22414 if (typeof ArrayBuffer.isView === 'function') {
22415 return ArrayBuffer.isView(arrbuf);
22416 }
22417 if (!arrbuf) {
22418 return false;
22419 }
22420 if (arrbuf instanceof DataView) {
22421 return true;
22422 }
22423 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
22424 return true;
22425 }
22426 return false;
ab78acc6 22427}
8b095871
IC
22428// 1. The assert module provides functions that throw
22429// AssertionError's when particular conditions are not met. The
22430// assert module must conform to the following interface.
3af2954a 22431
8b095871 22432var assert = module.exports = ok;
3af2954a 22433
8b095871
IC
22434// 2. The AssertionError is defined in assert.
22435// new assert.AssertionError({ message: message,
22436// actual: actual,
22437// expected: expected })
22438
22439var regex = /\s*function\s+([^\(\s]*)\s*/;
22440// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
22441function getName(func) {
22442 if (!util.isFunction(func)) {
22443 return;
22444 }
22445 if (functionsHaveNames) {
22446 return func.name;
22447 }
22448 var str = func.toString();
22449 var match = str.match(regex);
22450 return match && match[1];
ab78acc6 22451}
8b095871
IC
22452assert.AssertionError = function AssertionError(options) {
22453 this.name = 'AssertionError';
22454 this.actual = options.actual;
22455 this.expected = options.expected;
22456 this.operator = options.operator;
22457 if (options.message) {
22458 this.message = options.message;
22459 this.generatedMessage = false;
22460 } else {
22461 this.message = getMessage(this);
22462 this.generatedMessage = true;
22463 }
22464 var stackStartFunction = options.stackStartFunction || fail;
22465 if (Error.captureStackTrace) {
22466 Error.captureStackTrace(this, stackStartFunction);
22467 } else {
22468 // non v8 browsers so we can have a stacktrace
22469 var err = new Error();
22470 if (err.stack) {
22471 var out = err.stack;
22472
22473 // try to strip useless frames
22474 var fn_name = getName(stackStartFunction);
22475 var idx = out.indexOf('\n' + fn_name);
22476 if (idx >= 0) {
22477 // once we have located the function frame
22478 // we need to strip out everything before it (and its line)
22479 var next_line = out.indexOf('\n', idx + 1);
22480 out = out.substring(next_line + 1);
22481 }
3af2954a 22482
8b095871
IC
22483 this.stack = out;
22484 }
22485 }
22486};
3af2954a 22487
8b095871
IC
22488// assert.AssertionError instanceof Error
22489util.inherits(assert.AssertionError, Error);
3af2954a 22490
8b095871
IC
22491function truncate(s, n) {
22492 if (typeof s === 'string') {
22493 return s.length < n ? s : s.slice(0, n);
22494 } else {
22495 return s;
3af2954a 22496 }
ab78acc6 22497}
8b095871
IC
22498function inspect(something) {
22499 if (functionsHaveNames || !util.isFunction(something)) {
22500 return util.inspect(something);
22501 }
22502 var rawname = getName(something);
22503 var name = rawname ? ': ' + rawname : '';
22504 return '[Function' + name + ']';
22505}
22506function getMessage(self) {
22507 return truncate(inspect(self.actual), 128) + ' ' +
22508 self.operator + ' ' +
22509 truncate(inspect(self.expected), 128);
ab78acc6 22510}
3af2954a 22511
8b095871
IC
22512// At present only the three keys mentioned above are used and
22513// understood by the spec. Implementations or sub modules can pass
22514// other keys to the AssertionError's constructor - they will be
22515// ignored.
3af2954a 22516
8b095871
IC
22517// 3. All of the following functions must throw an AssertionError
22518// when a corresponding condition is not met, with a message that
22519// may be undefined if not provided. All assertion methods provide
22520// both the actual and expected values to the assertion error for
22521// display purposes.
3af2954a 22522
8b095871
IC
22523function fail(actual, expected, message, operator, stackStartFunction) {
22524 throw new assert.AssertionError({
22525 message: message,
22526 actual: actual,
22527 expected: expected,
22528 operator: operator,
22529 stackStartFunction: stackStartFunction
22530 });
ab78acc6 22531}
3af2954a 22532
8b095871
IC
22533// EXTENSION! allows for well behaved errors defined elsewhere.
22534assert.fail = fail;
3af2954a 22535
8b095871
IC
22536// 4. Pure assertion tests whether a value is truthy, as determined
22537// by !!guard.
22538// assert.ok(guard, message_opt);
22539// This statement is equivalent to assert.equal(true, !!guard,
22540// message_opt);. To test strictly for the value true, use
22541// assert.strictEqual(true, guard, message_opt);.
3af2954a 22542
8b095871
IC
22543function ok(value, message) {
22544 if (!value) fail(value, true, message, '==', assert.ok);
ab78acc6 22545}
8b095871 22546assert.ok = ok;
3af2954a 22547
8b095871
IC
22548// 5. The equality assertion tests shallow, coercive equality with
22549// ==.
22550// assert.equal(actual, expected, message_opt);
3af2954a 22551
8b095871
IC
22552assert.equal = function equal(actual, expected, message) {
22553 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
22554};
3af2954a 22555
8b095871
IC
22556// 6. The non-equality assertion tests for whether two objects are not equal
22557// with != assert.notEqual(actual, expected, message_opt);
3af2954a 22558
8b095871
IC
22559assert.notEqual = function notEqual(actual, expected, message) {
22560 if (actual == expected) {
22561 fail(actual, expected, message, '!=', assert.notEqual);
ab78acc6 22562 }
8b095871
IC
22563};
22564
22565// 7. The equivalence assertion tests a deep equality relation.
22566// assert.deepEqual(actual, expected, message_opt);
22567
22568assert.deepEqual = function deepEqual(actual, expected, message) {
22569 if (!_deepEqual(actual, expected, false)) {
22570 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
ab78acc6 22571 }
8b095871 22572};
3af2954a 22573
8b095871
IC
22574assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
22575 if (!_deepEqual(actual, expected, true)) {
22576 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
3af2954a 22577 }
8b095871
IC
22578};
22579
22580function _deepEqual(actual, expected, strict, memos) {
22581 // 7.1. All identical values are equivalent, as determined by ===.
22582 if (actual === expected) {
22583 return true;
22584 } else if (isBuffer(actual) && isBuffer(expected)) {
22585 return compare(actual, expected) === 0;
22586
22587 // 7.2. If the expected value is a Date object, the actual value is
22588 // equivalent if it is also a Date object that refers to the same time.
22589 } else if (util.isDate(actual) && util.isDate(expected)) {
22590 return actual.getTime() === expected.getTime();
22591
22592 // 7.3 If the expected value is a RegExp object, the actual value is
22593 // equivalent if it is also a RegExp object with the same source and
22594 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
22595 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
22596 return actual.source === expected.source &&
22597 actual.global === expected.global &&
22598 actual.multiline === expected.multiline &&
22599 actual.lastIndex === expected.lastIndex &&
22600 actual.ignoreCase === expected.ignoreCase;
22601
22602 // 7.4. Other pairs that do not both pass typeof value == 'object',
22603 // equivalence is determined by ==.
22604 } else if ((actual === null || typeof actual !== 'object') &&
22605 (expected === null || typeof expected !== 'object')) {
22606 return strict ? actual === expected : actual == expected;
22607
22608 // If both values are instances of typed arrays, wrap their underlying
22609 // ArrayBuffers in a Buffer each to increase performance
22610 // This optimization requires the arrays to have the same type as checked by
22611 // Object.prototype.toString (aka pToString). Never perform binary
22612 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
22613 // bit patterns are not identical.
22614 } else if (isView(actual) && isView(expected) &&
22615 pToString(actual) === pToString(expected) &&
22616 !(actual instanceof Float32Array ||
22617 actual instanceof Float64Array)) {
22618 return compare(new Uint8Array(actual.buffer),
22619 new Uint8Array(expected.buffer)) === 0;
22620
22621 // 7.5 For all other Object pairs, including Array objects, equivalence is
22622 // determined by having the same number of owned properties (as verified
22623 // with Object.prototype.hasOwnProperty.call), the same set of keys
22624 // (although not necessarily the same order), equivalent values for every
22625 // corresponding key, and an identical 'prototype' property. Note: this
22626 // accounts for both named and indexed properties on Arrays.
22627 } else if (isBuffer(actual) !== isBuffer(expected)) {
22628 return false;
22629 } else {
22630 memos = memos || {actual: [], expected: []};
3af2954a 22631
8b095871
IC
22632 var actualIndex = memos.actual.indexOf(actual);
22633 if (actualIndex !== -1) {
22634 if (actualIndex === memos.expected.indexOf(expected)) {
22635 return true;
ab78acc6 22636 }
3af2954a 22637 }
8b095871
IC
22638
22639 memos.actual.push(actual);
22640 memos.expected.push(expected);
22641
22642 return objEquiv(actual, expected, strict, memos);
3af2954a 22643 }
ab78acc6 22644}
3af2954a 22645
8b095871
IC
22646function isArguments(object) {
22647 return Object.prototype.toString.call(object) == '[object Arguments]';
ab78acc6 22648}
3af2954a 22649
8b095871
IC
22650function objEquiv(a, b, strict, actualVisitedObjects) {
22651 if (a === null || a === undefined || b === null || b === undefined)
22652 return false;
22653 // if one is a primitive, the other must be same
22654 if (util.isPrimitive(a) || util.isPrimitive(b))
22655 return a === b;
22656 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
22657 return false;
22658 var aIsArgs = isArguments(a);
22659 var bIsArgs = isArguments(b);
22660 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
22661 return false;
22662 if (aIsArgs) {
22663 a = pSlice.call(a);
22664 b = pSlice.call(b);
22665 return _deepEqual(a, b, strict);
22666 }
22667 var ka = objectKeys(a);
22668 var kb = objectKeys(b);
22669 var key, i;
22670 // having the same number of owned properties (keys incorporates
22671 // hasOwnProperty)
22672 if (ka.length !== kb.length)
22673 return false;
22674 //the same set of keys (although not necessarily the same order),
22675 ka.sort();
22676 kb.sort();
22677 //~~~cheap key test
22678 for (i = ka.length - 1; i >= 0; i--) {
22679 if (ka[i] !== kb[i])
22680 return false;
22681 }
22682 //equivalent values for every corresponding key, and
22683 //~~~possibly expensive deep test
22684 for (i = ka.length - 1; i >= 0; i--) {
22685 key = ka[i];
22686 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
22687 return false;
22688 }
22689 return true;
ab78acc6 22690}
3af2954a 22691
8b095871
IC
22692// 8. The non-equivalence assertion tests for any deep inequality.
22693// assert.notDeepEqual(actual, expected, message_opt);
3af2954a 22694
8b095871
IC
22695assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
22696 if (_deepEqual(actual, expected, false)) {
22697 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
3af2954a 22698 }
8b095871 22699};
3af2954a 22700
8b095871
IC
22701assert.notDeepStrictEqual = notDeepStrictEqual;
22702function notDeepStrictEqual(actual, expected, message) {
22703 if (_deepEqual(actual, expected, true)) {
22704 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
22705 }
ab78acc6 22706}
3af2954a 22707
3af2954a 22708
8b095871
IC
22709// 9. The strict equality assertion tests strict equality, as determined by ===.
22710// assert.strictEqual(actual, expected, message_opt);
3af2954a 22711
8b095871
IC
22712assert.strictEqual = function strictEqual(actual, expected, message) {
22713 if (actual !== expected) {
22714 fail(actual, expected, message, '===', assert.strictEqual);
22715 }
22716};
3af2954a 22717
8b095871
IC
22718// 10. The strict non-equality assertion tests for strict inequality, as
22719// determined by !==. assert.notStrictEqual(actual, expected, message_opt);
3af2954a 22720
8b095871
IC
22721assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
22722 if (actual === expected) {
22723 fail(actual, expected, message, '!==', assert.notStrictEqual);
22724 }
22725};
3af2954a 22726
8b095871
IC
22727function expectedException(actual, expected) {
22728 if (!actual || !expected) {
22729 return false;
22730 }
3af2954a 22731
8b095871
IC
22732 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
22733 return expected.test(actual);
22734 }
3af2954a 22735
8b095871
IC
22736 try {
22737 if (actual instanceof expected) {
22738 return true;
22739 }
22740 } catch (e) {
22741 // Ignore. The instanceof check doesn't work for arrow functions.
22742 }
3af2954a 22743
8b095871
IC
22744 if (Error.isPrototypeOf(expected)) {
22745 return false;
22746 }
22747
22748 return expected.call({}, actual) === true;
ab78acc6 22749}
3af2954a 22750
8b095871
IC
22751function _tryBlock(block) {
22752 var error;
22753 try {
22754 block();
22755 } catch (e) {
22756 error = e;
22757 }
22758 return error;
ab78acc6 22759}
3af2954a 22760
8b095871
IC
22761function _throws(shouldThrow, block, expected, message) {
22762 var actual;
22763
22764 if (typeof block !== 'function') {
22765 throw new TypeError('"block" argument must be a function');
3af2954a 22766 }
8b095871
IC
22767
22768 if (typeof expected === 'string') {
22769 message = expected;
22770 expected = null;
ab78acc6 22771 }
8b095871
IC
22772
22773 actual = _tryBlock(block);
22774
22775 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
22776 (message ? ' ' + message : '.');
22777
22778 if (shouldThrow && !actual) {
22779 fail(actual, expected, 'Missing expected exception' + message);
ab78acc6 22780 }
8b095871
IC
22781
22782 var userProvidedMessage = typeof message === 'string';
22783 var isUnwantedException = !shouldThrow && util.isError(actual);
22784 var isUnexpectedException = !shouldThrow && actual && !expected;
22785
22786 if ((isUnwantedException &&
22787 userProvidedMessage &&
22788 expectedException(actual, expected)) ||
22789 isUnexpectedException) {
22790 fail(actual, expected, 'Got unwanted exception' + message);
ab78acc6 22791 }
3af2954a 22792
8b095871
IC
22793 if ((shouldThrow && actual && expected &&
22794 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
22795 throw actual;
22796 }
ab78acc6 22797}
3af2954a 22798
8b095871
IC
22799// 11. Expected to throw an error:
22800// assert.throws(block, Error_opt, message_opt);
22801
22802assert.throws = function(block, /*optional*/error, /*optional*/message) {
22803 _throws(true, block, error, message);
22804};
22805
22806// EXTENSION! This is annoying to write outside this module.
22807assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
22808 _throws(false, block, error, message);
22809};
22810
22811assert.ifError = function(err) { if (err) throw err; };
22812
22813var objectKeys = Object.keys || function (obj) {
22814 var keys = [];
22815 for (var key in obj) {
22816 if (hasOwn.call(obj, key)) keys.push(key);
3af2954a 22817 }
8b095871
IC
22818 return keys;
22819};
3af2954a 22820
8b095871
IC
22821}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
22822},{"util/":30}],2:[function(require,module,exports){
22823'use strict'
22824
22825exports.byteLength = byteLength
22826exports.toByteArray = toByteArray
22827exports.fromByteArray = fromByteArray
22828
22829var lookup = []
22830var revLookup = []
22831var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
22832
22833var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
22834for (var i = 0, len = code.length; i < len; ++i) {
22835 lookup[i] = code[i]
22836 revLookup[code.charCodeAt(i)] = i
22837}
22838
22839revLookup['-'.charCodeAt(0)] = 62
22840revLookup['_'.charCodeAt(0)] = 63
22841
22842function placeHoldersCount (b64) {
22843 var len = b64.length
22844 if (len % 4 > 0) {
22845 throw new Error('Invalid string. Length must be a multiple of 4')
22846 }
22847
22848 // the number of equal signs (place holders)
22849 // if there are two placeholders, than the two characters before it
22850 // represent one byte
22851 // if there is only one, then the three characters before it represent 2 bytes
22852 // this is just a cheap hack to not do indexOf twice
22853 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
ab78acc6
IC
22854}
22855
8b095871
IC
22856function byteLength (b64) {
22857 // base64 is 4/3 + up to two characters of the original data
22858 return b64.length * 3 / 4 - placeHoldersCount(b64)
ab78acc6 22859}
3af2954a 22860
8b095871
IC
22861function toByteArray (b64) {
22862 var i, j, l, tmp, placeHolders, arr
22863 var len = b64.length
22864 placeHolders = placeHoldersCount(b64)
22865
22866 arr = new Arr(len * 3 / 4 - placeHolders)
22867
22868 // if there are placeholders, only get up to the last complete 4 chars
22869 l = placeHolders > 0 ? len - 4 : len
22870
22871 var L = 0
22872
22873 for (i = 0, j = 0; i < l; i += 4, j += 3) {
22874 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
22875 arr[L++] = (tmp >> 16) & 0xFF
22876 arr[L++] = (tmp >> 8) & 0xFF
22877 arr[L++] = tmp & 0xFF
22878 }
22879
22880 if (placeHolders === 2) {
22881 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
22882 arr[L++] = tmp & 0xFF
22883 } else if (placeHolders === 1) {
22884 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
22885 arr[L++] = (tmp >> 8) & 0xFF
22886 arr[L++] = tmp & 0xFF
22887 }
22888
22889 return arr
ab78acc6 22890}
3af2954a 22891
8b095871
IC
22892function tripletToBase64 (num) {
22893 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
ab78acc6 22894}
3af2954a 22895
8b095871
IC
22896function encodeChunk (uint8, start, end) {
22897 var tmp
22898 var output = []
22899 for (var i = start; i < end; i += 3) {
22900 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
22901 output.push(tripletToBase64(tmp))
22902 }
22903 return output.join('')
ab78acc6 22904}
3af2954a 22905
8b095871
IC
22906function fromByteArray (uint8) {
22907 var tmp
22908 var len = uint8.length
22909 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
22910 var output = ''
22911 var parts = []
22912 var maxChunkLength = 16383 // must be multiple of 3
22913
22914 // go through the array every three bytes, we'll deal with trailing stuff later
22915 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
22916 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
22917 }
22918
22919 // pad the end with zeros, but make sure to not forget the extra bytes
22920 if (extraBytes === 1) {
22921 tmp = uint8[len - 1]
22922 output += lookup[tmp >> 2]
22923 output += lookup[(tmp << 4) & 0x3F]
22924 output += '=='
22925 } else if (extraBytes === 2) {
22926 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
22927 output += lookup[tmp >> 10]
22928 output += lookup[(tmp >> 4) & 0x3F]
22929 output += lookup[(tmp << 2) & 0x3F]
22930 output += '='
22931 }
22932
22933 parts.push(output)
22934
22935 return parts.join('')
ab78acc6 22936}
3af2954a 22937
8b095871 22938},{}],3:[function(require,module,exports){
3af2954a 22939
8b095871
IC
22940},{}],4:[function(require,module,exports){
22941(function (global){
22942'use strict';
22943
22944var buffer = require('buffer');
22945var Buffer = buffer.Buffer;
22946var SlowBuffer = buffer.SlowBuffer;
22947var MAX_LEN = buffer.kMaxLength || 2147483647;
22948exports.alloc = function alloc(size, fill, encoding) {
22949 if (typeof Buffer.alloc === 'function') {
22950 return Buffer.alloc(size, fill, encoding);
ab78acc6 22951 }
8b095871
IC
22952 if (typeof encoding === 'number') {
22953 throw new TypeError('encoding must not be number');
22954 }
22955 if (typeof size !== 'number') {
22956 throw new TypeError('size must be a number');
22957 }
22958 if (size > MAX_LEN) {
22959 throw new RangeError('size is too large');
22960 }
22961 var enc = encoding;
22962 var _fill = fill;
22963 if (_fill === undefined) {
22964 enc = undefined;
22965 _fill = 0;
22966 }
22967 var buf = new Buffer(size);
22968 if (typeof _fill === 'string') {
22969 var fillBuf = new Buffer(_fill, enc);
22970 var flen = fillBuf.length;
22971 var i = -1;
22972 while (++i < size) {
22973 buf[i] = fillBuf[i % flen];
ab78acc6 22974 }
ab78acc6 22975 } else {
8b095871 22976 buf.fill(_fill);
ab78acc6 22977 }
8b095871 22978 return buf;
ab78acc6 22979}
8b095871
IC
22980exports.allocUnsafe = function allocUnsafe(size) {
22981 if (typeof Buffer.allocUnsafe === 'function') {
22982 return Buffer.allocUnsafe(size);
22983 }
22984 if (typeof size !== 'number') {
22985 throw new TypeError('size must be a number');
22986 }
22987 if (size > MAX_LEN) {
22988 throw new RangeError('size is too large');
22989 }
22990 return new Buffer(size);
ab78acc6 22991}
8b095871
IC
22992exports.from = function from(value, encodingOrOffset, length) {
22993 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
22994 return Buffer.from(value, encodingOrOffset, length);
22995 }
22996 if (typeof value === 'number') {
22997 throw new TypeError('"value" argument must not be a number');
22998 }
22999 if (typeof value === 'string') {
23000 return new Buffer(value, encodingOrOffset);
23001 }
23002 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
23003 var offset = encodingOrOffset;
23004 if (arguments.length === 1) {
23005 return new Buffer(value);
23006 }
23007 if (typeof offset === 'undefined') {
23008 offset = 0;
23009 }
23010 var len = length;
23011 if (typeof len === 'undefined') {
23012 len = value.byteLength - offset;
23013 }
23014 if (offset >= value.byteLength) {
23015 throw new RangeError('\'offset\' is out of bounds');
23016 }
23017 if (len > value.byteLength - offset) {
23018 throw new RangeError('\'length\' is out of bounds');
23019 }
23020 return new Buffer(value.slice(offset, offset + len));
23021 }
23022 if (Buffer.isBuffer(value)) {
23023 var out = new Buffer(value.length);
23024 value.copy(out, 0, 0, value.length);
23025 return out;
23026 }
23027 if (value) {
23028 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
23029 return new Buffer(value);
23030 }
23031 if (value.type === 'Buffer' && Array.isArray(value.data)) {
23032 return new Buffer(value.data);
23033 }
23034 }
3af2954a 23035
8b095871 23036 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
ab78acc6 23037}
8b095871
IC
23038exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
23039 if (typeof Buffer.allocUnsafeSlow === 'function') {
23040 return Buffer.allocUnsafeSlow(size);
23041 }
23042 if (typeof size !== 'number') {
23043 throw new TypeError('size must be a number');
23044 }
23045 if (size >= MAX_LEN) {
23046 throw new RangeError('size is too large');
23047 }
23048 return new SlowBuffer(size);
ab78acc6 23049}
3af2954a 23050
8b095871
IC
23051}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23052},{"buffer":5}],5:[function(require,module,exports){
23053/*!
23054 * The buffer module from node.js, for the browser.
23055 *
23056 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
23057 * @license MIT
23058 */
23059/* eslint-disable no-proto */
3af2954a 23060
8b095871 23061'use strict'
3af2954a 23062
8b095871
IC
23063var base64 = require('base64-js')
23064var ieee754 = require('ieee754')
3af2954a 23065
8b095871
IC
23066exports.Buffer = Buffer
23067exports.SlowBuffer = SlowBuffer
23068exports.INSPECT_MAX_BYTES = 50
23069
23070var K_MAX_LENGTH = 0x7fffffff
23071exports.kMaxLength = K_MAX_LENGTH
23072
23073/**
23074 * If `Buffer.TYPED_ARRAY_SUPPORT`:
23075 * === true Use Uint8Array implementation (fastest)
23076 * === false Print warning and recommend using `buffer` v4.x which has an Object
23077 * implementation (most compatible, even IE6)
23078 *
23079 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
23080 * Opera 11.6+, iOS 4.2+.
23081 *
23082 * We report that the browser does not support typed arrays if the are not subclassable
23083 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
23084 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
23085 * for __proto__ and has a buggy typed array implementation.
23086 */
23087Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
23088
23089if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
23090 typeof console.error === 'function') {
23091 console.error(
23092 'This browser lacks typed array (Uint8Array) support which is required by ' +
23093 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
23094 )
ab78acc6 23095}
3af2954a 23096
8b095871
IC
23097function typedArraySupport () {
23098 // Can typed array instances can be augmented?
23099 try {
23100 var arr = new Uint8Array(1)
23101 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
23102 return arr.foo() === 42
23103 } catch (e) {
23104 return false
23105 }
ab78acc6 23106}
3af2954a 23107
8b095871
IC
23108function createBuffer (length) {
23109 if (length > K_MAX_LENGTH) {
23110 throw new RangeError('Invalid typed array length')
3af2954a 23111 }
8b095871
IC
23112 // Return an augmented `Uint8Array` instance
23113 var buf = new Uint8Array(length)
23114 buf.__proto__ = Buffer.prototype
23115 return buf
ab78acc6 23116}
3af2954a 23117
8b095871
IC
23118/**
23119 * The Buffer constructor returns instances of `Uint8Array` that have their
23120 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
23121 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
23122 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
23123 * returns a single octet.
23124 *
23125 * The `Uint8Array` prototype remains unmodified.
23126 */
3af2954a 23127
8b095871
IC
23128function Buffer (arg, encodingOrOffset, length) {
23129 // Common case.
23130 if (typeof arg === 'number') {
23131 if (typeof encodingOrOffset === 'string') {
23132 throw new Error(
23133 'If encoding is specified then the first argument must be a string'
23134 )
23135 }
23136 return allocUnsafe(arg)
23137 }
23138 return from(arg, encodingOrOffset, length)
ab78acc6 23139}
3af2954a 23140
8b095871
IC
23141// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
23142if (typeof Symbol !== 'undefined' && Symbol.species &&
23143 Buffer[Symbol.species] === Buffer) {
23144 Object.defineProperty(Buffer, Symbol.species, {
23145 value: null,
23146 configurable: true,
23147 enumerable: false,
23148 writable: false
23149 })
ab78acc6 23150}
3af2954a 23151
8b095871 23152Buffer.poolSize = 8192 // not used by this implementation
3af2954a 23153
8b095871
IC
23154function from (value, encodingOrOffset, length) {
23155 if (typeof value === 'number') {
23156 throw new TypeError('"value" argument must not be a number')
23157 }
3af2954a 23158
8b095871
IC
23159 if (value instanceof ArrayBuffer) {
23160 return fromArrayBuffer(value, encodingOrOffset, length)
23161 }
3af2954a 23162
8b095871
IC
23163 if (typeof value === 'string') {
23164 return fromString(value, encodingOrOffset)
23165 }
3af2954a 23166
8b095871 23167 return fromObject(value)
ab78acc6 23168}
3af2954a 23169
8b095871
IC
23170/**
23171 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
23172 * if value is a number.
23173 * Buffer.from(str[, encoding])
23174 * Buffer.from(array)
23175 * Buffer.from(buffer)
23176 * Buffer.from(arrayBuffer[, byteOffset[, length]])
23177 **/
23178Buffer.from = function (value, encodingOrOffset, length) {
23179 return from(value, encodingOrOffset, length)
ab78acc6 23180}
3af2954a 23181
8b095871
IC
23182// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
23183// https://github.com/feross/buffer/pull/148
23184Buffer.prototype.__proto__ = Uint8Array.prototype
23185Buffer.__proto__ = Uint8Array
23186
23187function assertSize (size) {
23188 if (typeof size !== 'number') {
23189 throw new TypeError('"size" argument must be a number')
23190 } else if (size < 0) {
23191 throw new RangeError('"size" argument must not be negative')
23192 }
23193}
23194
23195function alloc (size, fill, encoding) {
23196 assertSize(size)
23197 if (size <= 0) {
23198 return createBuffer(size)
3af2954a 23199 }
8b095871
IC
23200 if (fill !== undefined) {
23201 // Only pay attention to encoding if it's a string. This
23202 // prevents accidentally sending in a number that would
23203 // be interpretted as a start offset.
23204 return typeof encoding === 'string'
23205 ? createBuffer(size).fill(fill, encoding)
23206 : createBuffer(size).fill(fill)
23207 }
23208 return createBuffer(size)
ab78acc6 23209}
3af2954a 23210
8b095871
IC
23211/**
23212 * Creates a new filled Buffer instance.
23213 * alloc(size[, fill[, encoding]])
23214 **/
23215Buffer.alloc = function (size, fill, encoding) {
23216 return alloc(size, fill, encoding)
ab78acc6 23217}
3af2954a 23218
8b095871
IC
23219function allocUnsafe (size) {
23220 assertSize(size)
23221 return createBuffer(size < 0 ? 0 : checked(size) | 0)
ab78acc6 23222}
3af2954a 23223
8b095871
IC
23224/**
23225 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
23226 * */
23227Buffer.allocUnsafe = function (size) {
23228 return allocUnsafe(size)
23229}
23230/**
23231 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
23232 */
23233Buffer.allocUnsafeSlow = function (size) {
23234 return allocUnsafe(size)
ab78acc6 23235}
3af2954a 23236
8b095871
IC
23237function fromString (string, encoding) {
23238 if (typeof encoding !== 'string' || encoding === '') {
23239 encoding = 'utf8'
23240 }
23241
23242 if (!Buffer.isEncoding(encoding)) {
23243 throw new TypeError('"encoding" must be a valid string encoding')
23244 }
23245
23246 var length = byteLength(string, encoding) | 0
23247 var buf = createBuffer(length)
23248
23249 var actual = buf.write(string, encoding)
23250
23251 if (actual !== length) {
23252 // Writing a hex string, for example, that contains invalid characters will
23253 // cause everything after the first invalid character to be ignored. (e.g.
23254 // 'abxxcd' will be treated as 'ab')
23255 buf = buf.slice(0, actual)
23256 }
23257
23258 return buf
ab78acc6 23259}
3af2954a 23260
8b095871
IC
23261function fromArrayLike (array) {
23262 var length = array.length < 0 ? 0 : checked(array.length) | 0
23263 var buf = createBuffer(length)
23264 for (var i = 0; i < length; i += 1) {
23265 buf[i] = array[i] & 255
23266 }
23267 return buf
23268}
3af2954a 23269
8b095871
IC
23270function fromArrayBuffer (array, byteOffset, length) {
23271 if (byteOffset < 0 || array.byteLength < byteOffset) {
23272 throw new RangeError('\'offset\' is out of bounds')
23273 }
3af2954a 23274
8b095871
IC
23275 if (array.byteLength < byteOffset + (length || 0)) {
23276 throw new RangeError('\'length\' is out of bounds')
ab78acc6
IC
23277 }
23278
8b095871
IC
23279 var buf
23280 if (byteOffset === undefined && length === undefined) {
23281 buf = new Uint8Array(array)
23282 } else if (length === undefined) {
23283 buf = new Uint8Array(array, byteOffset)
23284 } else {
23285 buf = new Uint8Array(array, byteOffset, length)
23286 }
3af2954a 23287
8b095871
IC
23288 // Return an augmented `Uint8Array` instance
23289 buf.__proto__ = Buffer.prototype
23290 return buf
23291}
23292
23293function fromObject (obj) {
23294 if (Buffer.isBuffer(obj)) {
23295 var len = checked(obj.length) | 0
23296 var buf = createBuffer(len)
23297
23298 if (buf.length === 0) {
23299 return buf
ab78acc6 23300 }
8b095871
IC
23301
23302 obj.copy(buf, 0, 0, len)
23303 return buf
23304 }
23305
23306 if (obj) {
23307 if (ArrayBuffer.isView(obj) || 'length' in obj) {
23308 if (typeof obj.length !== 'number' || isnan(obj.length)) {
23309 return createBuffer(0)
ab78acc6 23310 }
8b095871 23311 return fromArrayLike(obj)
ab78acc6 23312 }
3af2954a 23313
8b095871
IC
23314 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
23315 return fromArrayLike(obj.data)
3af2954a
IC
23316 }
23317 }
8b095871
IC
23318
23319 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
ab78acc6 23320}
3af2954a 23321
8b095871
IC
23322function checked (length) {
23323 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
23324 // length is NaN (which is otherwise coerced to zero.)
23325 if (length >= K_MAX_LENGTH) {
23326 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
23327 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
ab78acc6 23328 }
8b095871
IC
23329 return length | 0
23330}
23331
23332function SlowBuffer (length) {
23333 if (+length != length) { // eslint-disable-line eqeqeq
23334 length = 0
3af2954a 23335 }
8b095871 23336 return Buffer.alloc(+length)
ab78acc6 23337}
3af2954a 23338
8b095871
IC
23339Buffer.isBuffer = function isBuffer (b) {
23340 return b != null && b._isBuffer === true
ab78acc6 23341}
3af2954a 23342
8b095871
IC
23343Buffer.compare = function compare (a, b) {
23344 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
23345 throw new TypeError('Arguments must be Buffers')
23346 }
23347
23348 if (a === b) return 0
23349
23350 var x = a.length
23351 var y = b.length
23352
23353 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
23354 if (a[i] !== b[i]) {
23355 x = a[i]
23356 y = b[i]
23357 break
ab78acc6
IC
23358 }
23359 }
8b095871
IC
23360
23361 if (x < y) return -1
23362 if (y < x) return 1
23363 return 0
23364}
23365
23366Buffer.isEncoding = function isEncoding (encoding) {
23367 switch (String(encoding).toLowerCase()) {
23368 case 'hex':
23369 case 'utf8':
23370 case 'utf-8':
23371 case 'ascii':
23372 case 'latin1':
23373 case 'binary':
23374 case 'base64':
23375 case 'ucs2':
23376 case 'ucs-2':
23377 case 'utf16le':
23378 case 'utf-16le':
23379 return true
23380 default:
23381 return false
23382 }
ab78acc6
IC
23383}
23384
8b095871
IC
23385Buffer.concat = function concat (list, length) {
23386 if (!Array.isArray(list)) {
23387 throw new TypeError('"list" argument must be an Array of Buffers')
23388 }
ab78acc6 23389
8b095871
IC
23390 if (list.length === 0) {
23391 return Buffer.alloc(0)
23392 }
ab78acc6 23393
8b095871
IC
23394 var i
23395 if (length === undefined) {
23396 length = 0
23397 for (i = 0; i < list.length; ++i) {
23398 length += list[i].length
23399 }
3af2954a 23400 }
8b095871
IC
23401
23402 var buffer = Buffer.allocUnsafe(length)
23403 var pos = 0
23404 for (i = 0; i < list.length; ++i) {
23405 var buf = list[i]
23406 if (!Buffer.isBuffer(buf)) {
23407 throw new TypeError('"list" argument must be an Array of Buffers')
23408 }
23409 buf.copy(buffer, pos)
23410 pos += buf.length
ab78acc6 23411 }
8b095871 23412 return buffer
ab78acc6
IC
23413}
23414
8b095871
IC
23415function byteLength (string, encoding) {
23416 if (Buffer.isBuffer(string)) {
23417 return string.length
23418 }
23419 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
23420 return string.byteLength
23421 }
23422 if (typeof string !== 'string') {
23423 string = '' + string
23424 }
23425
23426 var len = string.length
23427 if (len === 0) return 0
23428
23429 // Use a for loop to avoid recursion
23430 var loweredCase = false
23431 for (;;) {
23432 switch (encoding) {
23433 case 'ascii':
23434 case 'latin1':
23435 case 'binary':
23436 return len
23437 case 'utf8':
23438 case 'utf-8':
23439 case undefined:
23440 return utf8ToBytes(string).length
23441 case 'ucs2':
23442 case 'ucs-2':
23443 case 'utf16le':
23444 case 'utf-16le':
23445 return len * 2
23446 case 'hex':
23447 return len >>> 1
23448 case 'base64':
23449 return base64ToBytes(string).length
23450 default:
23451 if (loweredCase) return utf8ToBytes(string).length // assume utf8
23452 encoding = ('' + encoding).toLowerCase()
23453 loweredCase = true
ab78acc6 23454 }
3af2954a 23455 }
ab78acc6 23456}
8b095871 23457Buffer.byteLength = byteLength
3af2954a 23458
8b095871
IC
23459function slowToString (encoding, start, end) {
23460 var loweredCase = false
3af2954a 23461
8b095871
IC
23462 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
23463 // property of a typed array.
3af2954a 23464
8b095871
IC
23465 // This behaves neither like String nor Uint8Array in that we set start/end
23466 // to their upper/lower bounds if the value passed is out of range.
23467 // undefined is handled specially as per ECMA-262 6th Edition,
23468 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
23469 if (start === undefined || start < 0) {
23470 start = 0
23471 }
23472 // Return early if start > this.length. Done here to prevent potential uint32
23473 // coercion fail below.
23474 if (start > this.length) {
23475 return ''
23476 }
3af2954a 23477
8b095871
IC
23478 if (end === undefined || end > this.length) {
23479 end = this.length
23480 }
3af2954a 23481
8b095871
IC
23482 if (end <= 0) {
23483 return ''
23484 }
3af2954a 23485
8b095871
IC
23486 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
23487 end >>>= 0
23488 start >>>= 0
3af2954a 23489
8b095871
IC
23490 if (end <= start) {
23491 return ''
3af2954a
IC
23492 }
23493
8b095871 23494 if (!encoding) encoding = 'utf8'
3af2954a 23495
8b095871
IC
23496 while (true) {
23497 switch (encoding) {
23498 case 'hex':
23499 return hexSlice(this, start, end)
23500
23501 case 'utf8':
23502 case 'utf-8':
23503 return utf8Slice(this, start, end)
23504
23505 case 'ascii':
23506 return asciiSlice(this, start, end)
23507
23508 case 'latin1':
23509 case 'binary':
23510 return latin1Slice(this, start, end)
23511
23512 case 'base64':
23513 return base64Slice(this, start, end)
23514
23515 case 'ucs2':
23516 case 'ucs-2':
23517 case 'utf16le':
23518 case 'utf-16le':
23519 return utf16leSlice(this, start, end)
23520
23521 default:
23522 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23523 encoding = (encoding + '').toLowerCase()
23524 loweredCase = true
23525 }
23526 }
ab78acc6 23527}
3af2954a 23528
8b095871
IC
23529// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
23530// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
23531// reliably in a browserify context because there could be multiple different
23532// copies of the 'buffer' package in use. This method works even for Buffer
23533// instances that were created from another copy of the `buffer` package.
23534// See: https://github.com/feross/buffer/issues/154
23535Buffer.prototype._isBuffer = true
23536
23537function swap (b, n, m) {
23538 var i = b[n]
23539 b[n] = b[m]
23540 b[m] = i
ab78acc6 23541}
3af2954a 23542
8b095871
IC
23543Buffer.prototype.swap16 = function swap16 () {
23544 var len = this.length
23545 if (len % 2 !== 0) {
23546 throw new RangeError('Buffer size must be a multiple of 16-bits')
23547 }
23548 for (var i = 0; i < len; i += 2) {
23549 swap(this, i, i + 1)
23550 }
23551 return this
23552}
3af2954a 23553
8b095871
IC
23554Buffer.prototype.swap32 = function swap32 () {
23555 var len = this.length
23556 if (len % 4 !== 0) {
23557 throw new RangeError('Buffer size must be a multiple of 32-bits')
23558 }
23559 for (var i = 0; i < len; i += 4) {
23560 swap(this, i, i + 3)
23561 swap(this, i + 1, i + 2)
23562 }
23563 return this
23564}
3af2954a 23565
8b095871
IC
23566Buffer.prototype.swap64 = function swap64 () {
23567 var len = this.length
23568 if (len % 8 !== 0) {
23569 throw new RangeError('Buffer size must be a multiple of 64-bits')
3af2954a 23570 }
8b095871
IC
23571 for (var i = 0; i < len; i += 8) {
23572 swap(this, i, i + 7)
23573 swap(this, i + 1, i + 6)
23574 swap(this, i + 2, i + 5)
23575 swap(this, i + 3, i + 4)
23576 }
23577 return this
23578}
3af2954a 23579
8b095871
IC
23580Buffer.prototype.toString = function toString () {
23581 var length = this.length
23582 if (length === 0) return ''
23583 if (arguments.length === 0) return utf8Slice(this, 0, length)
23584 return slowToString.apply(this, arguments)
ab78acc6 23585}
3af2954a 23586
8b095871
IC
23587Buffer.prototype.equals = function equals (b) {
23588 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
23589 if (this === b) return true
23590 return Buffer.compare(this, b) === 0
23591}
3af2954a 23592
8b095871
IC
23593Buffer.prototype.inspect = function inspect () {
23594 var str = ''
23595 var max = exports.INSPECT_MAX_BYTES
23596 if (this.length > 0) {
23597 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
23598 if (this.length > max) str += ' ... '
23599 }
23600 return '<Buffer ' + str + '>'
ab78acc6 23601}
3af2954a 23602
8b095871
IC
23603Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
23604 if (!Buffer.isBuffer(target)) {
23605 throw new TypeError('Argument must be a Buffer')
23606 }
3af2954a 23607
8b095871
IC
23608 if (start === undefined) {
23609 start = 0
23610 }
23611 if (end === undefined) {
23612 end = target ? target.length : 0
23613 }
23614 if (thisStart === undefined) {
23615 thisStart = 0
23616 }
23617 if (thisEnd === undefined) {
23618 thisEnd = this.length
23619 }
3af2954a 23620
8b095871
IC
23621 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
23622 throw new RangeError('out of range index')
23623 }
3af2954a 23624
8b095871
IC
23625 if (thisStart >= thisEnd && start >= end) {
23626 return 0
23627 }
23628 if (thisStart >= thisEnd) {
23629 return -1
23630 }
23631 if (start >= end) {
23632 return 1
23633 }
3af2954a 23634
8b095871
IC
23635 start >>>= 0
23636 end >>>= 0
23637 thisStart >>>= 0
23638 thisEnd >>>= 0
3af2954a 23639
8b095871 23640 if (this === target) return 0
3af2954a 23641
8b095871
IC
23642 var x = thisEnd - thisStart
23643 var y = end - start
23644 var len = Math.min(x, y)
23645
23646 var thisCopy = this.slice(thisStart, thisEnd)
23647 var targetCopy = target.slice(start, end)
23648
23649 for (var i = 0; i < len; ++i) {
23650 if (thisCopy[i] !== targetCopy[i]) {
23651 x = thisCopy[i]
23652 y = targetCopy[i]
23653 break
3af2954a 23654 }
8b095871
IC
23655 }
23656
23657 if (x < y) return -1
23658 if (y < x) return 1
23659 return 0
ab78acc6 23660}
3af2954a 23661
8b095871
IC
23662// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
23663// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
ab78acc6 23664//
8b095871
IC
23665// Arguments:
23666// - buffer - a Buffer to search
23667// - val - a string, Buffer, or number
23668// - byteOffset - an index into `buffer`; will be clamped to an int32
23669// - encoding - an optional encoding, relevant is val is a string
23670// - dir - true for indexOf, false for lastIndexOf
23671function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
23672 // Empty buffer means no match
23673 if (buffer.length === 0) return -1
23674
23675 // Normalize byteOffset
23676 if (typeof byteOffset === 'string') {
23677 encoding = byteOffset
23678 byteOffset = 0
23679 } else if (byteOffset > 0x7fffffff) {
23680 byteOffset = 0x7fffffff
23681 } else if (byteOffset < -0x80000000) {
23682 byteOffset = -0x80000000
23683 }
23684 byteOffset = +byteOffset // Coerce to Number.
23685 if (isNaN(byteOffset)) {
23686 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
23687 byteOffset = dir ? 0 : (buffer.length - 1)
23688 }
23689
23690 // Normalize byteOffset: negative offsets start from the end of the buffer
23691 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
23692 if (byteOffset >= buffer.length) {
23693 if (dir) return -1
23694 else byteOffset = buffer.length - 1
23695 } else if (byteOffset < 0) {
23696 if (dir) byteOffset = 0
23697 else return -1
23698 }
23699
23700 // Normalize val
23701 if (typeof val === 'string') {
23702 val = Buffer.from(val, encoding)
23703 }
3af2954a 23704
8b095871
IC
23705 // Finally, search either indexOf (if dir is true) or lastIndexOf
23706 if (Buffer.isBuffer(val)) {
23707 // Special case: looking for empty string/buffer always fails
23708 if (val.length === 0) {
23709 return -1
23710 }
23711 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
23712 } else if (typeof val === 'number') {
23713 val = val & 0xFF // Search for a byte value [0-255]
23714 if (typeof Uint8Array.prototype.indexOf === 'function') {
23715 if (dir) {
23716 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
23717 } else {
23718 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
23719 }
23720 }
23721 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
23722 }
3af2954a 23723
8b095871
IC
23724 throw new TypeError('val must be string, number or Buffer')
23725}
3af2954a 23726
8b095871
IC
23727function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
23728 var indexSize = 1
23729 var arrLength = arr.length
23730 var valLength = val.length
3af2954a 23731
8b095871
IC
23732 if (encoding !== undefined) {
23733 encoding = String(encoding).toLowerCase()
23734 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
23735 encoding === 'utf16le' || encoding === 'utf-16le') {
23736 if (arr.length < 2 || val.length < 2) {
23737 return -1
23738 }
23739 indexSize = 2
23740 arrLength /= 2
23741 valLength /= 2
23742 byteOffset /= 2
23743 }
23744 }
3af2954a 23745
8b095871
IC
23746 function read (buf, i) {
23747 if (indexSize === 1) {
23748 return buf[i]
23749 } else {
23750 return buf.readUInt16BE(i * indexSize)
23751 }
23752 }
3af2954a 23753
8b095871
IC
23754 var i
23755 if (dir) {
23756 var foundIndex = -1
23757 for (i = byteOffset; i < arrLength; i++) {
23758 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
23759 if (foundIndex === -1) foundIndex = i
23760 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
23761 } else {
23762 if (foundIndex !== -1) i -= i - foundIndex
23763 foundIndex = -1
23764 }
23765 }
ab78acc6 23766 } else {
8b095871
IC
23767 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
23768 for (i = byteOffset; i >= 0; i--) {
23769 var found = true
23770 for (var j = 0; j < valLength; j++) {
23771 if (read(arr, i + j) !== read(val, j)) {
23772 found = false
23773 break
23774 }
23775 }
23776 if (found) return i
23777 }
ab78acc6 23778 }
3af2954a 23779
8b095871
IC
23780 return -1
23781}
3af2954a 23782
8b095871
IC
23783Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
23784 return this.indexOf(val, byteOffset, encoding) !== -1
23785}
23786
23787Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
23788 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
23789}
3af2954a 23790
8b095871
IC
23791Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
23792 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
23793}
23794
23795function hexWrite (buf, string, offset, length) {
23796 offset = Number(offset) || 0
23797 var remaining = buf.length - offset
23798 if (!length) {
23799 length = remaining
23800 } else {
23801 length = Number(length)
23802 if (length > remaining) {
23803 length = remaining
3af2954a 23804 }
3af2954a
IC
23805 }
23806
8b095871
IC
23807 // must be an even number of digits
23808 var strLen = string.length
23809 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
3af2954a 23810
8b095871
IC
23811 if (length > strLen / 2) {
23812 length = strLen / 2
ab78acc6 23813 }
8b095871
IC
23814 for (var i = 0; i < length; ++i) {
23815 var parsed = parseInt(string.substr(i * 2, 2), 16)
23816 if (isNaN(parsed)) return i
23817 buf[offset + i] = parsed
ab78acc6 23818 }
8b095871 23819 return i
ab78acc6 23820}
3af2954a 23821
8b095871
IC
23822function utf8Write (buf, string, offset, length) {
23823 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
ab78acc6 23824}
3af2954a 23825
8b095871
IC
23826function asciiWrite (buf, string, offset, length) {
23827 return blitBuffer(asciiToBytes(string), buf, offset, length)
ab78acc6 23828}
3af2954a 23829
8b095871
IC
23830function latin1Write (buf, string, offset, length) {
23831 return asciiWrite(buf, string, offset, length)
ab78acc6 23832}
3af2954a 23833
8b095871
IC
23834function base64Write (buf, string, offset, length) {
23835 return blitBuffer(base64ToBytes(string), buf, offset, length)
ab78acc6 23836}
3af2954a 23837
8b095871
IC
23838function ucs2Write (buf, string, offset, length) {
23839 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
23840}
3af2954a 23841
8b095871
IC
23842Buffer.prototype.write = function write (string, offset, length, encoding) {
23843 // Buffer#write(string)
23844 if (offset === undefined) {
23845 encoding = 'utf8'
23846 length = this.length
23847 offset = 0
23848 // Buffer#write(string, encoding)
23849 } else if (length === undefined && typeof offset === 'string') {
23850 encoding = offset
23851 length = this.length
23852 offset = 0
23853 // Buffer#write(string, offset[, length][, encoding])
23854 } else if (isFinite(offset)) {
23855 offset = offset >>> 0
23856 if (isFinite(length)) {
23857 length = length >>> 0
23858 if (encoding === undefined) encoding = 'utf8'
23859 } else {
23860 encoding = length
23861 length = undefined
23862 }
23863 } else {
23864 throw new Error(
23865 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
23866 )
3af2954a
IC
23867 }
23868
8b095871
IC
23869 var remaining = this.length - offset
23870 if (length === undefined || length > remaining) length = remaining
3af2954a 23871
8b095871
IC
23872 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
23873 throw new RangeError('Attempt to write outside buffer bounds')
ab78acc6 23874 }
3af2954a 23875
8b095871 23876 if (!encoding) encoding = 'utf8'
3af2954a 23877
8b095871
IC
23878 var loweredCase = false
23879 for (;;) {
23880 switch (encoding) {
23881 case 'hex':
23882 return hexWrite(this, string, offset, length)
3af2954a 23883
8b095871
IC
23884 case 'utf8':
23885 case 'utf-8':
23886 return utf8Write(this, string, offset, length)
3af2954a 23887
8b095871
IC
23888 case 'ascii':
23889 return asciiWrite(this, string, offset, length)
3af2954a 23890
8b095871
IC
23891 case 'latin1':
23892 case 'binary':
23893 return latin1Write(this, string, offset, length)
3af2954a 23894
8b095871
IC
23895 case 'base64':
23896 // Warning: maxLength not taken into account in base64Write
23897 return base64Write(this, string, offset, length)
3af2954a 23898
8b095871
IC
23899 case 'ucs2':
23900 case 'ucs-2':
23901 case 'utf16le':
23902 case 'utf-16le':
23903 return ucs2Write(this, string, offset, length)
3af2954a 23904
8b095871
IC
23905 default:
23906 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
23907 encoding = ('' + encoding).toLowerCase()
23908 loweredCase = true
23909 }
3af2954a 23910 }
ab78acc6 23911}
3af2954a 23912
8b095871
IC
23913Buffer.prototype.toJSON = function toJSON () {
23914 return {
23915 type: 'Buffer',
23916 data: Array.prototype.slice.call(this._arr || this, 0)
3af2954a 23917 }
ab78acc6
IC
23918}
23919
8b095871
IC
23920function base64Slice (buf, start, end) {
23921 if (start === 0 && end === buf.length) {
23922 return base64.fromByteArray(buf)
23923 } else {
23924 return base64.fromByteArray(buf.slice(start, end))
3af2954a 23925 }
8b095871 23926}
3af2954a 23927
8b095871
IC
23928function utf8Slice (buf, start, end) {
23929 end = Math.min(buf.length, end)
23930 var res = []
3af2954a 23931
8b095871
IC
23932 var i = start
23933 while (i < end) {
23934 var firstByte = buf[i]
23935 var codePoint = null
23936 var bytesPerSequence = (firstByte > 0xEF) ? 4
23937 : (firstByte > 0xDF) ? 3
23938 : (firstByte > 0xBF) ? 2
23939 : 1
3af2954a 23940
8b095871
IC
23941 if (i + bytesPerSequence <= end) {
23942 var secondByte, thirdByte, fourthByte, tempCodePoint
3af2954a 23943
8b095871
IC
23944 switch (bytesPerSequence) {
23945 case 1:
23946 if (firstByte < 0x80) {
23947 codePoint = firstByte
23948 }
23949 break
23950 case 2:
23951 secondByte = buf[i + 1]
23952 if ((secondByte & 0xC0) === 0x80) {
23953 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
23954 if (tempCodePoint > 0x7F) {
23955 codePoint = tempCodePoint
23956 }
23957 }
23958 break
23959 case 3:
23960 secondByte = buf[i + 1]
23961 thirdByte = buf[i + 2]
23962 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
23963 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
23964 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
23965 codePoint = tempCodePoint
23966 }
23967 }
23968 break
23969 case 4:
23970 secondByte = buf[i + 1]
23971 thirdByte = buf[i + 2]
23972 fourthByte = buf[i + 3]
23973 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
23974 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
23975 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
23976 codePoint = tempCodePoint
23977 }
23978 }
23979 }
23980 }
3af2954a 23981
8b095871
IC
23982 if (codePoint === null) {
23983 // we did not generate a valid codePoint so insert a
23984 // replacement char (U+FFFD) and advance only 1 byte
23985 codePoint = 0xFFFD
23986 bytesPerSequence = 1
23987 } else if (codePoint > 0xFFFF) {
23988 // encode to utf16 (surrogate pair dance)
23989 codePoint -= 0x10000
23990 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
23991 codePoint = 0xDC00 | codePoint & 0x3FF
23992 }
23993
23994 res.push(codePoint)
23995 i += bytesPerSequence
3af2954a
IC
23996 }
23997
8b095871 23998 return decodeCodePointsArray(res)
ab78acc6 23999}
3af2954a 24000
8b095871
IC
24001// Based on http://stackoverflow.com/a/22747272/680742, the browser with
24002// the lowest limit is Chrome, with 0x10000 args.
24003// We go 1 magnitude less, for safety
24004var MAX_ARGUMENTS_LENGTH = 0x1000
3af2954a 24005
8b095871
IC
24006function decodeCodePointsArray (codePoints) {
24007 var len = codePoints.length
24008 if (len <= MAX_ARGUMENTS_LENGTH) {
24009 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
3af2954a
IC
24010 }
24011
8b095871
IC
24012 // Decode in chunks to avoid "call stack size exceeded".
24013 var res = ''
24014 var i = 0
24015 while (i < len) {
24016 res += String.fromCharCode.apply(
24017 String,
24018 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
24019 )
3af2954a 24020 }
8b095871
IC
24021 return res
24022}
3af2954a 24023
8b095871
IC
24024function asciiSlice (buf, start, end) {
24025 var ret = ''
24026 end = Math.min(buf.length, end)
3af2954a 24027
8b095871
IC
24028 for (var i = start; i < end; ++i) {
24029 ret += String.fromCharCode(buf[i] & 0x7F)
3af2954a 24030 }
8b095871
IC
24031 return ret
24032}
3af2954a 24033
8b095871
IC
24034function latin1Slice (buf, start, end) {
24035 var ret = ''
24036 end = Math.min(buf.length, end)
3af2954a 24037
8b095871
IC
24038 for (var i = start; i < end; ++i) {
24039 ret += String.fromCharCode(buf[i])
3af2954a 24040 }
8b095871 24041 return ret
ab78acc6 24042}
3af2954a 24043
8b095871
IC
24044function hexSlice (buf, start, end) {
24045 var len = buf.length
3af2954a 24046
8b095871
IC
24047 if (!start || start < 0) start = 0
24048 if (!end || end < 0 || end > len) end = len
3af2954a 24049
8b095871
IC
24050 var out = ''
24051 for (var i = start; i < end; ++i) {
24052 out += toHex(buf[i])
3af2954a 24053 }
8b095871
IC
24054 return out
24055}
3af2954a 24056
8b095871
IC
24057function utf16leSlice (buf, start, end) {
24058 var bytes = buf.slice(start, end)
24059 var res = ''
24060 for (var i = 0; i < bytes.length; i += 2) {
24061 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
24062 }
24063 return res
24064}
3af2954a 24065
8b095871
IC
24066Buffer.prototype.slice = function slice (start, end) {
24067 var len = this.length
24068 start = ~~start
24069 end = end === undefined ? len : ~~end
3af2954a 24070
8b095871
IC
24071 if (start < 0) {
24072 start += len
24073 if (start < 0) start = 0
24074 } else if (start > len) {
24075 start = len
24076 }
3af2954a 24077
8b095871
IC
24078 if (end < 0) {
24079 end += len
24080 if (end < 0) end = 0
24081 } else if (end > len) {
24082 end = len
24083 }
3af2954a 24084
8b095871 24085 if (end < start) end = start
3af2954a 24086
8b095871
IC
24087 var newBuf = this.subarray(start, end)
24088 // Return an augmented `Uint8Array` instance
24089 newBuf.__proto__ = Buffer.prototype
24090 return newBuf
24091}
3af2954a 24092
8b095871
IC
24093/*
24094 * Need to make sure that buffer isn't trying to write out of bounds.
ab78acc6 24095 */
8b095871
IC
24096function checkOffset (offset, ext, length) {
24097 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
24098 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
ab78acc6 24099}
3af2954a 24100
8b095871
IC
24101Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
24102 offset = offset >>> 0
24103 byteLength = byteLength >>> 0
24104 if (!noAssert) checkOffset(offset, byteLength, this.length)
24105
24106 var val = this[offset]
24107 var mul = 1
24108 var i = 0
24109 while (++i < byteLength && (mul *= 0x100)) {
24110 val += this[offset + i] * mul
3af2954a
IC
24111 }
24112
8b095871
IC
24113 return val
24114}
3af2954a 24115
8b095871
IC
24116Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
24117 offset = offset >>> 0
24118 byteLength = byteLength >>> 0
24119 if (!noAssert) {
24120 checkOffset(offset, byteLength, this.length)
ab78acc6 24121 }
3af2954a 24122
8b095871
IC
24123 var val = this[offset + --byteLength]
24124 var mul = 1
24125 while (byteLength > 0 && (mul *= 0x100)) {
24126 val += this[offset + --byteLength] * mul
ab78acc6 24127 }
3af2954a 24128
8b095871 24129 return val
ab78acc6 24130}
3af2954a 24131
8b095871
IC
24132Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
24133 offset = offset >>> 0
24134 if (!noAssert) checkOffset(offset, 1, this.length)
24135 return this[offset]
ab78acc6 24136}
3af2954a 24137
8b095871
IC
24138Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
24139 offset = offset >>> 0
24140 if (!noAssert) checkOffset(offset, 2, this.length)
24141 return this[offset] | (this[offset + 1] << 8)
24142}
3af2954a 24143
8b095871
IC
24144Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
24145 offset = offset >>> 0
24146 if (!noAssert) checkOffset(offset, 2, this.length)
24147 return (this[offset] << 8) | this[offset + 1]
24148}
3af2954a 24149
8b095871
IC
24150Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
24151 offset = offset >>> 0
24152 if (!noAssert) checkOffset(offset, 4, this.length)
24153
24154 return ((this[offset]) |
24155 (this[offset + 1] << 8) |
24156 (this[offset + 2] << 16)) +
24157 (this[offset + 3] * 0x1000000)
ab78acc6 24158}
3af2954a 24159
8b095871
IC
24160Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
24161 offset = offset >>> 0
24162 if (!noAssert) checkOffset(offset, 4, this.length)
3af2954a 24163
8b095871
IC
24164 return (this[offset] * 0x1000000) +
24165 ((this[offset + 1] << 16) |
24166 (this[offset + 2] << 8) |
24167 this[offset + 3])
24168}
3af2954a 24169
8b095871
IC
24170Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
24171 offset = offset >>> 0
24172 byteLength = byteLength >>> 0
24173 if (!noAssert) checkOffset(offset, byteLength, this.length)
3af2954a 24174
8b095871
IC
24175 var val = this[offset]
24176 var mul = 1
24177 var i = 0
24178 while (++i < byteLength && (mul *= 0x100)) {
24179 val += this[offset + i] * mul
3af2954a 24180 }
8b095871 24181 mul *= 0x80
3af2954a 24182
8b095871 24183 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
3af2954a 24184
8b095871 24185 return val
ab78acc6 24186}
3af2954a 24187
8b095871
IC
24188Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
24189 offset = offset >>> 0
24190 byteLength = byteLength >>> 0
24191 if (!noAssert) checkOffset(offset, byteLength, this.length)
3af2954a 24192
8b095871
IC
24193 var i = byteLength
24194 var mul = 1
24195 var val = this[offset + --i]
24196 while (i > 0 && (mul *= 0x100)) {
24197 val += this[offset + --i] * mul
3af2954a 24198 }
8b095871 24199 mul *= 0x80
3af2954a 24200
8b095871
IC
24201 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
24202
24203 return val
ab78acc6 24204}
3af2954a 24205
8b095871
IC
24206Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
24207 offset = offset >>> 0
24208 if (!noAssert) checkOffset(offset, 1, this.length)
24209 if (!(this[offset] & 0x80)) return (this[offset])
24210 return ((0xff - this[offset] + 1) * -1)
ab78acc6 24211}
3af2954a 24212
8b095871
IC
24213Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
24214 offset = offset >>> 0
24215 if (!noAssert) checkOffset(offset, 2, this.length)
24216 var val = this[offset] | (this[offset + 1] << 8)
24217 return (val & 0x8000) ? val | 0xFFFF0000 : val
ab78acc6 24218}
3af2954a 24219
8b095871
IC
24220Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
24221 offset = offset >>> 0
24222 if (!noAssert) checkOffset(offset, 2, this.length)
24223 var val = this[offset + 1] | (this[offset] << 8)
24224 return (val & 0x8000) ? val | 0xFFFF0000 : val
24225}
ab78acc6 24226
8b095871
IC
24227Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
24228 offset = offset >>> 0
24229 if (!noAssert) checkOffset(offset, 4, this.length)
3af2954a 24230
8b095871
IC
24231 return (this[offset]) |
24232 (this[offset + 1] << 8) |
24233 (this[offset + 2] << 16) |
24234 (this[offset + 3] << 24)
ab78acc6 24235}
3af2954a 24236
8b095871
IC
24237Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
24238 offset = offset >>> 0
24239 if (!noAssert) checkOffset(offset, 4, this.length)
3af2954a 24240
8b095871
IC
24241 return (this[offset] << 24) |
24242 (this[offset + 1] << 16) |
24243 (this[offset + 2] << 8) |
24244 (this[offset + 3])
24245}
3af2954a 24246
8b095871
IC
24247Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
24248 offset = offset >>> 0
24249 if (!noAssert) checkOffset(offset, 4, this.length)
24250 return ieee754.read(this, offset, true, 23, 4)
ab78acc6 24251}
3af2954a 24252
8b095871
IC
24253Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
24254 offset = offset >>> 0
24255 if (!noAssert) checkOffset(offset, 4, this.length)
24256 return ieee754.read(this, offset, false, 23, 4)
ab78acc6 24257}
3af2954a 24258
8b095871
IC
24259Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
24260 offset = offset >>> 0
24261 if (!noAssert) checkOffset(offset, 8, this.length)
24262 return ieee754.read(this, offset, true, 52, 8)
24263}
3af2954a 24264
8b095871
IC
24265Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
24266 offset = offset >>> 0
24267 if (!noAssert) checkOffset(offset, 8, this.length)
24268 return ieee754.read(this, offset, false, 52, 8)
ab78acc6 24269}
3af2954a 24270
8b095871
IC
24271function checkInt (buf, value, offset, ext, max, min) {
24272 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
24273 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
24274 if (offset + ext > buf.length) throw new RangeError('Index out of range')
ab78acc6 24275}
3af2954a 24276
8b095871
IC
24277Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
24278 value = +value
24279 offset = offset >>> 0
24280 byteLength = byteLength >>> 0
24281 if (!noAssert) {
24282 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24283 checkInt(this, value, offset, byteLength, maxBytes, 0)
3af2954a
IC
24284 }
24285
8b095871 24286 var mul = 1
ab78acc6 24287 var i = 0
8b095871
IC
24288 this[offset] = value & 0xFF
24289 while (++i < byteLength && (mul *= 0x100)) {
24290 this[offset + i] = (value / mul) & 0xFF
24291 }
3af2954a 24292
8b095871
IC
24293 return offset + byteLength
24294}
24295
24296Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
24297 value = +value
24298 offset = offset >>> 0
24299 byteLength = byteLength >>> 0
24300 if (!noAssert) {
24301 var maxBytes = Math.pow(2, 8 * byteLength) - 1
24302 checkInt(this, value, offset, byteLength, maxBytes, 0)
ab78acc6 24303 }
3af2954a 24304
8b095871
IC
24305 var i = byteLength - 1
24306 var mul = 1
24307 this[offset + i] = value & 0xFF
24308 while (--i >= 0 && (mul *= 0x100)) {
24309 this[offset + i] = (value / mul) & 0xFF
ab78acc6 24310 }
3af2954a 24311
8b095871
IC
24312 return offset + byteLength
24313}
24314
24315Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
24316 value = +value
24317 offset = offset >>> 0
24318 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
24319 this[offset] = (value & 0xff)
24320 return offset + 1
24321}
24322
24323Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
24324 value = +value
24325 offset = offset >>> 0
24326 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24327 this[offset] = (value & 0xff)
24328 this[offset + 1] = (value >>> 8)
24329 return offset + 2
24330}
24331
24332Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
24333 value = +value
24334 offset = offset >>> 0
24335 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
24336 this[offset] = (value >>> 8)
24337 this[offset + 1] = (value & 0xff)
24338 return offset + 2
ab78acc6 24339}
3af2954a 24340
8b095871
IC
24341Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
24342 value = +value
24343 offset = offset >>> 0
24344 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24345 this[offset + 3] = (value >>> 24)
24346 this[offset + 2] = (value >>> 16)
24347 this[offset + 1] = (value >>> 8)
24348 this[offset] = (value & 0xff)
24349 return offset + 4
ab78acc6 24350}
3af2954a 24351
8b095871
IC
24352Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
24353 value = +value
24354 offset = offset >>> 0
24355 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
24356 this[offset] = (value >>> 24)
24357 this[offset + 1] = (value >>> 16)
24358 this[offset + 2] = (value >>> 8)
24359 this[offset + 3] = (value & 0xff)
24360 return offset + 4
24361}
3af2954a 24362
8b095871
IC
24363Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
24364 value = +value
24365 offset = offset >>> 0
24366 if (!noAssert) {
24367 var limit = Math.pow(2, (8 * byteLength) - 1)
24368
24369 checkInt(this, value, offset, byteLength, limit - 1, -limit)
3af2954a
IC
24370 }
24371
8b095871
IC
24372 var i = 0
24373 var mul = 1
24374 var sub = 0
24375 this[offset] = value & 0xFF
24376 while (++i < byteLength && (mul *= 0x100)) {
24377 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
24378 sub = 1
ab78acc6 24379 }
8b095871 24380 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
3af2954a
IC
24381 }
24382
8b095871 24383 return offset + byteLength
ab78acc6 24384}
3af2954a 24385
8b095871
IC
24386Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
24387 value = +value
24388 offset = offset >>> 0
24389 if (!noAssert) {
24390 var limit = Math.pow(2, (8 * byteLength) - 1)
ab78acc6 24391
8b095871
IC
24392 checkInt(this, value, offset, byteLength, limit - 1, -limit)
24393 }
ab78acc6 24394
8b095871
IC
24395 var i = byteLength - 1
24396 var mul = 1
24397 var sub = 0
24398 this[offset + i] = value & 0xFF
24399 while (--i >= 0 && (mul *= 0x100)) {
24400 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
24401 sub = 1
3af2954a 24402 }
8b095871 24403 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
3af2954a 24404 }
3af2954a 24405
8b095871
IC
24406 return offset + byteLength
24407}
3af2954a 24408
8b095871
IC
24409Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
24410 value = +value
24411 offset = offset >>> 0
24412 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
24413 if (value < 0) value = 0xff + value + 1
24414 this[offset] = (value & 0xff)
24415 return offset + 1
24416}
3af2954a 24417
8b095871
IC
24418Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
24419 value = +value
24420 offset = offset >>> 0
24421 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24422 this[offset] = (value & 0xff)
24423 this[offset + 1] = (value >>> 8)
24424 return offset + 2
24425}
3af2954a 24426
8b095871
IC
24427Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
24428 value = +value
24429 offset = offset >>> 0
24430 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
24431 this[offset] = (value >>> 8)
24432 this[offset + 1] = (value & 0xff)
24433 return offset + 2
24434}
3af2954a 24435
8b095871
IC
24436Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
24437 value = +value
24438 offset = offset >>> 0
24439 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24440 this[offset] = (value & 0xff)
24441 this[offset + 1] = (value >>> 8)
24442 this[offset + 2] = (value >>> 16)
24443 this[offset + 3] = (value >>> 24)
24444 return offset + 4
24445}
3af2954a 24446
8b095871
IC
24447Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
24448 value = +value
24449 offset = offset >>> 0
24450 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
24451 if (value < 0) value = 0xffffffff + value + 1
24452 this[offset] = (value >>> 24)
24453 this[offset + 1] = (value >>> 16)
24454 this[offset + 2] = (value >>> 8)
24455 this[offset + 3] = (value & 0xff)
24456 return offset + 4
24457}
3af2954a 24458
8b095871
IC
24459function checkIEEE754 (buf, value, offset, ext, max, min) {
24460 if (offset + ext > buf.length) throw new RangeError('Index out of range')
24461 if (offset < 0) throw new RangeError('Index out of range')
24462}
3af2954a 24463
8b095871
IC
24464function writeFloat (buf, value, offset, littleEndian, noAssert) {
24465 value = +value
24466 offset = offset >>> 0
24467 if (!noAssert) {
24468 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
3af2954a 24469 }
8b095871
IC
24470 ieee754.write(buf, value, offset, littleEndian, 23, 4)
24471 return offset + 4
ab78acc6 24472}
3af2954a 24473
8b095871
IC
24474Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
24475 return writeFloat(this, value, offset, true, noAssert)
ab78acc6 24476}
3af2954a 24477
8b095871
IC
24478Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
24479 return writeFloat(this, value, offset, false, noAssert)
ab78acc6 24480}
3af2954a 24481
8b095871
IC
24482function writeDouble (buf, value, offset, littleEndian, noAssert) {
24483 value = +value
24484 offset = offset >>> 0
24485 if (!noAssert) {
24486 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
3af2954a 24487 }
8b095871
IC
24488 ieee754.write(buf, value, offset, littleEndian, 52, 8)
24489 return offset + 8
ab78acc6 24490}
3af2954a 24491
8b095871
IC
24492Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
24493 return writeDouble(this, value, offset, true, noAssert)
ab78acc6 24494}
3af2954a 24495
8b095871
IC
24496Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
24497 return writeDouble(this, value, offset, false, noAssert)
24498}
3af2954a 24499
8b095871
IC
24500// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
24501Buffer.prototype.copy = function copy (target, targetStart, start, end) {
24502 if (!start) start = 0
24503 if (!end && end !== 0) end = this.length
24504 if (targetStart >= target.length) targetStart = target.length
24505 if (!targetStart) targetStart = 0
24506 if (end > 0 && end < start) end = start
3af2954a 24507
8b095871
IC
24508 // Copy 0 bytes; we're done
24509 if (end === start) return 0
24510 if (target.length === 0 || this.length === 0) return 0
3af2954a 24511
8b095871
IC
24512 // Fatal error conditions
24513 if (targetStart < 0) {
24514 throw new RangeError('targetStart out of bounds')
3af2954a 24515 }
8b095871
IC
24516 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
24517 if (end < 0) throw new RangeError('sourceEnd out of bounds')
24518
24519 // Are we oob?
24520 if (end > this.length) end = this.length
24521 if (target.length - targetStart < end - start) {
24522 end = target.length - targetStart + start
3af2954a 24523 }
8b095871
IC
24524
24525 var len = end - start
24526 var i
24527
24528 if (this === target && start < targetStart && targetStart < end) {
24529 // descending copy from end
24530 for (i = len - 1; i >= 0; --i) {
24531 target[i + targetStart] = this[i + start]
3af2954a 24532 }
8b095871
IC
24533 } else if (len < 1000) {
24534 // ascending copy from start
24535 for (i = 0; i < len; ++i) {
24536 target[i + targetStart] = this[i + start]
24537 }
24538 } else {
24539 Uint8Array.prototype.set.call(
24540 target,
24541 this.subarray(start, start + len),
24542 targetStart
24543 )
3af2954a
IC
24544 }
24545
8b095871
IC
24546 return len
24547}
24548
24549// Usage:
24550// buffer.fill(number[, offset[, end]])
24551// buffer.fill(buffer[, offset[, end]])
24552// buffer.fill(string[, offset[, end]][, encoding])
24553Buffer.prototype.fill = function fill (val, start, end, encoding) {
24554 // Handle string cases:
24555 if (typeof val === 'string') {
24556 if (typeof start === 'string') {
24557 encoding = start
24558 start = 0
24559 end = this.length
24560 } else if (typeof end === 'string') {
24561 encoding = end
24562 end = this.length
24563 }
24564 if (val.length === 1) {
24565 var code = val.charCodeAt(0)
24566 if (code < 256) {
24567 val = code
3af2954a 24568 }
3af2954a 24569 }
8b095871
IC
24570 if (encoding !== undefined && typeof encoding !== 'string') {
24571 throw new TypeError('encoding must be a string')
24572 }
24573 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
24574 throw new TypeError('Unknown encoding: ' + encoding)
24575 }
24576 } else if (typeof val === 'number') {
24577 val = val & 255
ab78acc6 24578 }
3af2954a 24579
8b095871
IC
24580 // Invalid ranges are not set to a default, so can range check early.
24581 if (start < 0 || this.length < start || this.length < end) {
24582 throw new RangeError('Out of range index')
24583 }
3af2954a 24584
8b095871
IC
24585 if (end <= start) {
24586 return this
24587 }
3af2954a 24588
8b095871
IC
24589 start = start >>> 0
24590 end = end === undefined ? this.length : end >>> 0
3af2954a 24591
8b095871
IC
24592 if (!val) val = 0
24593
24594 var i
24595 if (typeof val === 'number') {
24596 for (i = start; i < end; ++i) {
24597 this[i] = val
24598 }
ab78acc6 24599 } else {
8b095871
IC
24600 var bytes = Buffer.isBuffer(val)
24601 ? val
24602 : new Buffer(val, encoding)
24603 var len = bytes.length
24604 for (i = 0; i < end - start; ++i) {
24605 this[i + start] = bytes[i % len]
ab78acc6
IC
24606 }
24607 }
3af2954a 24608
8b095871
IC
24609 return this
24610}
3af2954a 24611
8b095871
IC
24612// HELPER FUNCTIONS
24613// ================
24614
24615var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
24616
24617function base64clean (str) {
24618 // Node strips out invalid characters like \n and \t from the string, base64-js does not
24619 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
24620 // Node converts strings with length < 2 to ''
24621 if (str.length < 2) return ''
24622 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
24623 while (str.length % 4 !== 0) {
24624 str = str + '='
3af2954a 24625 }
8b095871 24626 return str
ab78acc6
IC
24627}
24628
8b095871
IC
24629function stringtrim (str) {
24630 if (str.trim) return str.trim()
24631 return str.replace(/^\s+|\s+$/g, '')
ab78acc6 24632}
3af2954a 24633
8b095871
IC
24634function toHex (n) {
24635 if (n < 16) return '0' + n.toString(16)
24636 return n.toString(16)
ab78acc6 24637}
3af2954a 24638
8b095871
IC
24639function utf8ToBytes (string, units) {
24640 units = units || Infinity
24641 var codePoint
24642 var length = string.length
24643 var leadSurrogate = null
24644 var bytes = []
3af2954a 24645
8b095871
IC
24646 for (var i = 0; i < length; ++i) {
24647 codePoint = string.charCodeAt(i)
3af2954a 24648
8b095871
IC
24649 // is surrogate component
24650 if (codePoint > 0xD7FF && codePoint < 0xE000) {
24651 // last char was a lead
24652 if (!leadSurrogate) {
24653 // no lead yet
24654 if (codePoint > 0xDBFF) {
24655 // unexpected trail
24656 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24657 continue
24658 } else if (i + 1 === length) {
24659 // unpaired lead
24660 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24661 continue
24662 }
3af2954a 24663
8b095871
IC
24664 // valid lead
24665 leadSurrogate = codePoint
24666
24667 continue
24668 }
24669
24670 // 2 leads in a row
24671 if (codePoint < 0xDC00) {
24672 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24673 leadSurrogate = codePoint
24674 continue
24675 }
24676
24677 // valid surrogate pair
24678 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
24679 } else if (leadSurrogate) {
24680 // valid bmp char, but last char was a lead
24681 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
24682 }
24683
24684 leadSurrogate = null
24685
24686 // encode utf8
24687 if (codePoint < 0x80) {
24688 if ((units -= 1) < 0) break
24689 bytes.push(codePoint)
24690 } else if (codePoint < 0x800) {
24691 if ((units -= 2) < 0) break
24692 bytes.push(
24693 codePoint >> 0x6 | 0xC0,
24694 codePoint & 0x3F | 0x80
24695 )
24696 } else if (codePoint < 0x10000) {
24697 if ((units -= 3) < 0) break
24698 bytes.push(
24699 codePoint >> 0xC | 0xE0,
24700 codePoint >> 0x6 & 0x3F | 0x80,
24701 codePoint & 0x3F | 0x80
24702 )
24703 } else if (codePoint < 0x110000) {
24704 if ((units -= 4) < 0) break
24705 bytes.push(
24706 codePoint >> 0x12 | 0xF0,
24707 codePoint >> 0xC & 0x3F | 0x80,
24708 codePoint >> 0x6 & 0x3F | 0x80,
24709 codePoint & 0x3F | 0x80
24710 )
ab78acc6 24711 } else {
8b095871 24712 throw new Error('Invalid code point')
ab78acc6 24713 }
3af2954a
IC
24714 }
24715
8b095871
IC
24716 return bytes
24717}
3af2954a 24718
8b095871
IC
24719function asciiToBytes (str) {
24720 var byteArray = []
24721 for (var i = 0; i < str.length; ++i) {
24722 // Node's code seems to be doing this and not & 0x7F..
24723 byteArray.push(str.charCodeAt(i) & 0xFF)
ab78acc6 24724 }
8b095871
IC
24725 return byteArray
24726}
3af2954a 24727
8b095871
IC
24728function utf16leToBytes (str, units) {
24729 var c, hi, lo
24730 var byteArray = []
24731 for (var i = 0; i < str.length; ++i) {
24732 if ((units -= 2) < 0) break
3af2954a 24733
8b095871
IC
24734 c = str.charCodeAt(i)
24735 hi = c >> 8
24736 lo = c % 256
24737 byteArray.push(lo)
24738 byteArray.push(hi)
24739 }
ebd8d4e8 24740
8b095871
IC
24741 return byteArray
24742}
24743
24744function base64ToBytes (str) {
24745 return base64.toByteArray(base64clean(str))
24746}
24747
24748function blitBuffer (src, dst, offset, length) {
24749 for (var i = 0; i < length; ++i) {
24750 if ((i + offset >= dst.length) || (i >= src.length)) break
24751 dst[i + offset] = src[i]
24752 }
24753 return i
24754}
24755
24756function isnan (val) {
24757 return val !== val // eslint-disable-line no-self-compare
24758}
24759
24760},{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
24761(function (Buffer){
24762// Copyright Joyent, Inc. and other Node contributors.
24763//
24764// Permission is hereby granted, free of charge, to any person obtaining a
24765// copy of this software and associated documentation files (the
24766// "Software"), to deal in the Software without restriction, including
24767// without limitation the rights to use, copy, modify, merge, publish,
24768// distribute, sublicense, and/or sell copies of the Software, and to permit
24769// persons to whom the Software is furnished to do so, subject to the
24770// following conditions:
24771//
24772// The above copyright notice and this permission notice shall be included
24773// in all copies or substantial portions of the Software.
24774//
24775// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24776// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24777// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24778// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24779// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24780// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24781// USE OR OTHER DEALINGS IN THE SOFTWARE.
24782
24783// NOTE: These type checking functions intentionally don't use `instanceof`
24784// because it is fragile and can be easily faked with `Object.create()`.
ebd8d4e8 24785
8b095871
IC
24786function isArray(arg) {
24787 if (Array.isArray) {
24788 return Array.isArray(arg);
24789 }
24790 return objectToString(arg) === '[object Array]';
24791}
24792exports.isArray = isArray;
ebd8d4e8 24793
8b095871
IC
24794function isBoolean(arg) {
24795 return typeof arg === 'boolean';
24796}
24797exports.isBoolean = isBoolean;
ebd8d4e8 24798
8b095871
IC
24799function isNull(arg) {
24800 return arg === null;
24801}
24802exports.isNull = isNull;
ebd8d4e8 24803
8b095871
IC
24804function isNullOrUndefined(arg) {
24805 return arg == null;
24806}
24807exports.isNullOrUndefined = isNullOrUndefined;
ebd8d4e8 24808
8b095871
IC
24809function isNumber(arg) {
24810 return typeof arg === 'number';
ab78acc6 24811}
8b095871 24812exports.isNumber = isNumber;
212b1b46 24813
8b095871
IC
24814function isString(arg) {
24815 return typeof arg === 'string';
ab78acc6 24816}
8b095871 24817exports.isString = isString;
212b1b46 24818
8b095871
IC
24819function isSymbol(arg) {
24820 return typeof arg === 'symbol';
ab78acc6 24821}
8b095871 24822exports.isSymbol = isSymbol;
ab78acc6 24823
8b095871
IC
24824function isUndefined(arg) {
24825 return arg === void 0;
24826}
24827exports.isUndefined = isUndefined;
ab78acc6 24828
8b095871
IC
24829function isRegExp(re) {
24830 return objectToString(re) === '[object RegExp]';
24831}
24832exports.isRegExp = isRegExp;
ab78acc6 24833
8b095871
IC
24834function isObject(arg) {
24835 return typeof arg === 'object' && arg !== null;
24836}
24837exports.isObject = isObject;
212b1b46 24838
8b095871
IC
24839function isDate(d) {
24840 return objectToString(d) === '[object Date]';
24841}
24842exports.isDate = isDate;
212b1b46 24843
8b095871
IC
24844function isError(e) {
24845 return (objectToString(e) === '[object Error]' || e instanceof Error);
24846}
24847exports.isError = isError;
212b1b46 24848
8b095871
IC
24849function isFunction(arg) {
24850 return typeof arg === 'function';
24851}
24852exports.isFunction = isFunction;
212b1b46 24853
8b095871
IC
24854function isPrimitive(arg) {
24855 return arg === null ||
24856 typeof arg === 'boolean' ||
24857 typeof arg === 'number' ||
24858 typeof arg === 'string' ||
24859 typeof arg === 'symbol' || // ES6 symbol
24860 typeof arg === 'undefined';
ab78acc6 24861}
8b095871 24862exports.isPrimitive = isPrimitive;
212b1b46 24863
8b095871 24864exports.isBuffer = Buffer.isBuffer;
ab78acc6 24865
8b095871
IC
24866function objectToString(o) {
24867 return Object.prototype.toString.call(o);
ab78acc6 24868}
212b1b46 24869
8b095871
IC
24870}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
24871},{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
24872// Copyright Joyent, Inc. and other Node contributors.
24873//
24874// Permission is hereby granted, free of charge, to any person obtaining a
24875// copy of this software and associated documentation files (the
24876// "Software"), to deal in the Software without restriction, including
24877// without limitation the rights to use, copy, modify, merge, publish,
24878// distribute, sublicense, and/or sell copies of the Software, and to permit
24879// persons to whom the Software is furnished to do so, subject to the
24880// following conditions:
24881//
24882// The above copyright notice and this permission notice shall be included
24883// in all copies or substantial portions of the Software.
24884//
24885// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24886// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24887// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
24888// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24889// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24890// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24891// USE OR OTHER DEALINGS IN THE SOFTWARE.
212b1b46 24892
8b095871
IC
24893function EventEmitter() {
24894 this._events = this._events || {};
24895 this._maxListeners = this._maxListeners || undefined;
ab78acc6 24896}
8b095871 24897module.exports = EventEmitter;
212b1b46 24898
8b095871
IC
24899// Backwards-compat with node 0.10.x
24900EventEmitter.EventEmitter = EventEmitter;
212b1b46 24901
8b095871
IC
24902EventEmitter.prototype._events = undefined;
24903EventEmitter.prototype._maxListeners = undefined;
212b1b46 24904
8b095871
IC
24905// By default EventEmitters will print a warning if more than 10 listeners are
24906// added to it. This is a useful default which helps finding memory leaks.
24907EventEmitter.defaultMaxListeners = 10;
212b1b46 24908
8b095871
IC
24909// Obviously not all Emitters should be limited to 10. This function allows
24910// that to be increased. Set to zero for unlimited.
24911EventEmitter.prototype.setMaxListeners = function(n) {
24912 if (!isNumber(n) || n < 0 || isNaN(n))
24913 throw TypeError('n must be a positive number');
24914 this._maxListeners = n;
24915 return this;
24916};
212b1b46 24917
8b095871
IC
24918EventEmitter.prototype.emit = function(type) {
24919 var er, handler, len, args, i, listeners;
212b1b46 24920
8b095871
IC
24921 if (!this._events)
24922 this._events = {};
212b1b46 24923
8b095871
IC
24924 // If there is no 'error' event listener then throw.
24925 if (type === 'error') {
24926 if (!this._events.error ||
24927 (isObject(this._events.error) && !this._events.error.length)) {
24928 er = arguments[1];
24929 if (er instanceof Error) {
24930 throw er; // Unhandled 'error' event
24931 } else {
24932 // At least give some kind of context to the user
24933 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
24934 err.context = er;
24935 throw err;
24936 }
24937 }
ab78acc6 24938 }
212b1b46 24939
8b095871 24940 handler = this._events[type];
212b1b46 24941
8b095871
IC
24942 if (isUndefined(handler))
24943 return false;
24944
24945 if (isFunction(handler)) {
24946 switch (arguments.length) {
24947 // fast cases
24948 case 1:
24949 handler.call(this);
24950 break;
24951 case 2:
24952 handler.call(this, arguments[1]);
24953 break;
24954 case 3:
24955 handler.call(this, arguments[1], arguments[2]);
24956 break;
24957 // slower
24958 default:
24959 args = Array.prototype.slice.call(arguments, 1);
24960 handler.apply(this, args);
3af2954a 24961 }
8b095871
IC
24962 } else if (isObject(handler)) {
24963 args = Array.prototype.slice.call(arguments, 1);
24964 listeners = handler.slice();
24965 len = listeners.length;
24966 for (i = 0; i < len; i++)
24967 listeners[i].apply(this, args);
3af2954a 24968 }
212b1b46 24969
8b095871
IC
24970 return true;
24971};
ebd8d4e8 24972
8b095871
IC
24973EventEmitter.prototype.addListener = function(type, listener) {
24974 var m;
ebd8d4e8 24975
8b095871
IC
24976 if (!isFunction(listener))
24977 throw TypeError('listener must be a function');
ebd8d4e8 24978
8b095871
IC
24979 if (!this._events)
24980 this._events = {};
3af2954a 24981
8b095871
IC
24982 // To avoid recursion in the case that type === "newListener"! Before
24983 // adding it to the listeners, first emit "newListener".
24984 if (this._events.newListener)
24985 this.emit('newListener', type,
24986 isFunction(listener.listener) ?
24987 listener.listener : listener);
3af2954a 24988
8b095871
IC
24989 if (!this._events[type])
24990 // Optimize the case of one listener. Don't need the extra array object.
24991 this._events[type] = listener;
24992 else if (isObject(this._events[type]))
24993 // If we've already got an array, just append.
24994 this._events[type].push(listener);
24995 else
24996 // Adding the second element, need to change to array.
24997 this._events[type] = [this._events[type], listener];
3af2954a 24998
8b095871
IC
24999 // Check for listener leak
25000 if (isObject(this._events[type]) && !this._events[type].warned) {
25001 if (!isUndefined(this._maxListeners)) {
25002 m = this._maxListeners;
25003 } else {
25004 m = EventEmitter.defaultMaxListeners;
25005 }
3af2954a 25006
8b095871
IC
25007 if (m && m > 0 && this._events[type].length > m) {
25008 this._events[type].warned = true;
25009 console.error('(node) warning: possible EventEmitter memory ' +
25010 'leak detected. %d listeners added. ' +
25011 'Use emitter.setMaxListeners() to increase limit.',
25012 this._events[type].length);
25013 if (typeof console.trace === 'function') {
25014 // not supported in IE 10
25015 console.trace();
25016 }
25017 }
3af2954a
IC
25018 }
25019
8b095871
IC
25020 return this;
25021};
3af2954a 25022
8b095871 25023EventEmitter.prototype.on = EventEmitter.prototype.addListener;
3af2954a 25024
8b095871
IC
25025EventEmitter.prototype.once = function(type, listener) {
25026 if (!isFunction(listener))
25027 throw TypeError('listener must be a function');
3af2954a 25028
8b095871 25029 var fired = false;
ebd8d4e8 25030
8b095871
IC
25031 function g() {
25032 this.removeListener(type, g);
3af2954a 25033
8b095871
IC
25034 if (!fired) {
25035 fired = true;
25036 listener.apply(this, arguments);
25037 }
25038 }
3af2954a 25039
8b095871
IC
25040 g.listener = listener;
25041 this.on(type, g);
ebd8d4e8 25042
8b095871
IC
25043 return this;
25044};
ebd8d4e8 25045
8b095871
IC
25046// emits a 'removeListener' event iff the listener was removed
25047EventEmitter.prototype.removeListener = function(type, listener) {
25048 var list, position, length, i;
ebd8d4e8 25049
8b095871
IC
25050 if (!isFunction(listener))
25051 throw TypeError('listener must be a function');
ebd8d4e8 25052
8b095871
IC
25053 if (!this._events || !this._events[type])
25054 return this;
ab78acc6 25055
8b095871
IC
25056 list = this._events[type];
25057 length = list.length;
25058 position = -1;
ebd8d4e8 25059
8b095871
IC
25060 if (list === listener ||
25061 (isFunction(list.listener) && list.listener === listener)) {
25062 delete this._events[type];
25063 if (this._events.removeListener)
25064 this.emit('removeListener', type, listener);
ebd8d4e8 25065
8b095871
IC
25066 } else if (isObject(list)) {
25067 for (i = length; i-- > 0;) {
25068 if (list[i] === listener ||
25069 (list[i].listener && list[i].listener === listener)) {
25070 position = i;
25071 break;
25072 }
25073 }
25074
25075 if (position < 0)
25076 return this;
25077
25078 if (list.length === 1) {
25079 list.length = 0;
25080 delete this._events[type];
25081 } else {
25082 list.splice(position, 1);
25083 }
25084
25085 if (this._events.removeListener)
25086 this.emit('removeListener', type, listener);
ab78acc6 25087 }
ebd8d4e8 25088
8b095871
IC
25089 return this;
25090};
ebd8d4e8 25091
8b095871
IC
25092EventEmitter.prototype.removeAllListeners = function(type) {
25093 var key, listeners;
ebd8d4e8 25094
8b095871
IC
25095 if (!this._events)
25096 return this;
ab78acc6 25097
8b095871
IC
25098 // not listening for removeListener, no need to emit
25099 if (!this._events.removeListener) {
25100 if (arguments.length === 0)
25101 this._events = {};
25102 else if (this._events[type])
25103 delete this._events[type];
25104 return this;
25105 }
ab78acc6 25106
8b095871
IC
25107 // emit removeListener for all listeners on all events
25108 if (arguments.length === 0) {
25109 for (key in this._events) {
25110 if (key === 'removeListener') continue;
25111 this.removeAllListeners(key);
25112 }
25113 this.removeAllListeners('removeListener');
25114 this._events = {};
25115 return this;
25116 }
ebd8d4e8 25117
8b095871 25118 listeners = this._events[type];
ebd8d4e8 25119
8b095871
IC
25120 if (isFunction(listeners)) {
25121 this.removeListener(type, listeners);
25122 } else if (listeners) {
25123 // LIFO order
25124 while (listeners.length)
25125 this.removeListener(type, listeners[listeners.length - 1]);
25126 }
25127 delete this._events[type];
ebd8d4e8 25128
8b095871
IC
25129 return this;
25130};
ebd8d4e8 25131
8b095871
IC
25132EventEmitter.prototype.listeners = function(type) {
25133 var ret;
25134 if (!this._events || !this._events[type])
25135 ret = [];
25136 else if (isFunction(this._events[type]))
25137 ret = [this._events[type]];
25138 else
25139 ret = this._events[type].slice();
25140 return ret;
25141};
ebd8d4e8 25142
8b095871
IC
25143EventEmitter.prototype.listenerCount = function(type) {
25144 if (this._events) {
25145 var evlistener = this._events[type];
ebd8d4e8 25146
8b095871
IC
25147 if (isFunction(evlistener))
25148 return 1;
25149 else if (evlistener)
25150 return evlistener.length;
25151 }
25152 return 0;
25153};
25154
25155EventEmitter.listenerCount = function(emitter, type) {
25156 return emitter.listenerCount(type);
25157};
25158
25159function isFunction(arg) {
25160 return typeof arg === 'function';
ebd8d4e8
IC
25161}
25162
8b095871
IC
25163function isNumber(arg) {
25164 return typeof arg === 'number';
ebd8d4e8
IC
25165}
25166
8b095871
IC
25167function isObject(arg) {
25168 return typeof arg === 'object' && arg !== null;
ebd8d4e8
IC
25169}
25170
8b095871
IC
25171function isUndefined(arg) {
25172 return arg === void 0;
ebd8d4e8
IC
25173}
25174
8b095871
IC
25175},{}],8:[function(require,module,exports){
25176exports.read = function (buffer, offset, isLE, mLen, nBytes) {
25177 var e, m
25178 var eLen = nBytes * 8 - mLen - 1
25179 var eMax = (1 << eLen) - 1
25180 var eBias = eMax >> 1
25181 var nBits = -7
25182 var i = isLE ? (nBytes - 1) : 0
25183 var d = isLE ? -1 : 1
25184 var s = buffer[offset + i]
ebd8d4e8 25185
8b095871 25186 i += d
ebd8d4e8 25187
8b095871
IC
25188 e = s & ((1 << (-nBits)) - 1)
25189 s >>= (-nBits)
25190 nBits += eLen
25191 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
ebd8d4e8 25192
8b095871
IC
25193 m = e & ((1 << (-nBits)) - 1)
25194 e >>= (-nBits)
25195 nBits += mLen
25196 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
ebd8d4e8 25197
8b095871
IC
25198 if (e === 0) {
25199 e = 1 - eBias
25200 } else if (e === eMax) {
25201 return m ? NaN : ((s ? -1 : 1) * Infinity)
25202 } else {
25203 m = m + Math.pow(2, mLen)
25204 e = e - eBias
ab78acc6 25205 }
8b095871 25206 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
ebd8d4e8
IC
25207}
25208
8b095871
IC
25209exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
25210 var e, m, c
25211 var eLen = nBytes * 8 - mLen - 1
25212 var eMax = (1 << eLen) - 1
25213 var eBias = eMax >> 1
25214 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
25215 var i = isLE ? 0 : (nBytes - 1)
25216 var d = isLE ? 1 : -1
25217 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
ebd8d4e8 25218
8b095871 25219 value = Math.abs(value)
ebd8d4e8 25220
8b095871
IC
25221 if (isNaN(value) || value === Infinity) {
25222 m = isNaN(value) ? 1 : 0
25223 e = eMax
ab78acc6 25224 } else {
8b095871
IC
25225 e = Math.floor(Math.log(value) / Math.LN2)
25226 if (value * (c = Math.pow(2, -e)) < 1) {
25227 e--
25228 c *= 2
25229 }
25230 if (e + eBias >= 1) {
25231 value += rt / c
25232 } else {
25233 value += rt * Math.pow(2, 1 - eBias)
25234 }
25235 if (value * c >= 2) {
25236 e++
25237 c /= 2
25238 }
ebd8d4e8 25239
8b095871
IC
25240 if (e + eBias >= eMax) {
25241 m = 0
25242 e = eMax
25243 } else if (e + eBias >= 1) {
25244 m = (value * c - 1) * Math.pow(2, mLen)
25245 e = e + eBias
25246 } else {
25247 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
25248 e = 0
25249 }
ebd8d4e8 25250 }
ebd8d4e8 25251
8b095871 25252 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
ebd8d4e8 25253
8b095871
IC
25254 e = (e << mLen) | m
25255 eLen += mLen
25256 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
ebd8d4e8 25257
8b095871 25258 buffer[offset + i - d] |= s * 128
ab78acc6
IC
25259}
25260
8b095871
IC
25261},{}],9:[function(require,module,exports){
25262if (typeof Object.create === 'function') {
25263 // implementation from standard node.js 'util' module
25264 module.exports = function inherits(ctor, superCtor) {
25265 ctor.super_ = superCtor
25266 ctor.prototype = Object.create(superCtor.prototype, {
25267 constructor: {
25268 value: ctor,
25269 enumerable: false,
25270 writable: true,
25271 configurable: true
25272 }
25273 });
25274 };
25275} else {
25276 // old school shim for old browsers
25277 module.exports = function inherits(ctor, superCtor) {
25278 ctor.super_ = superCtor
25279 var TempCtor = function () {}
25280 TempCtor.prototype = superCtor.prototype
25281 ctor.prototype = new TempCtor()
25282 ctor.prototype.constructor = ctor
ebd8d4e8 25283 }
8b095871 25284}
ab78acc6 25285
8b095871
IC
25286},{}],10:[function(require,module,exports){
25287/*!
25288 * Determine if an object is a Buffer
25289 *
25290 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
25291 * @license MIT
25292 */
ebd8d4e8 25293
8b095871
IC
25294// The _isBuffer check is for Safari 5-7 support, because it's missing
25295// Object.prototype.constructor. Remove this eventually
25296module.exports = function (obj) {
25297 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
ebd8d4e8
IC
25298}
25299
8b095871
IC
25300function isBuffer (obj) {
25301 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
25302}
ebd8d4e8 25303
8b095871
IC
25304// For Node v0.10 support. Remove this eventually.
25305function isSlowBuffer (obj) {
25306 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
25307}
ebd8d4e8 25308
8b095871
IC
25309},{}],11:[function(require,module,exports){
25310var toString = {}.toString;
ab78acc6 25311
8b095871
IC
25312module.exports = Array.isArray || function (arr) {
25313 return toString.call(arr) == '[object Array]';
25314};
ebd8d4e8 25315
8b095871
IC
25316},{}],12:[function(require,module,exports){
25317(function (process){
25318'use strict';
ebd8d4e8 25319
8b095871
IC
25320if (!process.version ||
25321 process.version.indexOf('v0.') === 0 ||
25322 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
25323 module.exports = nextTick;
25324} else {
25325 module.exports = process.nextTick;
25326}
25327
25328function nextTick(fn, arg1, arg2, arg3) {
25329 if (typeof fn !== 'function') {
25330 throw new TypeError('"callback" argument must be a function');
25331 }
25332 var len = arguments.length;
25333 var args, i;
25334 switch (len) {
25335 case 0:
25336 case 1:
25337 return process.nextTick(fn);
25338 case 2:
25339 return process.nextTick(function afterTickOne() {
25340 fn.call(null, arg1);
25341 });
25342 case 3:
25343 return process.nextTick(function afterTickTwo() {
25344 fn.call(null, arg1, arg2);
25345 });
25346 case 4:
25347 return process.nextTick(function afterTickThree() {
25348 fn.call(null, arg1, arg2, arg3);
25349 });
25350 default:
25351 args = new Array(len - 1);
25352 i = 0;
25353 while (i < args.length) {
25354 args[i++] = arguments[i];
25355 }
25356 return process.nextTick(function afterTick() {
25357 fn.apply(null, args);
25358 });
ab78acc6 25359 }
ebd8d4e8
IC
25360}
25361
8b095871
IC
25362}).call(this,require('_process'))
25363},{"_process":13}],13:[function(require,module,exports){
25364// shim for using process in browser
25365var process = module.exports = {};
ebd8d4e8 25366
8b095871
IC
25367// cached from whatever global is present so that test runners that stub it
25368// don't break things. But we need to wrap it in a try catch in case it is
25369// wrapped in strict mode code which doesn't define any globals. It's inside a
25370// function because try/catches deoptimize in certain engines.
ab78acc6 25371
8b095871
IC
25372var cachedSetTimeout;
25373var cachedClearTimeout;
ebd8d4e8 25374
8b095871
IC
25375function defaultSetTimout() {
25376 throw new Error('setTimeout has not been defined');
ab78acc6 25377}
8b095871
IC
25378function defaultClearTimeout () {
25379 throw new Error('clearTimeout has not been defined');
ab78acc6 25380}
8b095871
IC
25381(function () {
25382 try {
25383 if (typeof setTimeout === 'function') {
25384 cachedSetTimeout = setTimeout;
25385 } else {
25386 cachedSetTimeout = defaultSetTimout;
25387 }
25388 } catch (e) {
25389 cachedSetTimeout = defaultSetTimout;
25390 }
25391 try {
25392 if (typeof clearTimeout === 'function') {
25393 cachedClearTimeout = clearTimeout;
25394 } else {
25395 cachedClearTimeout = defaultClearTimeout;
25396 }
25397 } catch (e) {
25398 cachedClearTimeout = defaultClearTimeout;
25399 }
25400} ())
25401function runTimeout(fun) {
25402 if (cachedSetTimeout === setTimeout) {
25403 //normal enviroments in sane situations
25404 return setTimeout(fun, 0);
25405 }
25406 // if setTimeout wasn't available but was latter defined
25407 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
25408 cachedSetTimeout = setTimeout;
25409 return setTimeout(fun, 0);
25410 }
25411 try {
25412 // when when somebody has screwed with setTimeout but no I.E. maddness
25413 return cachedSetTimeout(fun, 0);
25414 } catch(e){
25415 try {
25416 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25417 return cachedSetTimeout.call(null, fun, 0);
25418 } catch(e){
25419 // 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
25420 return cachedSetTimeout.call(this, fun, 0);
25421 }
25422 }
25423
ebd8d4e8 25424
ab78acc6 25425}
8b095871
IC
25426function runClearTimeout(marker) {
25427 if (cachedClearTimeout === clearTimeout) {
25428 //normal enviroments in sane situations
25429 return clearTimeout(marker);
25430 }
25431 // if clearTimeout wasn't available but was latter defined
25432 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
25433 cachedClearTimeout = clearTimeout;
25434 return clearTimeout(marker);
25435 }
25436 try {
25437 // when when somebody has screwed with setTimeout but no I.E. maddness
25438 return cachedClearTimeout(marker);
25439 } catch (e){
25440 try {
25441 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
25442 return cachedClearTimeout.call(null, marker);
25443 } catch (e){
25444 // 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.
25445 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
25446 return cachedClearTimeout.call(this, marker);
25447 }
25448 }
25449
25450
ebd8d4e8 25451
ab78acc6 25452}
8b095871
IC
25453var queue = [];
25454var draining = false;
25455var currentQueue;
25456var queueIndex = -1;
ebd8d4e8 25457
8b095871
IC
25458function cleanUpNextTick() {
25459 if (!draining || !currentQueue) {
25460 return;
25461 }
25462 draining = false;
25463 if (currentQueue.length) {
25464 queue = currentQueue.concat(queue);
25465 } else {
25466 queueIndex = -1;
25467 }
25468 if (queue.length) {
25469 drainQueue();
25470 }
ebd8d4e8
IC
25471}
25472
8b095871
IC
25473function drainQueue() {
25474 if (draining) {
25475 return;
25476 }
25477 var timeout = runTimeout(cleanUpNextTick);
25478 draining = true;
25479
25480 var len = queue.length;
25481 while(len) {
25482 currentQueue = queue;
25483 queue = [];
25484 while (++queueIndex < len) {
25485 if (currentQueue) {
25486 currentQueue[queueIndex].run();
25487 }
25488 }
25489 queueIndex = -1;
25490 len = queue.length;
25491 }
25492 currentQueue = null;
25493 draining = false;
25494 runClearTimeout(timeout);
ebd8d4e8
IC
25495}
25496
8b095871
IC
25497process.nextTick = function (fun) {
25498 var args = new Array(arguments.length - 1);
25499 if (arguments.length > 1) {
25500 for (var i = 1; i < arguments.length; i++) {
25501 args[i - 1] = arguments[i];
25502 }
25503 }
25504 queue.push(new Item(fun, args));
25505 if (queue.length === 1 && !draining) {
25506 runTimeout(drainQueue);
25507 }
25508};
25509
25510// v8 likes predictible objects
25511function Item(fun, array) {
25512 this.fun = fun;
25513 this.array = array;
ab78acc6 25514}
8b095871
IC
25515Item.prototype.run = function () {
25516 this.fun.apply(null, this.array);
25517};
25518process.title = 'browser';
25519process.browser = true;
25520process.env = {};
25521process.argv = [];
25522process.version = ''; // empty string to avoid regexp issues
25523process.versions = {};
ebd8d4e8 25524
8b095871
IC
25525function noop() {}
25526
25527process.on = noop;
25528process.addListener = noop;
25529process.once = noop;
25530process.off = noop;
25531process.removeListener = noop;
25532process.removeAllListeners = noop;
25533process.emit = noop;
25534
25535process.binding = function (name) {
25536 throw new Error('process.binding is not supported');
25537};
25538
25539process.cwd = function () { return '/' };
25540process.chdir = function (dir) {
25541 throw new Error('process.chdir is not supported');
25542};
25543process.umask = function() { return 0; };
25544
25545},{}],14:[function(require,module,exports){
25546module.exports = require("./lib/_stream_duplex.js")
25547
25548},{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
25549// a duplex stream is just a stream that is both readable and writable.
25550// Since JS doesn't have multiple prototypal inheritance, this class
25551// prototypally inherits from Readable, and then parasitically from
25552// Writable.
25553
25554'use strict';
25555
25556/*<replacement>*/
ab78acc6 25557
8b095871
IC
25558var objectKeys = Object.keys || function (obj) {
25559 var keys = [];
25560 for (var key in obj) {
25561 keys.push(key);
25562 }return keys;
25563};
25564/*</replacement>*/
ebd8d4e8 25565
8b095871 25566module.exports = Duplex;
ebd8d4e8 25567
8b095871
IC
25568/*<replacement>*/
25569var processNextTick = require('process-nextick-args');
25570/*</replacement>*/
ebd8d4e8 25571
8b095871
IC
25572/*<replacement>*/
25573var util = require('core-util-is');
25574util.inherits = require('inherits');
25575/*</replacement>*/
ebd8d4e8 25576
8b095871
IC
25577var Readable = require('./_stream_readable');
25578var Writable = require('./_stream_writable');
ebd8d4e8 25579
8b095871
IC
25580util.inherits(Duplex, Readable);
25581
25582var keys = objectKeys(Writable.prototype);
25583for (var v = 0; v < keys.length; v++) {
25584 var method = keys[v];
25585 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
ab78acc6 25586}
ebd8d4e8 25587
8b095871
IC
25588function Duplex(options) {
25589 if (!(this instanceof Duplex)) return new Duplex(options);
ebd8d4e8 25590
8b095871
IC
25591 Readable.call(this, options);
25592 Writable.call(this, options);
ebd8d4e8 25593
8b095871 25594 if (options && options.readable === false) this.readable = false;
ebd8d4e8 25595
8b095871 25596 if (options && options.writable === false) this.writable = false;
ebd8d4e8 25597
8b095871
IC
25598 this.allowHalfOpen = true;
25599 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
ebd8d4e8 25600
8b095871 25601 this.once('end', onend);
ebd8d4e8
IC
25602}
25603
8b095871
IC
25604// the no-half-open enforcer
25605function onend() {
25606 // if we allow half-open state, or if the writable side ended,
25607 // then we're ok.
25608 if (this.allowHalfOpen || this._writableState.ended) return;
25609
25610 // no more data can be written.
25611 // But allow more writes to happen in this tick.
25612 processNextTick(onEndNT, this);
ebd8d4e8
IC
25613}
25614
8b095871
IC
25615function onEndNT(self) {
25616 self.end();
25617}
ebd8d4e8 25618
8b095871
IC
25619function forEach(xs, f) {
25620 for (var i = 0, l = xs.length; i < l; i++) {
25621 f(xs[i], i);
25622 }
25623}
25624},{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
25625// a passthrough stream.
25626// basically just the most minimal sort of Transform stream.
25627// Every written chunk gets output as-is.
ebd8d4e8 25628
8b095871 25629'use strict';
ebd8d4e8 25630
8b095871 25631module.exports = PassThrough;
ebd8d4e8 25632
8b095871 25633var Transform = require('./_stream_transform');
ebd8d4e8 25634
8b095871
IC
25635/*<replacement>*/
25636var util = require('core-util-is');
25637util.inherits = require('inherits');
25638/*</replacement>*/
ebd8d4e8 25639
8b095871 25640util.inherits(PassThrough, Transform);
ebd8d4e8 25641
8b095871
IC
25642function PassThrough(options) {
25643 if (!(this instanceof PassThrough)) return new PassThrough(options);
ebd8d4e8 25644
8b095871 25645 Transform.call(this, options);
ebd8d4e8
IC
25646}
25647
8b095871
IC
25648PassThrough.prototype._transform = function (chunk, encoding, cb) {
25649 cb(null, chunk);
25650};
25651},{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
25652(function (process){
25653'use strict';
ebd8d4e8 25654
8b095871 25655module.exports = Readable;
ebd8d4e8 25656
8b095871
IC
25657/*<replacement>*/
25658var processNextTick = require('process-nextick-args');
25659/*</replacement>*/
ebd8d4e8 25660
8b095871
IC
25661/*<replacement>*/
25662var isArray = require('isarray');
25663/*</replacement>*/
ebd8d4e8 25664
8b095871
IC
25665/*<replacement>*/
25666var Duplex;
25667/*</replacement>*/
ebd8d4e8 25668
8b095871 25669Readable.ReadableState = ReadableState;
ebd8d4e8 25670
8b095871
IC
25671/*<replacement>*/
25672var EE = require('events').EventEmitter;
ebd8d4e8 25673
8b095871
IC
25674var EElistenerCount = function (emitter, type) {
25675 return emitter.listeners(type).length;
25676};
25677/*</replacement>*/
ebd8d4e8 25678
8b095871
IC
25679/*<replacement>*/
25680var Stream;
25681(function () {
25682 try {
25683 Stream = require('st' + 'ream');
25684 } catch (_) {} finally {
25685 if (!Stream) Stream = require('events').EventEmitter;
25686 }
25687})();
25688/*</replacement>*/
ebd8d4e8 25689
8b095871
IC
25690var Buffer = require('buffer').Buffer;
25691/*<replacement>*/
25692var bufferShim = require('buffer-shims');
25693/*</replacement>*/
ab78acc6 25694
8b095871
IC
25695/*<replacement>*/
25696var util = require('core-util-is');
25697util.inherits = require('inherits');
25698/*</replacement>*/
ab78acc6 25699
8b095871
IC
25700/*<replacement>*/
25701var debugUtil = require('util');
25702var debug = void 0;
25703if (debugUtil && debugUtil.debuglog) {
25704 debug = debugUtil.debuglog('stream');
25705} else {
25706 debug = function () {};
25707}
25708/*</replacement>*/
ab78acc6 25709
8b095871
IC
25710var BufferList = require('./internal/streams/BufferList');
25711var StringDecoder;
ab78acc6 25712
8b095871 25713util.inherits(Readable, Stream);
ab78acc6 25714
8b095871
IC
25715function prependListener(emitter, event, fn) {
25716 // Sadly this is not cacheable as some libraries bundle their own
25717 // event emitter implementation with them.
25718 if (typeof emitter.prependListener === 'function') {
25719 return emitter.prependListener(event, fn);
25720 } else {
25721 // This is a hack to make sure that our error handler is attached before any
25722 // userland ones. NEVER DO THIS. This is here only because this code needs
25723 // to continue to work with older versions of Node.js that do not include
25724 // the prependListener() method. The goal is to eventually remove this hack.
25725 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]];
ebd8d4e8 25726 }
ebd8d4e8
IC
25727}
25728
8b095871
IC
25729function ReadableState(options, stream) {
25730 Duplex = Duplex || require('./_stream_duplex');
ebd8d4e8 25731
8b095871 25732 options = options || {};
ebd8d4e8 25733
8b095871
IC
25734 // object stream flag. Used to make read(n) ignore n and to
25735 // make all the buffer merging and length checks go away
25736 this.objectMode = !!options.objectMode;
ebd8d4e8 25737
8b095871 25738 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
ebd8d4e8 25739
8b095871
IC
25740 // the point at which it stops calling _read() to fill the buffer
25741 // Note: 0 is a valid value, means "don't call _read preemptively ever"
25742 var hwm = options.highWaterMark;
25743 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
25744 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
ab78acc6 25745
8b095871
IC
25746 // cast to ints.
25747 this.highWaterMark = ~ ~this.highWaterMark;
ab78acc6 25748
8b095871
IC
25749 // A linked list is used to store data chunks instead of an array because the
25750 // linked list can remove elements from the beginning faster than
25751 // array.shift()
25752 this.buffer = new BufferList();
25753 this.length = 0;
25754 this.pipes = null;
25755 this.pipesCount = 0;
25756 this.flowing = null;
25757 this.ended = false;
25758 this.endEmitted = false;
25759 this.reading = false;
ab78acc6 25760
8b095871
IC
25761 // a flag to be able to tell if the onwrite cb is called immediately,
25762 // or on a later tick. We set this to true at first, because any
25763 // actions that shouldn't happen until "later" should generally also
25764 // not happen before the first write call.
25765 this.sync = true;
ebd8d4e8 25766
8b095871
IC
25767 // whenever we return null, then we set a flag to say
25768 // that we're awaiting a 'readable' event emission.
25769 this.needReadable = false;
25770 this.emittedReadable = false;
25771 this.readableListening = false;
25772 this.resumeScheduled = false;
ebd8d4e8 25773
8b095871
IC
25774 // Crypto is kind of old and crusty. Historically, its default string
25775 // encoding is 'binary' so we have to make this configurable.
25776 // Everything else in the universe uses 'utf8', though.
25777 this.defaultEncoding = options.defaultEncoding || 'utf8';
ebd8d4e8 25778
8b095871
IC
25779 // when piping, we only care about 'readable' events that happen
25780 // after read()ing all the bytes and not getting any pushback.
25781 this.ranOut = false;
ebd8d4e8 25782
8b095871
IC
25783 // the number of writers that are awaiting a drain event in .pipe()s
25784 this.awaitDrain = 0;
ebd8d4e8 25785
8b095871
IC
25786 // if true, a maybeReadMore has been scheduled
25787 this.readingMore = false;
ebd8d4e8 25788
8b095871
IC
25789 this.decoder = null;
25790 this.encoding = null;
25791 if (options.encoding) {
25792 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25793 this.decoder = new StringDecoder(options.encoding);
25794 this.encoding = options.encoding;
25795 }
25796}
ebd8d4e8 25797
8b095871
IC
25798function Readable(options) {
25799 Duplex = Duplex || require('./_stream_duplex');
ebd8d4e8 25800
8b095871 25801 if (!(this instanceof Readable)) return new Readable(options);
ebd8d4e8 25802
8b095871 25803 this._readableState = new ReadableState(options, this);
ebd8d4e8 25804
8b095871
IC
25805 // legacy
25806 this.readable = true;
ebd8d4e8 25807
8b095871 25808 if (options && typeof options.read === 'function') this._read = options.read;
ebd8d4e8 25809
8b095871
IC
25810 Stream.call(this);
25811}
ebd8d4e8 25812
8b095871
IC
25813// Manually shove something into the read() buffer.
25814// This returns true if the highWaterMark has not been hit yet,
25815// similar to how Writable.write() returns true if you should
25816// write() some more.
25817Readable.prototype.push = function (chunk, encoding) {
25818 var state = this._readableState;
ebd8d4e8 25819
8b095871
IC
25820 if (!state.objectMode && typeof chunk === 'string') {
25821 encoding = encoding || state.defaultEncoding;
25822 if (encoding !== state.encoding) {
25823 chunk = bufferShim.from(chunk, encoding);
25824 encoding = '';
25825 }
25826 }
ebd8d4e8 25827
8b095871
IC
25828 return readableAddChunk(this, state, chunk, encoding, false);
25829};
ebd8d4e8 25830
8b095871
IC
25831// Unshift should *always* be something directly out of read()
25832Readable.prototype.unshift = function (chunk) {
25833 var state = this._readableState;
25834 return readableAddChunk(this, state, chunk, '', true);
25835};
ebd8d4e8 25836
8b095871
IC
25837Readable.prototype.isPaused = function () {
25838 return this._readableState.flowing === false;
25839};
25840
25841function readableAddChunk(stream, state, chunk, encoding, addToFront) {
25842 var er = chunkInvalid(state, chunk);
25843 if (er) {
25844 stream.emit('error', er);
25845 } else if (chunk === null) {
25846 state.reading = false;
25847 onEofChunk(stream, state);
25848 } else if (state.objectMode || chunk && chunk.length > 0) {
25849 if (state.ended && !addToFront) {
25850 var e = new Error('stream.push() after EOF');
25851 stream.emit('error', e);
25852 } else if (state.endEmitted && addToFront) {
25853 var _e = new Error('stream.unshift() after end event');
25854 stream.emit('error', _e);
25855 } else {
25856 var skipAdd;
25857 if (state.decoder && !addToFront && !encoding) {
25858 chunk = state.decoder.write(chunk);
25859 skipAdd = !state.objectMode && chunk.length === 0;
25860 }
ebd8d4e8 25861
8b095871 25862 if (!addToFront) state.reading = false;
ebd8d4e8 25863
8b095871
IC
25864 // Don't add to the buffer if we've decoded to an empty string chunk and
25865 // we're not in object mode
25866 if (!skipAdd) {
25867 // if we want the data now, just emit it.
25868 if (state.flowing && state.length === 0 && !state.sync) {
25869 stream.emit('data', chunk);
25870 stream.read(0);
25871 } else {
25872 // update the buffer info.
25873 state.length += state.objectMode ? 1 : chunk.length;
25874 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
ebd8d4e8 25875
8b095871
IC
25876 if (state.needReadable) emitReadable(stream);
25877 }
25878 }
ab78acc6 25879
8b095871
IC
25880 maybeReadMore(stream, state);
25881 }
25882 } else if (!addToFront) {
25883 state.reading = false;
25884 }
ab78acc6 25885
8b095871
IC
25886 return needMoreData(state);
25887}
ab78acc6 25888
8b095871
IC
25889// if it's past the high water mark, we can push in some more.
25890// Also, if we have no data yet, we can stand some
25891// more bytes. This is to work around cases where hwm=0,
25892// such as the repl. Also, if the push() triggered a
25893// readable event, and the user called read(largeNumber) such that
25894// needReadable was set, then we ought to push more, so that another
25895// 'readable' event will be triggered.
25896function needMoreData(state) {
25897 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
25898}
ebd8d4e8 25899
8b095871
IC
25900// backwards compatibility.
25901Readable.prototype.setEncoding = function (enc) {
25902 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
25903 this._readableState.decoder = new StringDecoder(enc);
25904 this._readableState.encoding = enc;
25905 return this;
25906};
25907
25908// Don't raise the hwm > 8MB
25909var MAX_HWM = 0x800000;
25910function computeNewHighWaterMark(n) {
25911 if (n >= MAX_HWM) {
25912 n = MAX_HWM;
ab78acc6 25913 } else {
8b095871
IC
25914 // Get the next highest power of 2 to prevent increasing hwm excessively in
25915 // tiny amounts
25916 n--;
25917 n |= n >>> 1;
25918 n |= n >>> 2;
25919 n |= n >>> 4;
25920 n |= n >>> 8;
25921 n |= n >>> 16;
25922 n++;
ebd8d4e8 25923 }
8b095871 25924 return n;
ebd8d4e8
IC
25925}
25926
8b095871
IC
25927// This function is designed to be inlinable, so please take care when making
25928// changes to the function body.
25929function howMuchToRead(n, state) {
25930 if (n <= 0 || state.length === 0 && state.ended) return 0;
25931 if (state.objectMode) return 1;
25932 if (n !== n) {
25933 // Only flow one buffer at a time
25934 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
25935 }
25936 // If we're asking for more than the current hwm, then raise the hwm.
25937 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
25938 if (n <= state.length) return n;
25939 // Don't have enough
25940 if (!state.ended) {
25941 state.needReadable = true;
25942 return 0;
25943 }
25944 return state.length;
25945}
ebd8d4e8 25946
8b095871
IC
25947// you can override either this method, or the async _read(n) below.
25948Readable.prototype.read = function (n) {
25949 debug('read', n);
25950 n = parseInt(n, 10);
25951 var state = this._readableState;
25952 var nOrig = n;
ebd8d4e8 25953
8b095871 25954 if (n !== 0) state.emittedReadable = false;
ab78acc6 25955
8b095871
IC
25956 // if we're doing read(0) to trigger a readable event, but we
25957 // already have a bunch of data in the buffer, then just trigger
25958 // the 'readable' event and move on.
25959 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
25960 debug('read: emitReadable', state.length, state.ended);
25961 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
25962 return null;
ebd8d4e8 25963 }
ebd8d4e8 25964
8b095871 25965 n = howMuchToRead(n, state);
ebd8d4e8 25966
8b095871
IC
25967 // if we've ended, and we're now clear, then finish it up.
25968 if (n === 0 && state.ended) {
25969 if (state.length === 0) endReadable(this);
25970 return null;
25971 }
ebd8d4e8 25972
8b095871
IC
25973 // All the actual chunk generation logic needs to be
25974 // *below* the call to _read. The reason is that in certain
25975 // synthetic stream cases, such as passthrough streams, _read
25976 // may be a completely synchronous operation which may change
25977 // the state of the read buffer, providing enough data when
25978 // before there was *not* enough.
25979 //
25980 // So, the steps are:
25981 // 1. Figure out what the state of things will be after we do
25982 // a read from the buffer.
25983 //
25984 // 2. If that resulting state will trigger a _read, then call _read.
25985 // Note that this may be asynchronous, or synchronous. Yes, it is
25986 // deeply ugly to write APIs this way, but that still doesn't mean
25987 // that the Readable class should behave improperly, as streams are
25988 // designed to be sync/async agnostic.
25989 // Take note if the _read call is sync or async (ie, if the read call
25990 // has returned yet), so that we know whether or not it's safe to emit
25991 // 'readable' etc.
25992 //
25993 // 3. Actually pull the requested chunks out of the buffer and return.
ebd8d4e8 25994
8b095871
IC
25995 // if we need a readable event, then we need to do some reading.
25996 var doRead = state.needReadable;
25997 debug('need readable', doRead);
ebd8d4e8 25998
8b095871
IC
25999 // if we currently have less than the highWaterMark, then also read some
26000 if (state.length === 0 || state.length - n < state.highWaterMark) {
26001 doRead = true;
26002 debug('length less than watermark', doRead);
26003 }
ebd8d4e8 26004
8b095871
IC
26005 // however, if we've ended, then there's no point, and if we're already
26006 // reading, then it's unnecessary.
26007 if (state.ended || state.reading) {
26008 doRead = false;
26009 debug('reading or ended', doRead);
26010 } else if (doRead) {
26011 debug('do read');
26012 state.reading = true;
26013 state.sync = true;
26014 // if the length is currently zero, then we *need* a readable event.
26015 if (state.length === 0) state.needReadable = true;
26016 // call internal read method
26017 this._read(state.highWaterMark);
26018 state.sync = false;
26019 // If _read pushed data synchronously, then `reading` will be false,
26020 // and we need to re-evaluate how much data we can return to the user.
26021 if (!state.reading) n = howMuchToRead(nOrig, state);
26022 }
ebd8d4e8 26023
8b095871
IC
26024 var ret;
26025 if (n > 0) ret = fromList(n, state);else ret = null;
ebd8d4e8 26026
8b095871
IC
26027 if (ret === null) {
26028 state.needReadable = true;
26029 n = 0;
26030 } else {
26031 state.length -= n;
26032 }
ebd8d4e8 26033
8b095871
IC
26034 if (state.length === 0) {
26035 // If we have nothing in the buffer, then we want to know
26036 // as soon as we *do* get something into the buffer.
26037 if (!state.ended) state.needReadable = true;
ebd8d4e8 26038
8b095871
IC
26039 // If we tried to read() past the EOF, then emit end on the next tick.
26040 if (nOrig !== n && state.ended) endReadable(this);
26041 }
26042
26043 if (ret !== null) this.emit('data', ret);
26044
26045 return ret;
ab78acc6
IC
26046};
26047
8b095871
IC
26048function chunkInvalid(state, chunk) {
26049 var er = null;
26050 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
26051 er = new TypeError('Invalid non-string/buffer chunk');
26052 }
26053 return er;
26054}
ab78acc6 26055
8b095871
IC
26056function onEofChunk(stream, state) {
26057 if (state.ended) return;
26058 if (state.decoder) {
26059 var chunk = state.decoder.end();
26060 if (chunk && chunk.length) {
26061 state.buffer.push(chunk);
26062 state.length += state.objectMode ? 1 : chunk.length;
26063 }
26064 }
26065 state.ended = true;
26066
26067 // emit 'readable' now to make sure it gets picked up.
26068 emitReadable(stream);
26069}
26070
26071// Don't emit readable right away in sync mode, because this can trigger
26072// another read() call => stack overflow. This way, it might trigger
26073// a nextTick recursion warning, but that's not so bad.
26074function emitReadable(stream) {
26075 var state = stream._readableState;
26076 state.needReadable = false;
26077 if (!state.emittedReadable) {
26078 debug('emitReadable', state.flowing);
26079 state.emittedReadable = true;
26080 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
26081 }
ebd8d4e8
IC
26082}
26083
8b095871
IC
26084function emitReadable_(stream) {
26085 debug('emit readable');
26086 stream.emit('readable');
26087 flow(stream);
26088}
ebd8d4e8 26089
8b095871
IC
26090// at this point, the user has presumably seen the 'readable' event,
26091// and called read() to consume some data. that may have triggered
26092// in turn another _read(n) call, in which case reading = true if
26093// it's in progress.
26094// However, if we're not ended, or reading, and the length < hwm,
26095// then go ahead and try to read some more preemptively.
26096function maybeReadMore(stream, state) {
26097 if (!state.readingMore) {
26098 state.readingMore = true;
26099 processNextTick(maybeReadMore_, stream, state);
26100 }
26101}
ab78acc6 26102
8b095871
IC
26103function maybeReadMore_(stream, state) {
26104 var len = state.length;
26105 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
26106 debug('maybeReadMore read 0');
26107 stream.read(0);
26108 if (len === state.length)
26109 // didn't get any data, stop spinning.
26110 break;else len = state.length;
26111 }
26112 state.readingMore = false;
26113}
ab78acc6 26114
8b095871
IC
26115// abstract method. to be overridden in specific implementation classes.
26116// call cb(er, data) where data is <= n in length.
26117// for virtual (non-string, non-buffer) streams, "length" is somewhat
26118// arbitrary, and perhaps not very meaningful.
26119Readable.prototype._read = function (n) {
26120 this.emit('error', new Error('_read() is not implemented'));
ab78acc6
IC
26121};
26122
8b095871
IC
26123Readable.prototype.pipe = function (dest, pipeOpts) {
26124 var src = this;
26125 var state = this._readableState;
ab78acc6 26126
8b095871
IC
26127 switch (state.pipesCount) {
26128 case 0:
26129 state.pipes = dest;
26130 break;
26131 case 1:
26132 state.pipes = [state.pipes, dest];
26133 break;
26134 default:
26135 state.pipes.push(dest);
26136 break;
ab78acc6 26137 }
8b095871
IC
26138 state.pipesCount += 1;
26139 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
ab78acc6 26140
8b095871 26141 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
ab78acc6 26142
8b095871
IC
26143 var endFn = doEnd ? onend : cleanup;
26144 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
ab78acc6 26145
8b095871
IC
26146 dest.on('unpipe', onunpipe);
26147 function onunpipe(readable) {
26148 debug('onunpipe');
26149 if (readable === src) {
26150 cleanup();
ab78acc6 26151 }
8b095871 26152 }
ebd8d4e8 26153
8b095871
IC
26154 function onend() {
26155 debug('onend');
26156 dest.end();
ebd8d4e8
IC
26157 }
26158
8b095871
IC
26159 // when the dest drains, it reduces the awaitDrain counter
26160 // on the source. This would be more elegant with a .once()
26161 // handler in flow(), but adding and removing repeatedly is
26162 // too slow.
26163 var ondrain = pipeOnDrain(src);
26164 dest.on('drain', ondrain);
ebd8d4e8 26165
8b095871
IC
26166 var cleanedUp = false;
26167 function cleanup() {
26168 debug('cleanup');
26169 // cleanup event handlers once the pipe is broken
26170 dest.removeListener('close', onclose);
26171 dest.removeListener('finish', onfinish);
26172 dest.removeListener('drain', ondrain);
26173 dest.removeListener('error', onerror);
26174 dest.removeListener('unpipe', onunpipe);
26175 src.removeListener('end', onend);
26176 src.removeListener('end', cleanup);
26177 src.removeListener('data', ondata);
ebd8d4e8 26178
8b095871 26179 cleanedUp = true;
ebd8d4e8 26180
8b095871
IC
26181 // if the reader is waiting for a drain event from this
26182 // specific writer, then it would cause it to never start
26183 // flowing again.
26184 // So, if this is awaiting a drain, then we just call it now.
26185 // If we don't know, then assume that we are waiting for one.
26186 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
26187 }
ebd8d4e8 26188
8b095871
IC
26189 // If the user pushes more data while we're writing to dest then we'll end up
26190 // in ondata again. However, we only want to increase awaitDrain once because
26191 // dest will only emit one 'drain' event for the multiple writes.
26192 // => Introduce a guard on increasing awaitDrain.
26193 var increasedAwaitDrain = false;
26194 src.on('data', ondata);
26195 function ondata(chunk) {
26196 debug('ondata');
26197 increasedAwaitDrain = false;
26198 var ret = dest.write(chunk);
26199 if (false === ret && !increasedAwaitDrain) {
26200 // If the user unpiped during `dest.write()`, it is possible
26201 // to get stuck in a permanently paused state if that write
26202 // also returned false.
26203 // => Check whether `dest` is still a piping destination.
26204 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
26205 debug('false write response, pause', src._readableState.awaitDrain);
26206 src._readableState.awaitDrain++;
26207 increasedAwaitDrain = true;
26208 }
26209 src.pause();
26210 }
26211 }
ebd8d4e8 26212
8b095871
IC
26213 // if the dest has an error, then stop piping into it.
26214 // however, don't suppress the throwing behavior for this.
26215 function onerror(er) {
26216 debug('onerror', er);
26217 unpipe();
26218 dest.removeListener('error', onerror);
26219 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
26220 }
ab78acc6 26221
8b095871
IC
26222 // Make sure our error handler is attached before userland ones.
26223 prependListener(dest, 'error', onerror);
ab78acc6 26224
8b095871
IC
26225 // Both close and finish should trigger unpipe, but only once.
26226 function onclose() {
26227 dest.removeListener('finish', onfinish);
26228 unpipe();
26229 }
26230 dest.once('close', onclose);
26231 function onfinish() {
26232 debug('onfinish');
26233 dest.removeListener('close', onclose);
26234 unpipe();
ab78acc6 26235 }
8b095871 26236 dest.once('finish', onfinish);
ebd8d4e8 26237
8b095871
IC
26238 function unpipe() {
26239 debug('unpipe');
26240 src.unpipe(dest);
26241 }
26242
26243 // tell the dest that it's being piped to
26244 dest.emit('pipe', src);
26245
26246 // start the flow if it hasn't been started already.
26247 if (!state.flowing) {
26248 debug('pipe resume');
26249 src.resume();
26250 }
26251
26252 return dest;
ab78acc6 26253};
ebd8d4e8 26254
8b095871
IC
26255function pipeOnDrain(src) {
26256 return function () {
26257 var state = src._readableState;
26258 debug('pipeOnDrain', state.awaitDrain);
26259 if (state.awaitDrain) state.awaitDrain--;
26260 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
26261 state.flowing = true;
26262 flow(src);
26263 }
26264 };
26265}
ebd8d4e8 26266
8b095871
IC
26267Readable.prototype.unpipe = function (dest) {
26268 var state = this._readableState;
ebd8d4e8 26269
8b095871
IC
26270 // if we're not piping anywhere, then do nothing.
26271 if (state.pipesCount === 0) return this;
ebd8d4e8 26272
8b095871
IC
26273 // just one destination. most common case.
26274 if (state.pipesCount === 1) {
26275 // passed in one, but it's not the right one.
26276 if (dest && dest !== state.pipes) return this;
ebd8d4e8 26277
8b095871
IC
26278 if (!dest) dest = state.pipes;
26279
26280 // got a match.
26281 state.pipes = null;
26282 state.pipesCount = 0;
26283 state.flowing = false;
26284 if (dest) dest.emit('unpipe', this);
26285 return this;
ab78acc6 26286 }
ebd8d4e8 26287
8b095871 26288 // slow case. multiple pipe destinations.
ebd8d4e8 26289
8b095871
IC
26290 if (!dest) {
26291 // remove all.
26292 var dests = state.pipes;
26293 var len = state.pipesCount;
26294 state.pipes = null;
26295 state.pipesCount = 0;
26296 state.flowing = false;
ebd8d4e8 26297
8b095871
IC
26298 for (var i = 0; i < len; i++) {
26299 dests[i].emit('unpipe', this);
26300 }return this;
26301 }
ebd8d4e8 26302
8b095871
IC
26303 // try to find the right one.
26304 var index = indexOf(state.pipes, dest);
26305 if (index === -1) return this;
ebd8d4e8 26306
8b095871
IC
26307 state.pipes.splice(index, 1);
26308 state.pipesCount -= 1;
26309 if (state.pipesCount === 1) state.pipes = state.pipes[0];
ebd8d4e8 26310
8b095871 26311 dest.emit('unpipe', this);
ab78acc6 26312
8b095871
IC
26313 return this;
26314};
ab78acc6 26315
8b095871
IC
26316// set up data events if they are asked for
26317// Ensure readable listeners eventually get something
26318Readable.prototype.on = function (ev, fn) {
26319 var res = Stream.prototype.on.call(this, ev, fn);
26320
26321 if (ev === 'data') {
26322 // Start flowing on next tick if stream isn't explicitly paused
26323 if (this._readableState.flowing !== false) this.resume();
26324 } else if (ev === 'readable') {
26325 var state = this._readableState;
26326 if (!state.endEmitted && !state.readableListening) {
26327 state.readableListening = state.needReadable = true;
26328 state.emittedReadable = false;
26329 if (!state.reading) {
26330 processNextTick(nReadingNextTick, this);
26331 } else if (state.length) {
26332 emitReadable(this, state);
ebd8d4e8 26333 }
ab78acc6 26334 }
8b095871 26335 }
ebd8d4e8 26336
8b095871
IC
26337 return res;
26338};
26339Readable.prototype.addListener = Readable.prototype.on;
ab78acc6 26340
8b095871
IC
26341function nReadingNextTick(self) {
26342 debug('readable nexttick read 0');
26343 self.read(0);
26344}
ab78acc6 26345
8b095871
IC
26346// pause() and resume() are remnants of the legacy readable stream API
26347// If the user uses them, then switch into old mode.
26348Readable.prototype.resume = function () {
26349 var state = this._readableState;
26350 if (!state.flowing) {
26351 debug('resume');
26352 state.flowing = true;
26353 resume(this, state);
ebd8d4e8 26354 }
ab78acc6 26355 return this;
ebd8d4e8
IC
26356};
26357
8b095871
IC
26358function resume(stream, state) {
26359 if (!state.resumeScheduled) {
26360 state.resumeScheduled = true;
26361 processNextTick(resume_, stream, state);
ebd8d4e8 26362 }
8b095871 26363}
ab78acc6 26364
8b095871
IC
26365function resume_(stream, state) {
26366 if (!state.reading) {
26367 debug('resume read 0');
26368 stream.read(0);
ebd8d4e8 26369 }
ebd8d4e8 26370
8b095871
IC
26371 state.resumeScheduled = false;
26372 state.awaitDrain = 0;
26373 stream.emit('resume');
26374 flow(stream);
26375 if (state.flowing && !state.reading) stream.read(0);
26376}
ab78acc6 26377
8b095871
IC
26378Readable.prototype.pause = function () {
26379 debug('call pause flowing=%j', this._readableState.flowing);
26380 if (false !== this._readableState.flowing) {
26381 debug('pause');
26382 this._readableState.flowing = false;
26383 this.emit('pause');
ebd8d4e8 26384 }
ab78acc6
IC
26385 return this;
26386};
ebd8d4e8 26387
8b095871
IC
26388function flow(stream) {
26389 var state = stream._readableState;
26390 debug('flow', state.flowing);
26391 while (state.flowing && stream.read() !== null) {}
26392}
ebd8d4e8 26393
8b095871
IC
26394// wrap an old-style stream as the async data source.
26395// This is *not* part of the readable stream interface.
26396// It is an ugly unfortunate mess of history.
26397Readable.prototype.wrap = function (stream) {
26398 var state = this._readableState;
26399 var paused = false;
ebd8d4e8 26400
8b095871
IC
26401 var self = this;
26402 stream.on('end', function () {
26403 debug('wrapped end');
26404 if (state.decoder && !state.ended) {
26405 var chunk = state.decoder.end();
26406 if (chunk && chunk.length) self.push(chunk);
26407 }
ebd8d4e8 26408
8b095871
IC
26409 self.push(null);
26410 });
ebd8d4e8 26411
8b095871
IC
26412 stream.on('data', function (chunk) {
26413 debug('wrapped data');
26414 if (state.decoder) chunk = state.decoder.write(chunk);
ebd8d4e8 26415
8b095871
IC
26416 // don't skip over falsy values in objectMode
26417 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
ebd8d4e8 26418
8b095871
IC
26419 var ret = self.push(chunk);
26420 if (!ret) {
26421 paused = true;
26422 stream.pause();
26423 }
26424 });
26425
26426 // proxy all the other methods.
26427 // important when wrapping filters and duplexes.
26428 for (var i in stream) {
26429 if (this[i] === undefined && typeof stream[i] === 'function') {
26430 this[i] = function (method) {
26431 return function () {
26432 return stream[method].apply(stream, arguments);
26433 };
26434 }(i);
26435 }
ab78acc6 26436 }
ebd8d4e8 26437
8b095871
IC
26438 // proxy certain important events.
26439 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
26440 forEach(events, function (ev) {
26441 stream.on(ev, self.emit.bind(self, ev));
26442 });
26443
26444 // when we try to consume some more bytes, simply unpause the
26445 // underlying stream.
26446 self._read = function (n) {
26447 debug('wrapped _read', n);
26448 if (paused) {
26449 paused = false;
26450 stream.resume();
26451 }
26452 };
26453
26454 return self;
ebd8d4e8
IC
26455};
26456
8b095871
IC
26457// exposed for testing purposes only.
26458Readable._fromList = fromList;
ebd8d4e8 26459
8b095871
IC
26460// Pluck off n bytes from an array of buffers.
26461// Length is the combined lengths of all the buffers in the list.
26462// This function is designed to be inlinable, so please take care when making
26463// changes to the function body.
26464function fromList(n, state) {
26465 // nothing buffered
26466 if (state.length === 0) return null;
ab78acc6 26467
8b095871
IC
26468 var ret;
26469 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
26470 // read it all, truncate the list
26471 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);
26472 state.buffer.clear();
26473 } else {
26474 // read part of list
26475 ret = fromListPartial(n, state.buffer, state.decoder);
26476 }
26477
26478 return ret;
26479}
26480
26481// Extracts only enough buffered data to satisfy the amount requested.
26482// This function is designed to be inlinable, so please take care when making
26483// changes to the function body.
26484function fromListPartial(n, list, hasStrings) {
26485 var ret;
26486 if (n < list.head.data.length) {
26487 // slice is the same for buffers and strings
26488 ret = list.head.data.slice(0, n);
26489 list.head.data = list.head.data.slice(n);
26490 } else if (n === list.head.data.length) {
26491 // first chunk is a perfect match
26492 ret = list.shift();
26493 } else {
26494 // result spans more than one buffer
26495 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
26496 }
26497 return ret;
ab78acc6 26498}
ebd8d4e8 26499
8b095871
IC
26500// Copies a specified amount of characters from the list of buffered data
26501// chunks.
26502// This function is designed to be inlinable, so please take care when making
26503// changes to the function body.
26504function copyFromBufferString(n, list) {
26505 var p = list.head;
26506 var c = 1;
26507 var ret = p.data;
26508 n -= ret.length;
26509 while (p = p.next) {
26510 var str = p.data;
26511 var nb = n > str.length ? str.length : n;
26512 if (nb === str.length) ret += str;else ret += str.slice(0, n);
26513 n -= nb;
26514 if (n === 0) {
26515 if (nb === str.length) {
26516 ++c;
26517 if (p.next) list.head = p.next;else list.head = list.tail = null;
26518 } else {
26519 list.head = p;
26520 p.data = str.slice(nb);
26521 }
26522 break;
ab78acc6 26523 }
8b095871
IC
26524 ++c;
26525 }
26526 list.length -= c;
26527 return ret;
ab78acc6
IC
26528}
26529
8b095871
IC
26530// Copies a specified amount of bytes from the list of buffered data chunks.
26531// This function is designed to be inlinable, so please take care when making
26532// changes to the function body.
26533function copyFromBuffer(n, list) {
26534 var ret = bufferShim.allocUnsafe(n);
26535 var p = list.head;
26536 var c = 1;
26537 p.data.copy(ret);
26538 n -= p.data.length;
26539 while (p = p.next) {
26540 var buf = p.data;
26541 var nb = n > buf.length ? buf.length : n;
26542 buf.copy(ret, ret.length - n, 0, nb);
26543 n -= nb;
26544 if (n === 0) {
26545 if (nb === buf.length) {
26546 ++c;
26547 if (p.next) list.head = p.next;else list.head = list.tail = null;
26548 } else {
26549 list.head = p;
26550 p.data = buf.slice(nb);
26551 }
26552 break;
ab78acc6 26553 }
8b095871
IC
26554 ++c;
26555 }
26556 list.length -= c;
26557 return ret;
ab78acc6 26558}
ebd8d4e8 26559
8b095871
IC
26560function endReadable(stream) {
26561 var state = stream._readableState;
ab78acc6 26562
8b095871
IC
26563 // If we get here before consuming all the bytes, then that is a
26564 // bug in node. Should never happen.
26565 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
ab78acc6 26566
8b095871
IC
26567 if (!state.endEmitted) {
26568 state.ended = true;
26569 processNextTick(endReadableNT, state, stream);
26570 }
26571}
ebd8d4e8 26572
8b095871
IC
26573function endReadableNT(state, stream) {
26574 // Check that we didn't get one last unshift.
26575 if (!state.endEmitted && state.length === 0) {
26576 state.endEmitted = true;
26577 stream.readable = false;
26578 stream.emit('end');
26579 }
26580}
ebd8d4e8 26581
8b095871
IC
26582function forEach(xs, f) {
26583 for (var i = 0, l = xs.length; i < l; i++) {
26584 f(xs[i], i);
26585 }
26586}
ebd8d4e8 26587
8b095871
IC
26588function indexOf(xs, x) {
26589 for (var i = 0, l = xs.length; i < l; i++) {
26590 if (xs[i] === x) return i;
26591 }
26592 return -1;
26593}
26594}).call(this,require('_process'))
26595},{"./_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){
26596// a transform stream is a readable/writable stream where you do
26597// something with the data. Sometimes it's called a "filter",
26598// but that's not a great name for it, since that implies a thing where
26599// some bits pass through, and others are simply ignored. (That would
26600// be a valid example of a transform, of course.)
ab78acc6 26601//
8b095871
IC
26602// While the output is causally related to the input, it's not a
26603// necessarily symmetric or synchronous transformation. For example,
26604// a zlib stream might take multiple plain-text writes(), and then
26605// emit a single compressed chunk some time in the future.
ab78acc6 26606//
8b095871 26607// Here's how this works:
ab78acc6 26608//
8b095871
IC
26609// The Transform stream has all the aspects of the readable and writable
26610// stream classes. When you write(chunk), that calls _write(chunk,cb)
26611// internally, and returns false if there's a lot of pending writes
26612// buffered up. When you call read(), that calls _read(n) until
26613// there's enough pending readable data buffered up.
26614//
26615// In a transform stream, the written data is placed in a buffer. When
26616// _read(n) is called, it transforms the queued up data, calling the
26617// buffered _write cb's as it consumes chunks. If consuming a single
26618// written chunk would result in multiple output chunks, then the first
26619// outputted bit calls the readcb, and subsequent chunks just go into
26620// the read buffer, and will cause it to emit 'readable' if necessary.
26621//
26622// This way, back-pressure is actually determined by the reading side,
26623// since _read has to be called to start processing a new chunk. However,
26624// a pathological inflate type of transform can cause excessive buffering
26625// here. For example, imagine a stream where every byte of input is
26626// interpreted as an integer from 0-255, and then results in that many
26627// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
26628// 1kb of data being output. In this case, you could write a very small
26629// amount of input, and end up with a very large amount of output. In
26630// such a pathological inflating mechanism, there'd be no way to tell
26631// the system to stop doing the transform. A single 4MB write could
26632// cause the system to run out of memory.
26633//
26634// However, even in such a pathological case, only a single written chunk
26635// would be consumed, and then the rest would wait (un-transformed) until
26636// the results of the previous transformed chunk were consumed.
ebd8d4e8 26637
8b095871 26638'use strict';
ebd8d4e8 26639
8b095871 26640module.exports = Transform;
ebd8d4e8 26641
8b095871 26642var Duplex = require('./_stream_duplex');
ebd8d4e8 26643
ab78acc6
IC
26644/*<replacement>*/
26645var util = require('core-util-is');
26646util.inherits = require('inherits');
26647/*</replacement>*/
ebd8d4e8 26648
8b095871 26649util.inherits(Transform, Duplex);
ebd8d4e8 26650
8b095871
IC
26651function TransformState(stream) {
26652 this.afterTransform = function (er, data) {
26653 return afterTransform(stream, er, data);
26654 };
ebd8d4e8 26655
8b095871
IC
26656 this.needTransform = false;
26657 this.transforming = false;
26658 this.writecb = null;
26659 this.writechunk = null;
26660 this.writeencoding = null;
26661}
ebd8d4e8 26662
8b095871
IC
26663function afterTransform(stream, er, data) {
26664 var ts = stream._transformState;
26665 ts.transforming = false;
ebd8d4e8 26666
8b095871 26667 var cb = ts.writecb;
ebd8d4e8 26668
8b095871 26669 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
ebd8d4e8 26670
8b095871
IC
26671 ts.writechunk = null;
26672 ts.writecb = null;
ebd8d4e8 26673
8b095871 26674 if (data !== null && data !== undefined) stream.push(data);
ebd8d4e8 26675
8b095871
IC
26676 cb(er);
26677
26678 var rs = stream._readableState;
26679 rs.reading = false;
26680 if (rs.needReadable || rs.length < rs.highWaterMark) {
26681 stream._read(rs.highWaterMark);
26682 }
ebd8d4e8
IC
26683}
26684
8b095871
IC
26685function Transform(options) {
26686 if (!(this instanceof Transform)) return new Transform(options);
ebd8d4e8 26687
8b095871 26688 Duplex.call(this, options);
ebd8d4e8 26689
8b095871
IC
26690 this._transformState = new TransformState(this);
26691
26692 var stream = this;
26693
26694 // start out asking for a readable event once data is transformed.
26695 this._readableState.needReadable = true;
26696
26697 // we have implemented the _read method, and done the other things
26698 // that Readable wants before the first _read call, so unset the
26699 // sync guard flag.
26700 this._readableState.sync = false;
26701
26702 if (options) {
26703 if (typeof options.transform === 'function') this._transform = options.transform;
26704
26705 if (typeof options.flush === 'function') this._flush = options.flush;
ebd8d4e8 26706 }
8b095871
IC
26707
26708 // When the writable side finishes, then flush out anything remaining.
26709 this.once('prefinish', function () {
26710 if (typeof this._flush === 'function') this._flush(function (er, data) {
26711 done(stream, er, data);
26712 });else done(stream);
26713 });
ab78acc6 26714}
ebd8d4e8 26715
8b095871
IC
26716Transform.prototype.push = function (chunk, encoding) {
26717 this._transformState.needTransform = false;
26718 return Duplex.prototype.push.call(this, chunk, encoding);
26719};
26720
26721// This is the part where you do stuff!
26722// override this function in implementation classes.
26723// 'chunk' is an input chunk.
ab78acc6 26724//
8b095871
IC
26725// Call `push(newChunk)` to pass along transformed output
26726// to the readable side. You may call 'push' zero or more times.
ab78acc6 26727//
8b095871
IC
26728// Call `cb(err)` when you are done with this chunk. If you pass
26729// an error, then that'll put the hurt on the whole operation. If you
26730// never call cb(), then you'll never get another chunk.
26731Transform.prototype._transform = function (chunk, encoding, cb) {
26732 throw new Error('_transform() is not implemented');
26733};
ebd8d4e8 26734
8b095871
IC
26735Transform.prototype._write = function (chunk, encoding, cb) {
26736 var ts = this._transformState;
26737 ts.writecb = cb;
26738 ts.writechunk = chunk;
26739 ts.writeencoding = encoding;
26740 if (!ts.transforming) {
26741 var rs = this._readableState;
26742 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
26743 }
26744};
ebd8d4e8 26745
8b095871
IC
26746// Doesn't matter what the args are here.
26747// _transform does all the work.
26748// That we got here means that the readable side wants more data.
26749Transform.prototype._read = function (n) {
26750 var ts = this._transformState;
ebd8d4e8 26751
8b095871
IC
26752 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
26753 ts.transforming = true;
26754 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
26755 } else {
26756 // mark that we need a transform, so that any data that comes in
26757 // will get processed, now that we've asked for it.
26758 ts.needTransform = true;
26759 }
26760};
ebd8d4e8 26761
8b095871
IC
26762function done(stream, er, data) {
26763 if (er) return stream.emit('error', er);
ebd8d4e8 26764
8b095871 26765 if (data !== null && data !== undefined) stream.push(data);
ebd8d4e8 26766
8b095871
IC
26767 // if there's nothing in the write buffer, then that means
26768 // that nothing more will ever be provided
26769 var ws = stream._writableState;
26770 var ts = stream._transformState;
ebd8d4e8 26771
8b095871 26772 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
ebd8d4e8 26773
8b095871 26774 if (ts.transforming) throw new Error('Calling transform done when still transforming');
ebd8d4e8 26775
8b095871
IC
26776 return stream.push(null);
26777}
26778},{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
ab78acc6 26779(function (process){
8b095871
IC
26780// A bit simpler than readable streams.
26781// Implement an async ._write(chunk, encoding, cb), and it'll handle all
26782// the drain event emission and buffering.
ebd8d4e8 26783
8b095871
IC
26784'use strict';
26785
26786module.exports = Writable;
ebd8d4e8 26787
ab78acc6 26788/*<replacement>*/
8b095871 26789var processNextTick = require('process-nextick-args');
ab78acc6
IC
26790/*</replacement>*/
26791
ab78acc6 26792/*<replacement>*/
8b095871 26793var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
ab78acc6
IC
26794/*</replacement>*/
26795
ab78acc6 26796/*<replacement>*/
8b095871 26797var Duplex;
ab78acc6
IC
26798/*</replacement>*/
26799
8b095871 26800Writable.WritableState = WritableState;
ab78acc6
IC
26801
26802/*<replacement>*/
26803var util = require('core-util-is');
26804util.inherits = require('inherits');
26805/*</replacement>*/
26806
8b095871
IC
26807/*<replacement>*/
26808var internalUtil = {
26809 deprecate: require('util-deprecate')
26810};
26811/*</replacement>*/
ab78acc6 26812
8b095871
IC
26813/*<replacement>*/
26814var Stream;
26815(function () {
26816 try {
26817 Stream = require('st' + 'ream');
26818 } catch (_) {} finally {
26819 if (!Stream) Stream = require('events').EventEmitter;
26820 }
26821})();
26822/*</replacement>*/
ab78acc6 26823
8b095871 26824var Buffer = require('buffer').Buffer;
ab78acc6 26825/*<replacement>*/
8b095871 26826var bufferShim = require('buffer-shims');
ab78acc6
IC
26827/*</replacement>*/
26828
8b095871
IC
26829util.inherits(Writable, Stream);
26830
26831function nop() {}
ab78acc6 26832
8b095871
IC
26833function WriteReq(chunk, encoding, cb) {
26834 this.chunk = chunk;
26835 this.encoding = encoding;
26836 this.callback = cb;
26837 this.next = null;
26838}
ab78acc6 26839
8b095871
IC
26840function WritableState(options, stream) {
26841 Duplex = Duplex || require('./_stream_duplex');
ab78acc6
IC
26842
26843 options = options || {};
26844
8b095871
IC
26845 // object stream flag to indicate whether or not this stream
26846 // contains buffers or objects.
26847 this.objectMode = !!options.objectMode;
26848
26849 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
26850
26851 // the point at which write() starts returning false
26852 // Note: 0 is a valid value, means that we always return false if
26853 // the entire buffer is not flushed immediately on write()
ab78acc6 26854 var hwm = options.highWaterMark;
8b095871
IC
26855 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
26856 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
ab78acc6
IC
26857
26858 // cast to ints.
8b095871 26859 this.highWaterMark = ~ ~this.highWaterMark;
ab78acc6 26860
8b095871
IC
26861 // drain event flag.
26862 this.needDrain = false;
26863 // at the start of calling end()
26864 this.ending = false;
26865 // when end() has been called, and returned
ab78acc6 26866 this.ended = false;
8b095871
IC
26867 // when 'finish' is emitted
26868 this.finished = false;
26869
26870 // should we decode strings into buffers before passing to _write?
26871 // this is here so that some node-core streams can optimize string
26872 // handling at a lower level.
26873 var noDecode = options.decodeStrings === false;
26874 this.decodeStrings = !noDecode;
26875
26876 // Crypto is kind of old and crusty. Historically, its default string
26877 // encoding is 'binary' so we have to make this configurable.
26878 // Everything else in the universe uses 'utf8', though.
26879 this.defaultEncoding = options.defaultEncoding || 'utf8';
26880
26881 // not an actual buffer we keep track of, but a measurement
26882 // of how much we're waiting to get pushed to some underlying
26883 // socket or file.
26884 this.length = 0;
26885
26886 // a flag to see when we're in the middle of a write.
26887 this.writing = false;
26888
26889 // when true all writes will be buffered until .uncork() call
26890 this.corked = 0;
ebd8d4e8 26891
ab78acc6
IC
26892 // a flag to be able to tell if the onwrite cb is called immediately,
26893 // or on a later tick. We set this to true at first, because any
26894 // actions that shouldn't happen until "later" should generally also
26895 // not happen before the first write call.
26896 this.sync = true;
ebd8d4e8 26897
8b095871
IC
26898 // a flag to know if we're processing previously buffered items, which
26899 // may call the _write() callback in the same tick, so that we don't
26900 // end up in an overlapped onwrite situation.
26901 this.bufferProcessing = false;
26902
26903 // the callback that's passed to _write(chunk,cb)
26904 this.onwrite = function (er) {
26905 onwrite(stream, er);
26906 };
26907
26908 // the callback that the user supplies to write(chunk,encoding,cb)
26909 this.writecb = null;
26910
26911 // the amount that is being written when _write is called.
26912 this.writelen = 0;
26913
26914 this.bufferedRequest = null;
26915 this.lastBufferedRequest = null;
26916
26917 // number of pending user-supplied write callbacks
26918 // this must be 0 before 'finish' can be emitted
26919 this.pendingcb = 0;
26920
26921 // emit prefinish if the only thing we're waiting for is _write cbs
26922 // This is relevant for synchronous Transform streams
26923 this.prefinished = false;
26924
26925 // True if the error was already emitted and should not be thrown again
26926 this.errorEmitted = false;
26927
26928 // count buffered requests
26929 this.bufferedRequestCount = 0;
26930
26931 // allocate the first CorkedRequest, there is always
26932 // one allocated and free to use, and we maintain at most two
26933 this.corkedRequestsFree = new CorkedRequest(this);
26934}
26935
26936WritableState.prototype.getBuffer = function getBuffer() {
26937 var current = this.bufferedRequest;
26938 var out = [];
26939 while (current) {
26940 out.push(current);
26941 current = current.next;
26942 }
26943 return out;
26944};
26945
26946(function () {
26947 try {
26948 Object.defineProperty(WritableState.prototype, 'buffer', {
26949 get: internalUtil.deprecate(function () {
26950 return this.getBuffer();
26951 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
26952 });
26953 } catch (_) {}
26954})();
26955
26956// Test _writableState for inheritance to account for Duplex streams,
26957// whose prototype chain only points to Readable.
26958var realHasInstance;
26959if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
26960 realHasInstance = Function.prototype[Symbol.hasInstance];
26961 Object.defineProperty(Writable, Symbol.hasInstance, {
26962 value: function (object) {
26963 if (realHasInstance.call(this, object)) return true;
26964
26965 return object && object._writableState instanceof WritableState;
26966 }
26967 });
26968} else {
26969 realHasInstance = function (object) {
26970 return object instanceof this;
26971 };
26972}
26973
26974function Writable(options) {
26975 Duplex = Duplex || require('./_stream_duplex');
26976
26977 // Writable ctor is applied to Duplexes, too.
26978 // `realHasInstance` is necessary because using plain `instanceof`
26979 // would return false, as no `_writableState` property is attached.
26980
26981 // Trying to use the custom `instanceof` for Writable here will also break the
26982 // Node.js LazyTransform implementation, which has a non-trivial getter for
26983 // `_writableState` that would lead to infinite recursion.
26984 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
26985 return new Writable(options);
26986 }
26987
26988 this._writableState = new WritableState(options, this);
26989
26990 // legacy.
26991 this.writable = true;
26992
26993 if (options) {
26994 if (typeof options.write === 'function') this._write = options.write;
26995
26996 if (typeof options.writev === 'function') this._writev = options.writev;
26997 }
26998
26999 Stream.call(this);
27000}
27001
27002// Otherwise people can pipe Writable streams, which is just wrong.
27003Writable.prototype.pipe = function () {
27004 this.emit('error', new Error('Cannot pipe, not readable'));
27005};
27006
27007function writeAfterEnd(stream, cb) {
27008 var er = new Error('write after end');
27009 // TODO: defer error events consistently everywhere, not just the cb
27010 stream.emit('error', er);
27011 processNextTick(cb, er);
27012}
27013
27014// If we get something that is not a buffer, string, null, or undefined,
27015// and we're not in objectMode, then that's an error.
27016// Otherwise stream chunks are all considered to be of length=1, and the
27017// watermarks determine how many objects to keep in the buffer, rather than
27018// how many bytes or characters.
27019function validChunk(stream, state, chunk, cb) {
27020 var valid = true;
27021 var er = false;
27022 // Always throw error if a null is written
27023 // if we are not in object mode then throw
27024 // if it is not a buffer, string, or undefined.
27025 if (chunk === null) {
27026 er = new TypeError('May not write null values to stream');
27027 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
27028 er = new TypeError('Invalid non-string/buffer chunk');
27029 }
27030 if (er) {
27031 stream.emit('error', er);
27032 processNextTick(cb, er);
27033 valid = false;
27034 }
27035 return valid;
27036}
ebd8d4e8 27037
8b095871
IC
27038Writable.prototype.write = function (chunk, encoding, cb) {
27039 var state = this._writableState;
27040 var ret = false;
ab78acc6 27041
8b095871
IC
27042 if (typeof encoding === 'function') {
27043 cb = encoding;
27044 encoding = null;
27045 }
ab78acc6 27046
8b095871 27047 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
ab78acc6 27048
8b095871 27049 if (typeof cb !== 'function') cb = nop;
ab78acc6 27050
8b095871
IC
27051 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
27052 state.pendingcb++;
27053 ret = writeOrBuffer(this, state, chunk, encoding, cb);
27054 }
ab78acc6 27055
8b095871
IC
27056 return ret;
27057};
ab78acc6 27058
8b095871
IC
27059Writable.prototype.cork = function () {
27060 var state = this._writableState;
ab78acc6 27061
8b095871
IC
27062 state.corked++;
27063};
ebd8d4e8 27064
8b095871
IC
27065Writable.prototype.uncork = function () {
27066 var state = this._writableState;
ab78acc6 27067
8b095871
IC
27068 if (state.corked) {
27069 state.corked--;
ab78acc6 27070
8b095871
IC
27071 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
27072 }
27073};
ab78acc6 27074
8b095871
IC
27075Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
27076 // node::ParseEncoding() requires lower case.
27077 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
27078 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);
27079 this._writableState.defaultEncoding = encoding;
27080 return this;
27081};
ab78acc6 27082
8b095871
IC
27083function decodeChunk(state, chunk, encoding) {
27084 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
27085 chunk = bufferShim.from(chunk, encoding);
27086 }
27087 return chunk;
ab78acc6
IC
27088}
27089
8b095871
IC
27090// if we're already writing something, then just put this
27091// in the queue, and wait our turn. Otherwise, call _write
27092// If we return false, then we need a drain event, so set that flag.
27093function writeOrBuffer(stream, state, chunk, encoding, cb) {
27094 chunk = decodeChunk(state, chunk, encoding);
ab78acc6 27095
8b095871
IC
27096 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
27097 var len = state.objectMode ? 1 : chunk.length;
ebd8d4e8 27098
8b095871 27099 state.length += len;
ebd8d4e8 27100
8b095871
IC
27101 var ret = state.length < state.highWaterMark;
27102 // we must ensure that previous needDrain will not be reset to false.
27103 if (!ret) state.needDrain = true;
ebd8d4e8 27104
8b095871
IC
27105 if (state.writing || state.corked) {
27106 var last = state.lastBufferedRequest;
27107 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
27108 if (last) {
27109 last.next = state.lastBufferedRequest;
ebd8d4e8 27110 } else {
8b095871
IC
27111 state.bufferedRequest = state.lastBufferedRequest;
27112 }
27113 state.bufferedRequestCount += 1;
27114 } else {
27115 doWrite(stream, state, false, len, chunk, encoding, cb);
27116 }
ab78acc6 27117
8b095871
IC
27118 return ret;
27119}
ab78acc6 27120
8b095871
IC
27121function doWrite(stream, state, writev, len, chunk, encoding, cb) {
27122 state.writelen = len;
27123 state.writecb = cb;
27124 state.writing = true;
27125 state.sync = true;
27126 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
27127 state.sync = false;
27128}
ab78acc6 27129
8b095871
IC
27130function onwriteError(stream, state, sync, er, cb) {
27131 --state.pendingcb;
27132 if (sync) processNextTick(cb, er);else cb(er);
ab78acc6 27133
8b095871
IC
27134 stream._writableState.errorEmitted = true;
27135 stream.emit('error', er);
27136}
ebd8d4e8 27137
8b095871
IC
27138function onwriteStateUpdate(state) {
27139 state.writing = false;
27140 state.writecb = null;
27141 state.length -= state.writelen;
27142 state.writelen = 0;
ab78acc6 27143}
ebd8d4e8 27144
8b095871
IC
27145function onwrite(stream, er) {
27146 var state = stream._writableState;
27147 var sync = state.sync;
27148 var cb = state.writecb;
ab78acc6 27149
8b095871 27150 onwriteStateUpdate(state);
ab78acc6 27151
8b095871
IC
27152 if (er) onwriteError(stream, state, sync, er, cb);else {
27153 // Check if we're actually ready to finish, but don't emit yet
27154 var finished = needFinish(state);
27155
27156 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
27157 clearBuffer(stream, state);
27158 }
27159
27160 if (sync) {
27161 /*<replacement>*/
27162 asyncWrite(afterWrite, stream, state, finished, cb);
27163 /*</replacement>*/
27164 } else {
27165 afterWrite(stream, state, finished, cb);
27166 }
27167 }
ab78acc6
IC
27168}
27169
8b095871
IC
27170function afterWrite(stream, state, finished, cb) {
27171 if (!finished) onwriteDrain(stream, state);
27172 state.pendingcb--;
27173 cb();
27174 finishMaybe(stream, state);
27175}
ab78acc6 27176
8b095871
IC
27177// Must force callback to be called on nextTick, so that we don't
27178// emit 'drain' before the write() consumer gets the 'false' return
27179// value, and has a chance to attach a 'drain' listener.
27180function onwriteDrain(stream, state) {
27181 if (state.length === 0 && state.needDrain) {
27182 state.needDrain = false;
27183 stream.emit('drain');
ebd8d4e8 27184 }
ebd8d4e8 27185}
ebd8d4e8 27186
8b095871
IC
27187// if there's something in the buffer waiting, then process it
27188function clearBuffer(stream, state) {
27189 state.bufferProcessing = true;
27190 var entry = state.bufferedRequest;
ebd8d4e8 27191
8b095871
IC
27192 if (stream._writev && entry && entry.next) {
27193 // Fast case, write everything using _writev()
27194 var l = state.bufferedRequestCount;
27195 var buffer = new Array(l);
27196 var holder = state.corkedRequestsFree;
27197 holder.entry = entry;
ebd8d4e8 27198
8b095871
IC
27199 var count = 0;
27200 while (entry) {
27201 buffer[count] = entry;
27202 entry = entry.next;
27203 count += 1;
27204 }
ebd8d4e8 27205
8b095871 27206 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
ebd8d4e8 27207
8b095871
IC
27208 // doWrite is almost always async, defer these to save a bit of time
27209 // as the hot path ends with doWrite
27210 state.pendingcb++;
27211 state.lastBufferedRequest = null;
27212 if (holder.next) {
27213 state.corkedRequestsFree = holder.next;
27214 holder.next = null;
27215 } else {
27216 state.corkedRequestsFree = new CorkedRequest(state);
27217 }
27218 } else {
27219 // Slow case, write chunks one-by-one
27220 while (entry) {
27221 var chunk = entry.chunk;
27222 var encoding = entry.encoding;
27223 var cb = entry.callback;
27224 var len = state.objectMode ? 1 : chunk.length;
ebd8d4e8 27225
8b095871
IC
27226 doWrite(stream, state, false, len, chunk, encoding, cb);
27227 entry = entry.next;
27228 // if we didn't call the onwrite immediately, then
27229 // it means that we need to wait until it does.
27230 // also, that means that the chunk and cb are currently
27231 // being processed, so move the buffer counter past them.
27232 if (state.writing) {
27233 break;
27234 }
27235 }
27236
27237 if (entry === null) state.lastBufferedRequest = null;
ebd8d4e8 27238 }
ab78acc6 27239
8b095871
IC
27240 state.bufferedRequestCount = 0;
27241 state.bufferedRequest = entry;
27242 state.bufferProcessing = false;
ebd8d4e8
IC
27243}
27244
8b095871
IC
27245Writable.prototype._write = function (chunk, encoding, cb) {
27246 cb(new Error('_write() is not implemented'));
27247};
ebd8d4e8 27248
8b095871 27249Writable.prototype._writev = null;
ab78acc6 27250
8b095871
IC
27251Writable.prototype.end = function (chunk, encoding, cb) {
27252 var state = this._writableState;
27253
27254 if (typeof chunk === 'function') {
27255 cb = chunk;
27256 chunk = null;
27257 encoding = null;
27258 } else if (typeof encoding === 'function') {
27259 cb = encoding;
27260 encoding = null;
ab78acc6
IC
27261 }
27262
8b095871 27263 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
ab78acc6 27264
8b095871
IC
27265 // .end() fully uncorks
27266 if (state.corked) {
27267 state.corked = 1;
27268 this.uncork();
ab78acc6
IC
27269 }
27270
8b095871
IC
27271 // ignore unnecessary end() calls.
27272 if (!state.ending && !state.finished) endWritable(this, state, cb);
27273};
ab78acc6 27274
8b095871
IC
27275function needFinish(state) {
27276 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
27277}
ab78acc6 27278
8b095871
IC
27279function prefinish(stream, state) {
27280 if (!state.prefinished) {
27281 state.prefinished = true;
27282 stream.emit('prefinish');
ab78acc6 27283 }
8b095871 27284}
ab78acc6 27285
8b095871
IC
27286function finishMaybe(stream, state) {
27287 var need = needFinish(state);
27288 if (need) {
27289 if (state.pendingcb === 0) {
27290 prefinish(stream, state);
27291 state.finished = true;
27292 stream.emit('finish');
27293 } else {
27294 prefinish(stream, state);
27295 }
ab78acc6 27296 }
8b095871
IC
27297 return need;
27298}
ab78acc6 27299
8b095871
IC
27300function endWritable(stream, state, cb) {
27301 state.ending = true;
27302 finishMaybe(stream, state);
27303 if (cb) {
27304 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
ab78acc6 27305 }
8b095871
IC
27306 state.ended = true;
27307 stream.writable = false;
27308}
ab78acc6 27309
8b095871
IC
27310// It seems a linked list but it is not
27311// there will be only 2 of these for each stream
27312function CorkedRequest(state) {
27313 var _this = this;
ab78acc6 27314
8b095871
IC
27315 this.next = null;
27316 this.entry = null;
ebd8d4e8 27317
8b095871
IC
27318 this.finish = function (err) {
27319 var entry = _this.entry;
27320 _this.entry = null;
27321 while (entry) {
27322 var cb = entry.callback;
27323 state.pendingcb--;
27324 cb(err);
27325 entry = entry.next;
27326 }
27327 if (state.corkedRequestsFree) {
27328 state.corkedRequestsFree.next = _this;
27329 } else {
27330 state.corkedRequestsFree = _this;
27331 }
27332 };
27333}
27334}).call(this,require('_process'))
27335},{"./_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){
27336'use strict';
ebd8d4e8 27337
8b095871
IC
27338var Buffer = require('buffer').Buffer;
27339/*<replacement>*/
27340var bufferShim = require('buffer-shims');
27341/*</replacement>*/
ebd8d4e8 27342
8b095871 27343module.exports = BufferList;
ebd8d4e8 27344
8b095871
IC
27345function BufferList() {
27346 this.head = null;
27347 this.tail = null;
27348 this.length = 0;
27349}
ab78acc6 27350
8b095871
IC
27351BufferList.prototype.push = function (v) {
27352 var entry = { data: v, next: null };
27353 if (this.length > 0) this.tail.next = entry;else this.head = entry;
27354 this.tail = entry;
27355 ++this.length;
27356};
27357
27358BufferList.prototype.unshift = function (v) {
27359 var entry = { data: v, next: this.head };
27360 if (this.length === 0) this.tail = entry;
27361 this.head = entry;
27362 ++this.length;
27363};
ab78acc6 27364
8b095871
IC
27365BufferList.prototype.shift = function () {
27366 if (this.length === 0) return;
27367 var ret = this.head.data;
27368 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
27369 --this.length;
ab78acc6
IC
27370 return ret;
27371};
27372
8b095871
IC
27373BufferList.prototype.clear = function () {
27374 this.head = this.tail = null;
27375 this.length = 0;
27376};
ebd8d4e8 27377
8b095871
IC
27378BufferList.prototype.join = function (s) {
27379 if (this.length === 0) return '';
27380 var p = this.head;
27381 var ret = '' + p.data;
27382 while (p = p.next) {
27383 ret += s + p.data;
27384 }return ret;
27385};
ebd8d4e8 27386
8b095871
IC
27387BufferList.prototype.concat = function (n) {
27388 if (this.length === 0) return bufferShim.alloc(0);
27389 if (this.length === 1) return this.head.data;
27390 var ret = bufferShim.allocUnsafe(n >>> 0);
27391 var p = this.head;
27392 var i = 0;
27393 while (p) {
27394 p.data.copy(ret, i);
27395 i += p.data.length;
27396 p = p.next;
ebd8d4e8 27397 }
8b095871
IC
27398 return ret;
27399};
27400},{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
27401module.exports = require("./lib/_stream_passthrough.js")
ebd8d4e8 27402
8b095871
IC
27403},{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
27404(function (process){
27405var Stream = (function (){
27406 try {
27407 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
27408 } catch(_){}
27409}());
27410exports = module.exports = require('./lib/_stream_readable.js');
27411exports.Stream = Stream || exports;
27412exports.Readable = exports;
27413exports.Writable = require('./lib/_stream_writable.js');
27414exports.Duplex = require('./lib/_stream_duplex.js');
27415exports.Transform = require('./lib/_stream_transform.js');
27416exports.PassThrough = require('./lib/_stream_passthrough.js');
ab78acc6 27417
8b095871
IC
27418if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
27419 module.exports = Stream;
ab78acc6 27420}
ebd8d4e8 27421
8b095871
IC
27422}).call(this,require('_process'))
27423},{"./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){
27424module.exports = require("./lib/_stream_transform.js")
ebd8d4e8 27425
8b095871
IC
27426},{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
27427module.exports = require("./lib/_stream_writable.js")
ab78acc6 27428
8b095871
IC
27429},{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
27430// Copyright Joyent, Inc. and other Node contributors.
27431//
27432// Permission is hereby granted, free of charge, to any person obtaining a
27433// copy of this software and associated documentation files (the
27434// "Software"), to deal in the Software without restriction, including
27435// without limitation the rights to use, copy, modify, merge, publish,
27436// distribute, sublicense, and/or sell copies of the Software, and to permit
27437// persons to whom the Software is furnished to do so, subject to the
27438// following conditions:
27439//
27440// The above copyright notice and this permission notice shall be included
27441// in all copies or substantial portions of the Software.
27442//
27443// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27444// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27445// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27446// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27447// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27448// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27449// USE OR OTHER DEALINGS IN THE SOFTWARE.
27450
27451module.exports = Stream;
27452
27453var EE = require('events').EventEmitter;
27454var inherits = require('inherits');
27455
27456inherits(Stream, EE);
27457Stream.Readable = require('readable-stream/readable.js');
27458Stream.Writable = require('readable-stream/writable.js');
27459Stream.Duplex = require('readable-stream/duplex.js');
27460Stream.Transform = require('readable-stream/transform.js');
27461Stream.PassThrough = require('readable-stream/passthrough.js');
ebd8d4e8 27462
8b095871
IC
27463// Backwards-compat with node 0.4.x
27464Stream.Stream = Stream;
ebd8d4e8 27465
ab78acc6 27466
ab78acc6 27467
8b095871
IC
27468// old-style streams. Note that the pipe method (the only relevant
27469// part of this class) is overridden in the Readable class.
ebd8d4e8 27470
8b095871
IC
27471function Stream() {
27472 EE.call(this);
27473}
ebd8d4e8 27474
8b095871
IC
27475Stream.prototype.pipe = function(dest, options) {
27476 var source = this;
ab78acc6 27477
8b095871
IC
27478 function ondata(chunk) {
27479 if (dest.writable) {
27480 if (false === dest.write(chunk) && source.pause) {
27481 source.pause();
27482 }
ab78acc6
IC
27483 }
27484 }
27485
8b095871
IC
27486 source.on('data', ondata);
27487
27488 function ondrain() {
27489 if (source.readable && source.resume) {
27490 source.resume();
27491 }
ab78acc6
IC
27492 }
27493
ab78acc6
IC
27494 dest.on('drain', ondrain);
27495
8b095871
IC
27496 // If the 'end' option is not supplied, dest.end() will be called when
27497 // source gets the 'end' or 'close' events. Only dest.end() once.
27498 if (!dest._isStdio && (!options || options.end !== false)) {
27499 source.on('end', onend);
27500 source.on('close', onclose);
ab78acc6
IC
27501 }
27502
8b095871
IC
27503 var didOnEnd = false;
27504 function onend() {
27505 if (didOnEnd) return;
27506 didOnEnd = true;
ab78acc6 27507
8b095871 27508 dest.end();
ab78acc6 27509 }
ab78acc6
IC
27510
27511
ab78acc6 27512 function onclose() {
8b095871
IC
27513 if (didOnEnd) return;
27514 didOnEnd = true;
ebd8d4e8 27515
8b095871 27516 if (typeof dest.destroy === 'function') dest.destroy();
ebd8d4e8
IC
27517 }
27518
8b095871
IC
27519 // don't leave dangling pipes when there are errors.
27520 function onerror(er) {
27521 cleanup();
27522 if (EE.listenerCount(this, 'error') === 0) {
27523 throw er; // Unhandled stream error in pipe.
27524 }
ebd8d4e8
IC
27525 }
27526
8b095871
IC
27527 source.on('error', onerror);
27528 dest.on('error', onerror);
ab78acc6 27529
8b095871
IC
27530 // remove all the event listeners that were added.
27531 function cleanup() {
27532 source.removeListener('data', ondata);
27533 dest.removeListener('drain', ondrain);
ab78acc6 27534
8b095871
IC
27535 source.removeListener('end', onend);
27536 source.removeListener('close', onclose);
ab78acc6 27537
8b095871
IC
27538 source.removeListener('error', onerror);
27539 dest.removeListener('error', onerror);
ab78acc6 27540
8b095871
IC
27541 source.removeListener('end', cleanup);
27542 source.removeListener('close', cleanup);
ab78acc6 27543
8b095871
IC
27544 dest.removeListener('close', cleanup);
27545 }
ab78acc6 27546
8b095871
IC
27547 source.on('end', cleanup);
27548 source.on('close', cleanup);
ab78acc6 27549
8b095871 27550 dest.on('close', cleanup);
ebd8d4e8 27551
8b095871 27552 dest.emit('pipe', source);
ab78acc6 27553
8b095871
IC
27554 // Allow for unix-like usage: A.pipe(B).pipe(C)
27555 return dest;
27556};
ab78acc6 27557
8b095871
IC
27558},{"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){
27559// Copyright Joyent, Inc. and other Node contributors.
27560//
27561// Permission is hereby granted, free of charge, to any person obtaining a
27562// copy of this software and associated documentation files (the
27563// "Software"), to deal in the Software without restriction, including
27564// without limitation the rights to use, copy, modify, merge, publish,
27565// distribute, sublicense, and/or sell copies of the Software, and to permit
27566// persons to whom the Software is furnished to do so, subject to the
27567// following conditions:
27568//
27569// The above copyright notice and this permission notice shall be included
27570// in all copies or substantial portions of the Software.
27571//
27572// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27573// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27574// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27575// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27576// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27577// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27578// USE OR OTHER DEALINGS IN THE SOFTWARE.
27579
27580var Buffer = require('buffer').Buffer;
ebd8d4e8 27581
8b095871
IC
27582var isBufferEncoding = Buffer.isEncoding
27583 || function(encoding) {
27584 switch (encoding && encoding.toLowerCase()) {
27585 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;
27586 default: return false;
27587 }
27588 }
ab78acc6 27589
ab78acc6 27590
8b095871
IC
27591function assertEncoding(encoding) {
27592 if (encoding && !isBufferEncoding(encoding)) {
27593 throw new Error('Unknown encoding: ' + encoding);
27594 }
27595}
ebd8d4e8 27596
8b095871
IC
27597// StringDecoder provides an interface for efficiently splitting a series of
27598// buffers into a series of JS strings without breaking apart multi-byte
27599// characters. CESU-8 is handled as part of the UTF-8 encoding.
27600//
27601// @TODO Handling all encodings inside a single object makes it very difficult
27602// to reason about this code, so it should be split up in the future.
27603// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
27604// points as used by CESU-8.
27605var StringDecoder = exports.StringDecoder = function(encoding) {
27606 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
27607 assertEncoding(encoding);
27608 switch (this.encoding) {
27609 case 'utf8':
27610 // CESU-8 represents each of Surrogate Pair by 3-bytes
27611 this.surrogateSize = 3;
27612 break;
27613 case 'ucs2':
27614 case 'utf16le':
27615 // UTF-16 represents each of Surrogate Pair by 2-bytes
27616 this.surrogateSize = 2;
27617 this.detectIncompleteChar = utf16DetectIncompleteChar;
27618 break;
27619 case 'base64':
27620 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
27621 this.surrogateSize = 3;
27622 this.detectIncompleteChar = base64DetectIncompleteChar;
27623 break;
27624 default:
27625 this.write = passThroughWrite;
27626 return;
27627 }
27628
27629 // Enough space to store all bytes of a single character. UTF-8 needs 4
27630 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
27631 this.charBuffer = new Buffer(6);
27632 // Number of bytes received for the current incomplete multi-byte character.
27633 this.charReceived = 0;
27634 // Number of bytes expected for the current incomplete multi-byte character.
27635 this.charLength = 0;
ab78acc6
IC
27636};
27637
ab78acc6 27638
8b095871
IC
27639// write decodes the given buffer and returns it as JS string that is
27640// guaranteed to not contain any partial multi-byte characters. Any partial
27641// character found at the end of the buffer is buffered up, and will be
27642// returned when calling write again with the remaining bytes.
27643//
27644// Note: Converting a Buffer containing an orphan surrogate to a String
27645// currently works, but converting a String to a Buffer (via `new Buffer`, or
27646// Buffer#write) will replace incomplete surrogates with the unicode
27647// replacement character. See https://codereview.chromium.org/121173009/ .
27648StringDecoder.prototype.write = function(buffer) {
27649 var charStr = '';
27650 // if our last write ended with an incomplete multibyte character
27651 while (this.charLength) {
27652 // determine how many remaining bytes this buffer has to offer for this char
27653 var available = (buffer.length >= this.charLength - this.charReceived) ?
27654 this.charLength - this.charReceived :
27655 buffer.length;
ab78acc6 27656
8b095871
IC
27657 // add the new bytes to the char buffer
27658 buffer.copy(this.charBuffer, this.charReceived, 0, available);
27659 this.charReceived += available;
27660
27661 if (this.charReceived < this.charLength) {
27662 // still not enough chars in this buffer? wait for more ...
27663 return '';
ebd8d4e8 27664 }
ebd8d4e8 27665
8b095871
IC
27666 // remove bytes belonging to the current character from the buffer
27667 buffer = buffer.slice(available, buffer.length);
ab78acc6 27668
8b095871
IC
27669 // get the character that was split
27670 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
27671
27672 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27673 var charCode = charStr.charCodeAt(charStr.length - 1);
27674 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27675 this.charLength += this.surrogateSize;
27676 charStr = '';
27677 continue;
ab78acc6 27678 }
8b095871 27679 this.charReceived = this.charLength = 0;
ebd8d4e8 27680
8b095871
IC
27681 // if there are no more bytes in this buffer, just emit our char
27682 if (buffer.length === 0) {
27683 return charStr;
27684 }
27685 break;
ebd8d4e8 27686 }
ebd8d4e8 27687
8b095871
IC
27688 // determine and set charLength / charReceived
27689 this.detectIncompleteChar(buffer);
ebd8d4e8 27690
8b095871
IC
27691 var end = buffer.length;
27692 if (this.charLength) {
27693 // buffer the incomplete character bytes we got
27694 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
27695 end -= this.charReceived;
ab78acc6 27696 }
ebd8d4e8 27697
8b095871
IC
27698 charStr += buffer.toString(this.encoding, 0, end);
27699
27700 var end = charStr.length - 1;
27701 var charCode = charStr.charCodeAt(end);
27702 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
27703 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
27704 var size = this.surrogateSize;
27705 this.charLength += size;
27706 this.charReceived += size;
27707 this.charBuffer.copy(this.charBuffer, size, 0, size);
27708 buffer.copy(this.charBuffer, 0, 0, size);
27709 return charStr.substring(0, end);
ab78acc6 27710 }
ebd8d4e8 27711
8b095871
IC
27712 // or just emit the charStr
27713 return charStr;
27714};
ebd8d4e8 27715
8b095871
IC
27716// detectIncompleteChar determines if there is an incomplete UTF-8 character at
27717// the end of the given buffer. If so, it sets this.charLength to the byte
27718// length that character, and sets this.charReceived to the number of bytes
27719// that are available for this character.
27720StringDecoder.prototype.detectIncompleteChar = function(buffer) {
27721 // determine how many bytes we have to check at the end of this buffer
27722 var i = (buffer.length >= 3) ? 3 : buffer.length;
ab78acc6 27723
8b095871
IC
27724 // Figure out if one of the last i bytes of our buffer announces an
27725 // incomplete char.
27726 for (; i > 0; i--) {
27727 var c = buffer[buffer.length - i];
ebd8d4e8 27728
8b095871 27729 // See http://en.wikipedia.org/wiki/UTF-8#Description
ebd8d4e8 27730
8b095871
IC
27731 // 110XXXXX
27732 if (i == 1 && c >> 5 == 0x06) {
27733 this.charLength = 2;
27734 break;
ebd8d4e8 27735 }
ab78acc6 27736
8b095871
IC
27737 // 1110XXXX
27738 if (i <= 2 && c >> 4 == 0x0E) {
27739 this.charLength = 3;
27740 break;
27741 }
27742
27743 // 11110XXX
27744 if (i <= 3 && c >> 3 == 0x1E) {
27745 this.charLength = 4;
27746 break;
ebd8d4e8
IC
27747 }
27748 }
8b095871
IC
27749 this.charReceived = i;
27750};
ab78acc6 27751
8b095871
IC
27752StringDecoder.prototype.end = function(buffer) {
27753 var res = '';
27754 if (buffer && buffer.length)
27755 res = this.write(buffer);
ab78acc6 27756
8b095871
IC
27757 if (this.charReceived) {
27758 var cr = this.charReceived;
27759 var buf = this.charBuffer;
27760 var enc = this.encoding;
27761 res += buf.slice(0, cr).toString(enc);
27762 }
ab78acc6 27763
8b095871 27764 return res;
ab78acc6
IC
27765};
27766
8b095871
IC
27767function passThroughWrite(buffer) {
27768 return buffer.toString(this.encoding);
27769}
ab78acc6 27770
8b095871
IC
27771function utf16DetectIncompleteChar(buffer) {
27772 this.charReceived = buffer.length % 2;
27773 this.charLength = this.charReceived ? 2 : 0;
27774}
ab78acc6 27775
8b095871
IC
27776function base64DetectIncompleteChar(buffer) {
27777 this.charReceived = buffer.length % 3;
27778 this.charLength = this.charReceived ? 3 : 0;
27779}
ab78acc6 27780
8b095871
IC
27781},{"buffer":5}],27:[function(require,module,exports){
27782(function (global){
ab78acc6 27783
8b095871
IC
27784/**
27785 * Module exports.
27786 */
ebd8d4e8 27787
8b095871 27788module.exports = deprecate;
ebd8d4e8 27789
8b095871
IC
27790/**
27791 * Mark that a method should not be used.
27792 * Returns a modified function which warns once by default.
27793 *
27794 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
27795 *
27796 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
27797 * will throw an Error when invoked.
27798 *
27799 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
27800 * will invoke `console.trace()` instead of `console.error()`.
27801 *
27802 * @param {Function} fn - the function to deprecate
27803 * @param {String} msg - the string to print to the console when `fn` is invoked
27804 * @returns {Function} a new "deprecated" version of `fn`
27805 * @api public
27806 */
ebd8d4e8 27807
8b095871
IC
27808function deprecate (fn, msg) {
27809 if (config('noDeprecation')) {
27810 return fn;
27811 }
ebd8d4e8 27812
8b095871
IC
27813 var warned = false;
27814 function deprecated() {
27815 if (!warned) {
27816 if (config('throwDeprecation')) {
27817 throw new Error(msg);
27818 } else if (config('traceDeprecation')) {
27819 console.trace(msg);
27820 } else {
27821 console.warn(msg);
ab78acc6 27822 }
8b095871 27823 warned = true;
ab78acc6 27824 }
8b095871 27825 return fn.apply(this, arguments);
ebd8d4e8
IC
27826 }
27827
8b095871 27828 return deprecated;
ebd8d4e8
IC
27829}
27830
8b095871
IC
27831/**
27832 * Checks `localStorage` for boolean values for the given `name`.
27833 *
27834 * @param {String} name
27835 * @returns {Boolean}
27836 * @api private
27837 */
ebd8d4e8 27838
8b095871
IC
27839function config (name) {
27840 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
27841 try {
27842 if (!global.localStorage) return false;
27843 } catch (_) {
27844 return false;
ab78acc6 27845 }
8b095871
IC
27846 var val = global.localStorage[name];
27847 if (null == val) return false;
27848 return String(val).toLowerCase() === 'true';
ebd8d4e8 27849}
ebd8d4e8 27850
8b095871
IC
27851}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
27852},{}],28:[function(require,module,exports){
27853arguments[4][9][0].apply(exports,arguments)
27854},{"dup":9}],29:[function(require,module,exports){
27855module.exports = function isBuffer(arg) {
27856 return arg && typeof arg === 'object'
27857 && typeof arg.copy === 'function'
27858 && typeof arg.fill === 'function'
27859 && typeof arg.readUInt8 === 'function';
ebd8d4e8 27860}
8b095871
IC
27861},{}],30:[function(require,module,exports){
27862(function (process,global){
ab78acc6
IC
27863// Copyright Joyent, Inc. and other Node contributors.
27864//
27865// Permission is hereby granted, free of charge, to any person obtaining a
27866// copy of this software and associated documentation files (the
27867// "Software"), to deal in the Software without restriction, including
27868// without limitation the rights to use, copy, modify, merge, publish,
27869// distribute, sublicense, and/or sell copies of the Software, and to permit
27870// persons to whom the Software is furnished to do so, subject to the
27871// following conditions:
27872//
27873// The above copyright notice and this permission notice shall be included
27874// in all copies or substantial portions of the Software.
27875//
27876// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27877// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27878// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
27879// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
27880// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
27881// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
27882// USE OR OTHER DEALINGS IN THE SOFTWARE.
ebd8d4e8 27883
8b095871
IC
27884var formatRegExp = /%[sdj%]/g;
27885exports.format = function(f) {
27886 if (!isString(f)) {
27887 var objects = [];
27888 for (var i = 0; i < arguments.length; i++) {
27889 objects.push(inspect(arguments[i]));
27890 }
27891 return objects.join(' ');
27892 }
ebd8d4e8 27893
8b095871
IC
27894 var i = 1;
27895 var args = arguments;
27896 var len = args.length;
27897 var str = String(f).replace(formatRegExp, function(x) {
27898 if (x === '%%') return '%';
27899 if (i >= len) return x;
27900 switch (x) {
27901 case '%s': return String(args[i++]);
27902 case '%d': return Number(args[i++]);
27903 case '%j':
27904 try {
27905 return JSON.stringify(args[i++]);
27906 } catch (_) {
27907 return '[Circular]';
27908 }
27909 default:
27910 return x;
27911 }
27912 });
27913 for (var x = args[i]; i < len; x = args[++i]) {
27914 if (isNull(x) || !isObject(x)) {
27915 str += ' ' + x;
27916 } else {
27917 str += ' ' + inspect(x);
27918 }
27919 }
27920 return str;
27921};
ebd8d4e8 27922
ebd8d4e8 27923
8b095871
IC
27924// Mark that a method should not be used.
27925// Returns a modified function which warns once by default.
27926// If --no-deprecation is set, then it is a no-op.
27927exports.deprecate = function(fn, msg) {
27928 // Allow for deprecating things in the process of starting up.
27929 if (isUndefined(global.process)) {
27930 return function() {
27931 return exports.deprecate(fn, msg).apply(this, arguments);
27932 };
27933 }
27934
27935 if (process.noDeprecation === true) {
27936 return fn;
27937 }
27938
27939 var warned = false;
27940 function deprecated() {
27941 if (!warned) {
27942 if (process.throwDeprecation) {
27943 throw new Error(msg);
27944 } else if (process.traceDeprecation) {
27945 console.trace(msg);
27946 } else {
27947 console.error(msg);
27948 }
27949 warned = true;
27950 }
27951 return fn.apply(this, arguments);
27952 }
27953
27954 return deprecated;
27955};
ebd8d4e8 27956
ab78acc6 27957
8b095871
IC
27958var debugs = {};
27959var debugEnviron;
27960exports.debuglog = function(set) {
27961 if (isUndefined(debugEnviron))
27962 debugEnviron = process.env.NODE_DEBUG || '';
27963 set = set.toUpperCase();
27964 if (!debugs[set]) {
27965 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
27966 var pid = process.pid;
27967 debugs[set] = function() {
27968 var msg = exports.format.apply(exports, arguments);
27969 console.error('%s %d: %s', set, pid, msg);
27970 };
27971 } else {
27972 debugs[set] = function() {};
27973 }
27974 }
27975 return debugs[set];
27976};
ab78acc6
IC
27977
27978
8b095871
IC
27979/**
27980 * Echos the value of a value. Trys to print the value out
27981 * in the best way possible given the different types.
27982 *
27983 * @param {Object} obj The object to print out.
27984 * @param {Object} opts Optional options object that alters the output.
27985 */
27986/* legacy: obj, showHidden, depth, colors*/
27987function inspect(obj, opts) {
27988 // default options
27989 var ctx = {
27990 seen: [],
27991 stylize: stylizeNoColor
ab78acc6 27992 };
8b095871
IC
27993 // legacy...
27994 if (arguments.length >= 3) ctx.depth = arguments[2];
27995 if (arguments.length >= 4) ctx.colors = arguments[3];
27996 if (isBoolean(opts)) {
27997 // legacy...
27998 ctx.showHidden = opts;
27999 } else if (opts) {
28000 // got an "options" object
28001 exports._extend(ctx, opts);
28002 }
28003 // set default options
28004 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
28005 if (isUndefined(ctx.depth)) ctx.depth = 2;
28006 if (isUndefined(ctx.colors)) ctx.colors = false;
28007 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
28008 if (ctx.colors) ctx.stylize = stylizeWithColor;
28009 return formatValue(ctx, obj, ctx.depth);
ebd8d4e8 28010}
8b095871 28011exports.inspect = inspect;
ebd8d4e8 28012
ab78acc6 28013
8b095871
IC
28014// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
28015inspect.colors = {
28016 'bold' : [1, 22],
28017 'italic' : [3, 23],
28018 'underline' : [4, 24],
28019 'inverse' : [7, 27],
28020 'white' : [37, 39],
28021 'grey' : [90, 39],
28022 'black' : [30, 39],
28023 'blue' : [34, 39],
28024 'cyan' : [36, 39],
28025 'green' : [32, 39],
28026 'magenta' : [35, 39],
28027 'red' : [31, 39],
28028 'yellow' : [33, 39]
28029};
ab78acc6 28030
8b095871
IC
28031// Don't use 'blue' not visible on cmd.exe
28032inspect.styles = {
28033 'special': 'cyan',
28034 'number': 'yellow',
28035 'boolean': 'yellow',
28036 'undefined': 'grey',
28037 'null': 'bold',
28038 'string': 'green',
28039 'date': 'magenta',
28040 // "name": intentionally not styling
28041 'regexp': 'red'
28042};
ab78acc6 28043
ab78acc6 28044
8b095871
IC
28045function stylizeWithColor(str, styleType) {
28046 var style = inspect.styles[styleType];
ab78acc6 28047
8b095871
IC
28048 if (style) {
28049 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
28050 '\u001b[' + inspect.colors[style][1] + 'm';
28051 } else {
28052 return str;
ab78acc6 28053 }
ebd8d4e8 28054}
ebd8d4e8 28055
ab78acc6 28056
8b095871
IC
28057function stylizeNoColor(str, styleType) {
28058 return str;
28059}
ab78acc6 28060
ab78acc6 28061
8b095871
IC
28062function arrayToHash(array) {
28063 var hash = {};
ab78acc6 28064
8b095871
IC
28065 array.forEach(function(val, idx) {
28066 hash[val] = true;
ab78acc6 28067 });
ebd8d4e8 28068
8b095871
IC
28069 return hash;
28070}
ab78acc6 28071
ab78acc6 28072
8b095871
IC
28073function formatValue(ctx, value, recurseTimes) {
28074 // Provide a hook for user-specified inspect functions.
28075 // Check that value is an object with an inspect function on it
28076 if (ctx.customInspect &&
28077 value &&
28078 isFunction(value.inspect) &&
28079 // Filter out the util module, it's inspect function is special
28080 value.inspect !== exports.inspect &&
28081 // Also filter out any prototype objects using the circular check.
28082 !(value.constructor && value.constructor.prototype === value)) {
28083 var ret = value.inspect(recurseTimes, ctx);
28084 if (!isString(ret)) {
28085 ret = formatValue(ctx, ret, recurseTimes);
28086 }
28087 return ret;
ab78acc6 28088 }
ebd8d4e8 28089
8b095871
IC
28090 // Primitive types cannot have properties
28091 var primitive = formatPrimitive(ctx, value);
28092 if (primitive) {
28093 return primitive;
ab78acc6 28094 }
ebd8d4e8 28095
8b095871
IC
28096 // Look up the keys of the object.
28097 var keys = Object.keys(value);
28098 var visibleKeys = arrayToHash(keys);
ebd8d4e8 28099
8b095871
IC
28100 if (ctx.showHidden) {
28101 keys = Object.getOwnPropertyNames(value);
28102 }
ebd8d4e8 28103
8b095871
IC
28104 // IE doesn't make error fields non-enumerable
28105 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
28106 if (isError(value)
28107 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
28108 return formatError(value);
28109 }
ebd8d4e8 28110
8b095871
IC
28111 // Some type of object without properties can be shortcutted.
28112 if (keys.length === 0) {
28113 if (isFunction(value)) {
28114 var name = value.name ? ': ' + value.name : '';
28115 return ctx.stylize('[Function' + name + ']', 'special');
28116 }
28117 if (isRegExp(value)) {
28118 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28119 }
28120 if (isDate(value)) {
28121 return ctx.stylize(Date.prototype.toString.call(value), 'date');
28122 }
28123 if (isError(value)) {
28124 return formatError(value);
28125 }
28126 }
ab78acc6 28127
8b095871 28128 var base = '', array = false, braces = ['{', '}'];
ab78acc6 28129
8b095871
IC
28130 // Make Array say that they are Array
28131 if (isArray(value)) {
28132 array = true;
28133 braces = ['[', ']'];
28134 }
ebd8d4e8 28135
8b095871
IC
28136 // Make functions say that they are functions
28137 if (isFunction(value)) {
28138 var n = value.name ? ': ' + value.name : '';
28139 base = ' [Function' + n + ']';
28140 }
ebd8d4e8 28141
8b095871
IC
28142 // Make RegExps say that they are RegExps
28143 if (isRegExp(value)) {
28144 base = ' ' + RegExp.prototype.toString.call(value);
28145 }
ebd8d4e8 28146
8b095871
IC
28147 // Make dates with properties first say the date
28148 if (isDate(value)) {
28149 base = ' ' + Date.prototype.toUTCString.call(value);
28150 }
ebd8d4e8 28151
8b095871
IC
28152 // Make error with message first say the error
28153 if (isError(value)) {
28154 base = ' ' + formatError(value);
28155 }
ebd8d4e8 28156
8b095871
IC
28157 if (keys.length === 0 && (!array || value.length == 0)) {
28158 return braces[0] + base + braces[1];
28159 }
ebd8d4e8 28160
8b095871
IC
28161 if (recurseTimes < 0) {
28162 if (isRegExp(value)) {
28163 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
28164 } else {
28165 return ctx.stylize('[Object]', 'special');
28166 }
28167 }
ebd8d4e8 28168
8b095871 28169 ctx.seen.push(value);
ebd8d4e8 28170
8b095871
IC
28171 var output;
28172 if (array) {
28173 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
28174 } else {
28175 output = keys.map(function(key) {
28176 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
28177 });
28178 }
ebd8d4e8 28179
8b095871 28180 ctx.seen.pop();
ebd8d4e8 28181
8b095871 28182 return reduceToSingleString(output, base, braces);
ebd8d4e8
IC
28183}
28184
ebd8d4e8 28185
8b095871
IC
28186function formatPrimitive(ctx, value) {
28187 if (isUndefined(value))
28188 return ctx.stylize('undefined', 'undefined');
28189 if (isString(value)) {
28190 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
28191 .replace(/'/g, "\\'")
28192 .replace(/\\"/g, '"') + '\'';
28193 return ctx.stylize(simple, 'string');
28194 }
28195 if (isNumber(value))
28196 return ctx.stylize('' + value, 'number');
28197 if (isBoolean(value))
28198 return ctx.stylize('' + value, 'boolean');
28199 // For some reason typeof null is "object", so special case here.
28200 if (isNull(value))
28201 return ctx.stylize('null', 'null');
28202}
ebd8d4e8 28203
ebd8d4e8 28204
8b095871
IC
28205function formatError(value) {
28206 return '[' + Error.prototype.toString.call(value) + ']';
28207}
ebd8d4e8 28208
ebd8d4e8 28209
8b095871
IC
28210function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
28211 var output = [];
28212 for (var i = 0, l = value.length; i < l; ++i) {
28213 if (hasOwnProperty(value, String(i))) {
28214 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28215 String(i), true));
28216 } else {
28217 output.push('');
28218 }
28219 }
28220 keys.forEach(function(key) {
28221 if (!key.match(/^\d+$/)) {
28222 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
28223 key, true));
28224 }
28225 });
28226 return output;
28227}
ebd8d4e8 28228
ebd8d4e8 28229
8b095871
IC
28230function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
28231 var name, str, desc;
28232 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
28233 if (desc.get) {
28234 if (desc.set) {
28235 str = ctx.stylize('[Getter/Setter]', 'special');
28236 } else {
28237 str = ctx.stylize('[Getter]', 'special');
28238 }
28239 } else {
28240 if (desc.set) {
28241 str = ctx.stylize('[Setter]', 'special');
28242 }
28243 }
28244 if (!hasOwnProperty(visibleKeys, key)) {
28245 name = '[' + key + ']';
28246 }
28247 if (!str) {
28248 if (ctx.seen.indexOf(desc.value) < 0) {
28249 if (isNull(recurseTimes)) {
28250 str = formatValue(ctx, desc.value, null);
28251 } else {
28252 str = formatValue(ctx, desc.value, recurseTimes - 1);
28253 }
28254 if (str.indexOf('\n') > -1) {
28255 if (array) {
28256 str = str.split('\n').map(function(line) {
28257 return ' ' + line;
28258 }).join('\n').substr(2);
28259 } else {
28260 str = '\n' + str.split('\n').map(function(line) {
28261 return ' ' + line;
28262 }).join('\n');
28263 }
28264 }
28265 } else {
28266 str = ctx.stylize('[Circular]', 'special');
28267 }
28268 }
28269 if (isUndefined(name)) {
28270 if (array && key.match(/^\d+$/)) {
28271 return str;
28272 }
28273 name = JSON.stringify('' + key);
28274 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
28275 name = name.substr(1, name.length - 2);
28276 name = ctx.stylize(name, 'name');
28277 } else {
28278 name = name.replace(/'/g, "\\'")
28279 .replace(/\\"/g, '"')
28280 .replace(/(^"|"$)/g, "'");
28281 name = ctx.stylize(name, 'string');
28282 }
28283 }
ebd8d4e8 28284
8b095871
IC
28285 return name + ': ' + str;
28286}
ebd8d4e8 28287
ebd8d4e8 28288
8b095871
IC
28289function reduceToSingleString(output, base, braces) {
28290 var numLinesEst = 0;
28291 var length = output.reduce(function(prev, cur) {
28292 numLinesEst++;
28293 if (cur.indexOf('\n') >= 0) numLinesEst++;
28294 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
28295 }, 0);
ebd8d4e8 28296
8b095871
IC
28297 if (length > 60) {
28298 return braces[0] +
28299 (base === '' ? '' : base + '\n ') +
28300 ' ' +
28301 output.join(',\n ') +
28302 ' ' +
28303 braces[1];
28304 }
ebd8d4e8 28305
8b095871
IC
28306 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
28307}
ebd8d4e8 28308
ebd8d4e8 28309
8b095871
IC
28310// NOTE: These type checking functions intentionally don't use `instanceof`
28311// because it is fragile and can be easily faked with `Object.create()`.
28312function isArray(ar) {
28313 return Array.isArray(ar);
28314}
28315exports.isArray = isArray;
ebd8d4e8 28316
8b095871
IC
28317function isBoolean(arg) {
28318 return typeof arg === 'boolean';
28319}
28320exports.isBoolean = isBoolean;
ebd8d4e8 28321
8b095871
IC
28322function isNull(arg) {
28323 return arg === null;
28324}
28325exports.isNull = isNull;
ebd8d4e8 28326
8b095871
IC
28327function isNullOrUndefined(arg) {
28328 return arg == null;
ebd8d4e8 28329}
8b095871 28330exports.isNullOrUndefined = isNullOrUndefined;
ebd8d4e8 28331
8b095871
IC
28332function isNumber(arg) {
28333 return typeof arg === 'number';
28334}
28335exports.isNumber = isNumber;
ebd8d4e8 28336
8b095871
IC
28337function isString(arg) {
28338 return typeof arg === 'string';
28339}
28340exports.isString = isString;
ebd8d4e8 28341
8b095871
IC
28342function isSymbol(arg) {
28343 return typeof arg === 'symbol';
28344}
28345exports.isSymbol = isSymbol;
ebd8d4e8 28346
8b095871
IC
28347function isUndefined(arg) {
28348 return arg === void 0;
28349}
28350exports.isUndefined = isUndefined;
ebd8d4e8 28351
8b095871
IC
28352function isRegExp(re) {
28353 return isObject(re) && objectToString(re) === '[object RegExp]';
ebd8d4e8 28354}
8b095871 28355exports.isRegExp = isRegExp;
ebd8d4e8 28356
8b095871
IC
28357function isObject(arg) {
28358 return typeof arg === 'object' && arg !== null;
28359}
28360exports.isObject = isObject;
ebd8d4e8 28361
8b095871
IC
28362function isDate(d) {
28363 return isObject(d) && objectToString(d) === '[object Date]';
28364}
28365exports.isDate = isDate;
ebd8d4e8 28366
8b095871
IC
28367function isError(e) {
28368 return isObject(e) &&
28369 (objectToString(e) === '[object Error]' || e instanceof Error);
ebd8d4e8 28370}
8b095871 28371exports.isError = isError;
ebd8d4e8 28372
8b095871
IC
28373function isFunction(arg) {
28374 return typeof arg === 'function';
ebd8d4e8 28375}
8b095871 28376exports.isFunction = isFunction;
ebd8d4e8 28377
8b095871
IC
28378function isPrimitive(arg) {
28379 return arg === null ||
28380 typeof arg === 'boolean' ||
28381 typeof arg === 'number' ||
28382 typeof arg === 'string' ||
28383 typeof arg === 'symbol' || // ES6 symbol
28384 typeof arg === 'undefined';
28385}
28386exports.isPrimitive = isPrimitive;
ebd8d4e8 28387
8b095871 28388exports.isBuffer = require('./support/isBuffer');
ebd8d4e8 28389
8b095871
IC
28390function objectToString(o) {
28391 return Object.prototype.toString.call(o);
28392}
ab78acc6 28393
ab78acc6 28394
8b095871
IC
28395function pad(n) {
28396 return n < 10 ? '0' + n.toString(10) : n.toString(10);
28397}
ebd8d4e8 28398
ab78acc6 28399
8b095871
IC
28400var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
28401 'Oct', 'Nov', 'Dec'];
ab78acc6 28402
8b095871
IC
28403// 26 Feb 16:19:34
28404function timestamp() {
28405 var d = new Date();
28406 var time = [pad(d.getHours()),
28407 pad(d.getMinutes()),
28408 pad(d.getSeconds())].join(':');
28409 return [d.getDate(), months[d.getMonth()], time].join(' ');
28410}
28411
28412
28413// log is just a thin wrapper to console.log that prepends a timestamp
28414exports.log = function() {
28415 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
ab78acc6 28416};
ebd8d4e8 28417
ebd8d4e8 28418
8b095871
IC
28419/**
28420 * Inherit the prototype methods from one constructor into another.
28421 *
28422 * The Function.prototype.inherits from lang.js rewritten as a standalone
28423 * function (not on Function.prototype). NOTE: If this file is to be loaded
28424 * during bootstrapping this function needs to be rewritten using some native
28425 * functions as prototype setup using normal JavaScript does not work as
28426 * expected during bootstrapping (see mirror.js in r114903).
28427 *
28428 * @param {function} ctor Constructor function which needs to inherit the
28429 * prototype.
28430 * @param {function} superCtor Constructor function to inherit prototype from.
28431 */
28432exports.inherits = require('inherits');
ebd8d4e8 28433
8b095871
IC
28434exports._extend = function(origin, add) {
28435 // Don't do anything if add isn't an object
28436 if (!add || !isObject(add)) return origin;
28437
28438 var keys = Object.keys(add);
28439 var i = keys.length;
28440 while (i--) {
28441 origin[keys[i]] = add[keys[i]];
ebd8d4e8 28442 }
8b095871 28443 return origin;
ab78acc6 28444};
ebd8d4e8 28445
8b095871
IC
28446function hasOwnProperty(obj, prop) {
28447 return Object.prototype.hasOwnProperty.call(obj, prop);
ebd8d4e8
IC
28448}
28449
8b095871
IC
28450}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28451},{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
28452(function (Buffer){
28453const createKeccakHash = require('keccak')
28454const secp256k1 = require('secp256k1')
28455const assert = require('assert')
28456const rlp = require('rlp')
28457const BN = require('bn.js')
28458const createHash = require('create-hash')
28459Object.assign(exports, require('ethjs-util'))
ab78acc6 28460
8b095871
IC
28461/**
28462 * the max integer that this VM can handle (a ```BN```)
28463 * @var {BN} MAX_INTEGER
28464 */
28465exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
ab78acc6 28466
8b095871
IC
28467/**
28468 * 2^256 (a ```BN```)
28469 * @var {BN} TWO_POW256
28470 */
28471exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
ab78acc6 28472
8b095871
IC
28473/**
28474 * SHA3-256 hash of null (a ```String```)
28475 * @var {String} SHA3_NULL_S
28476 */
28477exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
ebd8d4e8 28478
8b095871
IC
28479/**
28480 * SHA3-256 hash of null (a ```Buffer```)
28481 * @var {Buffer} SHA3_NULL
28482 */
28483exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
ebd8d4e8 28484
8b095871
IC
28485/**
28486 * SHA3-256 of an RLP of an empty array (a ```String```)
28487 * @var {String} SHA3_RLP_ARRAY_S
28488 */
28489exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
ebd8d4e8 28490
8b095871
IC
28491/**
28492 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
28493 * @var {Buffer} SHA3_RLP_ARRAY
28494 */
28495exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
ebd8d4e8 28496
8b095871
IC
28497/**
28498 * SHA3-256 hash of the RLP of null (a ```String```)
28499 * @var {String} SHA3_RLP_S
28500 */
28501exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
ebd8d4e8 28502
8b095871
IC
28503/**
28504 * SHA3-256 hash of the RLP of null (a ```Buffer```)
28505 * @var {Buffer} SHA3_RLP
28506 */
28507exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
ebd8d4e8 28508
8b095871
IC
28509/**
28510 * [`BN`](https://github.com/indutny/bn.js)
28511 * @var {Function}
28512 */
28513exports.BN = BN
ebd8d4e8 28514
8b095871
IC
28515/**
28516 * [`rlp`](https://github.com/ethereumjs/rlp)
28517 * @var {Function}
28518 */
28519exports.rlp = rlp
ebd8d4e8 28520
8b095871
IC
28521/**
28522 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
28523 * @var {Object}
28524 */
28525exports.secp256k1 = secp256k1
ab78acc6 28526
8b095871
IC
28527/**
28528 * Returns a buffer filled with 0s
28529 * @method zeros
28530 * @param {Number} bytes the number of bytes the buffer should be
28531 * @return {Buffer}
28532 */
28533exports.zeros = function (bytes) {
28534 return Buffer.allocUnsafe(bytes).fill(0)
28535}
28536
28537/**
28538 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28539 * Or it truncates the beginning if it exceeds.
28540 * @method lsetLength
28541 * @param {Buffer|Array} msg the value to pad
28542 * @param {Number} length the number of bytes the output should be
28543 * @param {Boolean} [right=false] whether to start padding form the left or right
28544 * @return {Buffer|Array}
28545 */
28546exports.setLengthLeft = exports.setLength = function (msg, length, right) {
28547 var buf = exports.zeros(length)
28548 msg = exports.toBuffer(msg)
28549 if (right) {
28550 if (msg.length < length) {
28551 msg.copy(buf)
28552 return buf
28553 }
28554 return msg.slice(0, length)
28555 } else {
28556 if (msg.length < length) {
28557 msg.copy(buf, length - msg.length)
28558 return buf
ebd8d4e8 28559 }
8b095871 28560 return msg.slice(-length)
ebd8d4e8
IC
28561 }
28562}
28563
8b095871
IC
28564/**
28565 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
28566 * Or it truncates the beginning if it exceeds.
28567 * @param {Buffer|Array} msg the value to pad
28568 * @param {Number} length the number of bytes the output should be
28569 * @return {Buffer|Array}
28570 */
28571exports.setLengthRight = function (msg, length) {
28572 return exports.setLength(msg, length, true)
ab78acc6
IC
28573}
28574
8b095871
IC
28575/**
28576 * Trims leading zeros from a `Buffer` or an `Array`
28577 * @param {Buffer|Array|String} a
28578 * @return {Buffer|Array|String}
28579 */
28580exports.unpad = exports.stripZeros = function (a) {
28581 a = exports.stripHexPrefix(a)
28582 var first = a[0]
28583 while (a.length > 0 && first.toString() === '0') {
28584 a = a.slice(1)
28585 first = a[0]
28586 }
28587 return a
28588}
28589/**
28590 * 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.
28591 * @param {*} v the value
28592 */
28593exports.toBuffer = function (v) {
28594 if (!Buffer.isBuffer(v)) {
28595 if (Array.isArray(v)) {
28596 v = Buffer.from(v)
28597 } else if (typeof v === 'string') {
28598 if (exports.isHexPrefixed(v)) {
28599 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
28600 } else {
28601 v = Buffer.from(v)
28602 }
28603 } else if (typeof v === 'number') {
28604 v = exports.intToBuffer(v)
28605 } else if (v === null || v === undefined) {
28606 v = Buffer.allocUnsafe(0)
28607 } else if (v.toArray) {
28608 // converts a BN to a Buffer
28609 v = Buffer.from(v.toArray())
28610 } else {
28611 throw new Error('invalid type')
28612 }
ebd8d4e8 28613 }
8b095871 28614 return v
ebd8d4e8
IC
28615}
28616
8b095871
IC
28617/**
28618 * Converts a `Buffer` to a `Number`
28619 * @param {Buffer} buf
28620 * @return {Number}
28621 * @throws If the input number exceeds 53 bits.
28622 */
28623exports.bufferToInt = function (buf) {
28624 return new BN(exports.toBuffer(buf)).toNumber()
28625}
ebd8d4e8 28626
8b095871
IC
28627/**
28628 * Converts a `Buffer` into a hex `String`
28629 * @param {Buffer} buf
28630 * @return {String}
28631 */
28632exports.bufferToHex = function (buf) {
28633 buf = exports.toBuffer(buf)
28634 return '0x' + buf.toString('hex')
28635}
ab78acc6 28636
8b095871
IC
28637/**
28638 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
28639 * @param {Buffer} num
28640 * @return {BN}
28641 */
28642exports.fromSigned = function (num) {
28643 return new BN(num).fromTwos(256)
28644}
ab78acc6 28645
8b095871
IC
28646/**
28647 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
28648 * @param {BN} num
28649 * @return {Buffer}
28650 */
28651exports.toUnsigned = function (num) {
28652 return Buffer.from(num.toTwos(256).toArray())
28653}
ab78acc6 28654
8b095871
IC
28655/**
28656 * Creates SHA-3 hash of the input
28657 * @param {Buffer|Array|String|Number} a the input data
28658 * @param {Number} [bits=256] the SHA width
28659 * @return {Buffer}
28660 */
28661exports.sha3 = function (a, bits) {
28662 a = exports.toBuffer(a)
28663 if (!bits) bits = 256
ab78acc6 28664
8b095871
IC
28665 return createKeccakHash('keccak' + bits).update(a).digest()
28666}
ab78acc6 28667
8b095871
IC
28668/**
28669 * Creates SHA256 hash of the input
28670 * @param {Buffer|Array|String|Number} a the input data
28671 * @return {Buffer}
28672 */
28673exports.sha256 = function (a) {
28674 a = exports.toBuffer(a)
28675 return createHash('sha256').update(a).digest()
28676}
ab78acc6 28677
8b095871
IC
28678/**
28679 * Creates RIPEMD160 hash of the input
28680 * @param {Buffer|Array|String|Number} a the input data
28681 * @param {Boolean} padded whether it should be padded to 256 bits or not
28682 * @return {Buffer}
28683 */
28684exports.ripemd160 = function (a, padded) {
28685 a = exports.toBuffer(a)
28686 var hash = createHash('rmd160').update(a).digest()
28687 if (padded === true) {
28688 return exports.setLength(hash, 32)
28689 } else {
28690 return hash
ebd8d4e8 28691 }
8b095871 28692}
ebd8d4e8 28693
8b095871
IC
28694/**
28695 * Creates SHA-3 hash of the RLP encoded version of the input
28696 * @param {Buffer|Array|String|Number} a the input data
28697 * @return {Buffer}
28698 */
28699exports.rlphash = function (a) {
28700 return exports.sha3(rlp.encode(a))
ebd8d4e8
IC
28701}
28702
8b095871
IC
28703/**
28704 * Checks if the private key satisfies the rules of the curve secp256k1.
28705 * @param {Buffer} privateKey
28706 * @return {Boolean}
28707 */
28708exports.isValidPrivate = function (privateKey) {
28709 return secp256k1.privateKeyVerify(privateKey)
28710}
ebd8d4e8 28711
8b095871
IC
28712/**
28713 * Checks if the public key satisfies the rules of the curve secp256k1
28714 * and the requirements of Ethereum.
28715 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
28716 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28717 * @return {Boolean}
28718 */
28719exports.isValidPublic = function (publicKey, sanitize) {
28720 if (publicKey.length === 64) {
28721 // Convert to SEC1 for secp256k1
28722 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
28723 }
ebd8d4e8 28724
8b095871
IC
28725 if (!sanitize) {
28726 return false
28727 }
ebd8d4e8 28728
8b095871
IC
28729 return secp256k1.publicKeyVerify(publicKey)
28730}
ebd8d4e8 28731
8b095871
IC
28732/**
28733 * Returns the ethereum address of a given public key.
28734 * Accepts "Ethereum public keys" and SEC1 encoded keys.
28735 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
28736 * @param {Boolean} [sanitize=false] Accept public keys in other formats
28737 * @return {Buffer}
28738 */
28739exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
28740 pubKey = exports.toBuffer(pubKey)
28741 if (sanitize && (pubKey.length !== 64)) {
28742 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
ab78acc6 28743 }
8b095871
IC
28744 assert(pubKey.length === 64)
28745 // Only take the lower 160bits of the hash
28746 return exports.sha3(pubKey).slice(-20)
28747}
ebd8d4e8 28748
8b095871
IC
28749/**
28750 * Returns the ethereum public key of a given private key
28751 * @param {Buffer} privateKey A private key must be 256 bits wide
28752 * @return {Buffer}
28753 */
28754var privateToPublic = exports.privateToPublic = function (privateKey) {
28755 privateKey = exports.toBuffer(privateKey)
28756 // skip the type flag and use the X, Y points
28757 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
28758}
ab78acc6 28759
8b095871
IC
28760/**
28761 * Converts a public key to the Ethereum format.
28762 * @param {Buffer} publicKey
28763 * @return {Buffer}
28764 */
28765exports.importPublic = function (publicKey) {
28766 publicKey = exports.toBuffer(publicKey)
28767 if (publicKey.length !== 64) {
28768 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
ebd8d4e8 28769 }
8b095871
IC
28770 return publicKey
28771}
ab78acc6 28772
8b095871
IC
28773/**
28774 * ECDSA sign
28775 * @param {Buffer} msgHash
28776 * @param {Buffer} privateKey
28777 * @return {Object}
28778 */
28779exports.ecsign = function (msgHash, privateKey) {
28780 var sig = secp256k1.sign(msgHash, privateKey)
ab78acc6 28781
8b095871
IC
28782 var ret = {}
28783 ret.r = sig.signature.slice(0, 32)
28784 ret.s = sig.signature.slice(32, 64)
28785 ret.v = sig.recovery + 27
28786 return ret
ebd8d4e8
IC
28787}
28788
8b095871
IC
28789/**
28790 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
28791 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
28792 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
28793 * used to produce the signature.
28794 * @param message
28795 * @returns {Buffer} hash
28796 */
28797exports.hashPersonalMessage = function (message) {
28798 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
28799 return exports.sha3(Buffer.concat([prefix, message]))
ebd8d4e8
IC
28800}
28801
8b095871
IC
28802/**
28803 * ECDSA public key recovery from signature
28804 * @param {Buffer} msgHash
28805 * @param {Number} v
28806 * @param {Buffer} r
28807 * @param {Buffer} s
28808 * @return {Buffer} publicKey
28809 */
28810exports.ecrecover = function (msgHash, v, r, s) {
28811 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
28812 var recovery = v - 27
28813 if (recovery !== 0 && recovery !== 1) {
28814 throw new Error('Invalid signature v value')
ab78acc6 28815 }
8b095871
IC
28816 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
28817 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
ab78acc6 28818}
ebd8d4e8 28819
8b095871
IC
28820/**
28821 * Convert signature parameters into the format of `eth_sign` RPC method
28822 * @param {Number} v
28823 * @param {Buffer} r
28824 * @param {Buffer} s
28825 * @return {String} sig
28826 */
28827exports.toRpcSig = function (v, r, s) {
28828 // NOTE: with potential introduction of chainId this might need to be updated
28829 if (v !== 27 && v !== 28) {
28830 throw new Error('Invalid recovery id')
28831 }
28832
28833 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
28834 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
28835 return exports.bufferToHex(Buffer.concat([
28836 exports.setLengthLeft(r, 32),
28837 exports.setLengthLeft(s, 32),
28838 exports.toBuffer(v - 27)
28839 ]))
ebd8d4e8
IC
28840}
28841
8b095871
IC
28842/**
28843 * Convert signature format of the `eth_sign` RPC method to signature parameters
28844 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
28845 * @param {String} sig
28846 * @return {Object}
28847 */
28848exports.fromRpcSig = function (sig) {
28849 sig = exports.toBuffer(sig)
ebd8d4e8 28850
8b095871
IC
28851 // NOTE: with potential introduction of chainId this might need to be updated
28852 if (sig.length !== 65) {
28853 throw new Error('Invalid signature length')
28854 }
28855
28856 var v = sig[64]
28857 // support both versions of `eth_sign` responses
28858 if (v < 27) {
28859 v += 27
28860 }
28861
28862 return {
28863 v: v,
28864 r: sig.slice(0, 32),
28865 s: sig.slice(32, 64)
28866 }
ebd8d4e8
IC
28867}
28868
8b095871
IC
28869/**
28870 * Returns the ethereum address of a given private key
28871 * @param {Buffer} privateKey A private key must be 256 bits wide
28872 * @return {Buffer}
28873 */
28874exports.privateToAddress = function (privateKey) {
28875 return exports.publicToAddress(privateToPublic(privateKey))
ab78acc6 28876}
ebd8d4e8 28877
8b095871
IC
28878/**
28879 * Checks if the address is a valid. Accepts checksummed addresses too
28880 * @param {String} address
28881 * @return {Boolean}
28882 */
28883exports.isValidAddress = function (address) {
28884 return /^0x[0-9a-fA-F]{40}$/i.test(address)
ab78acc6 28885}
ebd8d4e8 28886
8b095871
IC
28887/**
28888 * Returns a checksummed address
28889 * @param {String} address
28890 * @return {String}
28891 */
28892exports.toChecksumAddress = function (address) {
28893 address = exports.stripHexPrefix(address).toLowerCase()
28894 var hash = exports.sha3(address).toString('hex')
28895 var ret = '0x'
28896
28897 for (var i = 0; i < address.length; i++) {
28898 if (parseInt(hash[i], 16) >= 8) {
28899 ret += address[i].toUpperCase()
28900 } else {
28901 ret += address[i]
28902 }
28903 }
28904
28905 return ret
ebd8d4e8
IC
28906}
28907
8b095871
IC
28908/**
28909 * Checks if the address is a valid checksummed address
28910 * @param {Buffer} address
28911 * @return {Boolean}
28912 */
28913exports.isValidChecksumAddress = function (address) {
28914 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
ab78acc6 28915}
ebd8d4e8 28916
8b095871
IC
28917/**
28918 * Generates an address of a newly created contract
28919 * @param {Buffer} from the address which is creating this new address
28920 * @param {Buffer} nonce the nonce of the from account
28921 * @return {Buffer}
28922 */
28923exports.generateAddress = function (from, nonce) {
28924 from = exports.toBuffer(from)
28925 nonce = new BN(nonce)
28926
28927 if (nonce.isZero()) {
28928 // in RLP we want to encode null in the case of zero nonce
28929 // read the RLP documentation for an answer if you dare
28930 nonce = null
28931 } else {
28932 nonce = Buffer.from(nonce.toArray())
28933 }
28934
28935 // Only take the lower 160bits of the hash
28936 return exports.rlphash([from, nonce]).slice(-20)
ab78acc6 28937}
ebd8d4e8 28938
8b095871
IC
28939/**
28940 * Returns true if the supplied address belongs to a precompiled account
28941 * @param {Buffer|String} address
28942 * @return {Boolean}
28943 */
28944exports.isPrecompiled = function (address) {
28945 var a = exports.unpad(address)
28946 return a.length === 1 && a[0] > 0 && a[0] < 5
ebd8d4e8
IC
28947}
28948
8b095871
IC
28949/**
28950 * Adds "0x" to a given `String` if it does not already start with "0x"
28951 * @param {String} str
28952 * @return {String}
28953 */
28954exports.addHexPrefix = function (str) {
28955 if (typeof str !== 'string') {
28956 return str
28957 }
28958
28959 return exports.isHexPrefixed(str) ? str : '0x' + str
ebd8d4e8
IC
28960}
28961
8b095871
IC
28962/**
28963 * Validate ECDSA signature
28964 * @method isValidSignature
28965 * @param {Buffer} v
28966 * @param {Buffer} r
28967 * @param {Buffer} s
28968 * @param {Boolean} [homestead=true]
28969 * @return {Boolean}
28970 */
28971
28972exports.isValidSignature = function (v, r, s, homestead) {
28973 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
28974 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
28975
28976 if (r.length !== 32 || s.length !== 32) {
28977 return false
28978 }
28979
28980 if (v !== 27 && v !== 28) {
28981 return false
28982 }
28983
28984 r = new BN(r)
28985 s = new BN(s)
28986
28987 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
28988 return false
28989 }
28990
28991 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
28992 return false
28993 }
28994
28995 return true
ebd8d4e8
IC
28996}
28997
8b095871
IC
28998/**
28999 * Converts a `Buffer` or `Array` to JSON
29000 * @param {Buffer|Array} ba
29001 * @return {Array|String|null}
29002 */
29003exports.baToJSON = function (ba) {
29004 if (Buffer.isBuffer(ba)) {
29005 return '0x' + ba.toString('hex')
29006 } else if (ba instanceof Array) {
29007 var array = []
29008 for (var i = 0; i < ba.length; i++) {
29009 array.push(exports.baToJSON(ba[i]))
29010 }
29011 return array
29012 }
ab78acc6 29013}
ebd8d4e8 29014
8b095871
IC
29015/**
29016 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
29017 * @param {Object} self the `Object` to define properties on
29018 * @param {Array} fields an array fields to define. Fields can contain:
29019 * * `name` - the name of the properties
29020 * * `length` - the number of bytes the field can have
29021 * * `allowLess` - if the field can be less than the length
29022 * * `allowEmpty`
29023 * @param {*} data data to be validated against the definitions
29024 */
29025exports.defineProperties = function (self, fields, data) {
29026 self.raw = []
29027 self._fields = []
29028
29029 // attach the `toJSON`
29030 self.toJSON = function (label) {
29031 if (label) {
29032 var obj = {}
29033 self._fields.forEach(function (field) {
29034 obj[field] = '0x' + self[field].toString('hex')
29035 })
29036 return obj
29037 }
29038 return exports.baToJSON(this.raw)
29039 }
29040
29041 self.serialize = function serialize () {
29042 return rlp.encode(self.raw)
29043 }
29044
29045 fields.forEach(function (field, i) {
29046 self._fields.push(field.name)
29047 function getter () {
29048 return self.raw[i]
29049 }
29050 function setter (v) {
29051 v = exports.toBuffer(v)
29052
29053 if (v.toString('hex') === '00' && !field.allowZero) {
29054 v = Buffer.allocUnsafe(0)
29055 }
29056
29057 if (field.allowLess && field.length) {
29058 v = exports.stripZeros(v)
29059 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
29060 } else if (!(field.allowZero && v.length === 0) && field.length) {
29061 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
29062 }
29063
29064 self.raw[i] = v
29065 }
29066
29067 Object.defineProperty(self, field.name, {
29068 enumerable: true,
29069 configurable: true,
29070 get: getter,
29071 set: setter
29072 })
29073
29074 if (field.default) {
29075 self[field.name] = field.default
29076 }
29077
29078 // attach alias
29079 if (field.alias) {
29080 Object.defineProperty(self, field.alias, {
29081 enumerable: false,
29082 configurable: true,
29083 set: setter,
29084 get: getter
29085 })
29086 }
29087 })
29088
29089 // if the constuctor is passed data
29090 if (data) {
29091 if (typeof data === 'string') {
29092 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
29093 }
29094
29095 if (Buffer.isBuffer(data)) {
29096 data = rlp.decode(data)
29097 }
29098
29099 if (Array.isArray(data)) {
29100 if (data.length > self._fields.length) {
29101 throw (new Error('wrong number of fields in data'))
29102 }
29103
29104 // make sure all the items are buffers
29105 data.forEach(function (d, i) {
29106 self[self._fields[i]] = exports.toBuffer(d)
29107 })
29108 } else if (typeof data === 'object') {
29109 const keys = Object.keys(data)
29110 fields.forEach(function (field) {
29111 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
29112 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
29113 })
29114 } else {
29115 throw new Error('invalid data')
29116 }
29117 }
ab78acc6 29118}
ebd8d4e8 29119
8b095871
IC
29120}).call(this,require("buffer").Buffer)
29121},{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
29122(function (Buffer){
29123// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
29124// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29125// NOTE: SIGHASH byte ignored AND restricted, truncate before use
29126
29127function check (buffer) {
29128 if (buffer.length < 8) return false
29129 if (buffer.length > 72) return false
29130 if (buffer[0] !== 0x30) return false
29131 if (buffer[1] !== buffer.length - 2) return false
29132 if (buffer[2] !== 0x02) return false
29133
29134 var lenR = buffer[3]
29135 if (lenR === 0) return false
29136 if (5 + lenR >= buffer.length) return false
29137 if (buffer[4 + lenR] !== 0x02) return false
29138
29139 var lenS = buffer[5 + lenR]
29140 if (lenS === 0) return false
29141 if ((6 + lenR + lenS) !== buffer.length) return false
29142
29143 if (buffer[4] & 0x80) return false
29144 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
29145
29146 if (buffer[lenR + 6] & 0x80) return false
29147 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
29148 return true
ab78acc6 29149}
ab78acc6 29150
8b095871
IC
29151function decode (buffer) {
29152 if (buffer.length < 8) throw new Error('DER sequence length is too short')
29153 if (buffer.length > 72) throw new Error('DER sequence length is too long')
29154 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
29155 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
29156 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
29157
29158 var lenR = buffer[3]
29159 if (lenR === 0) throw new Error('R length is zero')
29160 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
29161 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
29162
29163 var lenS = buffer[5 + lenR]
29164 if (lenS === 0) throw new Error('S length is zero')
29165 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
29166
29167 if (buffer[4] & 0x80) throw new Error('R value is negative')
29168 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
29169
29170 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
29171 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
29172
29173 // non-BIP66 - extract R, S values
29174 return {
29175 r: buffer.slice(4, 4 + lenR),
29176 s: buffer.slice(6 + lenR)
29177 }
ebd8d4e8
IC
29178}
29179
8b095871
IC
29180/*
29181 * Expects r and s to be positive DER integers.
29182 *
29183 * The DER format uses the most significant bit as a sign bit (& 0x80).
29184 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
29185 *
29186 * Examples:
29187 *
29188 * 0 => 0x00
29189 * 1 => 0x01
29190 * -1 => 0xff
29191 * 127 => 0x7f
29192 * -127 => 0x81
29193 * 128 => 0x0080
29194 * -128 => 0x80
29195 * 255 => 0x00ff
29196 * -255 => 0xff01
29197 * 16300 => 0x3fac
29198 * -16300 => 0xc054
29199 * 62300 => 0x00f35c
29200 * -62300 => 0xff0ca4
29201*/
29202function encode (r, s) {
29203 var lenR = r.length
29204 var lenS = s.length
29205 if (lenR === 0) throw new Error('R length is zero')
29206 if (lenS === 0) throw new Error('S length is zero')
29207 if (lenR > 33) throw new Error('R length is too long')
29208 if (lenS > 33) throw new Error('S length is too long')
29209 if (r[0] & 0x80) throw new Error('R value is negative')
29210 if (s[0] & 0x80) throw new Error('S value is negative')
29211 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
29212 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
29213
29214 var signature = new Buffer(6 + lenR + lenS)
29215
29216 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
29217 signature[0] = 0x30
29218 signature[1] = signature.length - 2
29219 signature[2] = 0x02
29220 signature[3] = r.length
29221 r.copy(signature, 4)
29222 signature[4 + lenR] = 0x02
29223 signature[5 + lenR] = s.length
29224 s.copy(signature, 6 + lenR)
29225
29226 return signature
ebd8d4e8
IC
29227}
29228
8b095871
IC
29229module.exports = {
29230 check: check,
29231 decode: decode,
29232 encode: encode
ebd8d4e8 29233}
8b095871 29234
ab78acc6 29235}).call(this,require("buffer").Buffer)
8b095871
IC
29236},{"buffer":5}],33:[function(require,module,exports){
29237(function (module, exports) {
29238 'use strict';
ebd8d4e8 29239
8b095871
IC
29240 // Utils
29241 function assert (val, msg) {
29242 if (!val) throw new Error(msg || 'Assertion failed');
29243 }
ebd8d4e8 29244
8b095871
IC
29245 // Could use `inherits` module, but don't want to move from single file
29246 // architecture yet.
29247 function inherits (ctor, superCtor) {
29248 ctor.super_ = superCtor;
29249 var TempCtor = function () {};
29250 TempCtor.prototype = superCtor.prototype;
29251 ctor.prototype = new TempCtor();
29252 ctor.prototype.constructor = ctor;
29253 }
ebd8d4e8 29254
8b095871 29255 // BN
ab78acc6 29256
8b095871
IC
29257 function BN (number, base, endian) {
29258 if (BN.isBN(number)) {
29259 return number;
29260 }
ab78acc6 29261
8b095871
IC
29262 this.negative = 0;
29263 this.words = null;
29264 this.length = 0;
ab78acc6 29265
8b095871
IC
29266 // Reduction context
29267 this.red = null;
ab78acc6 29268
8b095871
IC
29269 if (number !== null) {
29270 if (base === 'le' || base === 'be') {
29271 endian = base;
29272 base = 10;
29273 }
ab78acc6 29274
8b095871
IC
29275 this._init(number || 0, base || 10, endian || 'be');
29276 }
29277 }
29278 if (typeof module === 'object') {
29279 module.exports = BN;
29280 } else {
29281 exports.BN = BN;
29282 }
ab78acc6 29283
8b095871
IC
29284 BN.BN = BN;
29285 BN.wordSize = 26;
ab78acc6 29286
8b095871
IC
29287 var Buffer;
29288 try {
29289 Buffer = require('buf' + 'fer').Buffer;
29290 } catch (e) {
29291 }
ab78acc6 29292
8b095871
IC
29293 BN.isBN = function isBN (num) {
29294 if (num instanceof BN) {
29295 return true;
29296 }
ab78acc6 29297
8b095871
IC
29298 return num !== null && typeof num === 'object' &&
29299 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
29300 };
ebd8d4e8 29301
8b095871
IC
29302 BN.max = function max (left, right) {
29303 if (left.cmp(right) > 0) return left;
29304 return right;
29305 };
ebd8d4e8 29306
8b095871
IC
29307 BN.min = function min (left, right) {
29308 if (left.cmp(right) < 0) return left;
29309 return right;
29310 };
29311
29312 BN.prototype._init = function init (number, base, endian) {
29313 if (typeof number === 'number') {
29314 return this._initNumber(number, base, endian);
ab78acc6 29315 }
ebd8d4e8 29316
8b095871
IC
29317 if (typeof number === 'object') {
29318 return this._initArray(number, base, endian);
29319 }
ebd8d4e8 29320
8b095871
IC
29321 if (base === 'hex') {
29322 base = 16;
29323 }
29324 assert(base === (base | 0) && base >= 2 && base <= 36);
29325
29326 number = number.toString().replace(/\s+/g, '');
29327 var start = 0;
29328 if (number[0] === '-') {
29329 start++;
29330 }
29331
29332 if (base === 16) {
29333 this._parseHex(number, start);
29334 } else {
29335 this._parseBase(number, base, start);
ab78acc6 29336 }
ebd8d4e8 29337
8b095871
IC
29338 if (number[0] === '-') {
29339 this.negative = 1;
29340 }
ebd8d4e8 29341
8b095871 29342 this.strip();
ebd8d4e8 29343
8b095871 29344 if (endian !== 'le') return;
ebd8d4e8 29345
8b095871
IC
29346 this._initArray(this.toArray(), base, endian);
29347 };
ebd8d4e8 29348
8b095871
IC
29349 BN.prototype._initNumber = function _initNumber (number, base, endian) {
29350 if (number < 0) {
29351 this.negative = 1;
29352 number = -number;
29353 }
29354 if (number < 0x4000000) {
29355 this.words = [ number & 0x3ffffff ];
29356 this.length = 1;
29357 } else if (number < 0x10000000000000) {
29358 this.words = [
29359 number & 0x3ffffff,
29360 (number / 0x4000000) & 0x3ffffff
29361 ];
29362 this.length = 2;
29363 } else {
29364 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
29365 this.words = [
29366 number & 0x3ffffff,
29367 (number / 0x4000000) & 0x3ffffff,
29368 1
29369 ];
29370 this.length = 3;
29371 }
ebd8d4e8 29372
8b095871 29373 if (endian !== 'le') return;
ebd8d4e8 29374
8b095871
IC
29375 // Reverse the bytes
29376 this._initArray(this.toArray(), base, endian);
29377 };
ebd8d4e8 29378
8b095871
IC
29379 BN.prototype._initArray = function _initArray (number, base, endian) {
29380 // Perhaps a Uint8Array
29381 assert(typeof number.length === 'number');
29382 if (number.length <= 0) {
29383 this.words = [ 0 ];
29384 this.length = 1;
29385 return this;
ab78acc6 29386 }
ebd8d4e8 29387
8b095871
IC
29388 this.length = Math.ceil(number.length / 3);
29389 this.words = new Array(this.length);
29390 for (var i = 0; i < this.length; i++) {
29391 this.words[i] = 0;
29392 }
ebd8d4e8 29393
8b095871
IC
29394 var j, w;
29395 var off = 0;
29396 if (endian === 'be') {
29397 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
29398 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
29399 this.words[j] |= (w << off) & 0x3ffffff;
29400 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29401 off += 24;
29402 if (off >= 26) {
29403 off -= 26;
29404 j++;
29405 }
29406 }
29407 } else if (endian === 'le') {
29408 for (i = 0, j = 0; i < number.length; i += 3) {
29409 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
29410 this.words[j] |= (w << off) & 0x3ffffff;
29411 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
29412 off += 24;
29413 if (off >= 26) {
29414 off -= 26;
29415 j++;
29416 }
29417 }
29418 }
29419 return this.strip();
29420 };
ebd8d4e8 29421
8b095871
IC
29422 function parseHex (str, start, end) {
29423 var r = 0;
29424 var len = Math.min(str.length, end);
29425 for (var i = start; i < len; i++) {
29426 var c = str.charCodeAt(i) - 48;
ab78acc6 29427
8b095871 29428 r <<= 4;
ab78acc6 29429
8b095871
IC
29430 // 'a' - 'f'
29431 if (c >= 49 && c <= 54) {
29432 r |= c - 49 + 0xa;
ab78acc6 29433
8b095871
IC
29434 // 'A' - 'F'
29435 } else if (c >= 17 && c <= 22) {
29436 r |= c - 17 + 0xa;
ebd8d4e8 29437
8b095871
IC
29438 // '0' - '9'
29439 } else {
29440 r |= c & 0xf;
29441 }
29442 }
29443 return r;
29444 }
29445
29446 BN.prototype._parseHex = function _parseHex (number, start) {
29447 // Create possibly bigger array to ensure that it fits the number
29448 this.length = Math.ceil((number.length - start) / 6);
29449 this.words = new Array(this.length);
29450 for (var i = 0; i < this.length; i++) {
29451 this.words[i] = 0;
29452 }
29453
29454 var j, w;
29455 // Scan 24-bit chunks and add them to the number
29456 var off = 0;
29457 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
29458 w = parseHex(number, i, i + 6);
29459 this.words[j] |= (w << off) & 0x3ffffff;
29460 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
29461 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29462 off += 24;
29463 if (off >= 26) {
29464 off -= 26;
29465 j++;
29466 }
29467 }
29468 if (i + 6 !== start) {
29469 w = parseHex(number, start, i + 6);
29470 this.words[j] |= (w << off) & 0x3ffffff;
29471 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
29472 }
29473 this.strip();
29474 };
ebd8d4e8 29475
8b095871
IC
29476 function parseBase (str, start, end, mul) {
29477 var r = 0;
29478 var len = Math.min(str.length, end);
29479 for (var i = start; i < len; i++) {
29480 var c = str.charCodeAt(i) - 48;
ebd8d4e8 29481
8b095871 29482 r *= mul;
ebd8d4e8 29483
8b095871
IC
29484 // 'a'
29485 if (c >= 49) {
29486 r += c - 49 + 0xa;
ebd8d4e8 29487
8b095871
IC
29488 // 'A'
29489 } else if (c >= 17) {
29490 r += c - 17 + 0xa;
ebd8d4e8 29491
8b095871
IC
29492 // '0' - '9'
29493 } else {
29494 r += c;
29495 }
29496 }
29497 return r;
29498 }
ebd8d4e8 29499
8b095871
IC
29500 BN.prototype._parseBase = function _parseBase (number, base, start) {
29501 // Initialize as zero
29502 this.words = [ 0 ];
29503 this.length = 1;
ebd8d4e8 29504
8b095871
IC
29505 // Find length of limb in base
29506 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
29507 limbLen++;
29508 }
29509 limbLen--;
29510 limbPow = (limbPow / base) | 0;
ebd8d4e8 29511
8b095871
IC
29512 var total = number.length - start;
29513 var mod = total % limbLen;
29514 var end = Math.min(total, total - mod) + start;
ebd8d4e8 29515
8b095871
IC
29516 var word = 0;
29517 for (var i = start; i < end; i += limbLen) {
29518 word = parseBase(number, i, i + limbLen, base);
ebd8d4e8 29519
8b095871
IC
29520 this.imuln(limbPow);
29521 if (this.words[0] + word < 0x4000000) {
29522 this.words[0] += word;
29523 } else {
29524 this._iaddn(word);
29525 }
29526 }
ebd8d4e8 29527
8b095871
IC
29528 if (mod !== 0) {
29529 var pow = 1;
29530 word = parseBase(number, i, number.length, base);
ebd8d4e8 29531
8b095871
IC
29532 for (i = 0; i < mod; i++) {
29533 pow *= base;
29534 }
ab78acc6 29535
8b095871
IC
29536 this.imuln(pow);
29537 if (this.words[0] + word < 0x4000000) {
29538 this.words[0] += word;
29539 } else {
29540 this._iaddn(word);
29541 }
29542 }
29543 };
ab78acc6 29544
8b095871
IC
29545 BN.prototype.copy = function copy (dest) {
29546 dest.words = new Array(this.length);
29547 for (var i = 0; i < this.length; i++) {
29548 dest.words[i] = this.words[i];
ab78acc6 29549 }
8b095871
IC
29550 dest.length = this.length;
29551 dest.negative = this.negative;
29552 dest.red = this.red;
29553 };
ab78acc6 29554
8b095871
IC
29555 BN.prototype.clone = function clone () {
29556 var r = new BN(null);
29557 this.copy(r);
29558 return r;
29559 };
ab78acc6 29560
8b095871
IC
29561 BN.prototype._expand = function _expand (size) {
29562 while (this.length < size) {
29563 this.words[this.length++] = 0;
29564 }
29565 return this;
29566 };
ab78acc6 29567
8b095871
IC
29568 // Remove leading `0` from `this`
29569 BN.prototype.strip = function strip () {
29570 while (this.length > 1 && this.words[this.length - 1] === 0) {
29571 this.length--;
ab78acc6 29572 }
8b095871
IC
29573 return this._normSign();
29574 };
ebd8d4e8 29575
8b095871
IC
29576 BN.prototype._normSign = function _normSign () {
29577 // -0 = 0
29578 if (this.length === 1 && this.words[0] === 0) {
29579 this.negative = 0;
ab78acc6 29580 }
8b095871
IC
29581 return this;
29582 };
ebd8d4e8 29583
8b095871
IC
29584 BN.prototype.inspect = function inspect () {
29585 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
29586 };
ebd8d4e8 29587
8b095871 29588 /*
ebd8d4e8 29589
8b095871
IC
29590 var zeros = [];
29591 var groupSizes = [];
29592 var groupBases = [];
ebd8d4e8 29593
8b095871
IC
29594 var s = '';
29595 var i = -1;
29596 while (++i < BN.wordSize) {
29597 zeros[i] = s;
29598 s += '0';
29599 }
29600 groupSizes[0] = 0;
29601 groupSizes[1] = 0;
29602 groupBases[0] = 0;
29603 groupBases[1] = 0;
29604 var base = 2 - 1;
29605 while (++base < 36 + 1) {
29606 var groupSize = 0;
29607 var groupBase = 1;
29608 while (groupBase < (1 << BN.wordSize) / base) {
29609 groupBase *= base;
29610 groupSize += 1;
29611 }
29612 groupSizes[base] = groupSize;
29613 groupBases[base] = groupBase;
ebd8d4e8
IC
29614 }
29615
8b095871 29616 */
ebd8d4e8 29617
8b095871
IC
29618 var zeros = [
29619 '',
29620 '0',
29621 '00',
29622 '000',
29623 '0000',
29624 '00000',
29625 '000000',
29626 '0000000',
29627 '00000000',
29628 '000000000',
29629 '0000000000',
29630 '00000000000',
29631 '000000000000',
29632 '0000000000000',
29633 '00000000000000',
29634 '000000000000000',
29635 '0000000000000000',
29636 '00000000000000000',
29637 '000000000000000000',
29638 '0000000000000000000',
29639 '00000000000000000000',
29640 '000000000000000000000',
29641 '0000000000000000000000',
29642 '00000000000000000000000',
29643 '000000000000000000000000',
29644 '0000000000000000000000000'
29645 ];
29646
29647 var groupSizes = [
29648 0, 0,
29649 25, 16, 12, 11, 10, 9, 8,
29650 8, 7, 7, 7, 7, 6, 6,
29651 6, 6, 6, 6, 6, 5, 5,
29652 5, 5, 5, 5, 5, 5, 5,
29653 5, 5, 5, 5, 5, 5, 5
29654 ];
29655
29656 var groupBases = [
29657 0, 0,
29658 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
29659 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
29660 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
29661 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
29662 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
29663 ];
29664
29665 BN.prototype.toString = function toString (base, padding) {
29666 base = base || 10;
29667 padding = padding | 0 || 1;
29668
29669 var out;
29670 if (base === 16 || base === 'hex') {
29671 out = '';
29672 var off = 0;
29673 var carry = 0;
29674 for (var i = 0; i < this.length; i++) {
29675 var w = this.words[i];
29676 var word = (((w << off) | carry) & 0xffffff).toString(16);
29677 carry = (w >>> (24 - off)) & 0xffffff;
29678 if (carry !== 0 || i !== this.length - 1) {
29679 out = zeros[6 - word.length] + word + out;
29680 } else {
29681 out = word + out;
29682 }
29683 off += 2;
29684 if (off >= 26) {
29685 off -= 26;
29686 i--;
29687 }
29688 }
29689 if (carry !== 0) {
29690 out = carry.toString(16) + out;
29691 }
29692 while (out.length % padding !== 0) {
29693 out = '0' + out;
29694 }
29695 if (this.negative !== 0) {
29696 out = '-' + out;
29697 }
29698 return out;
29699 }
29700
29701 if (base === (base | 0) && base >= 2 && base <= 36) {
29702 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
29703 var groupSize = groupSizes[base];
29704 // var groupBase = Math.pow(base, groupSize);
29705 var groupBase = groupBases[base];
29706 out = '';
29707 var c = this.clone();
29708 c.negative = 0;
29709 while (!c.isZero()) {
29710 var r = c.modn(groupBase).toString(base);
29711 c = c.idivn(groupBase);
29712
29713 if (!c.isZero()) {
29714 out = zeros[groupSize - r.length] + r + out;
29715 } else {
29716 out = r + out;
29717 }
29718 }
29719 if (this.isZero()) {
29720 out = '0' + out;
29721 }
29722 while (out.length % padding !== 0) {
29723 out = '0' + out;
29724 }
29725 if (this.negative !== 0) {
29726 out = '-' + out;
29727 }
29728 return out;
29729 }
29730
29731 assert(false, 'Base should be between 2 and 36');
29732 };
29733
29734 BN.prototype.toNumber = function toNumber () {
29735 var ret = this.words[0];
29736 if (this.length === 2) {
29737 ret += this.words[1] * 0x4000000;
29738 } else if (this.length === 3 && this.words[2] === 0x01) {
29739 // NOTE: at this stage it is known that the top bit is set
29740 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
29741 } else if (this.length > 2) {
29742 assert(false, 'Number can only safely store up to 53 bits');
29743 }
29744 return (this.negative !== 0) ? -ret : ret;
29745 };
29746
29747 BN.prototype.toJSON = function toJSON () {
29748 return this.toString(16);
29749 };
29750
29751 BN.prototype.toBuffer = function toBuffer (endian, length) {
29752 assert(typeof Buffer !== 'undefined');
29753 return this.toArrayLike(Buffer, endian, length);
29754 };
ebd8d4e8 29755
8b095871
IC
29756 BN.prototype.toArray = function toArray (endian, length) {
29757 return this.toArrayLike(Array, endian, length);
29758 };
ebd8d4e8 29759
8b095871
IC
29760 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
29761 var byteLength = this.byteLength();
29762 var reqLength = length || Math.max(1, byteLength);
29763 assert(byteLength <= reqLength, 'byte array longer than desired length');
29764 assert(reqLength > 0, 'Requested array length <= 0');
29765
29766 this.strip();
29767 var littleEndian = endian === 'le';
29768 var res = new ArrayType(reqLength);
29769
29770 var b, i;
29771 var q = this.clone();
29772 if (!littleEndian) {
29773 // Assume big-endian
29774 for (i = 0; i < reqLength - byteLength; i++) {
29775 res[i] = 0;
29776 }
ebd8d4e8 29777
8b095871
IC
29778 for (i = 0; !q.isZero(); i++) {
29779 b = q.andln(0xff);
29780 q.iushrn(8);
ebd8d4e8 29781
8b095871
IC
29782 res[reqLength - i - 1] = b;
29783 }
29784 } else {
29785 for (i = 0; !q.isZero(); i++) {
29786 b = q.andln(0xff);
29787 q.iushrn(8);
ebd8d4e8 29788
8b095871
IC
29789 res[i] = b;
29790 }
29791
29792 for (; i < reqLength; i++) {
29793 res[i] = 0;
29794 }
ab78acc6 29795 }
ebd8d4e8 29796
8b095871
IC
29797 return res;
29798 };
ebd8d4e8 29799
8b095871
IC
29800 if (Math.clz32) {
29801 BN.prototype._countBits = function _countBits (w) {
29802 return 32 - Math.clz32(w);
29803 };
29804 } else {
29805 BN.prototype._countBits = function _countBits (w) {
29806 var t = w;
29807 var r = 0;
29808 if (t >= 0x1000) {
29809 r += 13;
29810 t >>>= 13;
29811 }
29812 if (t >= 0x40) {
29813 r += 7;
29814 t >>>= 7;
29815 }
29816 if (t >= 0x8) {
29817 r += 4;
29818 t >>>= 4;
29819 }
29820 if (t >= 0x02) {
29821 r += 2;
29822 t >>>= 2;
29823 }
29824 return r + t;
29825 };
ebd8d4e8
IC
29826 }
29827
8b095871
IC
29828 BN.prototype._zeroBits = function _zeroBits (w) {
29829 // Short-cut
29830 if (w === 0) return 26;
ebd8d4e8 29831
8b095871
IC
29832 var t = w;
29833 var r = 0;
29834 if ((t & 0x1fff) === 0) {
29835 r += 13;
29836 t >>>= 13;
29837 }
29838 if ((t & 0x7f) === 0) {
29839 r += 7;
29840 t >>>= 7;
29841 }
29842 if ((t & 0xf) === 0) {
29843 r += 4;
29844 t >>>= 4;
29845 }
29846 if ((t & 0x3) === 0) {
29847 r += 2;
29848 t >>>= 2;
29849 }
29850 if ((t & 0x1) === 0) {
29851 r++;
29852 }
29853 return r;
29854 };
ebd8d4e8 29855
8b095871
IC
29856 // Return number of used bits in a BN
29857 BN.prototype.bitLength = function bitLength () {
29858 var w = this.words[this.length - 1];
29859 var hi = this._countBits(w);
29860 return (this.length - 1) * 26 + hi;
29861 };
ebd8d4e8 29862
8b095871
IC
29863 function toBitArray (num) {
29864 var w = new Array(num.bitLength());
ebd8d4e8 29865
8b095871
IC
29866 for (var bit = 0; bit < w.length; bit++) {
29867 var off = (bit / 26) | 0;
29868 var wbit = bit % 26;
ebd8d4e8 29869
8b095871 29870 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
ab78acc6 29871 }
8b095871
IC
29872
29873 return w;
ab78acc6 29874 }
ebd8d4e8 29875
8b095871
IC
29876 // Number of trailing zero bits
29877 BN.prototype.zeroBits = function zeroBits () {
29878 if (this.isZero()) return 0;
29879
29880 var r = 0;
29881 for (var i = 0; i < this.length; i++) {
29882 var b = this._zeroBits(this.words[i]);
29883 r += b;
29884 if (b !== 26) break;
ab78acc6 29885 }
8b095871
IC
29886 return r;
29887 };
29888
29889 BN.prototype.byteLength = function byteLength () {
29890 return Math.ceil(this.bitLength() / 8);
29891 };
29892
29893 BN.prototype.toTwos = function toTwos (width) {
29894 if (this.negative !== 0) {
29895 return this.abs().inotn(width).iaddn(1);
ab78acc6 29896 }
8b095871
IC
29897 return this.clone();
29898 };
ebd8d4e8 29899
8b095871
IC
29900 BN.prototype.fromTwos = function fromTwos (width) {
29901 if (this.testn(width - 1)) {
29902 return this.notn(width).iaddn(1).ineg();
29903 }
29904 return this.clone();
29905 };
ebd8d4e8 29906
8b095871
IC
29907 BN.prototype.isNeg = function isNeg () {
29908 return this.negative !== 0;
29909 };
ebd8d4e8 29910
8b095871
IC
29911 // Return negative clone of `this`
29912 BN.prototype.neg = function neg () {
29913 return this.clone().ineg();
29914 };
ebd8d4e8 29915
8b095871
IC
29916 BN.prototype.ineg = function ineg () {
29917 if (!this.isZero()) {
29918 this.negative ^= 1;
ab78acc6 29919 }
ebd8d4e8 29920
8b095871
IC
29921 return this;
29922 };
ebd8d4e8 29923
8b095871
IC
29924 // Or `num` with `this` in-place
29925 BN.prototype.iuor = function iuor (num) {
29926 while (this.length < num.length) {
29927 this.words[this.length++] = 0;
29928 }
ebd8d4e8 29929
8b095871
IC
29930 for (var i = 0; i < num.length; i++) {
29931 this.words[i] = this.words[i] | num.words[i];
ebd8d4e8 29932 }
ebd8d4e8 29933
8b095871
IC
29934 return this.strip();
29935 };
ebd8d4e8 29936
8b095871
IC
29937 BN.prototype.ior = function ior (num) {
29938 assert((this.negative | num.negative) === 0);
29939 return this.iuor(num);
ab78acc6 29940 };
ebd8d4e8 29941
8b095871
IC
29942 // Or `num` with `this`
29943 BN.prototype.or = function or (num) {
29944 if (this.length > num.length) return this.clone().ior(num);
29945 return num.clone().ior(this);
29946 };
ebd8d4e8 29947
8b095871
IC
29948 BN.prototype.uor = function uor (num) {
29949 if (this.length > num.length) return this.clone().iuor(num);
29950 return num.clone().iuor(this);
29951 };
ebd8d4e8 29952
8b095871
IC
29953 // And `num` with `this` in-place
29954 BN.prototype.iuand = function iuand (num) {
29955 // b = min-length(num, this)
29956 var b;
29957 if (this.length > num.length) {
29958 b = num;
29959 } else {
29960 b = this;
29961 }
29962
29963 for (var i = 0; i < b.length; i++) {
29964 this.words[i] = this.words[i] & num.words[i];
29965 }
ebd8d4e8 29966
8b095871 29967 this.length = b.length;
ebd8d4e8 29968
8b095871
IC
29969 return this.strip();
29970 };
ebd8d4e8 29971
8b095871
IC
29972 BN.prototype.iand = function iand (num) {
29973 assert((this.negative | num.negative) === 0);
29974 return this.iuand(num);
29975 };
ebd8d4e8 29976
8b095871
IC
29977 // And `num` with `this`
29978 BN.prototype.and = function and (num) {
29979 if (this.length > num.length) return this.clone().iand(num);
29980 return num.clone().iand(this);
29981 };
ebd8d4e8 29982
8b095871
IC
29983 BN.prototype.uand = function uand (num) {
29984 if (this.length > num.length) return this.clone().iuand(num);
29985 return num.clone().iuand(this);
29986 };
ebd8d4e8 29987
8b095871
IC
29988 // Xor `num` with `this` in-place
29989 BN.prototype.iuxor = function iuxor (num) {
29990 // a.length > b.length
29991 var a;
29992 var b;
29993 if (this.length > num.length) {
29994 a = this;
29995 b = num;
29996 } else {
29997 a = num;
29998 b = this;
29999 }
ebd8d4e8 30000
8b095871
IC
30001 for (var i = 0; i < b.length; i++) {
30002 this.words[i] = a.words[i] ^ b.words[i];
30003 }
ebd8d4e8 30004
8b095871
IC
30005 if (this !== a) {
30006 for (; i < a.length; i++) {
30007 this.words[i] = a.words[i];
30008 }
30009 }
ebd8d4e8 30010
8b095871 30011 this.length = a.length;
ebd8d4e8 30012
8b095871
IC
30013 return this.strip();
30014 };
ebd8d4e8 30015
8b095871
IC
30016 BN.prototype.ixor = function ixor (num) {
30017 assert((this.negative | num.negative) === 0);
30018 return this.iuxor(num);
30019 };
ebd8d4e8 30020
8b095871
IC
30021 // Xor `num` with `this`
30022 BN.prototype.xor = function xor (num) {
30023 if (this.length > num.length) return this.clone().ixor(num);
30024 return num.clone().ixor(this);
30025 };
ebd8d4e8 30026
8b095871
IC
30027 BN.prototype.uxor = function uxor (num) {
30028 if (this.length > num.length) return this.clone().iuxor(num);
30029 return num.clone().iuxor(this);
30030 };
ebd8d4e8 30031
8b095871
IC
30032 // Not ``this`` with ``width`` bitwidth
30033 BN.prototype.inotn = function inotn (width) {
30034 assert(typeof width === 'number' && width >= 0);
ebd8d4e8 30035
8b095871
IC
30036 var bytesNeeded = Math.ceil(width / 26) | 0;
30037 var bitsLeft = width % 26;
ebd8d4e8 30038
8b095871
IC
30039 // Extend the buffer with leading zeroes
30040 this._expand(bytesNeeded);
30041
30042 if (bitsLeft > 0) {
30043 bytesNeeded--;
ab78acc6 30044 }
8b095871
IC
30045
30046 // Handle complete words
30047 for (var i = 0; i < bytesNeeded; i++) {
30048 this.words[i] = ~this.words[i] & 0x3ffffff;
ab78acc6 30049 }
8b095871
IC
30050
30051 // Handle the residue
30052 if (bitsLeft > 0) {
30053 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
ab78acc6 30054 }
ebd8d4e8 30055
8b095871
IC
30056 // And remove leading zeroes
30057 return this.strip();
30058 };
ebd8d4e8 30059
8b095871
IC
30060 BN.prototype.notn = function notn (width) {
30061 return this.clone().inotn(width);
30062 };
ebd8d4e8 30063
8b095871
IC
30064 // Set `bit` of `this`
30065 BN.prototype.setn = function setn (bit, val) {
30066 assert(typeof bit === 'number' && bit >= 0);
ebd8d4e8 30067
8b095871
IC
30068 var off = (bit / 26) | 0;
30069 var wbit = bit % 26;
ebd8d4e8 30070
8b095871 30071 this._expand(off + 1);
ebd8d4e8 30072
8b095871
IC
30073 if (val) {
30074 this.words[off] = this.words[off] | (1 << wbit);
30075 } else {
30076 this.words[off] = this.words[off] & ~(1 << wbit);
30077 }
ebd8d4e8 30078
8b095871
IC
30079 return this.strip();
30080 };
ebd8d4e8 30081
8b095871
IC
30082 // Add `num` to `this` in-place
30083 BN.prototype.iadd = function iadd (num) {
30084 var r;
30085
30086 // negative + positive
30087 if (this.negative !== 0 && num.negative === 0) {
30088 this.negative = 0;
30089 r = this.isub(num);
30090 this.negative ^= 1;
30091 return this._normSign();
30092
30093 // positive + negative
30094 } else if (this.negative === 0 && num.negative !== 0) {
30095 num.negative = 0;
30096 r = this.isub(num);
30097 num.negative = 1;
30098 return r._normSign();
30099 }
30100
30101 // a.length > b.length
30102 var a, b;
30103 if (this.length > num.length) {
30104 a = this;
30105 b = num;
ab78acc6 30106 } else {
8b095871
IC
30107 a = num;
30108 b = this;
30109 }
30110
30111 var carry = 0;
30112 for (var i = 0; i < b.length; i++) {
30113 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
30114 this.words[i] = r & 0x3ffffff;
30115 carry = r >>> 26;
30116 }
30117 for (; carry !== 0 && i < a.length; i++) {
30118 r = (a.words[i] | 0) + carry;
30119 this.words[i] = r & 0x3ffffff;
30120 carry = r >>> 26;
30121 }
30122
30123 this.length = a.length;
30124 if (carry !== 0) {
30125 this.words[this.length] = carry;
30126 this.length++;
30127 // Copy the rest of the words
30128 } else if (a !== this) {
30129 for (; i < a.length; i++) {
30130 this.words[i] = a.words[i];
30131 }
ab78acc6 30132 }
ebd8d4e8 30133
8b095871
IC
30134 return this;
30135 };
ebd8d4e8 30136
8b095871
IC
30137 // Add `num` to `this`
30138 BN.prototype.add = function add (num) {
30139 var res;
30140 if (num.negative !== 0 && this.negative === 0) {
30141 num.negative = 0;
30142 res = this.sub(num);
30143 num.negative ^= 1;
30144 return res;
30145 } else if (num.negative === 0 && this.negative !== 0) {
30146 this.negative = 0;
30147 res = num.sub(this);
30148 this.negative = 1;
30149 return res;
30150 }
ebd8d4e8 30151
8b095871 30152 if (this.length > num.length) return this.clone().iadd(num);
ebd8d4e8 30153
8b095871
IC
30154 return num.clone().iadd(this);
30155 };
ebd8d4e8 30156
8b095871
IC
30157 // Subtract `num` from `this` in-place
30158 BN.prototype.isub = function isub (num) {
30159 // this - (-num) = this + num
30160 if (num.negative !== 0) {
30161 num.negative = 0;
30162 var r = this.iadd(num);
30163 num.negative = 1;
30164 return r._normSign();
30165
30166 // -this - num = -(this + num)
30167 } else if (this.negative !== 0) {
30168 this.negative = 0;
30169 this.iadd(num);
30170 this.negative = 1;
30171 return this._normSign();
30172 }
30173
30174 // At this point both numbers are positive
30175 var cmp = this.cmp(num);
30176
30177 // Optimization - zeroify
30178 if (cmp === 0) {
30179 this.negative = 0;
30180 this.length = 1;
30181 this.words[0] = 0;
30182 return this;
30183 }
ebd8d4e8 30184
8b095871
IC
30185 // a > b
30186 var a, b;
30187 if (cmp > 0) {
30188 a = this;
30189 b = num;
30190 } else {
30191 a = num;
30192 b = this;
30193 }
ebd8d4e8 30194
8b095871
IC
30195 var carry = 0;
30196 for (var i = 0; i < b.length; i++) {
30197 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
30198 carry = r >> 26;
30199 this.words[i] = r & 0x3ffffff;
30200 }
30201 for (; carry !== 0 && i < a.length; i++) {
30202 r = (a.words[i] | 0) + carry;
30203 carry = r >> 26;
30204 this.words[i] = r & 0x3ffffff;
30205 }
ebd8d4e8 30206
8b095871
IC
30207 // Copy rest of the words
30208 if (carry === 0 && i < a.length && a !== this) {
30209 for (; i < a.length; i++) {
30210 this.words[i] = a.words[i];
30211 }
30212 }
ebd8d4e8 30213
8b095871 30214 this.length = Math.max(this.length, i);
ebd8d4e8 30215
8b095871
IC
30216 if (a !== this) {
30217 this.negative = 1;
ab78acc6 30218 }
ebd8d4e8 30219
8b095871
IC
30220 return this.strip();
30221 };
ebd8d4e8 30222
8b095871
IC
30223 // Subtract `num` from `this`
30224 BN.prototype.sub = function sub (num) {
30225 return this.clone().isub(num);
30226 };
30227
30228 function smallMulTo (self, num, out) {
30229 out.negative = num.negative ^ self.negative;
30230 var len = (self.length + num.length) | 0;
30231 out.length = len;
30232 len = (len - 1) | 0;
30233
30234 // Peel one iteration (compiler can't do it, because of code complexity)
30235 var a = self.words[0] | 0;
30236 var b = num.words[0] | 0;
30237 var r = a * b;
30238
30239 var lo = r & 0x3ffffff;
30240 var carry = (r / 0x4000000) | 0;
30241 out.words[0] = lo;
30242
30243 for (var k = 1; k < len; k++) {
30244 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30245 // note that ncarry could be >= 0x3ffffff
30246 var ncarry = carry >>> 26;
30247 var rword = carry & 0x3ffffff;
30248 var maxJ = Math.min(k, num.length - 1);
30249 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30250 var i = (k - j) | 0;
30251 a = self.words[i] | 0;
30252 b = num.words[j] | 0;
30253 r = a * b + rword;
30254 ncarry += (r / 0x4000000) | 0;
30255 rword = r & 0x3ffffff;
30256 }
30257 out.words[k] = rword | 0;
30258 carry = ncarry | 0;
30259 }
30260 if (carry !== 0) {
30261 out.words[k] = carry | 0;
ab78acc6 30262 } else {
8b095871
IC
30263 out.length--;
30264 }
30265
30266 return out.strip();
30267 }
30268
30269 // TODO(indutny): it may be reasonable to omit it for users who don't need
30270 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
30271 // multiplication (like elliptic secp256k1).
30272 var comb10MulTo = function comb10MulTo (self, num, out) {
30273 var a = self.words;
30274 var b = num.words;
30275 var o = out.words;
30276 var c = 0;
30277 var lo;
30278 var mid;
30279 var hi;
30280 var a0 = a[0] | 0;
30281 var al0 = a0 & 0x1fff;
30282 var ah0 = a0 >>> 13;
30283 var a1 = a[1] | 0;
30284 var al1 = a1 & 0x1fff;
30285 var ah1 = a1 >>> 13;
30286 var a2 = a[2] | 0;
30287 var al2 = a2 & 0x1fff;
30288 var ah2 = a2 >>> 13;
30289 var a3 = a[3] | 0;
30290 var al3 = a3 & 0x1fff;
30291 var ah3 = a3 >>> 13;
30292 var a4 = a[4] | 0;
30293 var al4 = a4 & 0x1fff;
30294 var ah4 = a4 >>> 13;
30295 var a5 = a[5] | 0;
30296 var al5 = a5 & 0x1fff;
30297 var ah5 = a5 >>> 13;
30298 var a6 = a[6] | 0;
30299 var al6 = a6 & 0x1fff;
30300 var ah6 = a6 >>> 13;
30301 var a7 = a[7] | 0;
30302 var al7 = a7 & 0x1fff;
30303 var ah7 = a7 >>> 13;
30304 var a8 = a[8] | 0;
30305 var al8 = a8 & 0x1fff;
30306 var ah8 = a8 >>> 13;
30307 var a9 = a[9] | 0;
30308 var al9 = a9 & 0x1fff;
30309 var ah9 = a9 >>> 13;
30310 var b0 = b[0] | 0;
30311 var bl0 = b0 & 0x1fff;
30312 var bh0 = b0 >>> 13;
30313 var b1 = b[1] | 0;
30314 var bl1 = b1 & 0x1fff;
30315 var bh1 = b1 >>> 13;
30316 var b2 = b[2] | 0;
30317 var bl2 = b2 & 0x1fff;
30318 var bh2 = b2 >>> 13;
30319 var b3 = b[3] | 0;
30320 var bl3 = b3 & 0x1fff;
30321 var bh3 = b3 >>> 13;
30322 var b4 = b[4] | 0;
30323 var bl4 = b4 & 0x1fff;
30324 var bh4 = b4 >>> 13;
30325 var b5 = b[5] | 0;
30326 var bl5 = b5 & 0x1fff;
30327 var bh5 = b5 >>> 13;
30328 var b6 = b[6] | 0;
30329 var bl6 = b6 & 0x1fff;
30330 var bh6 = b6 >>> 13;
30331 var b7 = b[7] | 0;
30332 var bl7 = b7 & 0x1fff;
30333 var bh7 = b7 >>> 13;
30334 var b8 = b[8] | 0;
30335 var bl8 = b8 & 0x1fff;
30336 var bh8 = b8 >>> 13;
30337 var b9 = b[9] | 0;
30338 var bl9 = b9 & 0x1fff;
30339 var bh9 = b9 >>> 13;
30340
30341 out.negative = self.negative ^ num.negative;
30342 out.length = 19;
30343 /* k = 0 */
30344 lo = Math.imul(al0, bl0);
30345 mid = Math.imul(al0, bh0);
30346 mid = (mid + Math.imul(ah0, bl0)) | 0;
30347 hi = Math.imul(ah0, bh0);
30348 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30349 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
30350 w0 &= 0x3ffffff;
30351 /* k = 1 */
30352 lo = Math.imul(al1, bl0);
30353 mid = Math.imul(al1, bh0);
30354 mid = (mid + Math.imul(ah1, bl0)) | 0;
30355 hi = Math.imul(ah1, bh0);
30356 lo = (lo + Math.imul(al0, bl1)) | 0;
30357 mid = (mid + Math.imul(al0, bh1)) | 0;
30358 mid = (mid + Math.imul(ah0, bl1)) | 0;
30359 hi = (hi + Math.imul(ah0, bh1)) | 0;
30360 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30361 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
30362 w1 &= 0x3ffffff;
30363 /* k = 2 */
30364 lo = Math.imul(al2, bl0);
30365 mid = Math.imul(al2, bh0);
30366 mid = (mid + Math.imul(ah2, bl0)) | 0;
30367 hi = Math.imul(ah2, bh0);
30368 lo = (lo + Math.imul(al1, bl1)) | 0;
30369 mid = (mid + Math.imul(al1, bh1)) | 0;
30370 mid = (mid + Math.imul(ah1, bl1)) | 0;
30371 hi = (hi + Math.imul(ah1, bh1)) | 0;
30372 lo = (lo + Math.imul(al0, bl2)) | 0;
30373 mid = (mid + Math.imul(al0, bh2)) | 0;
30374 mid = (mid + Math.imul(ah0, bl2)) | 0;
30375 hi = (hi + Math.imul(ah0, bh2)) | 0;
30376 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30377 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
30378 w2 &= 0x3ffffff;
30379 /* k = 3 */
30380 lo = Math.imul(al3, bl0);
30381 mid = Math.imul(al3, bh0);
30382 mid = (mid + Math.imul(ah3, bl0)) | 0;
30383 hi = Math.imul(ah3, bh0);
30384 lo = (lo + Math.imul(al2, bl1)) | 0;
30385 mid = (mid + Math.imul(al2, bh1)) | 0;
30386 mid = (mid + Math.imul(ah2, bl1)) | 0;
30387 hi = (hi + Math.imul(ah2, bh1)) | 0;
30388 lo = (lo + Math.imul(al1, bl2)) | 0;
30389 mid = (mid + Math.imul(al1, bh2)) | 0;
30390 mid = (mid + Math.imul(ah1, bl2)) | 0;
30391 hi = (hi + Math.imul(ah1, bh2)) | 0;
30392 lo = (lo + Math.imul(al0, bl3)) | 0;
30393 mid = (mid + Math.imul(al0, bh3)) | 0;
30394 mid = (mid + Math.imul(ah0, bl3)) | 0;
30395 hi = (hi + Math.imul(ah0, bh3)) | 0;
30396 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30397 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
30398 w3 &= 0x3ffffff;
30399 /* k = 4 */
30400 lo = Math.imul(al4, bl0);
30401 mid = Math.imul(al4, bh0);
30402 mid = (mid + Math.imul(ah4, bl0)) | 0;
30403 hi = Math.imul(ah4, bh0);
30404 lo = (lo + Math.imul(al3, bl1)) | 0;
30405 mid = (mid + Math.imul(al3, bh1)) | 0;
30406 mid = (mid + Math.imul(ah3, bl1)) | 0;
30407 hi = (hi + Math.imul(ah3, bh1)) | 0;
30408 lo = (lo + Math.imul(al2, bl2)) | 0;
30409 mid = (mid + Math.imul(al2, bh2)) | 0;
30410 mid = (mid + Math.imul(ah2, bl2)) | 0;
30411 hi = (hi + Math.imul(ah2, bh2)) | 0;
30412 lo = (lo + Math.imul(al1, bl3)) | 0;
30413 mid = (mid + Math.imul(al1, bh3)) | 0;
30414 mid = (mid + Math.imul(ah1, bl3)) | 0;
30415 hi = (hi + Math.imul(ah1, bh3)) | 0;
30416 lo = (lo + Math.imul(al0, bl4)) | 0;
30417 mid = (mid + Math.imul(al0, bh4)) | 0;
30418 mid = (mid + Math.imul(ah0, bl4)) | 0;
30419 hi = (hi + Math.imul(ah0, bh4)) | 0;
30420 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30421 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
30422 w4 &= 0x3ffffff;
30423 /* k = 5 */
30424 lo = Math.imul(al5, bl0);
30425 mid = Math.imul(al5, bh0);
30426 mid = (mid + Math.imul(ah5, bl0)) | 0;
30427 hi = Math.imul(ah5, bh0);
30428 lo = (lo + Math.imul(al4, bl1)) | 0;
30429 mid = (mid + Math.imul(al4, bh1)) | 0;
30430 mid = (mid + Math.imul(ah4, bl1)) | 0;
30431 hi = (hi + Math.imul(ah4, bh1)) | 0;
30432 lo = (lo + Math.imul(al3, bl2)) | 0;
30433 mid = (mid + Math.imul(al3, bh2)) | 0;
30434 mid = (mid + Math.imul(ah3, bl2)) | 0;
30435 hi = (hi + Math.imul(ah3, bh2)) | 0;
30436 lo = (lo + Math.imul(al2, bl3)) | 0;
30437 mid = (mid + Math.imul(al2, bh3)) | 0;
30438 mid = (mid + Math.imul(ah2, bl3)) | 0;
30439 hi = (hi + Math.imul(ah2, bh3)) | 0;
30440 lo = (lo + Math.imul(al1, bl4)) | 0;
30441 mid = (mid + Math.imul(al1, bh4)) | 0;
30442 mid = (mid + Math.imul(ah1, bl4)) | 0;
30443 hi = (hi + Math.imul(ah1, bh4)) | 0;
30444 lo = (lo + Math.imul(al0, bl5)) | 0;
30445 mid = (mid + Math.imul(al0, bh5)) | 0;
30446 mid = (mid + Math.imul(ah0, bl5)) | 0;
30447 hi = (hi + Math.imul(ah0, bh5)) | 0;
30448 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30449 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
30450 w5 &= 0x3ffffff;
30451 /* k = 6 */
30452 lo = Math.imul(al6, bl0);
30453 mid = Math.imul(al6, bh0);
30454 mid = (mid + Math.imul(ah6, bl0)) | 0;
30455 hi = Math.imul(ah6, bh0);
30456 lo = (lo + Math.imul(al5, bl1)) | 0;
30457 mid = (mid + Math.imul(al5, bh1)) | 0;
30458 mid = (mid + Math.imul(ah5, bl1)) | 0;
30459 hi = (hi + Math.imul(ah5, bh1)) | 0;
30460 lo = (lo + Math.imul(al4, bl2)) | 0;
30461 mid = (mid + Math.imul(al4, bh2)) | 0;
30462 mid = (mid + Math.imul(ah4, bl2)) | 0;
30463 hi = (hi + Math.imul(ah4, bh2)) | 0;
30464 lo = (lo + Math.imul(al3, bl3)) | 0;
30465 mid = (mid + Math.imul(al3, bh3)) | 0;
30466 mid = (mid + Math.imul(ah3, bl3)) | 0;
30467 hi = (hi + Math.imul(ah3, bh3)) | 0;
30468 lo = (lo + Math.imul(al2, bl4)) | 0;
30469 mid = (mid + Math.imul(al2, bh4)) | 0;
30470 mid = (mid + Math.imul(ah2, bl4)) | 0;
30471 hi = (hi + Math.imul(ah2, bh4)) | 0;
30472 lo = (lo + Math.imul(al1, bl5)) | 0;
30473 mid = (mid + Math.imul(al1, bh5)) | 0;
30474 mid = (mid + Math.imul(ah1, bl5)) | 0;
30475 hi = (hi + Math.imul(ah1, bh5)) | 0;
30476 lo = (lo + Math.imul(al0, bl6)) | 0;
30477 mid = (mid + Math.imul(al0, bh6)) | 0;
30478 mid = (mid + Math.imul(ah0, bl6)) | 0;
30479 hi = (hi + Math.imul(ah0, bh6)) | 0;
30480 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30481 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
30482 w6 &= 0x3ffffff;
30483 /* k = 7 */
30484 lo = Math.imul(al7, bl0);
30485 mid = Math.imul(al7, bh0);
30486 mid = (mid + Math.imul(ah7, bl0)) | 0;
30487 hi = Math.imul(ah7, bh0);
30488 lo = (lo + Math.imul(al6, bl1)) | 0;
30489 mid = (mid + Math.imul(al6, bh1)) | 0;
30490 mid = (mid + Math.imul(ah6, bl1)) | 0;
30491 hi = (hi + Math.imul(ah6, bh1)) | 0;
30492 lo = (lo + Math.imul(al5, bl2)) | 0;
30493 mid = (mid + Math.imul(al5, bh2)) | 0;
30494 mid = (mid + Math.imul(ah5, bl2)) | 0;
30495 hi = (hi + Math.imul(ah5, bh2)) | 0;
30496 lo = (lo + Math.imul(al4, bl3)) | 0;
30497 mid = (mid + Math.imul(al4, bh3)) | 0;
30498 mid = (mid + Math.imul(ah4, bl3)) | 0;
30499 hi = (hi + Math.imul(ah4, bh3)) | 0;
30500 lo = (lo + Math.imul(al3, bl4)) | 0;
30501 mid = (mid + Math.imul(al3, bh4)) | 0;
30502 mid = (mid + Math.imul(ah3, bl4)) | 0;
30503 hi = (hi + Math.imul(ah3, bh4)) | 0;
30504 lo = (lo + Math.imul(al2, bl5)) | 0;
30505 mid = (mid + Math.imul(al2, bh5)) | 0;
30506 mid = (mid + Math.imul(ah2, bl5)) | 0;
30507 hi = (hi + Math.imul(ah2, bh5)) | 0;
30508 lo = (lo + Math.imul(al1, bl6)) | 0;
30509 mid = (mid + Math.imul(al1, bh6)) | 0;
30510 mid = (mid + Math.imul(ah1, bl6)) | 0;
30511 hi = (hi + Math.imul(ah1, bh6)) | 0;
30512 lo = (lo + Math.imul(al0, bl7)) | 0;
30513 mid = (mid + Math.imul(al0, bh7)) | 0;
30514 mid = (mid + Math.imul(ah0, bl7)) | 0;
30515 hi = (hi + Math.imul(ah0, bh7)) | 0;
30516 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30517 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
30518 w7 &= 0x3ffffff;
30519 /* k = 8 */
30520 lo = Math.imul(al8, bl0);
30521 mid = Math.imul(al8, bh0);
30522 mid = (mid + Math.imul(ah8, bl0)) | 0;
30523 hi = Math.imul(ah8, bh0);
30524 lo = (lo + Math.imul(al7, bl1)) | 0;
30525 mid = (mid + Math.imul(al7, bh1)) | 0;
30526 mid = (mid + Math.imul(ah7, bl1)) | 0;
30527 hi = (hi + Math.imul(ah7, bh1)) | 0;
30528 lo = (lo + Math.imul(al6, bl2)) | 0;
30529 mid = (mid + Math.imul(al6, bh2)) | 0;
30530 mid = (mid + Math.imul(ah6, bl2)) | 0;
30531 hi = (hi + Math.imul(ah6, bh2)) | 0;
30532 lo = (lo + Math.imul(al5, bl3)) | 0;
30533 mid = (mid + Math.imul(al5, bh3)) | 0;
30534 mid = (mid + Math.imul(ah5, bl3)) | 0;
30535 hi = (hi + Math.imul(ah5, bh3)) | 0;
30536 lo = (lo + Math.imul(al4, bl4)) | 0;
30537 mid = (mid + Math.imul(al4, bh4)) | 0;
30538 mid = (mid + Math.imul(ah4, bl4)) | 0;
30539 hi = (hi + Math.imul(ah4, bh4)) | 0;
30540 lo = (lo + Math.imul(al3, bl5)) | 0;
30541 mid = (mid + Math.imul(al3, bh5)) | 0;
30542 mid = (mid + Math.imul(ah3, bl5)) | 0;
30543 hi = (hi + Math.imul(ah3, bh5)) | 0;
30544 lo = (lo + Math.imul(al2, bl6)) | 0;
30545 mid = (mid + Math.imul(al2, bh6)) | 0;
30546 mid = (mid + Math.imul(ah2, bl6)) | 0;
30547 hi = (hi + Math.imul(ah2, bh6)) | 0;
30548 lo = (lo + Math.imul(al1, bl7)) | 0;
30549 mid = (mid + Math.imul(al1, bh7)) | 0;
30550 mid = (mid + Math.imul(ah1, bl7)) | 0;
30551 hi = (hi + Math.imul(ah1, bh7)) | 0;
30552 lo = (lo + Math.imul(al0, bl8)) | 0;
30553 mid = (mid + Math.imul(al0, bh8)) | 0;
30554 mid = (mid + Math.imul(ah0, bl8)) | 0;
30555 hi = (hi + Math.imul(ah0, bh8)) | 0;
30556 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30557 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
30558 w8 &= 0x3ffffff;
30559 /* k = 9 */
30560 lo = Math.imul(al9, bl0);
30561 mid = Math.imul(al9, bh0);
30562 mid = (mid + Math.imul(ah9, bl0)) | 0;
30563 hi = Math.imul(ah9, bh0);
30564 lo = (lo + Math.imul(al8, bl1)) | 0;
30565 mid = (mid + Math.imul(al8, bh1)) | 0;
30566 mid = (mid + Math.imul(ah8, bl1)) | 0;
30567 hi = (hi + Math.imul(ah8, bh1)) | 0;
30568 lo = (lo + Math.imul(al7, bl2)) | 0;
30569 mid = (mid + Math.imul(al7, bh2)) | 0;
30570 mid = (mid + Math.imul(ah7, bl2)) | 0;
30571 hi = (hi + Math.imul(ah7, bh2)) | 0;
30572 lo = (lo + Math.imul(al6, bl3)) | 0;
30573 mid = (mid + Math.imul(al6, bh3)) | 0;
30574 mid = (mid + Math.imul(ah6, bl3)) | 0;
30575 hi = (hi + Math.imul(ah6, bh3)) | 0;
30576 lo = (lo + Math.imul(al5, bl4)) | 0;
30577 mid = (mid + Math.imul(al5, bh4)) | 0;
30578 mid = (mid + Math.imul(ah5, bl4)) | 0;
30579 hi = (hi + Math.imul(ah5, bh4)) | 0;
30580 lo = (lo + Math.imul(al4, bl5)) | 0;
30581 mid = (mid + Math.imul(al4, bh5)) | 0;
30582 mid = (mid + Math.imul(ah4, bl5)) | 0;
30583 hi = (hi + Math.imul(ah4, bh5)) | 0;
30584 lo = (lo + Math.imul(al3, bl6)) | 0;
30585 mid = (mid + Math.imul(al3, bh6)) | 0;
30586 mid = (mid + Math.imul(ah3, bl6)) | 0;
30587 hi = (hi + Math.imul(ah3, bh6)) | 0;
30588 lo = (lo + Math.imul(al2, bl7)) | 0;
30589 mid = (mid + Math.imul(al2, bh7)) | 0;
30590 mid = (mid + Math.imul(ah2, bl7)) | 0;
30591 hi = (hi + Math.imul(ah2, bh7)) | 0;
30592 lo = (lo + Math.imul(al1, bl8)) | 0;
30593 mid = (mid + Math.imul(al1, bh8)) | 0;
30594 mid = (mid + Math.imul(ah1, bl8)) | 0;
30595 hi = (hi + Math.imul(ah1, bh8)) | 0;
30596 lo = (lo + Math.imul(al0, bl9)) | 0;
30597 mid = (mid + Math.imul(al0, bh9)) | 0;
30598 mid = (mid + Math.imul(ah0, bl9)) | 0;
30599 hi = (hi + Math.imul(ah0, bh9)) | 0;
30600 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30601 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
30602 w9 &= 0x3ffffff;
30603 /* k = 10 */
30604 lo = Math.imul(al9, bl1);
30605 mid = Math.imul(al9, bh1);
30606 mid = (mid + Math.imul(ah9, bl1)) | 0;
30607 hi = Math.imul(ah9, bh1);
30608 lo = (lo + Math.imul(al8, bl2)) | 0;
30609 mid = (mid + Math.imul(al8, bh2)) | 0;
30610 mid = (mid + Math.imul(ah8, bl2)) | 0;
30611 hi = (hi + Math.imul(ah8, bh2)) | 0;
30612 lo = (lo + Math.imul(al7, bl3)) | 0;
30613 mid = (mid + Math.imul(al7, bh3)) | 0;
30614 mid = (mid + Math.imul(ah7, bl3)) | 0;
30615 hi = (hi + Math.imul(ah7, bh3)) | 0;
30616 lo = (lo + Math.imul(al6, bl4)) | 0;
30617 mid = (mid + Math.imul(al6, bh4)) | 0;
30618 mid = (mid + Math.imul(ah6, bl4)) | 0;
30619 hi = (hi + Math.imul(ah6, bh4)) | 0;
30620 lo = (lo + Math.imul(al5, bl5)) | 0;
30621 mid = (mid + Math.imul(al5, bh5)) | 0;
30622 mid = (mid + Math.imul(ah5, bl5)) | 0;
30623 hi = (hi + Math.imul(ah5, bh5)) | 0;
30624 lo = (lo + Math.imul(al4, bl6)) | 0;
30625 mid = (mid + Math.imul(al4, bh6)) | 0;
30626 mid = (mid + Math.imul(ah4, bl6)) | 0;
30627 hi = (hi + Math.imul(ah4, bh6)) | 0;
30628 lo = (lo + Math.imul(al3, bl7)) | 0;
30629 mid = (mid + Math.imul(al3, bh7)) | 0;
30630 mid = (mid + Math.imul(ah3, bl7)) | 0;
30631 hi = (hi + Math.imul(ah3, bh7)) | 0;
30632 lo = (lo + Math.imul(al2, bl8)) | 0;
30633 mid = (mid + Math.imul(al2, bh8)) | 0;
30634 mid = (mid + Math.imul(ah2, bl8)) | 0;
30635 hi = (hi + Math.imul(ah2, bh8)) | 0;
30636 lo = (lo + Math.imul(al1, bl9)) | 0;
30637 mid = (mid + Math.imul(al1, bh9)) | 0;
30638 mid = (mid + Math.imul(ah1, bl9)) | 0;
30639 hi = (hi + Math.imul(ah1, bh9)) | 0;
30640 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30641 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
30642 w10 &= 0x3ffffff;
30643 /* k = 11 */
30644 lo = Math.imul(al9, bl2);
30645 mid = Math.imul(al9, bh2);
30646 mid = (mid + Math.imul(ah9, bl2)) | 0;
30647 hi = Math.imul(ah9, bh2);
30648 lo = (lo + Math.imul(al8, bl3)) | 0;
30649 mid = (mid + Math.imul(al8, bh3)) | 0;
30650 mid = (mid + Math.imul(ah8, bl3)) | 0;
30651 hi = (hi + Math.imul(ah8, bh3)) | 0;
30652 lo = (lo + Math.imul(al7, bl4)) | 0;
30653 mid = (mid + Math.imul(al7, bh4)) | 0;
30654 mid = (mid + Math.imul(ah7, bl4)) | 0;
30655 hi = (hi + Math.imul(ah7, bh4)) | 0;
30656 lo = (lo + Math.imul(al6, bl5)) | 0;
30657 mid = (mid + Math.imul(al6, bh5)) | 0;
30658 mid = (mid + Math.imul(ah6, bl5)) | 0;
30659 hi = (hi + Math.imul(ah6, bh5)) | 0;
30660 lo = (lo + Math.imul(al5, bl6)) | 0;
30661 mid = (mid + Math.imul(al5, bh6)) | 0;
30662 mid = (mid + Math.imul(ah5, bl6)) | 0;
30663 hi = (hi + Math.imul(ah5, bh6)) | 0;
30664 lo = (lo + Math.imul(al4, bl7)) | 0;
30665 mid = (mid + Math.imul(al4, bh7)) | 0;
30666 mid = (mid + Math.imul(ah4, bl7)) | 0;
30667 hi = (hi + Math.imul(ah4, bh7)) | 0;
30668 lo = (lo + Math.imul(al3, bl8)) | 0;
30669 mid = (mid + Math.imul(al3, bh8)) | 0;
30670 mid = (mid + Math.imul(ah3, bl8)) | 0;
30671 hi = (hi + Math.imul(ah3, bh8)) | 0;
30672 lo = (lo + Math.imul(al2, bl9)) | 0;
30673 mid = (mid + Math.imul(al2, bh9)) | 0;
30674 mid = (mid + Math.imul(ah2, bl9)) | 0;
30675 hi = (hi + Math.imul(ah2, bh9)) | 0;
30676 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30677 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
30678 w11 &= 0x3ffffff;
30679 /* k = 12 */
30680 lo = Math.imul(al9, bl3);
30681 mid = Math.imul(al9, bh3);
30682 mid = (mid + Math.imul(ah9, bl3)) | 0;
30683 hi = Math.imul(ah9, bh3);
30684 lo = (lo + Math.imul(al8, bl4)) | 0;
30685 mid = (mid + Math.imul(al8, bh4)) | 0;
30686 mid = (mid + Math.imul(ah8, bl4)) | 0;
30687 hi = (hi + Math.imul(ah8, bh4)) | 0;
30688 lo = (lo + Math.imul(al7, bl5)) | 0;
30689 mid = (mid + Math.imul(al7, bh5)) | 0;
30690 mid = (mid + Math.imul(ah7, bl5)) | 0;
30691 hi = (hi + Math.imul(ah7, bh5)) | 0;
30692 lo = (lo + Math.imul(al6, bl6)) | 0;
30693 mid = (mid + Math.imul(al6, bh6)) | 0;
30694 mid = (mid + Math.imul(ah6, bl6)) | 0;
30695 hi = (hi + Math.imul(ah6, bh6)) | 0;
30696 lo = (lo + Math.imul(al5, bl7)) | 0;
30697 mid = (mid + Math.imul(al5, bh7)) | 0;
30698 mid = (mid + Math.imul(ah5, bl7)) | 0;
30699 hi = (hi + Math.imul(ah5, bh7)) | 0;
30700 lo = (lo + Math.imul(al4, bl8)) | 0;
30701 mid = (mid + Math.imul(al4, bh8)) | 0;
30702 mid = (mid + Math.imul(ah4, bl8)) | 0;
30703 hi = (hi + Math.imul(ah4, bh8)) | 0;
30704 lo = (lo + Math.imul(al3, bl9)) | 0;
30705 mid = (mid + Math.imul(al3, bh9)) | 0;
30706 mid = (mid + Math.imul(ah3, bl9)) | 0;
30707 hi = (hi + Math.imul(ah3, bh9)) | 0;
30708 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30709 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
30710 w12 &= 0x3ffffff;
30711 /* k = 13 */
30712 lo = Math.imul(al9, bl4);
30713 mid = Math.imul(al9, bh4);
30714 mid = (mid + Math.imul(ah9, bl4)) | 0;
30715 hi = Math.imul(ah9, bh4);
30716 lo = (lo + Math.imul(al8, bl5)) | 0;
30717 mid = (mid + Math.imul(al8, bh5)) | 0;
30718 mid = (mid + Math.imul(ah8, bl5)) | 0;
30719 hi = (hi + Math.imul(ah8, bh5)) | 0;
30720 lo = (lo + Math.imul(al7, bl6)) | 0;
30721 mid = (mid + Math.imul(al7, bh6)) | 0;
30722 mid = (mid + Math.imul(ah7, bl6)) | 0;
30723 hi = (hi + Math.imul(ah7, bh6)) | 0;
30724 lo = (lo + Math.imul(al6, bl7)) | 0;
30725 mid = (mid + Math.imul(al6, bh7)) | 0;
30726 mid = (mid + Math.imul(ah6, bl7)) | 0;
30727 hi = (hi + Math.imul(ah6, bh7)) | 0;
30728 lo = (lo + Math.imul(al5, bl8)) | 0;
30729 mid = (mid + Math.imul(al5, bh8)) | 0;
30730 mid = (mid + Math.imul(ah5, bl8)) | 0;
30731 hi = (hi + Math.imul(ah5, bh8)) | 0;
30732 lo = (lo + Math.imul(al4, bl9)) | 0;
30733 mid = (mid + Math.imul(al4, bh9)) | 0;
30734 mid = (mid + Math.imul(ah4, bl9)) | 0;
30735 hi = (hi + Math.imul(ah4, bh9)) | 0;
30736 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30737 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
30738 w13 &= 0x3ffffff;
30739 /* k = 14 */
30740 lo = Math.imul(al9, bl5);
30741 mid = Math.imul(al9, bh5);
30742 mid = (mid + Math.imul(ah9, bl5)) | 0;
30743 hi = Math.imul(ah9, bh5);
30744 lo = (lo + Math.imul(al8, bl6)) | 0;
30745 mid = (mid + Math.imul(al8, bh6)) | 0;
30746 mid = (mid + Math.imul(ah8, bl6)) | 0;
30747 hi = (hi + Math.imul(ah8, bh6)) | 0;
30748 lo = (lo + Math.imul(al7, bl7)) | 0;
30749 mid = (mid + Math.imul(al7, bh7)) | 0;
30750 mid = (mid + Math.imul(ah7, bl7)) | 0;
30751 hi = (hi + Math.imul(ah7, bh7)) | 0;
30752 lo = (lo + Math.imul(al6, bl8)) | 0;
30753 mid = (mid + Math.imul(al6, bh8)) | 0;
30754 mid = (mid + Math.imul(ah6, bl8)) | 0;
30755 hi = (hi + Math.imul(ah6, bh8)) | 0;
30756 lo = (lo + Math.imul(al5, bl9)) | 0;
30757 mid = (mid + Math.imul(al5, bh9)) | 0;
30758 mid = (mid + Math.imul(ah5, bl9)) | 0;
30759 hi = (hi + Math.imul(ah5, bh9)) | 0;
30760 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30761 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
30762 w14 &= 0x3ffffff;
30763 /* k = 15 */
30764 lo = Math.imul(al9, bl6);
30765 mid = Math.imul(al9, bh6);
30766 mid = (mid + Math.imul(ah9, bl6)) | 0;
30767 hi = Math.imul(ah9, bh6);
30768 lo = (lo + Math.imul(al8, bl7)) | 0;
30769 mid = (mid + Math.imul(al8, bh7)) | 0;
30770 mid = (mid + Math.imul(ah8, bl7)) | 0;
30771 hi = (hi + Math.imul(ah8, bh7)) | 0;
30772 lo = (lo + Math.imul(al7, bl8)) | 0;
30773 mid = (mid + Math.imul(al7, bh8)) | 0;
30774 mid = (mid + Math.imul(ah7, bl8)) | 0;
30775 hi = (hi + Math.imul(ah7, bh8)) | 0;
30776 lo = (lo + Math.imul(al6, bl9)) | 0;
30777 mid = (mid + Math.imul(al6, bh9)) | 0;
30778 mid = (mid + Math.imul(ah6, bl9)) | 0;
30779 hi = (hi + Math.imul(ah6, bh9)) | 0;
30780 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30781 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
30782 w15 &= 0x3ffffff;
30783 /* k = 16 */
30784 lo = Math.imul(al9, bl7);
30785 mid = Math.imul(al9, bh7);
30786 mid = (mid + Math.imul(ah9, bl7)) | 0;
30787 hi = Math.imul(ah9, bh7);
30788 lo = (lo + Math.imul(al8, bl8)) | 0;
30789 mid = (mid + Math.imul(al8, bh8)) | 0;
30790 mid = (mid + Math.imul(ah8, bl8)) | 0;
30791 hi = (hi + Math.imul(ah8, bh8)) | 0;
30792 lo = (lo + Math.imul(al7, bl9)) | 0;
30793 mid = (mid + Math.imul(al7, bh9)) | 0;
30794 mid = (mid + Math.imul(ah7, bl9)) | 0;
30795 hi = (hi + Math.imul(ah7, bh9)) | 0;
30796 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30797 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
30798 w16 &= 0x3ffffff;
30799 /* k = 17 */
30800 lo = Math.imul(al9, bl8);
30801 mid = Math.imul(al9, bh8);
30802 mid = (mid + Math.imul(ah9, bl8)) | 0;
30803 hi = Math.imul(ah9, bh8);
30804 lo = (lo + Math.imul(al8, bl9)) | 0;
30805 mid = (mid + Math.imul(al8, bh9)) | 0;
30806 mid = (mid + Math.imul(ah8, bl9)) | 0;
30807 hi = (hi + Math.imul(ah8, bh9)) | 0;
30808 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30809 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
30810 w17 &= 0x3ffffff;
30811 /* k = 18 */
30812 lo = Math.imul(al9, bl9);
30813 mid = Math.imul(al9, bh9);
30814 mid = (mid + Math.imul(ah9, bl9)) | 0;
30815 hi = Math.imul(ah9, bh9);
30816 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
30817 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
30818 w18 &= 0x3ffffff;
30819 o[0] = w0;
30820 o[1] = w1;
30821 o[2] = w2;
30822 o[3] = w3;
30823 o[4] = w4;
30824 o[5] = w5;
30825 o[6] = w6;
30826 o[7] = w7;
30827 o[8] = w8;
30828 o[9] = w9;
30829 o[10] = w10;
30830 o[11] = w11;
30831 o[12] = w12;
30832 o[13] = w13;
30833 o[14] = w14;
30834 o[15] = w15;
30835 o[16] = w16;
30836 o[17] = w17;
30837 o[18] = w18;
30838 if (c !== 0) {
30839 o[19] = c;
30840 out.length++;
ab78acc6 30841 }
8b095871
IC
30842 return out;
30843 };
30844
30845 // Polyfill comb
30846 if (!Math.imul) {
30847 comb10MulTo = smallMulTo;
30848 }
30849
30850 function bigMulTo (self, num, out) {
30851 out.negative = num.negative ^ self.negative;
30852 out.length = self.length + num.length;
30853
30854 var carry = 0;
30855 var hncarry = 0;
30856 for (var k = 0; k < out.length - 1; k++) {
30857 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
30858 // note that ncarry could be >= 0x3ffffff
30859 var ncarry = hncarry;
30860 hncarry = 0;
30861 var rword = carry & 0x3ffffff;
30862 var maxJ = Math.min(k, num.length - 1);
30863 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
30864 var i = k - j;
30865 var a = self.words[i] | 0;
30866 var b = num.words[j] | 0;
30867 var r = a * b;
30868
30869 var lo = r & 0x3ffffff;
30870 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
30871 lo = (lo + rword) | 0;
30872 rword = lo & 0x3ffffff;
30873 ncarry = (ncarry + (lo >>> 26)) | 0;
30874
30875 hncarry += ncarry >>> 26;
30876 ncarry &= 0x3ffffff;
30877 }
30878 out.words[k] = rword;
30879 carry = ncarry;
30880 ncarry = hncarry;
30881 }
30882 if (carry !== 0) {
30883 out.words[k] = carry;
30884 } else {
30885 out.length--;
ab78acc6 30886 }
8b095871
IC
30887
30888 return out.strip();
ab78acc6 30889 }
8b095871
IC
30890
30891 function jumboMulTo (self, num, out) {
30892 var fftm = new FFTM();
30893 return fftm.mulp(self, num, out);
ab78acc6 30894 }
8b095871
IC
30895
30896 BN.prototype.mulTo = function mulTo (num, out) {
30897 var res;
30898 var len = this.length + num.length;
30899 if (this.length === 10 && num.length === 10) {
30900 res = comb10MulTo(this, num, out);
30901 } else if (len < 63) {
30902 res = smallMulTo(this, num, out);
30903 } else if (len < 1024) {
30904 res = bigMulTo(this, num, out);
ab78acc6 30905 } else {
8b095871 30906 res = jumboMulTo(this, num, out);
ab78acc6 30907 }
8b095871
IC
30908
30909 return res;
30910 };
30911
30912 // Cooley-Tukey algorithm for FFT
30913 // slightly revisited to rely on looping instead of recursion
30914
30915 function FFTM (x, y) {
30916 this.x = x;
30917 this.y = y;
ab78acc6 30918 }
8b095871
IC
30919
30920 FFTM.prototype.makeRBT = function makeRBT (N) {
30921 var t = new Array(N);
30922 var l = BN.prototype._countBits(N) - 1;
30923 for (var i = 0; i < N; i++) {
30924 t[i] = this.revBin(i, l, N);
30925 }
30926
30927 return t;
30928 };
30929
30930 // Returns binary-reversed representation of `x`
30931 FFTM.prototype.revBin = function revBin (x, l, N) {
30932 if (x === 0 || x === N - 1) return x;
30933
30934 var rb = 0;
30935 for (var i = 0; i < l; i++) {
30936 rb |= (x & 1) << (l - i - 1);
30937 x >>= 1;
30938 }
30939
30940 return rb;
30941 };
30942
30943 // Performs "tweedling" phase, therefore 'emulating'
30944 // behaviour of the recursive algorithm
30945 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
30946 for (var i = 0; i < N; i++) {
30947 rtws[i] = rws[rbt[i]];
30948 itws[i] = iws[rbt[i]];
30949 }
30950 };
30951
30952 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
30953 this.permute(rbt, rws, iws, rtws, itws, N);
30954
30955 for (var s = 1; s < N; s <<= 1) {
30956 var l = s << 1;
30957
30958 var rtwdf = Math.cos(2 * Math.PI / l);
30959 var itwdf = Math.sin(2 * Math.PI / l);
30960
30961 for (var p = 0; p < N; p += l) {
30962 var rtwdf_ = rtwdf;
30963 var itwdf_ = itwdf;
30964
30965 for (var j = 0; j < s; j++) {
30966 var re = rtws[p + j];
30967 var ie = itws[p + j];
30968
30969 var ro = rtws[p + j + s];
30970 var io = itws[p + j + s];
30971
30972 var rx = rtwdf_ * ro - itwdf_ * io;
30973
30974 io = rtwdf_ * io + itwdf_ * ro;
30975 ro = rx;
30976
30977 rtws[p + j] = re + ro;
30978 itws[p + j] = ie + io;
30979
30980 rtws[p + j + s] = re - ro;
30981 itws[p + j + s] = ie - io;
30982
30983 /* jshint maxdepth : false */
30984 if (j !== l) {
30985 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
30986
30987 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
30988 rtwdf_ = rx;
30989 }
30990 }
30991 }
ab78acc6 30992 }
8b095871
IC
30993 };
30994
30995 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
30996 var N = Math.max(m, n) | 1;
30997 var odd = N & 1;
30998 var i = 0;
30999 for (N = N / 2 | 0; N; N = N >>> 1) {
31000 i++;
ab78acc6 31001 }
ebd8d4e8 31002
8b095871
IC
31003 return 1 << i + 1 + odd;
31004 };
ebd8d4e8 31005
8b095871
IC
31006 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
31007 if (N <= 1) return;
ebd8d4e8 31008
8b095871
IC
31009 for (var i = 0; i < N / 2; i++) {
31010 var t = rws[i];
ebd8d4e8 31011
8b095871
IC
31012 rws[i] = rws[N - i - 1];
31013 rws[N - i - 1] = t;
ebd8d4e8 31014
8b095871 31015 t = iws[i];
ebd8d4e8 31016
8b095871
IC
31017 iws[i] = -iws[N - i - 1];
31018 iws[N - i - 1] = -t;
31019 }
31020 };
ebd8d4e8 31021
8b095871
IC
31022 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
31023 var carry = 0;
31024 for (var i = 0; i < N / 2; i++) {
31025 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
31026 Math.round(ws[2 * i] / N) +
31027 carry;
ebd8d4e8 31028
8b095871 31029 ws[i] = w & 0x3ffffff;
ebd8d4e8 31030
8b095871
IC
31031 if (w < 0x4000000) {
31032 carry = 0;
31033 } else {
31034 carry = w / 0x4000000 | 0;
31035 }
31036 }
ebd8d4e8 31037
8b095871
IC
31038 return ws;
31039 };
ebd8d4e8 31040
8b095871
IC
31041 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
31042 var carry = 0;
31043 for (var i = 0; i < len; i++) {
31044 carry = carry + (ws[i] | 0);
ebd8d4e8 31045
8b095871
IC
31046 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
31047 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
31048 }
ebd8d4e8 31049
8b095871
IC
31050 // Pad with zeroes
31051 for (i = 2 * len; i < N; ++i) {
31052 rws[i] = 0;
31053 }
ebd8d4e8 31054
8b095871
IC
31055 assert(carry === 0);
31056 assert((carry & ~0x1fff) === 0);
31057 };
ebd8d4e8 31058
8b095871
IC
31059 FFTM.prototype.stub = function stub (N) {
31060 var ph = new Array(N);
31061 for (var i = 0; i < N; i++) {
31062 ph[i] = 0;
31063 }
ebd8d4e8 31064
8b095871
IC
31065 return ph;
31066 };
ebd8d4e8 31067
8b095871
IC
31068 FFTM.prototype.mulp = function mulp (x, y, out) {
31069 var N = 2 * this.guessLen13b(x.length, y.length);
ebd8d4e8 31070
8b095871 31071 var rbt = this.makeRBT(N);
ebd8d4e8 31072
8b095871 31073 var _ = this.stub(N);
ebd8d4e8 31074
8b095871
IC
31075 var rws = new Array(N);
31076 var rwst = new Array(N);
31077 var iwst = new Array(N);
ebd8d4e8 31078
8b095871
IC
31079 var nrws = new Array(N);
31080 var nrwst = new Array(N);
31081 var niwst = new Array(N);
ebd8d4e8 31082
8b095871
IC
31083 var rmws = out.words;
31084 rmws.length = N;
ebd8d4e8 31085
8b095871
IC
31086 this.convert13b(x.words, x.length, rws, N);
31087 this.convert13b(y.words, y.length, nrws, N);
ebd8d4e8 31088
8b095871
IC
31089 this.transform(rws, _, rwst, iwst, N, rbt);
31090 this.transform(nrws, _, nrwst, niwst, N, rbt);
ebd8d4e8 31091
8b095871
IC
31092 for (var i = 0; i < N; i++) {
31093 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
31094 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
31095 rwst[i] = rx;
31096 }
ebd8d4e8 31097
8b095871
IC
31098 this.conjugate(rwst, iwst, N);
31099 this.transform(rwst, iwst, rmws, _, N, rbt);
31100 this.conjugate(rmws, _, N);
31101 this.normalize13b(rmws, N);
ebd8d4e8 31102
8b095871
IC
31103 out.negative = x.negative ^ y.negative;
31104 out.length = x.length + y.length;
31105 return out.strip();
31106 };
ebd8d4e8 31107
8b095871
IC
31108 // Multiply `this` by `num`
31109 BN.prototype.mul = function mul (num) {
31110 var out = new BN(null);
31111 out.words = new Array(this.length + num.length);
31112 return this.mulTo(num, out);
31113 };
ab78acc6 31114
8b095871
IC
31115 // Multiply employing FFT
31116 BN.prototype.mulf = function mulf (num) {
31117 var out = new BN(null);
31118 out.words = new Array(this.length + num.length);
31119 return jumboMulTo(this, num, out);
31120 };
ebd8d4e8 31121
8b095871
IC
31122 // In-place Multiplication
31123 BN.prototype.imul = function imul (num) {
31124 return this.clone().mulTo(num, this);
31125 };
ab78acc6 31126
8b095871
IC
31127 BN.prototype.imuln = function imuln (num) {
31128 assert(typeof num === 'number');
31129 assert(num < 0x4000000);
ab78acc6 31130
8b095871
IC
31131 // Carry
31132 var carry = 0;
31133 for (var i = 0; i < this.length; i++) {
31134 var w = (this.words[i] | 0) * num;
31135 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
31136 carry >>= 26;
31137 carry += (w / 0x4000000) | 0;
31138 // NOTE: lo is 27bit maximum
31139 carry += lo >>> 26;
31140 this.words[i] = lo & 0x3ffffff;
31141 }
ab78acc6 31142
8b095871
IC
31143 if (carry !== 0) {
31144 this.words[i] = carry;
31145 this.length++;
31146 }
ab78acc6 31147
8b095871
IC
31148 return this;
31149 };
ab78acc6 31150
8b095871
IC
31151 BN.prototype.muln = function muln (num) {
31152 return this.clone().imuln(num);
31153 };
ebd8d4e8 31154
8b095871
IC
31155 // `this` * `this`
31156 BN.prototype.sqr = function sqr () {
31157 return this.mul(this);
31158 };
ebd8d4e8 31159
8b095871
IC
31160 // `this` * `this` in-place
31161 BN.prototype.isqr = function isqr () {
31162 return this.imul(this.clone());
31163 };
ab78acc6 31164
8b095871
IC
31165 // Math.pow(`this`, `num`)
31166 BN.prototype.pow = function pow (num) {
31167 var w = toBitArray(num);
31168 if (w.length === 0) return new BN(1);
ab78acc6 31169
8b095871
IC
31170 // Skip leading zeroes
31171 var res = this;
31172 for (var i = 0; i < w.length; i++, res = res.sqr()) {
31173 if (w[i] !== 0) break;
31174 }
ebd8d4e8 31175
8b095871
IC
31176 if (++i < w.length) {
31177 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
31178 if (w[i] === 0) continue;
ebd8d4e8 31179
8b095871
IC
31180 res = res.mul(q);
31181 }
ab78acc6
IC
31182 }
31183
8b095871
IC
31184 return res;
31185 };
ab78acc6 31186
8b095871
IC
31187 // Shift-left in-place
31188 BN.prototype.iushln = function iushln (bits) {
31189 assert(typeof bits === 'number' && bits >= 0);
31190 var r = bits % 26;
31191 var s = (bits - r) / 26;
31192 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
31193 var i;
31194
31195 if (r !== 0) {
31196 var carry = 0;
31197
31198 for (i = 0; i < this.length; i++) {
31199 var newCarry = this.words[i] & carryMask;
31200 var c = ((this.words[i] | 0) - newCarry) << r;
31201 this.words[i] = c | carry;
31202 carry = newCarry >>> (26 - r);
31203 }
31204
31205 if (carry) {
31206 this.words[i] = carry;
31207 this.length++;
31208 }
ab78acc6 31209 }
ebd8d4e8 31210
8b095871
IC
31211 if (s !== 0) {
31212 for (i = this.length - 1; i >= 0; i--) {
31213 this.words[i + s] = this.words[i];
31214 }
ebd8d4e8 31215
8b095871
IC
31216 for (i = 0; i < s; i++) {
31217 this.words[i] = 0;
31218 }
ebd8d4e8 31219
8b095871
IC
31220 this.length += s;
31221 }
ebd8d4e8 31222
8b095871
IC
31223 return this.strip();
31224 };
ebd8d4e8 31225
8b095871
IC
31226 BN.prototype.ishln = function ishln (bits) {
31227 // TODO(indutny): implement me
31228 assert(this.negative === 0);
31229 return this.iushln(bits);
31230 };
ebd8d4e8 31231
8b095871
IC
31232 // Shift-right in-place
31233 // NOTE: `hint` is a lowest bit before trailing zeroes
31234 // NOTE: if `extended` is present - it will be filled with destroyed bits
31235 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
31236 assert(typeof bits === 'number' && bits >= 0);
31237 var h;
31238 if (hint) {
31239 h = (hint - (hint % 26)) / 26;
31240 } else {
31241 h = 0;
31242 }
ebd8d4e8 31243
8b095871
IC
31244 var r = bits % 26;
31245 var s = Math.min((bits - r) / 26, this.length);
31246 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31247 var maskedWords = extended;
31248
31249 h -= s;
31250 h = Math.max(0, h);
31251
31252 // Extended mode, copy masked part
31253 if (maskedWords) {
31254 for (var i = 0; i < s; i++) {
31255 maskedWords.words[i] = this.words[i];
31256 }
31257 maskedWords.length = s;
ab78acc6 31258 }
ebd8d4e8 31259
8b095871
IC
31260 if (s === 0) {
31261 // No-op, we should not move anything at all
31262 } else if (this.length > s) {
31263 this.length -= s;
31264 for (i = 0; i < this.length; i++) {
31265 this.words[i] = this.words[i + s];
31266 }
31267 } else {
31268 this.words[0] = 0;
31269 this.length = 1;
31270 }
ab78acc6 31271
8b095871
IC
31272 var carry = 0;
31273 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
31274 var word = this.words[i] | 0;
31275 this.words[i] = (carry << (26 - r)) | (word >>> r);
31276 carry = word & mask;
ab78acc6 31277 }
ebd8d4e8 31278
8b095871
IC
31279 // Push carried bits as a mask
31280 if (maskedWords && carry !== 0) {
31281 maskedWords.words[maskedWords.length++] = carry;
31282 }
31283
31284 if (this.length === 0) {
31285 this.words[0] = 0;
31286 this.length = 1;
31287 }
31288
31289 return this.strip();
31290 };
31291
31292 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
31293 // TODO(indutny): implement me
31294 assert(this.negative === 0);
31295 return this.iushrn(bits, hint, extended);
31296 };
31297
31298 // Shift-left
31299 BN.prototype.shln = function shln (bits) {
31300 return this.clone().ishln(bits);
31301 };
31302
31303 BN.prototype.ushln = function ushln (bits) {
31304 return this.clone().iushln(bits);
31305 };
31306
31307 // Shift-right
31308 BN.prototype.shrn = function shrn (bits) {
31309 return this.clone().ishrn(bits);
31310 };
ebd8d4e8 31311
8b095871
IC
31312 BN.prototype.ushrn = function ushrn (bits) {
31313 return this.clone().iushrn(bits);
31314 };
ebd8d4e8 31315
8b095871
IC
31316 // Test if n bit is set
31317 BN.prototype.testn = function testn (bit) {
31318 assert(typeof bit === 'number' && bit >= 0);
31319 var r = bit % 26;
31320 var s = (bit - r) / 26;
31321 var q = 1 << r;
ebd8d4e8 31322
8b095871
IC
31323 // Fast case: bit is much higher than all existing words
31324 if (this.length <= s) return false;
ab78acc6 31325
8b095871
IC
31326 // Check bit and return
31327 var w = this.words[s];
ab78acc6 31328
8b095871
IC
31329 return !!(w & q);
31330 };
ab78acc6 31331
8b095871
IC
31332 // Return only lowers bits of number (in-place)
31333 BN.prototype.imaskn = function imaskn (bits) {
31334 assert(typeof bits === 'number' && bits >= 0);
31335 var r = bits % 26;
31336 var s = (bits - r) / 26;
ab78acc6 31337
8b095871 31338 assert(this.negative === 0, 'imaskn works only with positive numbers');
ab78acc6 31339
8b095871
IC
31340 if (this.length <= s) {
31341 return this;
31342 }
ab78acc6 31343
8b095871
IC
31344 if (r !== 0) {
31345 s++;
31346 }
31347 this.length = Math.min(s, this.length);
ab78acc6 31348
8b095871
IC
31349 if (r !== 0) {
31350 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
31351 this.words[this.length - 1] &= mask;
31352 }
ab78acc6 31353
8b095871
IC
31354 return this.strip();
31355 };
ab78acc6 31356
8b095871
IC
31357 // Return only lowers bits of number
31358 BN.prototype.maskn = function maskn (bits) {
31359 return this.clone().imaskn(bits);
31360 };
ebd8d4e8 31361
8b095871
IC
31362 // Add plain number `num` to `this`
31363 BN.prototype.iaddn = function iaddn (num) {
31364 assert(typeof num === 'number');
31365 assert(num < 0x4000000);
31366 if (num < 0) return this.isubn(-num);
31367
31368 // Possible sign change
31369 if (this.negative !== 0) {
31370 if (this.length === 1 && (this.words[0] | 0) < num) {
31371 this.words[0] = num - (this.words[0] | 0);
31372 this.negative = 0;
31373 return this;
31374 }
ebd8d4e8 31375
8b095871
IC
31376 this.negative = 0;
31377 this.isubn(num);
31378 this.negative = 1;
31379 return this;
31380 }
ebd8d4e8 31381
8b095871
IC
31382 // Add without checks
31383 return this._iaddn(num);
31384 };
ebd8d4e8 31385
8b095871
IC
31386 BN.prototype._iaddn = function _iaddn (num) {
31387 this.words[0] += num;
ebd8d4e8 31388
8b095871
IC
31389 // Carry
31390 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
31391 this.words[i] -= 0x4000000;
31392 if (i === this.length - 1) {
31393 this.words[i + 1] = 1;
31394 } else {
31395 this.words[i + 1]++;
31396 }
31397 }
31398 this.length = Math.max(this.length, i + 1);
ebd8d4e8 31399
8b095871
IC
31400 return this;
31401 };
ebd8d4e8 31402
8b095871
IC
31403 // Subtract plain number `num` from `this`
31404 BN.prototype.isubn = function isubn (num) {
31405 assert(typeof num === 'number');
31406 assert(num < 0x4000000);
31407 if (num < 0) return this.iaddn(-num);
ebd8d4e8 31408
8b095871
IC
31409 if (this.negative !== 0) {
31410 this.negative = 0;
31411 this.iaddn(num);
31412 this.negative = 1;
31413 return this;
31414 }
ebd8d4e8 31415
8b095871 31416 this.words[0] -= num;
ab78acc6 31417
8b095871
IC
31418 if (this.length === 1 && this.words[0] < 0) {
31419 this.words[0] = -this.words[0];
31420 this.negative = 1;
31421 } else {
31422 // Carry
31423 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
31424 this.words[i] += 0x4000000;
31425 this.words[i + 1] -= 1;
31426 }
31427 }
ebd8d4e8 31428
8b095871
IC
31429 return this.strip();
31430 };
ab78acc6 31431
8b095871
IC
31432 BN.prototype.addn = function addn (num) {
31433 return this.clone().iaddn(num);
31434 };
ab78acc6 31435
8b095871
IC
31436 BN.prototype.subn = function subn (num) {
31437 return this.clone().isubn(num);
31438 };
ab78acc6 31439
8b095871
IC
31440 BN.prototype.iabs = function iabs () {
31441 this.negative = 0;
ab78acc6 31442
8b095871
IC
31443 return this;
31444 };
ab78acc6 31445
8b095871
IC
31446 BN.prototype.abs = function abs () {
31447 return this.clone().iabs();
31448 };
ab78acc6 31449
8b095871
IC
31450 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
31451 var len = num.length + shift;
31452 var i;
ab78acc6 31453
8b095871 31454 this._expand(len);
ab78acc6 31455
8b095871
IC
31456 var w;
31457 var carry = 0;
31458 for (i = 0; i < num.length; i++) {
31459 w = (this.words[i + shift] | 0) + carry;
31460 var right = (num.words[i] | 0) * mul;
31461 w -= right & 0x3ffffff;
31462 carry = (w >> 26) - ((right / 0x4000000) | 0);
31463 this.words[i + shift] = w & 0x3ffffff;
31464 }
31465 for (; i < this.length - shift; i++) {
31466 w = (this.words[i + shift] | 0) + carry;
31467 carry = w >> 26;
31468 this.words[i + shift] = w & 0x3ffffff;
31469 }
ebd8d4e8 31470
8b095871 31471 if (carry === 0) return this.strip();
ab78acc6 31472
8b095871
IC
31473 // Subtraction overflow
31474 assert(carry === -1);
31475 carry = 0;
31476 for (i = 0; i < this.length; i++) {
31477 w = -(this.words[i] | 0) + carry;
31478 carry = w >> 26;
31479 this.words[i] = w & 0x3ffffff;
31480 }
31481 this.negative = 1;
ab78acc6 31482
8b095871
IC
31483 return this.strip();
31484 };
ab78acc6 31485
8b095871
IC
31486 BN.prototype._wordDiv = function _wordDiv (num, mode) {
31487 var shift = this.length - num.length;
ebd8d4e8 31488
8b095871
IC
31489 var a = this.clone();
31490 var b = num;
ab78acc6 31491
8b095871
IC
31492 // Normalize
31493 var bhi = b.words[b.length - 1] | 0;
31494 var bhiBits = this._countBits(bhi);
31495 shift = 26 - bhiBits;
31496 if (shift !== 0) {
31497 b = b.ushln(shift);
31498 a.iushln(shift);
31499 bhi = b.words[b.length - 1] | 0;
31500 }
ebd8d4e8 31501
8b095871
IC
31502 // Initialize quotient
31503 var m = a.length - b.length;
31504 var q;
ab78acc6 31505
8b095871
IC
31506 if (mode !== 'mod') {
31507 q = new BN(null);
31508 q.length = m + 1;
31509 q.words = new Array(q.length);
31510 for (var i = 0; i < q.length; i++) {
31511 q.words[i] = 0;
31512 }
31513 }
ebd8d4e8 31514
8b095871
IC
31515 var diff = a.clone()._ishlnsubmul(b, 1, m);
31516 if (diff.negative === 0) {
31517 a = diff;
31518 if (q) {
31519 q.words[m] = 1;
31520 }
31521 }
ebd8d4e8 31522
8b095871
IC
31523 for (var j = m - 1; j >= 0; j--) {
31524 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
31525 (a.words[b.length + j - 1] | 0);
ebd8d4e8 31526
8b095871
IC
31527 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
31528 // (0x7ffffff)
31529 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
ebd8d4e8 31530
8b095871
IC
31531 a._ishlnsubmul(b, qj, j);
31532 while (a.negative !== 0) {
31533 qj--;
31534 a.negative = 0;
31535 a._ishlnsubmul(b, 1, j);
31536 if (!a.isZero()) {
31537 a.negative ^= 1;
31538 }
31539 }
31540 if (q) {
31541 q.words[j] = qj;
31542 }
31543 }
31544 if (q) {
31545 q.strip();
31546 }
31547 a.strip();
ebd8d4e8 31548
8b095871
IC
31549 // Denormalize
31550 if (mode !== 'div' && shift !== 0) {
31551 a.iushrn(shift);
31552 }
ebd8d4e8 31553
8b095871
IC
31554 return {
31555 div: q || null,
31556 mod: a
31557 };
31558 };
ebd8d4e8 31559
8b095871
IC
31560 // NOTE: 1) `mode` can be set to `mod` to request mod only,
31561 // to `div` to request div only, or be absent to
31562 // request both div & mod
31563 // 2) `positive` is true if unsigned mod is requested
31564 BN.prototype.divmod = function divmod (num, mode, positive) {
31565 assert(!num.isZero());
31566
31567 if (this.isZero()) {
31568 return {
31569 div: new BN(0),
31570 mod: new BN(0)
31571 };
31572 }
ebd8d4e8 31573
8b095871
IC
31574 var div, mod, res;
31575 if (this.negative !== 0 && num.negative === 0) {
31576 res = this.neg().divmod(num, mode);
ebd8d4e8 31577
8b095871
IC
31578 if (mode !== 'mod') {
31579 div = res.div.neg();
31580 }
ebd8d4e8 31581
8b095871
IC
31582 if (mode !== 'div') {
31583 mod = res.mod.neg();
31584 if (positive && mod.negative !== 0) {
31585 mod.iadd(num);
31586 }
31587 }
ebd8d4e8 31588
8b095871
IC
31589 return {
31590 div: div,
31591 mod: mod
31592 };
31593 }
ebd8d4e8 31594
8b095871
IC
31595 if (this.negative === 0 && num.negative !== 0) {
31596 res = this.divmod(num.neg(), mode);
ebd8d4e8 31597
8b095871
IC
31598 if (mode !== 'mod') {
31599 div = res.div.neg();
31600 }
ebd8d4e8 31601
8b095871
IC
31602 return {
31603 div: div,
31604 mod: res.mod
31605 };
31606 }
ebd8d4e8 31607
8b095871
IC
31608 if ((this.negative & num.negative) !== 0) {
31609 res = this.neg().divmod(num.neg(), mode);
ebd8d4e8 31610
8b095871
IC
31611 if (mode !== 'div') {
31612 mod = res.mod.neg();
31613 if (positive && mod.negative !== 0) {
31614 mod.isub(num);
31615 }
31616 }
ebd8d4e8 31617
8b095871
IC
31618 return {
31619 div: res.div,
31620 mod: mod
31621 };
31622 }
ebd8d4e8 31623
8b095871 31624 // Both numbers are positive at this point
ebd8d4e8 31625
8b095871
IC
31626 // Strip both numbers to approximate shift value
31627 if (num.length > this.length || this.cmp(num) < 0) {
31628 return {
31629 div: new BN(0),
31630 mod: this
31631 };
31632 }
ebd8d4e8 31633
8b095871
IC
31634 // Very short reduction
31635 if (num.length === 1) {
31636 if (mode === 'div') {
31637 return {
31638 div: this.divn(num.words[0]),
31639 mod: null
31640 };
31641 }
ebd8d4e8 31642
8b095871
IC
31643 if (mode === 'mod') {
31644 return {
31645 div: null,
31646 mod: new BN(this.modn(num.words[0]))
31647 };
31648 }
ebd8d4e8 31649
8b095871
IC
31650 return {
31651 div: this.divn(num.words[0]),
31652 mod: new BN(this.modn(num.words[0]))
31653 };
31654 }
ebd8d4e8 31655
8b095871
IC
31656 return this._wordDiv(num, mode);
31657 };
ab78acc6 31658
8b095871
IC
31659 // Find `this` / `num`
31660 BN.prototype.div = function div (num) {
31661 return this.divmod(num, 'div', false).div;
31662 };
ab78acc6 31663
8b095871
IC
31664 // Find `this` % `num`
31665 BN.prototype.mod = function mod (num) {
31666 return this.divmod(num, 'mod', false).mod;
31667 };
ab78acc6 31668
8b095871
IC
31669 BN.prototype.umod = function umod (num) {
31670 return this.divmod(num, 'mod', true).mod;
31671 };
ebd8d4e8 31672
8b095871
IC
31673 // Find Round(`this` / `num`)
31674 BN.prototype.divRound = function divRound (num) {
31675 var dm = this.divmod(num);
ebd8d4e8 31676
8b095871
IC
31677 // Fast case - exact division
31678 if (dm.mod.isZero()) return dm.div;
ebd8d4e8 31679
8b095871 31680 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
ebd8d4e8 31681
8b095871
IC
31682 var half = num.ushrn(1);
31683 var r2 = num.andln(1);
31684 var cmp = mod.cmp(half);
ebd8d4e8 31685
8b095871
IC
31686 // Round down
31687 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
ebd8d4e8 31688
8b095871
IC
31689 // Round up
31690 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
31691 };
ab78acc6 31692
8b095871
IC
31693 BN.prototype.modn = function modn (num) {
31694 assert(num <= 0x3ffffff);
31695 var p = (1 << 26) % num;
ab78acc6 31696
8b095871
IC
31697 var acc = 0;
31698 for (var i = this.length - 1; i >= 0; i--) {
31699 acc = (p * acc + (this.words[i] | 0)) % num;
ab78acc6 31700 }
ab78acc6 31701
8b095871
IC
31702 return acc;
31703 };
31704
31705 // In-place division by number
31706 BN.prototype.idivn = function idivn (num) {
31707 assert(num <= 0x3ffffff);
31708
31709 var carry = 0;
31710 for (var i = this.length - 1; i >= 0; i--) {
31711 var w = (this.words[i] | 0) + carry * 0x4000000;
31712 this.words[i] = (w / num) | 0;
31713 carry = w % num;
ebd8d4e8 31714 }
ebd8d4e8 31715
8b095871
IC
31716 return this.strip();
31717 };
ab78acc6 31718
8b095871
IC
31719 BN.prototype.divn = function divn (num) {
31720 return this.clone().idivn(num);
31721 };
ebd8d4e8 31722
8b095871
IC
31723 BN.prototype.egcd = function egcd (p) {
31724 assert(p.negative === 0);
31725 assert(!p.isZero());
ebd8d4e8 31726
8b095871
IC
31727 var x = this;
31728 var y = p.clone();
31729
31730 if (x.negative !== 0) {
31731 x = x.umod(p);
31732 } else {
31733 x = x.clone();
31734 }
31735
31736 // A * x + B * y = x
31737 var A = new BN(1);
31738 var B = new BN(0);
31739
31740 // C * x + D * y = y
31741 var C = new BN(0);
31742 var D = new BN(1);
31743
31744 var g = 0;
31745
31746 while (x.isEven() && y.isEven()) {
31747 x.iushrn(1);
31748 y.iushrn(1);
31749 ++g;
31750 }
ebd8d4e8 31751
8b095871
IC
31752 var yp = y.clone();
31753 var xp = x.clone();
ebd8d4e8 31754
8b095871
IC
31755 while (!x.isZero()) {
31756 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31757 if (i > 0) {
31758 x.iushrn(i);
31759 while (i-- > 0) {
31760 if (A.isOdd() || B.isOdd()) {
31761 A.iadd(yp);
31762 B.isub(xp);
31763 }
ebd8d4e8 31764
8b095871
IC
31765 A.iushrn(1);
31766 B.iushrn(1);
31767 }
31768 }
ebd8d4e8 31769
8b095871
IC
31770 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31771 if (j > 0) {
31772 y.iushrn(j);
31773 while (j-- > 0) {
31774 if (C.isOdd() || D.isOdd()) {
31775 C.iadd(yp);
31776 D.isub(xp);
31777 }
ab78acc6 31778
8b095871
IC
31779 C.iushrn(1);
31780 D.iushrn(1);
31781 }
31782 }
ebd8d4e8 31783
8b095871
IC
31784 if (x.cmp(y) >= 0) {
31785 x.isub(y);
31786 A.isub(C);
31787 B.isub(D);
31788 } else {
31789 y.isub(x);
31790 C.isub(A);
31791 D.isub(B);
31792 }
31793 }
ebd8d4e8 31794
8b095871
IC
31795 return {
31796 a: C,
31797 b: D,
31798 gcd: y.iushln(g)
31799 };
31800 };
ebd8d4e8 31801
8b095871
IC
31802 // This is reduced incarnation of the binary EEA
31803 // above, designated to invert members of the
31804 // _prime_ fields F(p) at a maximal speed
31805 BN.prototype._invmp = function _invmp (p) {
31806 assert(p.negative === 0);
31807 assert(!p.isZero());
ebd8d4e8 31808
8b095871
IC
31809 var a = this;
31810 var b = p.clone();
ebd8d4e8 31811
8b095871
IC
31812 if (a.negative !== 0) {
31813 a = a.umod(p);
31814 } else {
31815 a = a.clone();
31816 }
ebd8d4e8 31817
8b095871
IC
31818 var x1 = new BN(1);
31819 var x2 = new BN(0);
ebd8d4e8 31820
8b095871 31821 var delta = b.clone();
ebd8d4e8 31822
8b095871
IC
31823 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
31824 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
31825 if (i > 0) {
31826 a.iushrn(i);
31827 while (i-- > 0) {
31828 if (x1.isOdd()) {
31829 x1.iadd(delta);
31830 }
ebd8d4e8 31831
8b095871
IC
31832 x1.iushrn(1);
31833 }
31834 }
ab78acc6 31835
8b095871
IC
31836 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
31837 if (j > 0) {
31838 b.iushrn(j);
31839 while (j-- > 0) {
31840 if (x2.isOdd()) {
31841 x2.iadd(delta);
31842 }
ebd8d4e8 31843
8b095871
IC
31844 x2.iushrn(1);
31845 }
31846 }
ebd8d4e8 31847
8b095871
IC
31848 if (a.cmp(b) >= 0) {
31849 a.isub(b);
31850 x1.isub(x2);
31851 } else {
31852 b.isub(a);
31853 x2.isub(x1);
31854 }
31855 }
ebd8d4e8 31856
8b095871
IC
31857 var res;
31858 if (a.cmpn(1) === 0) {
31859 res = x1;
31860 } else {
31861 res = x2;
31862 }
ebd8d4e8 31863
8b095871
IC
31864 if (res.cmpn(0) < 0) {
31865 res.iadd(p);
ab78acc6
IC
31866 }
31867
8b095871
IC
31868 return res;
31869 };
ebd8d4e8 31870
8b095871
IC
31871 BN.prototype.gcd = function gcd (num) {
31872 if (this.isZero()) return num.abs();
31873 if (num.isZero()) return this.abs();
31874
31875 var a = this.clone();
31876 var b = num.clone();
31877 a.negative = 0;
31878 b.negative = 0;
31879
31880 // Remove common factor of two
31881 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
31882 a.iushrn(1);
31883 b.iushrn(1);
ab78acc6 31884 }
ab78acc6 31885
8b095871
IC
31886 do {
31887 while (a.isEven()) {
31888 a.iushrn(1);
31889 }
31890 while (b.isEven()) {
31891 b.iushrn(1);
31892 }
ebd8d4e8 31893
8b095871
IC
31894 var r = a.cmp(b);
31895 if (r < 0) {
31896 // Swap `a` and `b` to make `a` always bigger than `b`
31897 var t = a;
31898 a = b;
31899 b = t;
31900 } else if (r === 0 || b.cmpn(1) === 0) {
31901 break;
31902 }
ab78acc6 31903
8b095871
IC
31904 a.isub(b);
31905 } while (true);
ab78acc6 31906
8b095871
IC
31907 return b.iushln(shift);
31908 };
ab78acc6 31909
8b095871
IC
31910 // Invert number in the field F(num)
31911 BN.prototype.invm = function invm (num) {
31912 return this.egcd(num).a.umod(num);
31913 };
ebd8d4e8 31914
8b095871
IC
31915 BN.prototype.isEven = function isEven () {
31916 return (this.words[0] & 1) === 0;
31917 };
ab78acc6 31918
8b095871
IC
31919 BN.prototype.isOdd = function isOdd () {
31920 return (this.words[0] & 1) === 1;
31921 };
ebd8d4e8 31922
8b095871
IC
31923 // And first word and num
31924 BN.prototype.andln = function andln (num) {
31925 return this.words[0] & num;
31926 };
ebd8d4e8 31927
8b095871
IC
31928 // Increment at the bit position in-line
31929 BN.prototype.bincn = function bincn (bit) {
31930 assert(typeof bit === 'number');
31931 var r = bit % 26;
31932 var s = (bit - r) / 26;
31933 var q = 1 << r;
31934
31935 // Fast case: bit is much higher than all existing words
31936 if (this.length <= s) {
31937 this._expand(s + 1);
31938 this.words[s] |= q;
31939 return this;
31940 }
ebd8d4e8 31941
8b095871
IC
31942 // Add bit and propagate, if needed
31943 var carry = q;
31944 for (var i = s; carry !== 0 && i < this.length; i++) {
31945 var w = this.words[i] | 0;
31946 w += carry;
31947 carry = w >>> 26;
31948 w &= 0x3ffffff;
31949 this.words[i] = w;
31950 }
31951 if (carry !== 0) {
31952 this.words[i] = carry;
31953 this.length++;
31954 }
31955 return this;
31956 };
ebd8d4e8 31957
8b095871
IC
31958 BN.prototype.isZero = function isZero () {
31959 return this.length === 1 && this.words[0] === 0;
31960 };
ebd8d4e8 31961
8b095871
IC
31962 BN.prototype.cmpn = function cmpn (num) {
31963 var negative = num < 0;
ebd8d4e8 31964
8b095871
IC
31965 if (this.negative !== 0 && !negative) return -1;
31966 if (this.negative === 0 && negative) return 1;
ab78acc6 31967
8b095871 31968 this.strip();
ab78acc6 31969
8b095871
IC
31970 var res;
31971 if (this.length > 1) {
31972 res = 1;
31973 } else {
31974 if (negative) {
31975 num = -num;
31976 }
ebd8d4e8 31977
8b095871 31978 assert(num <= 0x3ffffff, 'Number is too big');
ebd8d4e8 31979
8b095871
IC
31980 var w = this.words[0] | 0;
31981 res = w === num ? 0 : w < num ? -1 : 1;
31982 }
31983 if (this.negative !== 0) return -res | 0;
31984 return res;
31985 };
ebd8d4e8 31986
8b095871
IC
31987 // Compare two numbers and return:
31988 // 1 - if `this` > `num`
31989 // 0 - if `this` == `num`
31990 // -1 - if `this` < `num`
31991 BN.prototype.cmp = function cmp (num) {
31992 if (this.negative !== 0 && num.negative === 0) return -1;
31993 if (this.negative === 0 && num.negative !== 0) return 1;
31994
31995 var res = this.ucmp(num);
31996 if (this.negative !== 0) return -res | 0;
31997 return res;
31998 };
ebd8d4e8 31999
8b095871
IC
32000 // Unsigned comparison
32001 BN.prototype.ucmp = function ucmp (num) {
32002 // At this point both numbers have the same sign
32003 if (this.length > num.length) return 1;
32004 if (this.length < num.length) return -1;
32005
32006 var res = 0;
32007 for (var i = this.length - 1; i >= 0; i--) {
32008 var a = this.words[i] | 0;
32009 var b = num.words[i] | 0;
32010
32011 if (a === b) continue;
32012 if (a < b) {
32013 res = -1;
32014 } else if (a > b) {
32015 res = 1;
32016 }
32017 break;
32018 }
32019 return res;
32020 };
ebd8d4e8 32021
8b095871
IC
32022 BN.prototype.gtn = function gtn (num) {
32023 return this.cmpn(num) === 1;
32024 };
ebd8d4e8 32025
8b095871
IC
32026 BN.prototype.gt = function gt (num) {
32027 return this.cmp(num) === 1;
32028 };
ebd8d4e8 32029
8b095871
IC
32030 BN.prototype.gten = function gten (num) {
32031 return this.cmpn(num) >= 0;
32032 };
ab78acc6 32033
8b095871
IC
32034 BN.prototype.gte = function gte (num) {
32035 return this.cmp(num) >= 0;
32036 };
ab78acc6 32037
8b095871
IC
32038 BN.prototype.ltn = function ltn (num) {
32039 return this.cmpn(num) === -1;
32040 };
ab78acc6 32041
8b095871
IC
32042 BN.prototype.lt = function lt (num) {
32043 return this.cmp(num) === -1;
32044 };
ebd8d4e8 32045
8b095871
IC
32046 BN.prototype.lten = function lten (num) {
32047 return this.cmpn(num) <= 0;
32048 };
ab78acc6 32049
8b095871
IC
32050 BN.prototype.lte = function lte (num) {
32051 return this.cmp(num) <= 0;
32052 };
ab78acc6 32053
8b095871
IC
32054 BN.prototype.eqn = function eqn (num) {
32055 return this.cmpn(num) === 0;
32056 };
ab78acc6 32057
8b095871
IC
32058 BN.prototype.eq = function eq (num) {
32059 return this.cmp(num) === 0;
32060 };
ebd8d4e8 32061
8b095871
IC
32062 //
32063 // A reduce context, could be using montgomery or something better, depending
32064 // on the `m` itself.
32065 //
32066 BN.red = function red (num) {
32067 return new Red(num);
32068 };
ab78acc6 32069
8b095871
IC
32070 BN.prototype.toRed = function toRed (ctx) {
32071 assert(!this.red, 'Already a number in reduction context');
32072 assert(this.negative === 0, 'red works only with positives');
32073 return ctx.convertTo(this)._forceRed(ctx);
32074 };
32075
32076 BN.prototype.fromRed = function fromRed () {
32077 assert(this.red, 'fromRed works only with numbers in reduction context');
32078 return this.red.convertFrom(this);
32079 };
32080
32081 BN.prototype._forceRed = function _forceRed (ctx) {
32082 this.red = ctx;
32083 return this;
32084 };
32085
32086 BN.prototype.forceRed = function forceRed (ctx) {
32087 assert(!this.red, 'Already a number in reduction context');
32088 return this._forceRed(ctx);
32089 };
32090
32091 BN.prototype.redAdd = function redAdd (num) {
32092 assert(this.red, 'redAdd works only with red numbers');
32093 return this.red.add(this, num);
32094 };
ebd8d4e8 32095
8b095871
IC
32096 BN.prototype.redIAdd = function redIAdd (num) {
32097 assert(this.red, 'redIAdd works only with red numbers');
32098 return this.red.iadd(this, num);
32099 };
ab78acc6 32100
8b095871
IC
32101 BN.prototype.redSub = function redSub (num) {
32102 assert(this.red, 'redSub works only with red numbers');
32103 return this.red.sub(this, num);
32104 };
ab78acc6 32105
8b095871
IC
32106 BN.prototype.redISub = function redISub (num) {
32107 assert(this.red, 'redISub works only with red numbers');
32108 return this.red.isub(this, num);
32109 };
ebd8d4e8 32110
8b095871
IC
32111 BN.prototype.redShl = function redShl (num) {
32112 assert(this.red, 'redShl works only with red numbers');
32113 return this.red.shl(this, num);
32114 };
ebd8d4e8 32115
8b095871
IC
32116 BN.prototype.redMul = function redMul (num) {
32117 assert(this.red, 'redMul works only with red numbers');
32118 this.red._verify2(this, num);
32119 return this.red.mul(this, num);
32120 };
ebd8d4e8 32121
8b095871
IC
32122 BN.prototype.redIMul = function redIMul (num) {
32123 assert(this.red, 'redMul works only with red numbers');
32124 this.red._verify2(this, num);
32125 return this.red.imul(this, num);
32126 };
ebd8d4e8 32127
8b095871
IC
32128 BN.prototype.redSqr = function redSqr () {
32129 assert(this.red, 'redSqr works only with red numbers');
32130 this.red._verify1(this);
32131 return this.red.sqr(this);
32132 };
ebd8d4e8 32133
8b095871
IC
32134 BN.prototype.redISqr = function redISqr () {
32135 assert(this.red, 'redISqr works only with red numbers');
32136 this.red._verify1(this);
32137 return this.red.isqr(this);
32138 };
ebd8d4e8 32139
8b095871
IC
32140 // Square root over p
32141 BN.prototype.redSqrt = function redSqrt () {
32142 assert(this.red, 'redSqrt works only with red numbers');
32143 this.red._verify1(this);
32144 return this.red.sqrt(this);
32145 };
ebd8d4e8 32146
8b095871
IC
32147 BN.prototype.redInvm = function redInvm () {
32148 assert(this.red, 'redInvm works only with red numbers');
32149 this.red._verify1(this);
32150 return this.red.invm(this);
32151 };
ebd8d4e8 32152
8b095871
IC
32153 // Return negative clone of `this` % `red modulo`
32154 BN.prototype.redNeg = function redNeg () {
32155 assert(this.red, 'redNeg works only with red numbers');
32156 this.red._verify1(this);
32157 return this.red.neg(this);
32158 };
ebd8d4e8 32159
8b095871
IC
32160 BN.prototype.redPow = function redPow (num) {
32161 assert(this.red && !num.red, 'redPow(normalNum)');
32162 this.red._verify1(this);
32163 return this.red.pow(this, num);
32164 };
ebd8d4e8 32165
8b095871
IC
32166 // Prime numbers with efficient reduction
32167 var primes = {
32168 k256: null,
32169 p224: null,
32170 p192: null,
32171 p25519: null
32172 };
ebd8d4e8 32173
8b095871
IC
32174 // Pseudo-Mersenne prime
32175 function MPrime (name, p) {
32176 // P = 2 ^ N - K
32177 this.name = name;
32178 this.p = new BN(p, 16);
32179 this.n = this.p.bitLength();
32180 this.k = new BN(1).iushln(this.n).isub(this.p);
ebd8d4e8 32181
8b095871
IC
32182 this.tmp = this._tmp();
32183 }
ebd8d4e8 32184
8b095871
IC
32185 MPrime.prototype._tmp = function _tmp () {
32186 var tmp = new BN(null);
32187 tmp.words = new Array(Math.ceil(this.n / 13));
32188 return tmp;
32189 };
ebd8d4e8 32190
8b095871
IC
32191 MPrime.prototype.ireduce = function ireduce (num) {
32192 // Assumes that `num` is less than `P^2`
32193 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
32194 var r = num;
32195 var rlen;
ebd8d4e8 32196
8b095871
IC
32197 do {
32198 this.split(r, this.tmp);
32199 r = this.imulK(r);
32200 r = r.iadd(this.tmp);
32201 rlen = r.bitLength();
32202 } while (rlen > this.n);
32203
32204 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
32205 if (cmp === 0) {
32206 r.words[0] = 0;
32207 r.length = 1;
32208 } else if (cmp > 0) {
32209 r.isub(this.p);
32210 } else {
32211 r.strip();
32212 }
ebd8d4e8 32213
8b095871
IC
32214 return r;
32215 };
ebd8d4e8 32216
8b095871
IC
32217 MPrime.prototype.split = function split (input, out) {
32218 input.iushrn(this.n, 0, out);
32219 };
ebd8d4e8 32220
8b095871
IC
32221 MPrime.prototype.imulK = function imulK (num) {
32222 return num.imul(this.k);
32223 };
ebd8d4e8 32224
8b095871
IC
32225 function K256 () {
32226 MPrime.call(
32227 this,
32228 'k256',
32229 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
32230 }
32231 inherits(K256, MPrime);
ebd8d4e8 32232
8b095871
IC
32233 K256.prototype.split = function split (input, output) {
32234 // 256 = 9 * 26 + 22
32235 var mask = 0x3fffff;
ebd8d4e8 32236
8b095871
IC
32237 var outLen = Math.min(input.length, 9);
32238 for (var i = 0; i < outLen; i++) {
32239 output.words[i] = input.words[i];
32240 }
32241 output.length = outLen;
ebd8d4e8 32242
8b095871
IC
32243 if (input.length <= 9) {
32244 input.words[0] = 0;
32245 input.length = 1;
32246 return;
32247 }
ebd8d4e8 32248
8b095871
IC
32249 // Shift by 9 limbs
32250 var prev = input.words[9];
32251 output.words[output.length++] = prev & mask;
ebd8d4e8 32252
8b095871
IC
32253 for (i = 10; i < input.length; i++) {
32254 var next = input.words[i] | 0;
32255 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
32256 prev = next;
32257 }
32258 prev >>>= 22;
32259 input.words[i - 10] = prev;
32260 if (prev === 0 && input.length > 10) {
32261 input.length -= 10;
32262 } else {
32263 input.length -= 9;
32264 }
32265 };
ebd8d4e8 32266
8b095871
IC
32267 K256.prototype.imulK = function imulK (num) {
32268 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
32269 num.words[num.length] = 0;
32270 num.words[num.length + 1] = 0;
32271 num.length += 2;
32272
32273 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
32274 var lo = 0;
32275 for (var i = 0; i < num.length; i++) {
32276 var w = num.words[i] | 0;
32277 lo += w * 0x3d1;
32278 num.words[i] = lo & 0x3ffffff;
32279 lo = w * 0x40 + ((lo / 0x4000000) | 0);
32280 }
32281
32282 // Fast length reduction
32283 if (num.words[num.length - 1] === 0) {
32284 num.length--;
32285 if (num.words[num.length - 1] === 0) {
32286 num.length--;
32287 }
32288 }
32289 return num;
32290 };
ebd8d4e8 32291
8b095871
IC
32292 function P224 () {
32293 MPrime.call(
32294 this,
32295 'p224',
32296 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
32297 }
32298 inherits(P224, MPrime);
ebd8d4e8 32299
8b095871
IC
32300 function P192 () {
32301 MPrime.call(
32302 this,
32303 'p192',
32304 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
32305 }
32306 inherits(P192, MPrime);
ebd8d4e8 32307
8b095871
IC
32308 function P25519 () {
32309 // 2 ^ 255 - 19
32310 MPrime.call(
32311 this,
32312 '25519',
32313 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
32314 }
32315 inherits(P25519, MPrime);
ebd8d4e8 32316
8b095871
IC
32317 P25519.prototype.imulK = function imulK (num) {
32318 // K = 0x13
32319 var carry = 0;
32320 for (var i = 0; i < num.length; i++) {
32321 var hi = (num.words[i] | 0) * 0x13 + carry;
32322 var lo = hi & 0x3ffffff;
32323 hi >>>= 26;
ebd8d4e8 32324
8b095871
IC
32325 num.words[i] = lo;
32326 carry = hi;
32327 }
32328 if (carry !== 0) {
32329 num.words[num.length++] = carry;
32330 }
32331 return num;
32332 };
ebd8d4e8 32333
8b095871
IC
32334 // Exported mostly for testing purposes, use plain name instead
32335 BN._prime = function prime (name) {
32336 // Cached version of prime
32337 if (primes[name]) return primes[name];
32338
32339 var prime;
32340 if (name === 'k256') {
32341 prime = new K256();
32342 } else if (name === 'p224') {
32343 prime = new P224();
32344 } else if (name === 'p192') {
32345 prime = new P192();
32346 } else if (name === 'p25519') {
32347 prime = new P25519();
32348 } else {
32349 throw new Error('Unknown prime ' + name);
32350 }
32351 primes[name] = prime;
ab78acc6 32352
8b095871
IC
32353 return prime;
32354 };
ab78acc6 32355
8b095871
IC
32356 //
32357 // Base reduction engine
32358 //
32359 function Red (m) {
32360 if (typeof m === 'string') {
32361 var prime = BN._prime(m);
32362 this.m = prime.p;
32363 this.prime = prime;
32364 } else {
32365 assert(m.gtn(1), 'modulus must be greater than 1');
32366 this.m = m;
32367 this.prime = null;
32368 }
32369 }
ab78acc6 32370
8b095871
IC
32371 Red.prototype._verify1 = function _verify1 (a) {
32372 assert(a.negative === 0, 'red works only with positives');
32373 assert(a.red, 'red works only with red numbers');
32374 };
ab78acc6 32375
8b095871
IC
32376 Red.prototype._verify2 = function _verify2 (a, b) {
32377 assert((a.negative | b.negative) === 0, 'red works only with positives');
32378 assert(a.red && a.red === b.red,
32379 'red works only with red numbers');
32380 };
ebd8d4e8 32381
8b095871
IC
32382 Red.prototype.imod = function imod (a) {
32383 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
32384 return a.umod(this.m)._forceRed(this);
32385 };
ebd8d4e8 32386
8b095871
IC
32387 Red.prototype.neg = function neg (a) {
32388 if (a.isZero()) {
32389 return a.clone();
32390 }
ebd8d4e8 32391
8b095871
IC
32392 return this.m.sub(a)._forceRed(this);
32393 };
ab78acc6 32394
8b095871
IC
32395 Red.prototype.add = function add (a, b) {
32396 this._verify2(a, b);
ab78acc6 32397
8b095871
IC
32398 var res = a.add(b);
32399 if (res.cmp(this.m) >= 0) {
32400 res.isub(this.m);
32401 }
32402 return res._forceRed(this);
32403 };
ab78acc6 32404
8b095871
IC
32405 Red.prototype.iadd = function iadd (a, b) {
32406 this._verify2(a, b);
ab78acc6 32407
8b095871
IC
32408 var res = a.iadd(b);
32409 if (res.cmp(this.m) >= 0) {
32410 res.isub(this.m);
32411 }
32412 return res;
32413 };
ab78acc6 32414
8b095871
IC
32415 Red.prototype.sub = function sub (a, b) {
32416 this._verify2(a, b);
ab78acc6 32417
8b095871
IC
32418 var res = a.sub(b);
32419 if (res.cmpn(0) < 0) {
32420 res.iadd(this.m);
32421 }
32422 return res._forceRed(this);
32423 };
ab78acc6 32424
8b095871
IC
32425 Red.prototype.isub = function isub (a, b) {
32426 this._verify2(a, b);
ebd8d4e8 32427
8b095871
IC
32428 var res = a.isub(b);
32429 if (res.cmpn(0) < 0) {
32430 res.iadd(this.m);
32431 }
32432 return res;
32433 };
ebd8d4e8 32434
8b095871
IC
32435 Red.prototype.shl = function shl (a, num) {
32436 this._verify1(a);
32437 return this.imod(a.ushln(num));
32438 };
ebd8d4e8 32439
8b095871
IC
32440 Red.prototype.imul = function imul (a, b) {
32441 this._verify2(a, b);
32442 return this.imod(a.imul(b));
32443 };
ebd8d4e8 32444
8b095871
IC
32445 Red.prototype.mul = function mul (a, b) {
32446 this._verify2(a, b);
32447 return this.imod(a.mul(b));
32448 };
ebd8d4e8 32449
8b095871
IC
32450 Red.prototype.isqr = function isqr (a) {
32451 return this.imul(a, a.clone());
32452 };
32453
32454 Red.prototype.sqr = function sqr (a) {
32455 return this.mul(a, a);
32456 };
ebd8d4e8 32457
8b095871
IC
32458 Red.prototype.sqrt = function sqrt (a) {
32459 if (a.isZero()) return a.clone();
ebd8d4e8 32460
8b095871
IC
32461 var mod3 = this.m.andln(3);
32462 assert(mod3 % 2 === 1);
ebd8d4e8 32463
8b095871
IC
32464 // Fast case
32465 if (mod3 === 3) {
32466 var pow = this.m.add(new BN(1)).iushrn(2);
32467 return this.pow(a, pow);
32468 }
ebd8d4e8 32469
8b095871
IC
32470 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
32471 //
32472 // Find Q and S, that Q * 2 ^ S = (P - 1)
32473 var q = this.m.subn(1);
32474 var s = 0;
32475 while (!q.isZero() && q.andln(1) === 0) {
32476 s++;
32477 q.iushrn(1);
32478 }
32479 assert(!q.isZero());
ebd8d4e8 32480
8b095871
IC
32481 var one = new BN(1).toRed(this);
32482 var nOne = one.redNeg();
ebd8d4e8 32483
8b095871
IC
32484 // Find quadratic non-residue
32485 // NOTE: Max is such because of generalized Riemann hypothesis.
32486 var lpow = this.m.subn(1).iushrn(1);
32487 var z = this.m.bitLength();
32488 z = new BN(2 * z * z).toRed(this);
ebd8d4e8 32489
8b095871
IC
32490 while (this.pow(z, lpow).cmp(nOne) !== 0) {
32491 z.redIAdd(nOne);
32492 }
ebd8d4e8 32493
8b095871
IC
32494 var c = this.pow(z, q);
32495 var r = this.pow(a, q.addn(1).iushrn(1));
32496 var t = this.pow(a, q);
32497 var m = s;
32498 while (t.cmp(one) !== 0) {
32499 var tmp = t;
32500 for (var i = 0; tmp.cmp(one) !== 0; i++) {
32501 tmp = tmp.redSqr();
32502 }
32503 assert(i < m);
32504 var b = this.pow(c, new BN(1).iushln(m - i - 1));
ebd8d4e8 32505
8b095871
IC
32506 r = r.redMul(b);
32507 c = b.redSqr();
32508 t = t.redMul(c);
32509 m = i;
32510 }
ebd8d4e8 32511
8b095871
IC
32512 return r;
32513 };
ebd8d4e8 32514
8b095871
IC
32515 Red.prototype.invm = function invm (a) {
32516 var inv = a._invmp(this.m);
32517 if (inv.negative !== 0) {
32518 inv.negative = 0;
32519 return this.imod(inv).redNeg();
32520 } else {
32521 return this.imod(inv);
32522 }
32523 };
ebd8d4e8 32524
8b095871
IC
32525 Red.prototype.pow = function pow (a, num) {
32526 if (num.isZero()) return new BN(1);
32527 if (num.cmpn(1) === 0) return a.clone();
ebd8d4e8 32528
8b095871
IC
32529 var windowSize = 4;
32530 var wnd = new Array(1 << windowSize);
32531 wnd[0] = new BN(1).toRed(this);
32532 wnd[1] = a;
32533 for (var i = 2; i < wnd.length; i++) {
32534 wnd[i] = this.mul(wnd[i - 1], a);
32535 }
ebd8d4e8 32536
8b095871
IC
32537 var res = wnd[0];
32538 var current = 0;
32539 var currentLen = 0;
32540 var start = num.bitLength() % 26;
32541 if (start === 0) {
32542 start = 26;
32543 }
ebd8d4e8 32544
8b095871
IC
32545 for (i = num.length - 1; i >= 0; i--) {
32546 var word = num.words[i];
32547 for (var j = start - 1; j >= 0; j--) {
32548 var bit = (word >> j) & 1;
32549 if (res !== wnd[0]) {
32550 res = this.sqr(res);
32551 }
ebd8d4e8 32552
8b095871
IC
32553 if (bit === 0 && current === 0) {
32554 currentLen = 0;
32555 continue;
32556 }
ebd8d4e8 32557
8b095871
IC
32558 current <<= 1;
32559 current |= bit;
32560 currentLen++;
32561 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
ebd8d4e8 32562
8b095871
IC
32563 res = this.mul(res, wnd[current]);
32564 currentLen = 0;
32565 current = 0;
32566 }
32567 start = 26;
32568 }
ebd8d4e8 32569
8b095871
IC
32570 return res;
32571 };
ebd8d4e8 32572
8b095871
IC
32573 Red.prototype.convertTo = function convertTo (num) {
32574 var r = num.umod(this.m);
ebd8d4e8 32575
8b095871
IC
32576 return r === num ? r.clone() : r;
32577 };
ebd8d4e8 32578
8b095871
IC
32579 Red.prototype.convertFrom = function convertFrom (num) {
32580 var res = num.clone();
32581 res.red = null;
32582 return res;
32583 };
ebd8d4e8 32584
8b095871
IC
32585 //
32586 // Montgomery method engine
32587 //
ebd8d4e8 32588
8b095871
IC
32589 BN.mont = function mont (num) {
32590 return new Mont(num);
32591 };
ebd8d4e8 32592
8b095871
IC
32593 function Mont (m) {
32594 Red.call(this, m);
ebd8d4e8 32595
8b095871
IC
32596 this.shift = this.m.bitLength();
32597 if (this.shift % 26 !== 0) {
32598 this.shift += 26 - (this.shift % 26);
32599 }
ebd8d4e8 32600
8b095871
IC
32601 this.r = new BN(1).iushln(this.shift);
32602 this.r2 = this.imod(this.r.sqr());
32603 this.rinv = this.r._invmp(this.m);
32604
32605 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
32606 this.minv = this.minv.umod(this.r);
32607 this.minv = this.r.sub(this.minv);
ebd8d4e8 32608 }
8b095871 32609 inherits(Mont, Red);
ebd8d4e8 32610
8b095871
IC
32611 Mont.prototype.convertTo = function convertTo (num) {
32612 return this.imod(num.ushln(this.shift));
32613 };
ab78acc6 32614
8b095871
IC
32615 Mont.prototype.convertFrom = function convertFrom (num) {
32616 var r = this.imod(num.mul(this.rinv));
32617 r.red = null;
32618 return r;
32619 };
ebd8d4e8 32620
8b095871
IC
32621 Mont.prototype.imul = function imul (a, b) {
32622 if (a.isZero() || b.isZero()) {
32623 a.words[0] = 0;
32624 a.length = 1;
32625 return a;
32626 }
ebd8d4e8 32627
8b095871
IC
32628 var t = a.imul(b);
32629 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32630 var u = t.isub(c).iushrn(this.shift);
32631 var res = u;
ab78acc6 32632
8b095871
IC
32633 if (u.cmp(this.m) >= 0) {
32634 res = u.isub(this.m);
32635 } else if (u.cmpn(0) < 0) {
32636 res = u.iadd(this.m);
32637 }
ab78acc6 32638
8b095871
IC
32639 return res._forceRed(this);
32640 };
ab78acc6 32641
8b095871
IC
32642 Mont.prototype.mul = function mul (a, b) {
32643 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
ab78acc6 32644
8b095871
IC
32645 var t = a.mul(b);
32646 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
32647 var u = t.isub(c).iushrn(this.shift);
32648 var res = u;
32649 if (u.cmp(this.m) >= 0) {
32650 res = u.isub(this.m);
32651 } else if (u.cmpn(0) < 0) {
32652 res = u.iadd(this.m);
32653 }
ab78acc6 32654
8b095871
IC
32655 return res._forceRed(this);
32656 };
ab78acc6 32657
8b095871
IC
32658 Mont.prototype.invm = function invm (a) {
32659 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
32660 var res = this.imod(a._invmp(this.m).mul(this.r2));
32661 return res._forceRed(this);
32662 };
32663})(typeof module === 'undefined' || module, this);
ab78acc6 32664
8b095871
IC
32665},{}],34:[function(require,module,exports){
32666var r;
ebd8d4e8 32667
8b095871
IC
32668module.exports = function rand(len) {
32669 if (!r)
32670 r = new Rand(null);
ebd8d4e8 32671
8b095871
IC
32672 return r.generate(len);
32673};
ab78acc6 32674
8b095871
IC
32675function Rand(rand) {
32676 this.rand = rand;
ab78acc6 32677}
8b095871 32678module.exports.Rand = Rand;
ab78acc6 32679
8b095871
IC
32680Rand.prototype.generate = function generate(len) {
32681 return this._rand(len);
32682};
ab78acc6 32683
8b095871
IC
32684if (typeof self === 'object') {
32685 if (self.crypto && self.crypto.getRandomValues) {
32686 // Modern browsers
32687 Rand.prototype._rand = function _rand(n) {
32688 var arr = new Uint8Array(n);
32689 self.crypto.getRandomValues(arr);
32690 return arr;
32691 };
32692 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
32693 // IE
32694 Rand.prototype._rand = function _rand(n) {
32695 var arr = new Uint8Array(n);
32696 self.msCrypto.getRandomValues(arr);
32697 return arr;
32698 };
32699 } else {
32700 // Old junk
32701 Rand.prototype._rand = function() {
32702 throw new Error('Not implemented yet');
32703 };
32704 }
32705} else {
32706 // Node.js or Web worker with no crypto support
32707 try {
32708 var crypto = require('crypto');
ab78acc6 32709
8b095871
IC
32710 Rand.prototype._rand = function _rand(n) {
32711 return crypto.randomBytes(n);
32712 };
32713 } catch (e) {
32714 // Emulate crypto API using randy
32715 Rand.prototype._rand = function _rand(n) {
32716 var res = new Uint8Array(n);
32717 for (var i = 0; i < res.length; i++)
32718 res[i] = this.rand.getByte();
32719 return res;
32720 };
32721 }
32722}
32723
32724},{"crypto":3}],35:[function(require,module,exports){
32725(function (Buffer){
32726var Transform = require('stream').Transform
32727var inherits = require('inherits')
32728var StringDecoder = require('string_decoder').StringDecoder
32729module.exports = CipherBase
32730inherits(CipherBase, Transform)
32731function CipherBase (hashMode) {
32732 Transform.call(this)
32733 this.hashMode = typeof hashMode === 'string'
32734 if (this.hashMode) {
32735 this[hashMode] = this._finalOrDigest
32736 } else {
32737 this.final = this._finalOrDigest
32738 }
32739 this._decoder = null
32740 this._encoding = null
32741}
32742CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
32743 if (typeof data === 'string') {
32744 data = new Buffer(data, inputEnc)
32745 }
32746 var outData = this._update(data)
32747 if (this.hashMode) {
32748 return this
32749 }
32750 if (outputEnc) {
32751 outData = this._toString(outData, outputEnc)
32752 }
32753 return outData
32754}
ab78acc6 32755
8b095871 32756CipherBase.prototype.setAutoPadding = function () {}
ab78acc6 32757
8b095871
IC
32758CipherBase.prototype.getAuthTag = function () {
32759 throw new Error('trying to get auth tag in unsupported state')
32760}
ab78acc6 32761
8b095871
IC
32762CipherBase.prototype.setAuthTag = function () {
32763 throw new Error('trying to set auth tag in unsupported state')
32764}
ab78acc6 32765
8b095871
IC
32766CipherBase.prototype.setAAD = function () {
32767 throw new Error('trying to set aad in unsupported state')
32768}
ab78acc6 32769
8b095871
IC
32770CipherBase.prototype._transform = function (data, _, next) {
32771 var err
32772 try {
32773 if (this.hashMode) {
32774 this._update(data)
32775 } else {
32776 this.push(this._update(data))
32777 }
32778 } catch (e) {
32779 err = e
32780 } finally {
32781 next(err)
32782 }
32783}
32784CipherBase.prototype._flush = function (done) {
32785 var err
32786 try {
32787 this.push(this._final())
32788 } catch (e) {
32789 err = e
32790 } finally {
32791 done(err)
32792 }
32793}
32794CipherBase.prototype._finalOrDigest = function (outputEnc) {
32795 var outData = this._final() || new Buffer('')
32796 if (outputEnc) {
32797 outData = this._toString(outData, outputEnc, true)
32798 }
32799 return outData
32800}
ebd8d4e8 32801
8b095871
IC
32802CipherBase.prototype._toString = function (value, enc, fin) {
32803 if (!this._decoder) {
32804 this._decoder = new StringDecoder(enc)
32805 this._encoding = enc
32806 }
32807 if (this._encoding !== enc) {
32808 throw new Error('can\'t switch encodings')
32809 }
32810 var out = this._decoder.write(value)
32811 if (fin) {
32812 out += this._decoder.end()
ab78acc6 32813 }
8b095871
IC
32814 return out
32815}
ab78acc6 32816
8b095871
IC
32817}).call(this,require("buffer").Buffer)
32818},{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
32819(function (Buffer){
32820'use strict';
32821var inherits = require('inherits')
32822var md5 = require('./md5')
32823var rmd160 = require('ripemd160')
32824var sha = require('sha.js')
ebd8d4e8 32825
8b095871 32826var Base = require('cipher-base')
ebd8d4e8 32827
8b095871
IC
32828function HashNoConstructor(hash) {
32829 Base.call(this, 'digest')
ebd8d4e8 32830
8b095871
IC
32831 this._hash = hash
32832 this.buffers = []
32833}
ebd8d4e8 32834
8b095871 32835inherits(HashNoConstructor, Base)
ebd8d4e8 32836
8b095871
IC
32837HashNoConstructor.prototype._update = function (data) {
32838 this.buffers.push(data)
32839}
ebd8d4e8 32840
8b095871
IC
32841HashNoConstructor.prototype._final = function () {
32842 var buf = Buffer.concat(this.buffers)
32843 var r = this._hash(buf)
32844 this.buffers = null
ebd8d4e8 32845
8b095871
IC
32846 return r
32847}
ab78acc6 32848
8b095871
IC
32849function Hash(hash) {
32850 Base.call(this, 'digest')
ab78acc6 32851
8b095871
IC
32852 this._hash = hash
32853}
ab78acc6 32854
8b095871 32855inherits(Hash, Base)
ab78acc6 32856
8b095871
IC
32857Hash.prototype._update = function (data) {
32858 this._hash.update(data)
32859}
ab78acc6 32860
8b095871
IC
32861Hash.prototype._final = function () {
32862 return this._hash.digest()
32863}
ab78acc6 32864
8b095871
IC
32865module.exports = function createHash (alg) {
32866 alg = alg.toLowerCase()
32867 if ('md5' === alg) return new HashNoConstructor(md5)
32868 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
32869
32870 return new Hash(sha(alg))
ab78acc6
IC
32871}
32872
8b095871
IC
32873}).call(this,require("buffer").Buffer)
32874},{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
32875(function (Buffer){
32876'use strict';
32877var intSize = 4;
32878var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
32879var chrsz = 8;
ab78acc6 32880
8b095871
IC
32881function toArray(buf, bigEndian) {
32882 if ((buf.length % intSize) !== 0) {
32883 var len = buf.length + (intSize - (buf.length % intSize));
32884 buf = Buffer.concat([buf, zeroBuffer], len);
ab78acc6
IC
32885 }
32886
8b095871
IC
32887 var arr = [];
32888 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
32889 for (var i = 0; i < buf.length; i += intSize) {
32890 arr.push(fn.call(buf, i));
32891 }
32892 return arr;
ab78acc6
IC
32893}
32894
8b095871
IC
32895function toBuffer(arr, size, bigEndian) {
32896 var buf = new Buffer(size);
32897 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
32898 for (var i = 0; i < arr.length; i++) {
32899 fn.call(buf, arr[i], i * 4, true);
32900 }
32901 return buf;
32902}
ab78acc6 32903
8b095871
IC
32904function hash(buf, fn, hashSize, bigEndian) {
32905 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
32906 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
32907 return toBuffer(arr, hashSize, bigEndian);
32908}
32909exports.hash = hash;
ab78acc6 32910}).call(this,require("buffer").Buffer)
8b095871 32911},{"buffer":5}],38:[function(require,module,exports){
ab78acc6 32912'use strict';
8b095871
IC
32913/*
32914 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
32915 * Digest Algorithm, as defined in RFC 1321.
32916 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
32917 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
32918 * Distributed under the BSD License
32919 * See http://pajhome.org.uk/crypt/md5 for more info.
32920 */
ebd8d4e8 32921
8b095871 32922var helpers = require('./helpers');
ebd8d4e8 32923
8b095871
IC
32924/*
32925 * Calculate the MD5 of an array of little-endian words, and a bit length
32926 */
32927function core_md5(x, len)
32928{
32929 /* append padding */
32930 x[len >> 5] |= 0x80 << ((len) % 32);
32931 x[(((len + 64) >>> 9) << 4) + 14] = len;
ebd8d4e8 32932
8b095871
IC
32933 var a = 1732584193;
32934 var b = -271733879;
32935 var c = -1732584194;
32936 var d = 271733878;
ebd8d4e8 32937
8b095871
IC
32938 for(var i = 0; i < x.length; i += 16)
32939 {
32940 var olda = a;
32941 var oldb = b;
32942 var oldc = c;
32943 var oldd = d;
ebd8d4e8 32944
8b095871
IC
32945 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
32946 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
32947 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
32948 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
32949 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
32950 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
32951 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
32952 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
32953 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
32954 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
32955 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
32956 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
32957 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
32958 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
32959 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
32960 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
ebd8d4e8 32961
8b095871
IC
32962 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
32963 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
32964 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
32965 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
32966 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
32967 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
32968 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
32969 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
32970 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
32971 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
32972 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
32973 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
32974 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
32975 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
32976 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
32977 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
ebd8d4e8 32978
8b095871
IC
32979 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
32980 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
32981 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
32982 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
32983 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
32984 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
32985 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
32986 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
32987 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
32988 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
32989 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
32990 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
32991 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
32992 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
32993 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
32994 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
ebd8d4e8 32995
8b095871
IC
32996 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
32997 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
32998 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
32999 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
33000 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
33001 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
33002 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
33003 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
33004 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
33005 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
33006 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
33007 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
33008 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
33009 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
33010 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
33011 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
ebd8d4e8 33012
8b095871
IC
33013 a = safe_add(a, olda);
33014 b = safe_add(b, oldb);
33015 c = safe_add(c, oldc);
33016 d = safe_add(d, oldd);
ab78acc6 33017 }
8b095871 33018 return Array(a, b, c, d);
ebd8d4e8 33019
ab78acc6 33020}
ebd8d4e8 33021
8b095871
IC
33022/*
33023 * These functions implement the four basic operations the algorithm uses.
33024 */
33025function md5_cmn(q, a, b, x, s, t)
33026{
33027 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
ab78acc6 33028}
8b095871
IC
33029function md5_ff(a, b, c, d, x, s, t)
33030{
33031 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
ab78acc6 33032}
8b095871
IC
33033function md5_gg(a, b, c, d, x, s, t)
33034{
33035 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
ab78acc6 33036}
8b095871
IC
33037function md5_hh(a, b, c, d, x, s, t)
33038{
33039 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
33040}
33041function md5_ii(a, b, c, d, x, s, t)
33042{
33043 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
ab78acc6 33044}
ebd8d4e8 33045
8b095871
IC
33046/*
33047 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
33048 * to work around bugs in some JS interpreters.
33049 */
33050function safe_add(x, y)
33051{
33052 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
33053 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
33054 return (msw << 16) | (lsw & 0xFFFF);
ab78acc6 33055}
ebd8d4e8 33056
8b095871
IC
33057/*
33058 * Bitwise rotate a 32-bit number to the left.
33059 */
33060function bit_rol(num, cnt)
33061{
33062 return (num << cnt) | (num >>> (32 - cnt));
33063}
ebd8d4e8 33064
8b095871
IC
33065module.exports = function md5(buf) {
33066 return helpers.hash(buf, core_md5, 16);
33067};
33068},{"./helpers":37}],39:[function(require,module,exports){
33069'use strict';
ebd8d4e8 33070
8b095871 33071var elliptic = exports;
ebd8d4e8 33072
8b095871
IC
33073elliptic.version = require('../package.json').version;
33074elliptic.utils = require('./elliptic/utils');
33075elliptic.rand = require('brorand');
33076elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
33077elliptic.curve = require('./elliptic/curve');
33078elliptic.curves = require('./elliptic/curves');
ebd8d4e8 33079
8b095871
IC
33080// Protocols
33081elliptic.ec = require('./elliptic/ec');
33082elliptic.eddsa = require('./elliptic/eddsa');
ebd8d4e8 33083
8b095871
IC
33084},{"../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){
33085'use strict';
ebd8d4e8 33086
8b095871
IC
33087var BN = require('bn.js');
33088var elliptic = require('../../elliptic');
33089var utils = elliptic.utils;
33090var getNAF = utils.getNAF;
33091var getJSF = utils.getJSF;
33092var assert = utils.assert;
33093
33094function BaseCurve(type, conf) {
33095 this.type = type;
33096 this.p = new BN(conf.p, 16);
33097
33098 // Use Montgomery, when there is no fast reduction for the prime
33099 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
33100
33101 // Useful for many curves
33102 this.zero = new BN(0).toRed(this.red);
33103 this.one = new BN(1).toRed(this.red);
33104 this.two = new BN(2).toRed(this.red);
33105
33106 // Curve configuration, optional
33107 this.n = conf.n && new BN(conf.n, 16);
33108 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
33109
33110 // Temporary arrays
33111 this._wnafT1 = new Array(4);
33112 this._wnafT2 = new Array(4);
33113 this._wnafT3 = new Array(4);
33114 this._wnafT4 = new Array(4);
33115
33116 // Generalized Greg Maxwell's trick
33117 var adjustCount = this.n && this.p.div(this.n);
33118 if (!adjustCount || adjustCount.cmpn(100) > 0) {
33119 this.redN = null;
33120 } else {
33121 this._maxwellTrick = true;
33122 this.redN = this.n.toRed(this.red);
ebd8d4e8 33123 }
ebd8d4e8 33124}
8b095871 33125module.exports = BaseCurve;
ebd8d4e8 33126
8b095871
IC
33127BaseCurve.prototype.point = function point() {
33128 throw new Error('Not implemented');
33129};
ebd8d4e8 33130
8b095871
IC
33131BaseCurve.prototype.validate = function validate() {
33132 throw new Error('Not implemented');
33133};
ebd8d4e8 33134
8b095871
IC
33135BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
33136 assert(p.precomputed);
33137 var doubles = p._getDoubles();
ebd8d4e8 33138
8b095871
IC
33139 var naf = getNAF(k, 1);
33140 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
33141 I /= 3;
ebd8d4e8 33142
8b095871
IC
33143 // Translate into more windowed form
33144 var repr = [];
33145 for (var j = 0; j < naf.length; j += doubles.step) {
33146 var nafW = 0;
33147 for (var k = j + doubles.step - 1; k >= j; k--)
33148 nafW = (nafW << 1) + naf[k];
33149 repr.push(nafW);
33150 }
ebd8d4e8 33151
8b095871
IC
33152 var a = this.jpoint(null, null, null);
33153 var b = this.jpoint(null, null, null);
33154 for (var i = I; i > 0; i--) {
33155 for (var j = 0; j < repr.length; j++) {
33156 var nafW = repr[j];
33157 if (nafW === i)
33158 b = b.mixedAdd(doubles.points[j]);
33159 else if (nafW === -i)
33160 b = b.mixedAdd(doubles.points[j].neg());
33161 }
33162 a = a.add(b);
33163 }
33164 return a.toP();
33165};
ebd8d4e8 33166
8b095871
IC
33167BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
33168 var w = 4;
ebd8d4e8 33169
8b095871
IC
33170 // Precompute window
33171 var nafPoints = p._getNAFPoints(w);
33172 w = nafPoints.wnd;
33173 var wnd = nafPoints.points;
ebd8d4e8 33174
8b095871
IC
33175 // Get NAF form
33176 var naf = getNAF(k, w);
ebd8d4e8 33177
8b095871
IC
33178 // Add `this`*(N+1) for every w-NAF index
33179 var acc = this.jpoint(null, null, null);
33180 for (var i = naf.length - 1; i >= 0; i--) {
33181 // Count zeroes
33182 for (var k = 0; i >= 0 && naf[i] === 0; i--)
33183 k++;
33184 if (i >= 0)
33185 k++;
33186 acc = acc.dblp(k);
ebd8d4e8 33187
8b095871
IC
33188 if (i < 0)
33189 break;
33190 var z = naf[i];
33191 assert(z !== 0);
33192 if (p.type === 'affine') {
33193 // J +- P
33194 if (z > 0)
33195 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
33196 else
33197 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
33198 } else {
33199 // J +- J
33200 if (z > 0)
33201 acc = acc.add(wnd[(z - 1) >> 1]);
33202 else
33203 acc = acc.add(wnd[(-z - 1) >> 1].neg());
33204 }
ebd8d4e8 33205 }
8b095871
IC
33206 return p.type === 'affine' ? acc.toP() : acc;
33207};
ebd8d4e8 33208
8b095871
IC
33209BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
33210 points,
33211 coeffs,
33212 len,
33213 jacobianResult) {
33214 var wndWidth = this._wnafT1;
33215 var wnd = this._wnafT2;
33216 var naf = this._wnafT3;
33217
33218 // Fill all arrays
33219 var max = 0;
33220 for (var i = 0; i < len; i++) {
33221 var p = points[i];
33222 var nafPoints = p._getNAFPoints(defW);
33223 wndWidth[i] = nafPoints.wnd;
33224 wnd[i] = nafPoints.points;
33225 }
33226
33227 // Comb small window NAFs
33228 for (var i = len - 1; i >= 1; i -= 2) {
33229 var a = i - 1;
33230 var b = i;
33231 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
33232 naf[a] = getNAF(coeffs[a], wndWidth[a]);
33233 naf[b] = getNAF(coeffs[b], wndWidth[b]);
33234 max = Math.max(naf[a].length, max);
33235 max = Math.max(naf[b].length, max);
33236 continue;
33237 }
ebd8d4e8 33238
8b095871
IC
33239 var comb = [
33240 points[a], /* 1 */
33241 null, /* 3 */
33242 null, /* 5 */
33243 points[b] /* 7 */
33244 ];
33245
33246 // Try to avoid Projective points, if possible
33247 if (points[a].y.cmp(points[b].y) === 0) {
33248 comb[1] = points[a].add(points[b]);
33249 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33250 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
33251 comb[1] = points[a].toJ().mixedAdd(points[b]);
33252 comb[2] = points[a].add(points[b].neg());
33253 } else {
33254 comb[1] = points[a].toJ().mixedAdd(points[b]);
33255 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
33256 }
ebd8d4e8 33257
8b095871
IC
33258 var index = [
33259 -3, /* -1 -1 */
33260 -1, /* -1 0 */
33261 -5, /* -1 1 */
33262 -7, /* 0 -1 */
33263 0, /* 0 0 */
33264 7, /* 0 1 */
33265 5, /* 1 -1 */
33266 1, /* 1 0 */
33267 3 /* 1 1 */
33268 ];
ebd8d4e8 33269
8b095871
IC
33270 var jsf = getJSF(coeffs[a], coeffs[b]);
33271 max = Math.max(jsf[0].length, max);
33272 naf[a] = new Array(max);
33273 naf[b] = new Array(max);
33274 for (var j = 0; j < max; j++) {
33275 var ja = jsf[0][j] | 0;
33276 var jb = jsf[1][j] | 0;
ebd8d4e8 33277
8b095871
IC
33278 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
33279 naf[b][j] = 0;
33280 wnd[a] = comb;
33281 }
33282 }
ebd8d4e8 33283
8b095871
IC
33284 var acc = this.jpoint(null, null, null);
33285 var tmp = this._wnafT4;
33286 for (var i = max; i >= 0; i--) {
33287 var k = 0;
ebd8d4e8 33288
8b095871
IC
33289 while (i >= 0) {
33290 var zero = true;
33291 for (var j = 0; j < len; j++) {
33292 tmp[j] = naf[j][i] | 0;
33293 if (tmp[j] !== 0)
33294 zero = false;
33295 }
33296 if (!zero)
33297 break;
33298 k++;
33299 i--;
33300 }
33301 if (i >= 0)
33302 k++;
33303 acc = acc.dblp(k);
33304 if (i < 0)
33305 break;
ebd8d4e8 33306
8b095871
IC
33307 for (var j = 0; j < len; j++) {
33308 var z = tmp[j];
33309 var p;
33310 if (z === 0)
33311 continue;
33312 else if (z > 0)
33313 p = wnd[j][(z - 1) >> 1];
33314 else if (z < 0)
33315 p = wnd[j][(-z - 1) >> 1].neg();
33316
33317 if (p.type === 'affine')
33318 acc = acc.mixedAdd(p);
33319 else
33320 acc = acc.add(p);
33321 }
33322 }
33323 // Zeroify references
33324 for (var i = 0; i < len; i++)
33325 wnd[i] = null;
ebd8d4e8 33326
8b095871
IC
33327 if (jacobianResult)
33328 return acc;
33329 else
33330 return acc.toP();
33331};
ebd8d4e8 33332
8b095871
IC
33333function BasePoint(curve, type) {
33334 this.curve = curve;
33335 this.type = type;
33336 this.precomputed = null;
33337}
33338BaseCurve.BasePoint = BasePoint;
ebd8d4e8 33339
8b095871
IC
33340BasePoint.prototype.eq = function eq(/*other*/) {
33341 throw new Error('Not implemented');
33342};
ebd8d4e8 33343
8b095871
IC
33344BasePoint.prototype.validate = function validate() {
33345 return this.curve.validate(this);
33346};
ebd8d4e8 33347
8b095871
IC
33348BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33349 bytes = utils.toArray(bytes, enc);
ebd8d4e8 33350
8b095871 33351 var len = this.p.byteLength();
ebd8d4e8 33352
8b095871
IC
33353 // uncompressed, hybrid-odd, hybrid-even
33354 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
33355 bytes.length - 1 === 2 * len) {
33356 if (bytes[0] === 0x06)
33357 assert(bytes[bytes.length - 1] % 2 === 0);
33358 else if (bytes[0] === 0x07)
33359 assert(bytes[bytes.length - 1] % 2 === 1);
ebd8d4e8 33360
8b095871
IC
33361 var res = this.point(bytes.slice(1, 1 + len),
33362 bytes.slice(1 + len, 1 + 2 * len));
ebd8d4e8 33363
8b095871
IC
33364 return res;
33365 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
33366 bytes.length - 1 === len) {
33367 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
ebd8d4e8 33368 }
8b095871
IC
33369 throw new Error('Unknown point format');
33370};
ebd8d4e8 33371
8b095871
IC
33372BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
33373 return this.encode(enc, true);
33374};
33375
33376BasePoint.prototype._encode = function _encode(compact) {
33377 var len = this.curve.p.byteLength();
33378 var x = this.getX().toArray('be', len);
33379
33380 if (compact)
33381 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
33382
33383 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
33384};
33385
33386BasePoint.prototype.encode = function encode(enc, compact) {
33387 return utils.encode(this._encode(compact), enc);
33388};
33389
33390BasePoint.prototype.precompute = function precompute(power) {
33391 if (this.precomputed)
33392 return this;
33393
33394 var precomputed = {
33395 doubles: null,
33396 naf: null,
33397 beta: null
33398 };
33399 precomputed.naf = this._getNAFPoints(8);
33400 precomputed.doubles = this._getDoubles(4, power);
33401 precomputed.beta = this._getBeta();
33402 this.precomputed = precomputed;
33403
33404 return this;
33405};
33406
33407BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
33408 if (!this.precomputed)
33409 return false;
33410
33411 var doubles = this.precomputed.doubles;
33412 if (!doubles)
33413 return false;
33414
33415 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
33416};
33417
33418BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
33419 if (this.precomputed && this.precomputed.doubles)
33420 return this.precomputed.doubles;
33421
33422 var doubles = [ this ];
33423 var acc = this;
33424 for (var i = 0; i < power; i += step) {
33425 for (var j = 0; j < step; j++)
33426 acc = acc.dbl();
33427 doubles.push(acc);
ebd8d4e8 33428 }
8b095871
IC
33429 return {
33430 step: step,
33431 points: doubles
33432 };
33433};
ebd8d4e8 33434
8b095871
IC
33435BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
33436 if (this.precomputed && this.precomputed.naf)
33437 return this.precomputed.naf;
ebd8d4e8 33438
8b095871
IC
33439 var res = [ this ];
33440 var max = (1 << wnd) - 1;
33441 var dbl = max === 1 ? null : this.dbl();
33442 for (var i = 1; i < max; i++)
33443 res[i] = res[i - 1].add(dbl);
33444 return {
33445 wnd: wnd,
33446 points: res
33447 };
33448};
ebd8d4e8 33449
8b095871
IC
33450BasePoint.prototype._getBeta = function _getBeta() {
33451 return null;
33452};
ebd8d4e8 33453
8b095871
IC
33454BasePoint.prototype.dblp = function dblp(k) {
33455 var r = this;
33456 for (var i = 0; i < k; i++)
33457 r = r.dbl();
33458 return r;
33459};
ebd8d4e8 33460
8b095871
IC
33461},{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
33462'use strict';
ebd8d4e8 33463
8b095871
IC
33464var curve = require('../curve');
33465var elliptic = require('../../elliptic');
33466var BN = require('bn.js');
33467var inherits = require('inherits');
33468var Base = curve.base;
ebd8d4e8 33469
8b095871 33470var assert = elliptic.utils.assert;
ebd8d4e8 33471
8b095871
IC
33472function EdwardsCurve(conf) {
33473 // NOTE: Important as we are creating point in Base.call()
33474 this.twisted = (conf.a | 0) !== 1;
33475 this.mOneA = this.twisted && (conf.a | 0) === -1;
33476 this.extended = this.mOneA;
33477
33478 Base.call(this, 'edwards', conf);
33479
33480 this.a = new BN(conf.a, 16).umod(this.red.m);
33481 this.a = this.a.toRed(this.red);
33482 this.c = new BN(conf.c, 16).toRed(this.red);
33483 this.c2 = this.c.redSqr();
33484 this.d = new BN(conf.d, 16).toRed(this.red);
33485 this.dd = this.d.redAdd(this.d);
33486
33487 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
33488 this.oneC = (conf.c | 0) === 1;
ebd8d4e8 33489}
8b095871
IC
33490inherits(EdwardsCurve, Base);
33491module.exports = EdwardsCurve;
ebd8d4e8 33492
8b095871
IC
33493EdwardsCurve.prototype._mulA = function _mulA(num) {
33494 if (this.mOneA)
33495 return num.redNeg();
33496 else
33497 return this.a.redMul(num);
33498};
ebd8d4e8 33499
8b095871
IC
33500EdwardsCurve.prototype._mulC = function _mulC(num) {
33501 if (this.oneC)
33502 return num;
33503 else
33504 return this.c.redMul(num);
33505};
ebd8d4e8 33506
8b095871
IC
33507// Just for compatibility with Short curve
33508EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
33509 return this.point(x, y, z, t);
33510};
ebd8d4e8 33511
8b095871
IC
33512EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
33513 x = new BN(x, 16);
33514 if (!x.red)
33515 x = x.toRed(this.red);
ebd8d4e8 33516
8b095871
IC
33517 var x2 = x.redSqr();
33518 var rhs = this.c2.redSub(this.a.redMul(x2));
33519 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
33520
33521 var y2 = rhs.redMul(lhs.redInvm());
33522 var y = y2.redSqrt();
33523 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
33524 throw new Error('invalid point');
33525
33526 var isOdd = y.fromRed().isOdd();
33527 if (odd && !isOdd || !odd && isOdd)
33528 y = y.redNeg();
33529
33530 return this.point(x, y);
33531};
33532
33533EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
33534 y = new BN(y, 16);
33535 if (!y.red)
33536 y = y.toRed(this.red);
33537
33538 // x^2 = (y^2 - 1) / (d y^2 + 1)
33539 var y2 = y.redSqr();
33540 var lhs = y2.redSub(this.one);
33541 var rhs = y2.redMul(this.d).redAdd(this.one);
33542 var x2 = lhs.redMul(rhs.redInvm());
33543
33544 if (x2.cmp(this.zero) === 0) {
33545 if (odd)
33546 throw new Error('invalid point');
33547 else
33548 return this.point(this.zero, y);
ebd8d4e8
IC
33549 }
33550
8b095871
IC
33551 var x = x2.redSqrt();
33552 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
33553 throw new Error('invalid point');
ebd8d4e8 33554
8b095871
IC
33555 if (x.isOdd() !== odd)
33556 x = x.redNeg();
ebd8d4e8 33557
8b095871
IC
33558 return this.point(x, y);
33559};
ebd8d4e8 33560
8b095871
IC
33561EdwardsCurve.prototype.validate = function validate(point) {
33562 if (point.isInfinity())
33563 return true;
ebd8d4e8 33564
8b095871
IC
33565 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
33566 point.normalize();
ebd8d4e8 33567
8b095871
IC
33568 var x2 = point.x.redSqr();
33569 var y2 = point.y.redSqr();
33570 var lhs = x2.redMul(this.a).redAdd(y2);
33571 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
ebd8d4e8 33572
8b095871
IC
33573 return lhs.cmp(rhs) === 0;
33574};
ebd8d4e8 33575
8b095871
IC
33576function Point(curve, x, y, z, t) {
33577 Base.BasePoint.call(this, curve, 'projective');
33578 if (x === null && y === null && z === null) {
33579 this.x = this.curve.zero;
33580 this.y = this.curve.one;
33581 this.z = this.curve.one;
33582 this.t = this.curve.zero;
33583 this.zOne = true;
33584 } else {
33585 this.x = new BN(x, 16);
33586 this.y = new BN(y, 16);
33587 this.z = z ? new BN(z, 16) : this.curve.one;
33588 this.t = t && new BN(t, 16);
33589 if (!this.x.red)
33590 this.x = this.x.toRed(this.curve.red);
33591 if (!this.y.red)
33592 this.y = this.y.toRed(this.curve.red);
33593 if (!this.z.red)
33594 this.z = this.z.toRed(this.curve.red);
33595 if (this.t && !this.t.red)
33596 this.t = this.t.toRed(this.curve.red);
33597 this.zOne = this.z === this.curve.one;
33598
33599 // Use extended coordinates
33600 if (this.curve.extended && !this.t) {
33601 this.t = this.x.redMul(this.y);
33602 if (!this.zOne)
33603 this.t = this.t.redMul(this.z.redInvm());
33604 }
33605 }
33606}
33607inherits(Point, Base.BasePoint);
33608
33609EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33610 return Point.fromJSON(this, obj);
33611};
33612
33613EdwardsCurve.prototype.point = function point(x, y, z, t) {
33614 return new Point(this, x, y, z, t);
33615};
33616
33617Point.fromJSON = function fromJSON(curve, obj) {
33618 return new Point(curve, obj[0], obj[1], obj[2]);
33619};
33620
33621Point.prototype.inspect = function inspect() {
33622 if (this.isInfinity())
33623 return '<EC Point Infinity>';
33624 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33625 ' y: ' + this.y.fromRed().toString(16, 2) +
33626 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33627};
33628
33629Point.prototype.isInfinity = function isInfinity() {
33630 // XXX This code assumes that zero is always zero in red
33631 return this.x.cmpn(0) === 0 &&
33632 this.y.cmp(this.z) === 0;
33633};
33634
33635Point.prototype._extDbl = function _extDbl() {
33636 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33637 // #doubling-dbl-2008-hwcd
33638 // 4M + 4S
33639
33640 // A = X1^2
33641 var a = this.x.redSqr();
33642 // B = Y1^2
33643 var b = this.y.redSqr();
33644 // C = 2 * Z1^2
33645 var c = this.z.redSqr();
33646 c = c.redIAdd(c);
33647 // D = a * A
33648 var d = this.curve._mulA(a);
33649 // E = (X1 + Y1)^2 - A - B
33650 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
33651 // G = D + B
33652 var g = d.redAdd(b);
33653 // F = G - C
33654 var f = g.redSub(c);
33655 // H = D - B
33656 var h = d.redSub(b);
33657 // X3 = E * F
33658 var nx = e.redMul(f);
33659 // Y3 = G * H
33660 var ny = g.redMul(h);
33661 // T3 = E * H
33662 var nt = e.redMul(h);
33663 // Z3 = F * G
33664 var nz = f.redMul(g);
33665 return this.curve.point(nx, ny, nz, nt);
33666};
33667
33668Point.prototype._projDbl = function _projDbl() {
33669 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33670 // #doubling-dbl-2008-bbjlp
33671 // #doubling-dbl-2007-bl
33672 // and others
33673 // Generally 3M + 4S or 2M + 4S
33674
33675 // B = (X1 + Y1)^2
33676 var b = this.x.redAdd(this.y).redSqr();
33677 // C = X1^2
33678 var c = this.x.redSqr();
33679 // D = Y1^2
33680 var d = this.y.redSqr();
33681
33682 var nx;
33683 var ny;
33684 var nz;
33685 if (this.curve.twisted) {
33686 // E = a * C
33687 var e = this.curve._mulA(c);
33688 // F = E + D
33689 var f = e.redAdd(d);
33690 if (this.zOne) {
33691 // X3 = (B - C - D) * (F - 2)
33692 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
33693 // Y3 = F * (E - D)
33694 ny = f.redMul(e.redSub(d));
33695 // Z3 = F^2 - 2 * F
33696 nz = f.redSqr().redSub(f).redSub(f);
33697 } else {
33698 // H = Z1^2
33699 var h = this.z.redSqr();
33700 // J = F - 2 * H
33701 var j = f.redSub(h).redISub(h);
33702 // X3 = (B-C-D)*J
33703 nx = b.redSub(c).redISub(d).redMul(j);
33704 // Y3 = F * (E - D)
33705 ny = f.redMul(e.redSub(d));
33706 // Z3 = F * J
33707 nz = f.redMul(j);
33708 }
33709 } else {
33710 // E = C + D
33711 var e = c.redAdd(d);
33712 // H = (c * Z1)^2
33713 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
33714 // J = E - 2 * H
33715 var j = e.redSub(h).redSub(h);
33716 // X3 = c * (B - E) * J
33717 nx = this.curve._mulC(b.redISub(e)).redMul(j);
33718 // Y3 = c * E * (C - D)
33719 ny = this.curve._mulC(e).redMul(c.redISub(d));
33720 // Z3 = E * J
33721 nz = e.redMul(j);
33722 }
33723 return this.curve.point(nx, ny, nz);
33724};
33725
33726Point.prototype.dbl = function dbl() {
33727 if (this.isInfinity())
33728 return this;
33729
33730 // Double in extended coordinates
33731 if (this.curve.extended)
33732 return this._extDbl();
33733 else
33734 return this._projDbl();
33735};
33736
33737Point.prototype._extAdd = function _extAdd(p) {
33738 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
33739 // #addition-add-2008-hwcd-3
33740 // 8M
33741
33742 // A = (Y1 - X1) * (Y2 - X2)
33743 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
33744 // B = (Y1 + X1) * (Y2 + X2)
33745 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
33746 // C = T1 * k * T2
33747 var c = this.t.redMul(this.curve.dd).redMul(p.t);
33748 // D = Z1 * 2 * Z2
33749 var d = this.z.redMul(p.z.redAdd(p.z));
33750 // E = B - A
33751 var e = b.redSub(a);
33752 // F = D - C
33753 var f = d.redSub(c);
33754 // G = D + C
33755 var g = d.redAdd(c);
33756 // H = B + A
33757 var h = b.redAdd(a);
33758 // X3 = E * F
33759 var nx = e.redMul(f);
33760 // Y3 = G * H
33761 var ny = g.redMul(h);
33762 // T3 = E * H
33763 var nt = e.redMul(h);
33764 // Z3 = F * G
33765 var nz = f.redMul(g);
33766 return this.curve.point(nx, ny, nz, nt);
33767};
33768
33769Point.prototype._projAdd = function _projAdd(p) {
33770 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
33771 // #addition-add-2008-bbjlp
33772 // #addition-add-2007-bl
33773 // 10M + 1S
33774
33775 // A = Z1 * Z2
33776 var a = this.z.redMul(p.z);
33777 // B = A^2
33778 var b = a.redSqr();
33779 // C = X1 * X2
33780 var c = this.x.redMul(p.x);
33781 // D = Y1 * Y2
33782 var d = this.y.redMul(p.y);
33783 // E = d * C * D
33784 var e = this.curve.d.redMul(c).redMul(d);
33785 // F = B - E
33786 var f = b.redSub(e);
33787 // G = B + E
33788 var g = b.redAdd(e);
33789 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
33790 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
33791 var nx = a.redMul(f).redMul(tmp);
33792 var ny;
33793 var nz;
33794 if (this.curve.twisted) {
33795 // Y3 = A * G * (D - a * C)
33796 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
33797 // Z3 = F * G
33798 nz = f.redMul(g);
33799 } else {
33800 // Y3 = A * G * (D - C)
33801 ny = a.redMul(g).redMul(d.redSub(c));
33802 // Z3 = c * F * G
33803 nz = this.curve._mulC(f).redMul(g);
ebd8d4e8 33804 }
8b095871
IC
33805 return this.curve.point(nx, ny, nz);
33806};
ebd8d4e8 33807
8b095871
IC
33808Point.prototype.add = function add(p) {
33809 if (this.isInfinity())
33810 return p;
33811 if (p.isInfinity())
33812 return this;
ebd8d4e8 33813
8b095871
IC
33814 if (this.curve.extended)
33815 return this._extAdd(p);
33816 else
33817 return this._projAdd(p);
33818};
ebd8d4e8 33819
8b095871
IC
33820Point.prototype.mul = function mul(k) {
33821 if (this._hasDoubles(k))
33822 return this.curve._fixedNafMul(this, k);
33823 else
33824 return this.curve._wnafMul(this, k);
33825};
ebd8d4e8 33826
8b095871
IC
33827Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
33828 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
33829};
ebd8d4e8 33830
8b095871
IC
33831Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
33832 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
33833};
ebd8d4e8 33834
8b095871
IC
33835Point.prototype.normalize = function normalize() {
33836 if (this.zOne)
33837 return this;
33838
33839 // Normalize coordinates
33840 var zi = this.z.redInvm();
33841 this.x = this.x.redMul(zi);
33842 this.y = this.y.redMul(zi);
33843 if (this.t)
33844 this.t = this.t.redMul(zi);
33845 this.z = this.curve.one;
33846 this.zOne = true;
33847 return this;
33848};
33849
33850Point.prototype.neg = function neg() {
33851 return this.curve.point(this.x.redNeg(),
33852 this.y,
33853 this.z,
33854 this.t && this.t.redNeg());
33855};
33856
33857Point.prototype.getX = function getX() {
33858 this.normalize();
33859 return this.x.fromRed();
33860};
33861
33862Point.prototype.getY = function getY() {
33863 this.normalize();
33864 return this.y.fromRed();
33865};
33866
33867Point.prototype.eq = function eq(other) {
33868 return this === other ||
33869 this.getX().cmp(other.getX()) === 0 &&
33870 this.getY().cmp(other.getY()) === 0;
33871};
33872
33873Point.prototype.eqXToP = function eqXToP(x) {
33874 var rx = x.toRed(this.curve.red).redMul(this.z);
33875 if (this.x.cmp(rx) === 0)
33876 return true;
ebd8d4e8 33877
8b095871
IC
33878 var xc = x.clone();
33879 var t = this.curve.redN.redMul(this.z);
33880 for (;;) {
33881 xc.iadd(this.curve.n);
33882 if (xc.cmp(this.curve.p) >= 0)
33883 return false;
ebd8d4e8 33884
8b095871
IC
33885 rx.redIAdd(t);
33886 if (this.x.cmp(rx) === 0)
33887 return true;
ebd8d4e8 33888 }
8b095871
IC
33889 return false;
33890};
ebd8d4e8 33891
8b095871
IC
33892// Compatibility with BaseCurve
33893Point.prototype.toP = Point.prototype.normalize;
33894Point.prototype.mixedAdd = Point.prototype.add;
ebd8d4e8 33895
8b095871
IC
33896},{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
33897'use strict';
ebd8d4e8 33898
8b095871 33899var curve = exports;
ebd8d4e8 33900
8b095871
IC
33901curve.base = require('./base');
33902curve.short = require('./short');
33903curve.mont = require('./mont');
33904curve.edwards = require('./edwards');
ebd8d4e8 33905
8b095871
IC
33906},{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
33907'use strict';
ebd8d4e8 33908
8b095871
IC
33909var curve = require('../curve');
33910var BN = require('bn.js');
33911var inherits = require('inherits');
33912var Base = curve.base;
ebd8d4e8 33913
8b095871
IC
33914var elliptic = require('../../elliptic');
33915var utils = elliptic.utils;
ebd8d4e8 33916
8b095871
IC
33917function MontCurve(conf) {
33918 Base.call(this, 'mont', conf);
ebd8d4e8 33919
8b095871
IC
33920 this.a = new BN(conf.a, 16).toRed(this.red);
33921 this.b = new BN(conf.b, 16).toRed(this.red);
33922 this.i4 = new BN(4).toRed(this.red).redInvm();
33923 this.two = new BN(2).toRed(this.red);
33924 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
ebd8d4e8 33925}
8b095871
IC
33926inherits(MontCurve, Base);
33927module.exports = MontCurve;
ebd8d4e8 33928
8b095871
IC
33929MontCurve.prototype.validate = function validate(point) {
33930 var x = point.normalize().x;
33931 var x2 = x.redSqr();
33932 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
33933 var y = rhs.redSqrt();
ebd8d4e8 33934
8b095871
IC
33935 return y.redSqr().cmp(rhs) === 0;
33936};
ebd8d4e8 33937
8b095871
IC
33938function Point(curve, x, z) {
33939 Base.BasePoint.call(this, curve, 'projective');
33940 if (x === null && z === null) {
33941 this.x = this.curve.one;
33942 this.z = this.curve.zero;
33943 } else {
33944 this.x = new BN(x, 16);
33945 this.z = new BN(z, 16);
33946 if (!this.x.red)
33947 this.x = this.x.toRed(this.curve.red);
33948 if (!this.z.red)
33949 this.z = this.z.toRed(this.curve.red);
33950 }
33951}
33952inherits(Point, Base.BasePoint);
ebd8d4e8 33953
8b095871
IC
33954MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
33955 return this.point(utils.toArray(bytes, enc), 1);
33956};
ebd8d4e8 33957
8b095871
IC
33958MontCurve.prototype.point = function point(x, z) {
33959 return new Point(this, x, z);
33960};
ebd8d4e8 33961
8b095871
IC
33962MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
33963 return Point.fromJSON(this, obj);
33964};
ebd8d4e8 33965
8b095871
IC
33966Point.prototype.precompute = function precompute() {
33967 // No-op
33968};
ebd8d4e8 33969
8b095871
IC
33970Point.prototype._encode = function _encode() {
33971 return this.getX().toArray('be', this.curve.p.byteLength());
33972};
ebd8d4e8 33973
8b095871
IC
33974Point.fromJSON = function fromJSON(curve, obj) {
33975 return new Point(curve, obj[0], obj[1] || curve.one);
33976};
ebd8d4e8 33977
8b095871
IC
33978Point.prototype.inspect = function inspect() {
33979 if (this.isInfinity())
33980 return '<EC Point Infinity>';
33981 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
33982 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
33983};
ebd8d4e8 33984
8b095871
IC
33985Point.prototype.isInfinity = function isInfinity() {
33986 // XXX This code assumes that zero is always zero in red
33987 return this.z.cmpn(0) === 0;
33988};
ebd8d4e8 33989
8b095871
IC
33990Point.prototype.dbl = function dbl() {
33991 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
33992 // 2M + 2S + 4A
33993
33994 // A = X1 + Z1
33995 var a = this.x.redAdd(this.z);
33996 // AA = A^2
33997 var aa = a.redSqr();
33998 // B = X1 - Z1
33999 var b = this.x.redSub(this.z);
34000 // BB = B^2
34001 var bb = b.redSqr();
34002 // C = AA - BB
34003 var c = aa.redSub(bb);
34004 // X3 = AA * BB
34005 var nx = aa.redMul(bb);
34006 // Z3 = C * (BB + A24 * C)
34007 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
34008 return this.curve.point(nx, nz);
34009};
ebd8d4e8 34010
8b095871
IC
34011Point.prototype.add = function add() {
34012 throw new Error('Not supported on Montgomery curve');
34013};
ebd8d4e8 34014
8b095871
IC
34015Point.prototype.diffAdd = function diffAdd(p, diff) {
34016 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
34017 // 4M + 2S + 6A
34018
34019 // A = X2 + Z2
34020 var a = this.x.redAdd(this.z);
34021 // B = X2 - Z2
34022 var b = this.x.redSub(this.z);
34023 // C = X3 + Z3
34024 var c = p.x.redAdd(p.z);
34025 // D = X3 - Z3
34026 var d = p.x.redSub(p.z);
34027 // DA = D * A
34028 var da = d.redMul(a);
34029 // CB = C * B
34030 var cb = c.redMul(b);
34031 // X5 = Z1 * (DA + CB)^2
34032 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
34033 // Z5 = X1 * (DA - CB)^2
34034 var nz = diff.x.redMul(da.redISub(cb).redSqr());
34035 return this.curve.point(nx, nz);
34036};
ebd8d4e8 34037
8b095871
IC
34038Point.prototype.mul = function mul(k) {
34039 var t = k.clone();
34040 var a = this; // (N / 2) * Q + Q
34041 var b = this.curve.point(null, null); // (N / 2) * Q
34042 var c = this; // Q
34043
34044 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
34045 bits.push(t.andln(1));
34046
34047 for (var i = bits.length - 1; i >= 0; i--) {
34048 if (bits[i] === 0) {
34049 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
34050 a = a.diffAdd(b, c);
34051 // N * Q = 2 * ((N / 2) * Q + Q))
34052 b = b.dbl();
34053 } else {
34054 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
34055 b = a.diffAdd(b, c);
34056 // N * Q + Q = 2 * ((N / 2) * Q + Q)
34057 a = a.dbl();
34058 }
ebd8d4e8 34059 }
8b095871
IC
34060 return b;
34061};
ebd8d4e8 34062
8b095871
IC
34063Point.prototype.mulAdd = function mulAdd() {
34064 throw new Error('Not supported on Montgomery curve');
34065};
ebd8d4e8 34066
8b095871
IC
34067Point.prototype.jumlAdd = function jumlAdd() {
34068 throw new Error('Not supported on Montgomery curve');
34069};
ebd8d4e8 34070
8b095871
IC
34071Point.prototype.eq = function eq(other) {
34072 return this.getX().cmp(other.getX()) === 0;
34073};
ebd8d4e8 34074
8b095871
IC
34075Point.prototype.normalize = function normalize() {
34076 this.x = this.x.redMul(this.z.redInvm());
34077 this.z = this.curve.one;
34078 return this;
34079};
ebd8d4e8 34080
8b095871
IC
34081Point.prototype.getX = function getX() {
34082 // Normalize coordinates
34083 this.normalize();
34084
34085 return this.x.fromRed();
34086};
34087
34088},{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
ab78acc6 34089'use strict';
ebd8d4e8 34090
8b095871
IC
34091var curve = require('../curve');
34092var elliptic = require('../../elliptic');
34093var BN = require('bn.js');
34094var inherits = require('inherits');
34095var Base = curve.base;
ab78acc6 34096
8b095871 34097var assert = elliptic.utils.assert;
ebd8d4e8 34098
8b095871
IC
34099function ShortCurve(conf) {
34100 Base.call(this, 'short', conf);
ebd8d4e8 34101
8b095871
IC
34102 this.a = new BN(conf.a, 16).toRed(this.red);
34103 this.b = new BN(conf.b, 16).toRed(this.red);
34104 this.tinv = this.two.redInvm();
ab78acc6 34105
8b095871
IC
34106 this.zeroA = this.a.fromRed().cmpn(0) === 0;
34107 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
ab78acc6 34108
8b095871
IC
34109 // If the curve is endomorphic, precalculate beta and lambda
34110 this.endo = this._getEndomorphism(conf);
34111 this._endoWnafT1 = new Array(4);
34112 this._endoWnafT2 = new Array(4);
ebd8d4e8 34113}
8b095871
IC
34114inherits(ShortCurve, Base);
34115module.exports = ShortCurve;
ebd8d4e8 34116
8b095871
IC
34117ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
34118 // No efficient endomorphism
34119 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
34120 return;
ebd8d4e8 34121
8b095871
IC
34122 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
34123 var beta;
34124 var lambda;
34125 if (conf.beta) {
34126 beta = new BN(conf.beta, 16).toRed(this.red);
34127 } else {
34128 var betas = this._getEndoRoots(this.p);
34129 // Choose the smallest beta
34130 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
34131 beta = beta.toRed(this.red);
34132 }
34133 if (conf.lambda) {
34134 lambda = new BN(conf.lambda, 16);
34135 } else {
34136 // Choose the lambda that is matching selected beta
34137 var lambdas = this._getEndoRoots(this.n);
34138 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
34139 lambda = lambdas[0];
34140 } else {
34141 lambda = lambdas[1];
34142 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
34143 }
34144 }
ab78acc6 34145
8b095871
IC
34146 // Get basis vectors, used for balanced length-two representation
34147 var basis;
34148 if (conf.basis) {
34149 basis = conf.basis.map(function(vec) {
34150 return {
34151 a: new BN(vec.a, 16),
34152 b: new BN(vec.b, 16)
34153 };
34154 });
34155 } else {
34156 basis = this._getEndoBasis(lambda);
34157 }
ab78acc6 34158
8b095871
IC
34159 return {
34160 beta: beta,
34161 lambda: lambda,
34162 basis: basis
34163 };
34164};
ab78acc6 34165
8b095871
IC
34166ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
34167 // Find roots of for x^2 + x + 1 in F
34168 // Root = (-1 +- Sqrt(-3)) / 2
34169 //
34170 var red = num === this.p ? this.red : BN.mont(num);
34171 var tinv = new BN(2).toRed(red).redInvm();
34172 var ntinv = tinv.redNeg();
ab78acc6 34173
8b095871 34174 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
ab78acc6 34175
8b095871
IC
34176 var l1 = ntinv.redAdd(s).fromRed();
34177 var l2 = ntinv.redSub(s).fromRed();
34178 return [ l1, l2 ];
34179};
ab78acc6 34180
8b095871
IC
34181ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
34182 // aprxSqrt >= sqrt(this.n)
34183 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
34184
34185 // 3.74
34186 // Run EGCD, until r(L + 1) < aprxSqrt
34187 var u = lambda;
34188 var v = this.n.clone();
34189 var x1 = new BN(1);
34190 var y1 = new BN(0);
34191 var x2 = new BN(0);
34192 var y2 = new BN(1);
34193
34194 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
34195 var a0;
34196 var b0;
34197 // First vector
34198 var a1;
34199 var b1;
34200 // Second vector
34201 var a2;
34202 var b2;
34203
34204 var prevR;
34205 var i = 0;
34206 var r;
34207 var x;
34208 while (u.cmpn(0) !== 0) {
34209 var q = v.div(u);
34210 r = v.sub(q.mul(u));
34211 x = x2.sub(q.mul(x1));
34212 var y = y2.sub(q.mul(y1));
34213
34214 if (!a1 && r.cmp(aprxSqrt) < 0) {
34215 a0 = prevR.neg();
34216 b0 = x1;
34217 a1 = r.neg();
34218 b1 = x;
34219 } else if (a1 && ++i === 2) {
34220 break;
ab78acc6 34221 }
8b095871 34222 prevR = r;
ab78acc6 34223
8b095871
IC
34224 v = u;
34225 u = r;
34226 x2 = x1;
34227 x1 = x;
34228 y2 = y1;
34229 y1 = y;
ebd8d4e8 34230 }
8b095871
IC
34231 a2 = r.neg();
34232 b2 = x;
ab78acc6 34233
8b095871
IC
34234 var len1 = a1.sqr().add(b1.sqr());
34235 var len2 = a2.sqr().add(b2.sqr());
34236 if (len2.cmp(len1) >= 0) {
34237 a2 = a0;
34238 b2 = b0;
34239 }
ebd8d4e8 34240
8b095871
IC
34241 // Normalize signs
34242 if (a1.negative) {
34243 a1 = a1.neg();
34244 b1 = b1.neg();
34245 }
34246 if (a2.negative) {
34247 a2 = a2.neg();
34248 b2 = b2.neg();
34249 }
ebd8d4e8 34250
8b095871
IC
34251 return [
34252 { a: a1, b: b1 },
34253 { a: a2, b: b2 }
34254 ];
34255};
ab78acc6 34256
8b095871
IC
34257ShortCurve.prototype._endoSplit = function _endoSplit(k) {
34258 var basis = this.endo.basis;
34259 var v1 = basis[0];
34260 var v2 = basis[1];
ab78acc6 34261
8b095871
IC
34262 var c1 = v2.b.mul(k).divRound(this.n);
34263 var c2 = v1.b.neg().mul(k).divRound(this.n);
ab78acc6 34264
8b095871
IC
34265 var p1 = c1.mul(v1.a);
34266 var p2 = c2.mul(v2.a);
34267 var q1 = c1.mul(v1.b);
34268 var q2 = c2.mul(v2.b);
ab78acc6 34269
8b095871
IC
34270 // Calculate answer
34271 var k1 = k.sub(p1).sub(p2);
34272 var k2 = q1.add(q2).neg();
34273 return { k1: k1, k2: k2 };
34274};
ab78acc6 34275
8b095871
IC
34276ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
34277 x = new BN(x, 16);
34278 if (!x.red)
34279 x = x.toRed(this.red);
ab78acc6 34280
8b095871
IC
34281 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
34282 var y = y2.redSqrt();
34283 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
34284 throw new Error('invalid point');
ab78acc6 34285
8b095871
IC
34286 // XXX Is there any way to tell if the number is odd without converting it
34287 // to non-red form?
34288 var isOdd = y.fromRed().isOdd();
34289 if (odd && !isOdd || !odd && isOdd)
34290 y = y.redNeg();
ab78acc6 34291
8b095871
IC
34292 return this.point(x, y);
34293};
ab78acc6 34294
8b095871
IC
34295ShortCurve.prototype.validate = function validate(point) {
34296 if (point.inf)
34297 return true;
ab78acc6 34298
8b095871
IC
34299 var x = point.x;
34300 var y = point.y;
ab78acc6 34301
8b095871
IC
34302 var ax = this.a.redMul(x);
34303 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
34304 return y.redSqr().redISub(rhs).cmpn(0) === 0;
34305};
ab78acc6 34306
8b095871
IC
34307ShortCurve.prototype._endoWnafMulAdd =
34308 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
34309 var npoints = this._endoWnafT1;
34310 var ncoeffs = this._endoWnafT2;
34311 for (var i = 0; i < points.length; i++) {
34312 var split = this._endoSplit(coeffs[i]);
34313 var p = points[i];
34314 var beta = p._getBeta();
ab78acc6 34315
8b095871
IC
34316 if (split.k1.negative) {
34317 split.k1.ineg();
34318 p = p.neg(true);
34319 }
34320 if (split.k2.negative) {
34321 split.k2.ineg();
34322 beta = beta.neg(true);
ab78acc6 34323 }
ab78acc6 34324
8b095871
IC
34325 npoints[i * 2] = p;
34326 npoints[i * 2 + 1] = beta;
34327 ncoeffs[i * 2] = split.k1;
34328 ncoeffs[i * 2 + 1] = split.k2;
34329 }
34330 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
ab78acc6 34331
8b095871
IC
34332 // Clean-up references to points and coefficients
34333 for (var j = 0; j < i * 2; j++) {
34334 npoints[j] = null;
34335 ncoeffs[j] = null;
34336 }
34337 return res;
34338};
34339
34340function Point(curve, x, y, isRed) {
34341 Base.BasePoint.call(this, curve, 'affine');
34342 if (x === null && y === null) {
34343 this.x = null;
34344 this.y = null;
34345 this.inf = true;
34346 } else {
34347 this.x = new BN(x, 16);
34348 this.y = new BN(y, 16);
34349 // Force redgomery representation when loading from JSON
34350 if (isRed) {
34351 this.x.forceRed(this.curve.red);
34352 this.y.forceRed(this.curve.red);
ab78acc6 34353 }
8b095871
IC
34354 if (!this.x.red)
34355 this.x = this.x.toRed(this.curve.red);
34356 if (!this.y.red)
34357 this.y = this.y.toRed(this.curve.red);
34358 this.inf = false;
34359 }
34360}
34361inherits(Point, Base.BasePoint);
ab78acc6 34362
8b095871
IC
34363ShortCurve.prototype.point = function point(x, y, isRed) {
34364 return new Point(this, x, y, isRed);
34365};
ab78acc6 34366
8b095871
IC
34367ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
34368 return Point.fromJSON(this, obj, red);
34369};
ab78acc6 34370
8b095871
IC
34371Point.prototype._getBeta = function _getBeta() {
34372 if (!this.curve.endo)
34373 return;
ab78acc6 34374
8b095871
IC
34375 var pre = this.precomputed;
34376 if (pre && pre.beta)
34377 return pre.beta;
ab78acc6 34378
8b095871
IC
34379 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
34380 if (pre) {
34381 var curve = this.curve;
34382 var endoMul = function(p) {
34383 return curve.point(p.x.redMul(curve.endo.beta), p.y);
34384 };
34385 pre.beta = beta;
34386 beta.precomputed = {
34387 beta: null,
34388 naf: pre.naf && {
34389 wnd: pre.naf.wnd,
34390 points: pre.naf.points.map(endoMul)
34391 },
34392 doubles: pre.doubles && {
34393 step: pre.doubles.step,
34394 points: pre.doubles.points.map(endoMul)
34395 }
ab78acc6 34396 };
ab78acc6 34397 }
8b095871 34398 return beta;
ab78acc6
IC
34399};
34400
8b095871
IC
34401Point.prototype.toJSON = function toJSON() {
34402 if (!this.precomputed)
34403 return [ this.x, this.y ];
ab78acc6 34404
8b095871
IC
34405 return [ this.x, this.y, this.precomputed && {
34406 doubles: this.precomputed.doubles && {
34407 step: this.precomputed.doubles.step,
34408 points: this.precomputed.doubles.points.slice(1)
34409 },
34410 naf: this.precomputed.naf && {
34411 wnd: this.precomputed.naf.wnd,
34412 points: this.precomputed.naf.points.slice(1)
34413 }
34414 } ];
34415};
ab78acc6 34416
8b095871
IC
34417Point.fromJSON = function fromJSON(curve, obj, red) {
34418 if (typeof obj === 'string')
34419 obj = JSON.parse(obj);
34420 var res = curve.point(obj[0], obj[1], red);
34421 if (!obj[2])
34422 return res;
ab78acc6 34423
8b095871
IC
34424 function obj2point(obj) {
34425 return curve.point(obj[0], obj[1], red);
34426 }
34427
34428 var pre = obj[2];
34429 res.precomputed = {
34430 beta: null,
34431 doubles: pre.doubles && {
34432 step: pre.doubles.step,
34433 points: [ res ].concat(pre.doubles.points.map(obj2point))
34434 },
34435 naf: pre.naf && {
34436 wnd: pre.naf.wnd,
34437 points: [ res ].concat(pre.naf.points.map(obj2point))
ab78acc6 34438 }
8b095871
IC
34439 };
34440 return res;
34441};
ab78acc6 34442
8b095871
IC
34443Point.prototype.inspect = function inspect() {
34444 if (this.isInfinity())
34445 return '<EC Point Infinity>';
34446 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
34447 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
34448};
ab78acc6 34449
8b095871
IC
34450Point.prototype.isInfinity = function isInfinity() {
34451 return this.inf;
34452};
ebd8d4e8 34453
8b095871
IC
34454Point.prototype.add = function add(p) {
34455 // O + P = P
34456 if (this.inf)
34457 return p;
ab78acc6 34458
8b095871
IC
34459 // P + O = P
34460 if (p.inf)
34461 return this;
ab78acc6 34462
8b095871
IC
34463 // P + P = 2P
34464 if (this.eq(p))
34465 return this.dbl();
ab78acc6 34466
8b095871
IC
34467 // P + (-P) = O
34468 if (this.neg().eq(p))
34469 return this.curve.point(null, null);
ab78acc6 34470
8b095871
IC
34471 // P + Q = O
34472 if (this.x.cmp(p.x) === 0)
34473 return this.curve.point(null, null);
ebd8d4e8 34474
8b095871
IC
34475 var c = this.y.redSub(p.y);
34476 if (c.cmpn(0) !== 0)
34477 c = c.redMul(this.x.redSub(p.x).redInvm());
34478 var nx = c.redSqr().redISub(this.x).redISub(p.x);
34479 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34480 return this.curve.point(nx, ny);
34481};
ab78acc6 34482
8b095871
IC
34483Point.prototype.dbl = function dbl() {
34484 if (this.inf)
34485 return this;
ebd8d4e8 34486
8b095871
IC
34487 // 2P = O
34488 var ys1 = this.y.redAdd(this.y);
34489 if (ys1.cmpn(0) === 0)
34490 return this.curve.point(null, null);
ebd8d4e8 34491
8b095871 34492 var a = this.curve.a;
ebd8d4e8 34493
8b095871
IC
34494 var x2 = this.x.redSqr();
34495 var dyinv = ys1.redInvm();
34496 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
ebd8d4e8 34497
8b095871
IC
34498 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
34499 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
34500 return this.curve.point(nx, ny);
34501};
ebd8d4e8 34502
8b095871
IC
34503Point.prototype.getX = function getX() {
34504 return this.x.fromRed();
34505};
ab78acc6 34506
8b095871
IC
34507Point.prototype.getY = function getY() {
34508 return this.y.fromRed();
34509};
ebd8d4e8 34510
8b095871
IC
34511Point.prototype.mul = function mul(k) {
34512 k = new BN(k, 16);
ebd8d4e8 34513
8b095871
IC
34514 if (this._hasDoubles(k))
34515 return this.curve._fixedNafMul(this, k);
34516 else if (this.curve.endo)
34517 return this.curve._endoWnafMulAdd([ this ], [ k ]);
34518 else
34519 return this.curve._wnafMul(this, k);
34520};
ebd8d4e8 34521
8b095871
IC
34522Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
34523 var points = [ this, p2 ];
34524 var coeffs = [ k1, k2 ];
34525 if (this.curve.endo)
34526 return this.curve._endoWnafMulAdd(points, coeffs);
34527 else
34528 return this.curve._wnafMulAdd(1, points, coeffs, 2);
34529};
ebd8d4e8 34530
8b095871
IC
34531Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
34532 var points = [ this, p2 ];
34533 var coeffs = [ k1, k2 ];
34534 if (this.curve.endo)
34535 return this.curve._endoWnafMulAdd(points, coeffs, true);
34536 else
34537 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
34538};
ebd8d4e8 34539
8b095871
IC
34540Point.prototype.eq = function eq(p) {
34541 return this === p ||
34542 this.inf === p.inf &&
34543 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
34544};
ebd8d4e8 34545
8b095871
IC
34546Point.prototype.neg = function neg(_precompute) {
34547 if (this.inf)
34548 return this;
ebd8d4e8 34549
8b095871
IC
34550 var res = this.curve.point(this.x, this.y.redNeg());
34551 if (_precompute && this.precomputed) {
34552 var pre = this.precomputed;
34553 var negate = function(p) {
34554 return p.neg();
34555 };
34556 res.precomputed = {
34557 naf: pre.naf && {
34558 wnd: pre.naf.wnd,
34559 points: pre.naf.points.map(negate)
34560 },
34561 doubles: pre.doubles && {
34562 step: pre.doubles.step,
34563 points: pre.doubles.points.map(negate)
34564 }
34565 };
34566 }
34567 return res;
34568};
ebd8d4e8 34569
8b095871
IC
34570Point.prototype.toJ = function toJ() {
34571 if (this.inf)
34572 return this.curve.jpoint(null, null, null);
ebd8d4e8 34573
8b095871
IC
34574 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
34575 return res;
34576};
ebd8d4e8 34577
8b095871
IC
34578function JPoint(curve, x, y, z) {
34579 Base.BasePoint.call(this, curve, 'jacobian');
34580 if (x === null && y === null && z === null) {
34581 this.x = this.curve.one;
34582 this.y = this.curve.one;
34583 this.z = new BN(0);
34584 } else {
34585 this.x = new BN(x, 16);
34586 this.y = new BN(y, 16);
34587 this.z = new BN(z, 16);
34588 }
34589 if (!this.x.red)
34590 this.x = this.x.toRed(this.curve.red);
34591 if (!this.y.red)
34592 this.y = this.y.toRed(this.curve.red);
34593 if (!this.z.red)
34594 this.z = this.z.toRed(this.curve.red);
ebd8d4e8 34595
8b095871 34596 this.zOne = this.z === this.curve.one;
ab78acc6 34597}
8b095871 34598inherits(JPoint, Base.BasePoint);
ab78acc6 34599
8b095871
IC
34600ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
34601 return new JPoint(this, x, y, z);
34602};
ab78acc6 34603
8b095871
IC
34604JPoint.prototype.toP = function toP() {
34605 if (this.isInfinity())
34606 return this.curve.point(null, null);
ab78acc6 34607
8b095871
IC
34608 var zinv = this.z.redInvm();
34609 var zinv2 = zinv.redSqr();
34610 var ax = this.x.redMul(zinv2);
34611 var ay = this.y.redMul(zinv2).redMul(zinv);
ab78acc6 34612
8b095871
IC
34613 return this.curve.point(ax, ay);
34614};
ab78acc6 34615
8b095871
IC
34616JPoint.prototype.neg = function neg() {
34617 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
34618};
ab78acc6 34619
8b095871
IC
34620JPoint.prototype.add = function add(p) {
34621 // O + P = P
34622 if (this.isInfinity())
34623 return p;
ab78acc6 34624
8b095871
IC
34625 // P + O = P
34626 if (p.isInfinity())
34627 return this;
ab78acc6 34628
8b095871
IC
34629 // 12M + 4S + 7A
34630 var pz2 = p.z.redSqr();
34631 var z2 = this.z.redSqr();
34632 var u1 = this.x.redMul(pz2);
34633 var u2 = p.x.redMul(z2);
34634 var s1 = this.y.redMul(pz2.redMul(p.z));
34635 var s2 = p.y.redMul(z2.redMul(this.z));
34636
34637 var h = u1.redSub(u2);
34638 var r = s1.redSub(s2);
34639 if (h.cmpn(0) === 0) {
34640 if (r.cmpn(0) !== 0)
34641 return this.curve.jpoint(null, null, null);
34642 else
34643 return this.dbl();
34644 }
ab78acc6 34645
8b095871
IC
34646 var h2 = h.redSqr();
34647 var h3 = h2.redMul(h);
34648 var v = u1.redMul(h2);
ab78acc6 34649
8b095871
IC
34650 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34651 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34652 var nz = this.z.redMul(p.z).redMul(h);
ab78acc6 34653
8b095871
IC
34654 return this.curve.jpoint(nx, ny, nz);
34655};
ab78acc6 34656
8b095871
IC
34657JPoint.prototype.mixedAdd = function mixedAdd(p) {
34658 // O + P = P
34659 if (this.isInfinity())
34660 return p.toJ();
ab78acc6 34661
8b095871
IC
34662 // P + O = P
34663 if (p.isInfinity())
34664 return this;
ab78acc6 34665
8b095871
IC
34666 // 8M + 3S + 7A
34667 var z2 = this.z.redSqr();
34668 var u1 = this.x;
34669 var u2 = p.x.redMul(z2);
34670 var s1 = this.y;
34671 var s2 = p.y.redMul(z2).redMul(this.z);
34672
34673 var h = u1.redSub(u2);
34674 var r = s1.redSub(s2);
34675 if (h.cmpn(0) === 0) {
34676 if (r.cmpn(0) !== 0)
34677 return this.curve.jpoint(null, null, null);
34678 else
34679 return this.dbl();
ab78acc6
IC
34680 }
34681
8b095871
IC
34682 var h2 = h.redSqr();
34683 var h3 = h2.redMul(h);
34684 var v = u1.redMul(h2);
ab78acc6 34685
8b095871
IC
34686 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
34687 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
34688 var nz = this.z.redMul(h);
ab78acc6 34689
8b095871
IC
34690 return this.curve.jpoint(nx, ny, nz);
34691};
ab78acc6 34692
8b095871
IC
34693JPoint.prototype.dblp = function dblp(pow) {
34694 if (pow === 0)
34695 return this;
34696 if (this.isInfinity())
34697 return this;
34698 if (!pow)
34699 return this.dbl();
34700
34701 if (this.curve.zeroA || this.curve.threeA) {
34702 var r = this;
34703 for (var i = 0; i < pow; i++)
34704 r = r.dbl();
34705 return r;
34706 }
34707
34708 // 1M + 2S + 1A + N * (4S + 5M + 8A)
34709 // N = 1 => 6M + 6S + 9A
34710 var a = this.curve.a;
34711 var tinv = this.curve.tinv;
34712
34713 var jx = this.x;
34714 var jy = this.y;
34715 var jz = this.z;
34716 var jz4 = jz.redSqr().redSqr();
34717
34718 // Reuse results
34719 var jyd = jy.redAdd(jy);
34720 for (var i = 0; i < pow; i++) {
34721 var jx2 = jx.redSqr();
34722 var jyd2 = jyd.redSqr();
34723 var jyd4 = jyd2.redSqr();
34724 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
34725
34726 var t1 = jx.redMul(jyd2);
34727 var nx = c.redSqr().redISub(t1.redAdd(t1));
34728 var t2 = t1.redISub(nx);
34729 var dny = c.redMul(t2);
34730 dny = dny.redIAdd(dny).redISub(jyd4);
34731 var nz = jyd.redMul(jz);
34732 if (i + 1 < pow)
34733 jz4 = jz4.redMul(jyd4);
34734
34735 jx = nx;
34736 jz = nz;
34737 jyd = dny;
34738 }
34739
34740 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
34741};
ab78acc6 34742
8b095871
IC
34743JPoint.prototype.dbl = function dbl() {
34744 if (this.isInfinity())
34745 return this;
ab78acc6 34746
8b095871
IC
34747 if (this.curve.zeroA)
34748 return this._zeroDbl();
34749 else if (this.curve.threeA)
34750 return this._threeDbl();
34751 else
34752 return this._dbl();
34753};
ab78acc6 34754
8b095871
IC
34755JPoint.prototype._zeroDbl = function _zeroDbl() {
34756 var nx;
34757 var ny;
34758 var nz;
34759 // Z = 1
34760 if (this.zOne) {
34761 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34762 // #doubling-mdbl-2007-bl
34763 // 1M + 5S + 14A
34764
34765 // XX = X1^2
34766 var xx = this.x.redSqr();
34767 // YY = Y1^2
34768 var yy = this.y.redSqr();
34769 // YYYY = YY^2
34770 var yyyy = yy.redSqr();
34771 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34772 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34773 s = s.redIAdd(s);
34774 // M = 3 * XX + a; a = 0
34775 var m = xx.redAdd(xx).redIAdd(xx);
34776 // T = M ^ 2 - 2*S
34777 var t = m.redSqr().redISub(s).redISub(s);
34778
34779 // 8 * YYYY
34780 var yyyy8 = yyyy.redIAdd(yyyy);
34781 yyyy8 = yyyy8.redIAdd(yyyy8);
34782 yyyy8 = yyyy8.redIAdd(yyyy8);
34783
34784 // X3 = T
34785 nx = t;
34786 // Y3 = M * (S - T) - 8 * YYYY
34787 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34788 // Z3 = 2*Y1
34789 nz = this.y.redAdd(this.y);
34790 } else {
34791 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
34792 // #doubling-dbl-2009-l
34793 // 2M + 5S + 13A
34794
34795 // A = X1^2
34796 var a = this.x.redSqr();
34797 // B = Y1^2
34798 var b = this.y.redSqr();
34799 // C = B^2
34800 var c = b.redSqr();
34801 // D = 2 * ((X1 + B)^2 - A - C)
34802 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
34803 d = d.redIAdd(d);
34804 // E = 3 * A
34805 var e = a.redAdd(a).redIAdd(a);
34806 // F = E^2
34807 var f = e.redSqr();
34808
34809 // 8 * C
34810 var c8 = c.redIAdd(c);
34811 c8 = c8.redIAdd(c8);
34812 c8 = c8.redIAdd(c8);
34813
34814 // X3 = F - 2 * D
34815 nx = f.redISub(d).redISub(d);
34816 // Y3 = E * (D - X3) - 8 * C
34817 ny = e.redMul(d.redISub(nx)).redISub(c8);
34818 // Z3 = 2 * Y1 * Z1
34819 nz = this.y.redMul(this.z);
34820 nz = nz.redIAdd(nz);
34821 }
34822
34823 return this.curve.jpoint(nx, ny, nz);
34824};
ab78acc6 34825
8b095871
IC
34826JPoint.prototype._threeDbl = function _threeDbl() {
34827 var nx;
34828 var ny;
34829 var nz;
34830 // Z = 1
34831 if (this.zOne) {
34832 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
34833 // #doubling-mdbl-2007-bl
34834 // 1M + 5S + 15A
34835
34836 // XX = X1^2
34837 var xx = this.x.redSqr();
34838 // YY = Y1^2
34839 var yy = this.y.redSqr();
34840 // YYYY = YY^2
34841 var yyyy = yy.redSqr();
34842 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
34843 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34844 s = s.redIAdd(s);
34845 // M = 3 * XX + a
34846 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
34847 // T = M^2 - 2 * S
34848 var t = m.redSqr().redISub(s).redISub(s);
34849 // X3 = T
34850 nx = t;
34851 // Y3 = M * (S - T) - 8 * YYYY
34852 var yyyy8 = yyyy.redIAdd(yyyy);
34853 yyyy8 = yyyy8.redIAdd(yyyy8);
34854 yyyy8 = yyyy8.redIAdd(yyyy8);
34855 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
34856 // Z3 = 2 * Y1
34857 nz = this.y.redAdd(this.y);
34858 } else {
34859 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
34860 // 3M + 5S
34861
34862 // delta = Z1^2
34863 var delta = this.z.redSqr();
34864 // gamma = Y1^2
34865 var gamma = this.y.redSqr();
34866 // beta = X1 * gamma
34867 var beta = this.x.redMul(gamma);
34868 // alpha = 3 * (X1 - delta) * (X1 + delta)
34869 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
34870 alpha = alpha.redAdd(alpha).redIAdd(alpha);
34871 // X3 = alpha^2 - 8 * beta
34872 var beta4 = beta.redIAdd(beta);
34873 beta4 = beta4.redIAdd(beta4);
34874 var beta8 = beta4.redAdd(beta4);
34875 nx = alpha.redSqr().redISub(beta8);
34876 // Z3 = (Y1 + Z1)^2 - gamma - delta
34877 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
34878 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
34879 var ggamma8 = gamma.redSqr();
34880 ggamma8 = ggamma8.redIAdd(ggamma8);
34881 ggamma8 = ggamma8.redIAdd(ggamma8);
34882 ggamma8 = ggamma8.redIAdd(ggamma8);
34883 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
34884 }
34885
34886 return this.curve.jpoint(nx, ny, nz);
34887};
ab78acc6 34888
8b095871
IC
34889JPoint.prototype._dbl = function _dbl() {
34890 var a = this.curve.a;
ab78acc6 34891
8b095871
IC
34892 // 4M + 6S + 10A
34893 var jx = this.x;
34894 var jy = this.y;
34895 var jz = this.z;
34896 var jz4 = jz.redSqr().redSqr();
ab78acc6 34897
8b095871
IC
34898 var jx2 = jx.redSqr();
34899 var jy2 = jy.redSqr();
ebd8d4e8 34900
8b095871 34901 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
ebd8d4e8 34902
8b095871
IC
34903 var jxd4 = jx.redAdd(jx);
34904 jxd4 = jxd4.redIAdd(jxd4);
34905 var t1 = jxd4.redMul(jy2);
34906 var nx = c.redSqr().redISub(t1.redAdd(t1));
34907 var t2 = t1.redISub(nx);
ebd8d4e8 34908
8b095871
IC
34909 var jyd8 = jy2.redSqr();
34910 jyd8 = jyd8.redIAdd(jyd8);
34911 jyd8 = jyd8.redIAdd(jyd8);
34912 jyd8 = jyd8.redIAdd(jyd8);
34913 var ny = c.redMul(t2).redISub(jyd8);
34914 var nz = jy.redAdd(jy).redMul(jz);
ebd8d4e8 34915
8b095871
IC
34916 return this.curve.jpoint(nx, ny, nz);
34917};
ebd8d4e8 34918
8b095871
IC
34919JPoint.prototype.trpl = function trpl() {
34920 if (!this.curve.zeroA)
34921 return this.dbl().add(this);
34922
34923 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
34924 // 5M + 10S + ...
34925
34926 // XX = X1^2
34927 var xx = this.x.redSqr();
34928 // YY = Y1^2
34929 var yy = this.y.redSqr();
34930 // ZZ = Z1^2
34931 var zz = this.z.redSqr();
34932 // YYYY = YY^2
34933 var yyyy = yy.redSqr();
34934 // M = 3 * XX + a * ZZ2; a = 0
34935 var m = xx.redAdd(xx).redIAdd(xx);
34936 // MM = M^2
34937 var mm = m.redSqr();
34938 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
34939 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
34940 e = e.redIAdd(e);
34941 e = e.redAdd(e).redIAdd(e);
34942 e = e.redISub(mm);
34943 // EE = E^2
34944 var ee = e.redSqr();
34945 // T = 16*YYYY
34946 var t = yyyy.redIAdd(yyyy);
34947 t = t.redIAdd(t);
34948 t = t.redIAdd(t);
34949 t = t.redIAdd(t);
34950 // U = (M + E)^2 - MM - EE - T
34951 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
34952 // X3 = 4 * (X1 * EE - 4 * YY * U)
34953 var yyu4 = yy.redMul(u);
34954 yyu4 = yyu4.redIAdd(yyu4);
34955 yyu4 = yyu4.redIAdd(yyu4);
34956 var nx = this.x.redMul(ee).redISub(yyu4);
34957 nx = nx.redIAdd(nx);
34958 nx = nx.redIAdd(nx);
34959 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
34960 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
34961 ny = ny.redIAdd(ny);
34962 ny = ny.redIAdd(ny);
34963 ny = ny.redIAdd(ny);
34964 // Z3 = (Z1 + E)^2 - ZZ - EE
34965 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
34966
34967 return this.curve.jpoint(nx, ny, nz);
34968};
ebd8d4e8 34969
8b095871
IC
34970JPoint.prototype.mul = function mul(k, kbase) {
34971 k = new BN(k, kbase);
ebd8d4e8 34972
8b095871
IC
34973 return this.curve._wnafMul(this, k);
34974};
ebd8d4e8 34975
8b095871
IC
34976JPoint.prototype.eq = function eq(p) {
34977 if (p.type === 'affine')
34978 return this.eq(p.toJ());
ebd8d4e8 34979
8b095871
IC
34980 if (this === p)
34981 return true;
ebd8d4e8 34982
8b095871
IC
34983 // x1 * z2^2 == x2 * z1^2
34984 var z2 = this.z.redSqr();
34985 var pz2 = p.z.redSqr();
34986 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
34987 return false;
ebd8d4e8 34988
8b095871
IC
34989 // y1 * z2^3 == y2 * z1^3
34990 var z3 = z2.redMul(this.z);
34991 var pz3 = pz2.redMul(p.z);
34992 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
34993};
ab78acc6 34994
8b095871
IC
34995JPoint.prototype.eqXToP = function eqXToP(x) {
34996 var zs = this.z.redSqr();
34997 var rx = x.toRed(this.curve.red).redMul(zs);
34998 if (this.x.cmp(rx) === 0)
34999 return true;
ebd8d4e8 35000
8b095871
IC
35001 var xc = x.clone();
35002 var t = this.curve.redN.redMul(zs);
35003 for (;;) {
35004 xc.iadd(this.curve.n);
35005 if (xc.cmp(this.curve.p) >= 0)
35006 return false;
ebd8d4e8 35007
8b095871
IC
35008 rx.redIAdd(t);
35009 if (this.x.cmp(rx) === 0)
35010 return true;
35011 }
35012 return false;
35013};
ebd8d4e8 35014
8b095871
IC
35015JPoint.prototype.inspect = function inspect() {
35016 if (this.isInfinity())
35017 return '<EC JPoint Infinity>';
35018 return '<EC JPoint x: ' + this.x.toString(16, 2) +
35019 ' y: ' + this.y.toString(16, 2) +
35020 ' z: ' + this.z.toString(16, 2) + '>';
35021};
ebd8d4e8 35022
8b095871
IC
35023JPoint.prototype.isInfinity = function isInfinity() {
35024 // XXX This code assumes that zero is always zero in red
35025 return this.z.cmpn(0) === 0;
35026};
ebd8d4e8 35027
8b095871
IC
35028},{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
35029'use strict';
ebd8d4e8 35030
8b095871 35031var curves = exports;
ebd8d4e8 35032
8b095871
IC
35033var hash = require('hash.js');
35034var elliptic = require('../elliptic');
ebd8d4e8 35035
8b095871 35036var assert = elliptic.utils.assert;
ebd8d4e8 35037
8b095871
IC
35038function PresetCurve(options) {
35039 if (options.type === 'short')
35040 this.curve = new elliptic.curve.short(options);
35041 else if (options.type === 'edwards')
35042 this.curve = new elliptic.curve.edwards(options);
35043 else
35044 this.curve = new elliptic.curve.mont(options);
35045 this.g = this.curve.g;
35046 this.n = this.curve.n;
35047 this.hash = options.hash;
35048
35049 assert(this.g.validate(), 'Invalid curve');
35050 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
35051}
35052curves.PresetCurve = PresetCurve;
35053
35054function defineCurve(name, options) {
35055 Object.defineProperty(curves, name, {
35056 configurable: true,
35057 enumerable: true,
35058 get: function() {
35059 var curve = new PresetCurve(options);
35060 Object.defineProperty(curves, name, {
35061 configurable: true,
35062 enumerable: true,
35063 value: curve
35064 });
35065 return curve;
35066 }
35067 });
ebd8d4e8
IC
35068}
35069
8b095871
IC
35070defineCurve('p192', {
35071 type: 'short',
35072 prime: 'p192',
35073 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
35074 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
35075 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
35076 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
35077 hash: hash.sha256,
35078 gRed: false,
35079 g: [
35080 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
35081 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
35082 ]
35083});
ebd8d4e8 35084
8b095871
IC
35085defineCurve('p224', {
35086 type: 'short',
35087 prime: 'p224',
35088 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
35089 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
35090 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
35091 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
35092 hash: hash.sha256,
35093 gRed: false,
35094 g: [
35095 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
35096 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
35097 ]
35098});
ebd8d4e8 35099
8b095871
IC
35100defineCurve('p256', {
35101 type: 'short',
35102 prime: null,
35103 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
35104 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
35105 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
35106 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
35107 hash: hash.sha256,
35108 gRed: false,
35109 g: [
35110 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
35111 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
35112 ]
35113});
ebd8d4e8 35114
8b095871
IC
35115defineCurve('p384', {
35116 type: 'short',
35117 prime: null,
35118 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35119 'fffffffe ffffffff 00000000 00000000 ffffffff',
35120 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35121 'fffffffe ffffffff 00000000 00000000 fffffffc',
35122 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
35123 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
35124 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
35125 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
35126 hash: hash.sha384,
35127 gRed: false,
35128 g: [
35129 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
35130 '5502f25d bf55296c 3a545e38 72760ab7',
35131 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
35132 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
35133 ]
35134});
ebd8d4e8 35135
8b095871
IC
35136defineCurve('p521', {
35137 type: 'short',
35138 prime: null,
35139 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35140 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35141 'ffffffff ffffffff ffffffff ffffffff ffffffff',
35142 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35143 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35144 'ffffffff ffffffff ffffffff ffffffff fffffffc',
35145 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
35146 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
35147 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
35148 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
35149 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
35150 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
35151 hash: hash.sha512,
35152 gRed: false,
35153 g: [
35154 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
35155 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
35156 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
35157 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
35158 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
35159 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
35160 ]
35161});
ebd8d4e8 35162
8b095871
IC
35163defineCurve('curve25519', {
35164 type: 'mont',
35165 prime: 'p25519',
35166 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35167 a: '76d06',
35168 b: '1',
35169 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35170 hash: hash.sha256,
35171 gRed: false,
35172 g: [
35173 '9'
35174 ]
35175});
ebd8d4e8 35176
8b095871
IC
35177defineCurve('ed25519', {
35178 type: 'edwards',
35179 prime: 'p25519',
35180 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
35181 a: '-1',
35182 c: '1',
35183 // -121665 * (121666^(-1)) (mod P)
35184 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
35185 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
35186 hash: hash.sha256,
35187 gRed: false,
35188 g: [
35189 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
35190
35191 // 4/5
35192 '6666666666666666666666666666666666666666666666666666666666666658'
35193 ]
35194});
ebd8d4e8 35195
8b095871
IC
35196var pre;
35197try {
35198 pre = require('./precomputed/secp256k1');
35199} catch (e) {
35200 pre = undefined;
35201}
35202
35203defineCurve('secp256k1', {
35204 type: 'short',
35205 prime: 'k256',
35206 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
35207 a: '0',
35208 b: '7',
35209 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
35210 h: '1',
35211 hash: hash.sha256,
35212
35213 // Precomputed endomorphism
35214 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
35215 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
35216 basis: [
35217 {
35218 a: '3086d221a7d46bcde86c90e49284eb15',
35219 b: '-e4437ed6010e88286f547fa90abfe4c3'
35220 },
35221 {
35222 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
35223 b: '3086d221a7d46bcde86c90e49284eb15'
35224 }
35225 ],
ebd8d4e8 35226
8b095871
IC
35227 gRed: false,
35228 g: [
35229 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
35230 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
35231 pre
35232 ]
35233});
ebd8d4e8 35234
8b095871
IC
35235},{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
35236'use strict';
ebd8d4e8 35237
8b095871
IC
35238var BN = require('bn.js');
35239var elliptic = require('../../elliptic');
35240var utils = elliptic.utils;
35241var assert = utils.assert;
ebd8d4e8 35242
8b095871
IC
35243var KeyPair = require('./key');
35244var Signature = require('./signature');
ebd8d4e8 35245
8b095871
IC
35246function EC(options) {
35247 if (!(this instanceof EC))
35248 return new EC(options);
ebd8d4e8 35249
8b095871
IC
35250 // Shortcut `elliptic.ec(curve-name)`
35251 if (typeof options === 'string') {
35252 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
35253
35254 options = elliptic.curves[options];
ebd8d4e8
IC
35255 }
35256
8b095871
IC
35257 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
35258 if (options instanceof elliptic.curves.PresetCurve)
35259 options = { curve: options };
ebd8d4e8 35260
8b095871
IC
35261 this.curve = options.curve.curve;
35262 this.n = this.curve.n;
35263 this.nh = this.n.ushrn(1);
35264 this.g = this.curve.g;
ebd8d4e8 35265
8b095871
IC
35266 // Point on curve
35267 this.g = options.curve.g;
35268 this.g.precompute(options.curve.n.bitLength() + 1);
ebd8d4e8 35269
8b095871
IC
35270 // Hash for function for DRBG
35271 this.hash = options.hash || options.curve.hash;
ebd8d4e8 35272}
8b095871 35273module.exports = EC;
ebd8d4e8 35274
8b095871
IC
35275EC.prototype.keyPair = function keyPair(options) {
35276 return new KeyPair(this, options);
35277};
35278
35279EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
35280 return KeyPair.fromPrivate(this, priv, enc);
35281};
35282
35283EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
35284 return KeyPair.fromPublic(this, pub, enc);
35285};
35286
35287EC.prototype.genKeyPair = function genKeyPair(options) {
35288 if (!options)
35289 options = {};
35290
35291 // Instantiate Hmac_DRBG
35292 var drbg = new elliptic.hmacDRBG({
35293 hash: this.hash,
35294 pers: options.pers,
35295 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
35296 nonce: this.n.toArray()
35297 });
ebd8d4e8 35298
8b095871
IC
35299 var bytes = this.n.byteLength();
35300 var ns2 = this.n.sub(new BN(2));
35301 do {
35302 var priv = new BN(drbg.generate(bytes));
35303 if (priv.cmp(ns2) > 0)
35304 continue;
ebd8d4e8 35305
8b095871
IC
35306 priv.iaddn(1);
35307 return this.keyFromPrivate(priv);
35308 } while (true);
35309};
ebd8d4e8 35310
8b095871
IC
35311EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
35312 var delta = msg.byteLength() * 8 - this.n.bitLength();
35313 if (delta > 0)
35314 msg = msg.ushrn(delta);
35315 if (!truncOnly && msg.cmp(this.n) >= 0)
35316 return msg.sub(this.n);
35317 else
35318 return msg;
35319};
ebd8d4e8 35320
8b095871
IC
35321EC.prototype.sign = function sign(msg, key, enc, options) {
35322 if (typeof enc === 'object') {
35323 options = enc;
35324 enc = null;
ebd8d4e8 35325 }
8b095871
IC
35326 if (!options)
35327 options = {};
ebd8d4e8 35328
8b095871
IC
35329 key = this.keyFromPrivate(key, enc);
35330 msg = this._truncateToN(new BN(msg, 16));
ebd8d4e8 35331
8b095871
IC
35332 // Zero-extend key to provide enough entropy
35333 var bytes = this.n.byteLength();
35334 var bkey = key.getPrivate().toArray('be', bytes);
ab78acc6 35335
8b095871
IC
35336 // Zero-extend nonce to have the same byte size as N
35337 var nonce = msg.toArray('be', bytes);
ab78acc6 35338
8b095871
IC
35339 // Instantiate Hmac_DRBG
35340 var drbg = new elliptic.hmacDRBG({
35341 hash: this.hash,
35342 entropy: bkey,
35343 nonce: nonce,
35344 pers: options.pers,
35345 persEnc: options.persEnc
35346 });
ab78acc6 35347
8b095871
IC
35348 // Number of bytes to generate
35349 var ns1 = this.n.sub(new BN(1));
ebd8d4e8 35350
8b095871
IC
35351 for (var iter = 0; true; iter++) {
35352 var k = options.k ?
35353 options.k(iter) :
35354 new BN(drbg.generate(this.n.byteLength()));
35355 k = this._truncateToN(k, true);
35356 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
35357 continue;
ebd8d4e8 35358
8b095871
IC
35359 var kp = this.g.mul(k);
35360 if (kp.isInfinity())
35361 continue;
ebd8d4e8 35362
8b095871
IC
35363 var kpX = kp.getX();
35364 var r = kpX.umod(this.n);
35365 if (r.cmpn(0) === 0)
35366 continue;
ebd8d4e8 35367
8b095871
IC
35368 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
35369 s = s.umod(this.n);
35370 if (s.cmpn(0) === 0)
35371 continue;
ebd8d4e8 35372
8b095871
IC
35373 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
35374 (kpX.cmp(r) !== 0 ? 2 : 0);
ebd8d4e8 35375
8b095871
IC
35376 // Use complement of `s`, if it is > `n / 2`
35377 if (options.canonical && s.cmp(this.nh) > 0) {
35378 s = this.n.sub(s);
35379 recoveryParam ^= 1;
35380 }
ebd8d4e8 35381
8b095871
IC
35382 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
35383 }
35384};
ebd8d4e8 35385
8b095871
IC
35386EC.prototype.verify = function verify(msg, signature, key, enc) {
35387 msg = this._truncateToN(new BN(msg, 16));
35388 key = this.keyFromPublic(key, enc);
35389 signature = new Signature(signature, 'hex');
ebd8d4e8 35390
8b095871
IC
35391 // Perform primitive values validation
35392 var r = signature.r;
35393 var s = signature.s;
35394 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
35395 return false;
35396 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
35397 return false;
ebd8d4e8 35398
8b095871
IC
35399 // Validate signature
35400 var sinv = s.invm(this.n);
35401 var u1 = sinv.mul(msg).umod(this.n);
35402 var u2 = sinv.mul(r).umod(this.n);
ebd8d4e8 35403
8b095871
IC
35404 if (!this.curve._maxwellTrick) {
35405 var p = this.g.mulAdd(u1, key.getPublic(), u2);
35406 if (p.isInfinity())
35407 return false;
ebd8d4e8 35408
8b095871
IC
35409 return p.getX().umod(this.n).cmp(r) === 0;
35410 }
ab78acc6 35411
8b095871
IC
35412 // NOTE: Greg Maxwell's trick, inspired by:
35413 // https://git.io/vad3K
ebd8d4e8 35414
8b095871
IC
35415 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
35416 if (p.isInfinity())
35417 return false;
ab78acc6 35418
8b095871
IC
35419 // Compare `p.x` of Jacobian point with `r`,
35420 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
35421 // inverse of `p.z^2`
35422 return p.eqXToP(r);
35423};
ab78acc6 35424
8b095871
IC
35425EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
35426 assert((3 & j) === j, 'The recovery param is more than two bits');
35427 signature = new Signature(signature, enc);
ab78acc6 35428
8b095871
IC
35429 var n = this.n;
35430 var e = new BN(msg);
35431 var r = signature.r;
35432 var s = signature.s;
ab78acc6 35433
8b095871
IC
35434 // A set LSB signifies that the y-coordinate is odd
35435 var isYOdd = j & 1;
35436 var isSecondKey = j >> 1;
35437 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
35438 throw new Error('Unable to find sencond key candinate');
35439
35440 // 1.1. Let x = r + jn.
35441 if (isSecondKey)
35442 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
35443 else
35444 r = this.curve.pointFromX(r, isYOdd);
ab78acc6 35445
8b095871
IC
35446 var rInv = signature.r.invm(n);
35447 var s1 = n.sub(e).mul(rInv).umod(n);
35448 var s2 = s.mul(rInv).umod(n);
ab78acc6 35449
8b095871
IC
35450 // 1.6.1 Compute Q = r^-1 (sR - eG)
35451 // Q = r^-1 (sR + -eG)
35452 return this.g.mulAdd(s1, r, s2);
35453};
ab78acc6 35454
8b095871
IC
35455EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
35456 signature = new Signature(signature, enc);
35457 if (signature.recoveryParam !== null)
35458 return signature.recoveryParam;
ab78acc6 35459
8b095871
IC
35460 for (var i = 0; i < 4; i++) {
35461 var Qprime;
35462 try {
35463 Qprime = this.recoverPubKey(e, signature, i);
35464 } catch (e) {
35465 continue;
ab78acc6 35466 }
ab78acc6 35467
8b095871
IC
35468 if (Qprime.eq(Q))
35469 return i;
35470 }
35471 throw new Error('Unable to find valid recovery factor');
35472};
ebd8d4e8 35473
8b095871
IC
35474},{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
35475'use strict';
ebd8d4e8 35476
8b095871
IC
35477var BN = require('bn.js');
35478var elliptic = require('../../elliptic');
35479var utils = elliptic.utils;
35480var assert = utils.assert;
ebd8d4e8 35481
8b095871
IC
35482function KeyPair(ec, options) {
35483 this.ec = ec;
35484 this.priv = null;
35485 this.pub = null;
ebd8d4e8 35486
8b095871
IC
35487 // KeyPair(ec, { priv: ..., pub: ... })
35488 if (options.priv)
35489 this._importPrivate(options.priv, options.privEnc);
35490 if (options.pub)
35491 this._importPublic(options.pub, options.pubEnc);
35492}
35493module.exports = KeyPair;
ebd8d4e8 35494
8b095871
IC
35495KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
35496 if (pub instanceof KeyPair)
35497 return pub;
ebd8d4e8 35498
8b095871
IC
35499 return new KeyPair(ec, {
35500 pub: pub,
35501 pubEnc: enc
35502 });
35503};
ebd8d4e8 35504
8b095871
IC
35505KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
35506 if (priv instanceof KeyPair)
35507 return priv;
ebd8d4e8 35508
8b095871
IC
35509 return new KeyPair(ec, {
35510 priv: priv,
35511 privEnc: enc
35512 });
35513};
ebd8d4e8 35514
8b095871
IC
35515KeyPair.prototype.validate = function validate() {
35516 var pub = this.getPublic();
ebd8d4e8 35517
8b095871
IC
35518 if (pub.isInfinity())
35519 return { result: false, reason: 'Invalid public key' };
35520 if (!pub.validate())
35521 return { result: false, reason: 'Public key is not a point' };
35522 if (!pub.mul(this.ec.curve.n).isInfinity())
35523 return { result: false, reason: 'Public key * N != O' };
ab78acc6 35524
8b095871
IC
35525 return { result: true, reason: null };
35526};
ebd8d4e8 35527
8b095871
IC
35528KeyPair.prototype.getPublic = function getPublic(compact, enc) {
35529 // compact is optional argument
35530 if (typeof compact === 'string') {
35531 enc = compact;
35532 compact = null;
ebd8d4e8
IC
35533 }
35534
8b095871
IC
35535 if (!this.pub)
35536 this.pub = this.ec.g.mul(this.priv);
ebd8d4e8 35537
8b095871
IC
35538 if (!enc)
35539 return this.pub;
ebd8d4e8 35540
8b095871
IC
35541 return this.pub.encode(enc, compact);
35542};
ebd8d4e8 35543
8b095871
IC
35544KeyPair.prototype.getPrivate = function getPrivate(enc) {
35545 if (enc === 'hex')
35546 return this.priv.toString(16, 2);
35547 else
35548 return this.priv;
35549};
ab78acc6 35550
8b095871
IC
35551KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
35552 this.priv = new BN(key, enc || 16);
ab78acc6 35553
8b095871
IC
35554 // Ensure that the priv won't be bigger than n, otherwise we may fail
35555 // in fixed multiplication method
35556 this.priv = this.priv.umod(this.ec.curve.n);
35557};
ab78acc6 35558
8b095871
IC
35559KeyPair.prototype._importPublic = function _importPublic(key, enc) {
35560 if (key.x || key.y) {
35561 // Montgomery points only have an `x` coordinate.
35562 // Weierstrass/Edwards points on the other hand have both `x` and
35563 // `y` coordinates.
35564 if (this.ec.curve.type === 'mont') {
35565 assert(key.x, 'Need x coordinate');
35566 } else if (this.ec.curve.type === 'short' ||
35567 this.ec.curve.type === 'edwards') {
35568 assert(key.x && key.y, 'Need both x and y coordinate');
35569 }
35570 this.pub = this.ec.curve.point(key.x, key.y);
35571 return;
35572 }
35573 this.pub = this.ec.curve.decodePoint(key, enc);
35574};
ebd8d4e8 35575
8b095871
IC
35576// ECDH
35577KeyPair.prototype.derive = function derive(pub) {
35578 return pub.mul(this.priv).getX();
35579};
ebd8d4e8 35580
8b095871
IC
35581// ECDSA
35582KeyPair.prototype.sign = function sign(msg, enc, options) {
35583 return this.ec.sign(msg, this, enc, options);
35584};
ebd8d4e8 35585
8b095871
IC
35586KeyPair.prototype.verify = function verify(msg, signature) {
35587 return this.ec.verify(msg, signature, this);
35588};
ebd8d4e8 35589
8b095871
IC
35590KeyPair.prototype.inspect = function inspect() {
35591 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
35592 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
35593};
ebd8d4e8 35594
8b095871
IC
35595},{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
35596'use strict';
ebd8d4e8 35597
8b095871 35598var BN = require('bn.js');
ebd8d4e8 35599
8b095871
IC
35600var elliptic = require('../../elliptic');
35601var utils = elliptic.utils;
35602var assert = utils.assert;
ebd8d4e8 35603
8b095871
IC
35604function Signature(options, enc) {
35605 if (options instanceof Signature)
35606 return options;
ebd8d4e8 35607
8b095871
IC
35608 if (this._importDER(options, enc))
35609 return;
ebd8d4e8 35610
8b095871
IC
35611 assert(options.r && options.s, 'Signature without r or s');
35612 this.r = new BN(options.r, 16);
35613 this.s = new BN(options.s, 16);
35614 if (options.recoveryParam === undefined)
35615 this.recoveryParam = null;
35616 else
35617 this.recoveryParam = options.recoveryParam;
35618}
35619module.exports = Signature;
35620
35621function Position() {
35622 this.place = 0;
35623}
35624
35625function getLength(buf, p) {
35626 var initial = buf[p.place++];
35627 if (!(initial & 0x80)) {
35628 return initial;
35629 }
35630 var octetLen = initial & 0xf;
35631 var val = 0;
35632 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
35633 val <<= 8;
35634 val |= buf[off];
35635 }
35636 p.place = off;
35637 return val;
35638}
35639
35640function rmPadding(buf) {
35641 var i = 0;
35642 var len = buf.length - 1;
35643 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
35644 i++;
35645 }
35646 if (i === 0) {
35647 return buf;
35648 }
35649 return buf.slice(i);
35650}
ebd8d4e8 35651
8b095871
IC
35652Signature.prototype._importDER = function _importDER(data, enc) {
35653 data = utils.toArray(data, enc);
35654 var p = new Position();
35655 if (data[p.place++] !== 0x30) {
35656 return false;
35657 }
35658 var len = getLength(data, p);
35659 if ((len + p.place) !== data.length) {
35660 return false;
35661 }
35662 if (data[p.place++] !== 0x02) {
35663 return false;
35664 }
35665 var rlen = getLength(data, p);
35666 var r = data.slice(p.place, rlen + p.place);
35667 p.place += rlen;
35668 if (data[p.place++] !== 0x02) {
35669 return false;
35670 }
35671 var slen = getLength(data, p);
35672 if (data.length !== slen + p.place) {
35673 return false;
35674 }
35675 var s = data.slice(p.place, slen + p.place);
35676 if (r[0] === 0 && (r[1] & 0x80)) {
35677 r = r.slice(1);
35678 }
35679 if (s[0] === 0 && (s[1] & 0x80)) {
35680 s = s.slice(1);
35681 }
ab78acc6 35682
8b095871
IC
35683 this.r = new BN(r);
35684 this.s = new BN(s);
35685 this.recoveryParam = null;
ebd8d4e8 35686
8b095871
IC
35687 return true;
35688};
ab78acc6 35689
8b095871
IC
35690function constructLength(arr, len) {
35691 if (len < 0x80) {
35692 arr.push(len);
35693 return;
35694 }
35695 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
35696 arr.push(octets | 0x80);
35697 while (--octets) {
35698 arr.push((len >>> (octets << 3)) & 0xff);
35699 }
35700 arr.push(len);
35701}
35702
35703Signature.prototype.toDER = function toDER(enc) {
35704 var r = this.r.toArray();
35705 var s = this.s.toArray();
35706
35707 // Pad values
35708 if (r[0] & 0x80)
35709 r = [ 0 ].concat(r);
35710 // Pad values
35711 if (s[0] & 0x80)
35712 s = [ 0 ].concat(s);
35713
35714 r = rmPadding(r);
35715 s = rmPadding(s);
35716
35717 while (!s[0] && !(s[1] & 0x80)) {
35718 s = s.slice(1);
35719 }
35720 var arr = [ 0x02 ];
35721 constructLength(arr, r.length);
35722 arr = arr.concat(r);
35723 arr.push(0x02);
35724 constructLength(arr, s.length);
35725 var backHalf = arr.concat(s);
35726 var res = [ 0x30 ];
35727 constructLength(res, backHalf.length);
35728 res = res.concat(backHalf);
35729 return utils.encode(res, enc);
35730};
ab78acc6 35731
8b095871
IC
35732},{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
35733'use strict';
ebd8d4e8 35734
8b095871
IC
35735var hash = require('hash.js');
35736var elliptic = require('../../elliptic');
35737var utils = elliptic.utils;
35738var assert = utils.assert;
35739var parseBytes = utils.parseBytes;
35740var KeyPair = require('./key');
35741var Signature = require('./signature');
ab78acc6 35742
8b095871
IC
35743function EDDSA(curve) {
35744 assert(curve === 'ed25519', 'only tested with ed25519 so far');
ebd8d4e8 35745
8b095871
IC
35746 if (!(this instanceof EDDSA))
35747 return new EDDSA(curve);
ab78acc6 35748
8b095871
IC
35749 var curve = elliptic.curves[curve].curve;
35750 this.curve = curve;
35751 this.g = curve.g;
35752 this.g.precompute(curve.n.bitLength() + 1);
ebd8d4e8 35753
8b095871
IC
35754 this.pointClass = curve.point().constructor;
35755 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
35756 this.hash = hash.sha512;
35757}
ebd8d4e8 35758
8b095871 35759module.exports = EDDSA;
ebd8d4e8 35760
8b095871
IC
35761/**
35762* @param {Array|String} message - message bytes
35763* @param {Array|String|KeyPair} secret - secret bytes or a keypair
35764* @returns {Signature} - signature
35765*/
35766EDDSA.prototype.sign = function sign(message, secret) {
35767 message = parseBytes(message);
35768 var key = this.keyFromSecret(secret);
35769 var r = this.hashInt(key.messagePrefix(), message);
35770 var R = this.g.mul(r);
35771 var Rencoded = this.encodePoint(R);
35772 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
35773 .mul(key.priv());
35774 var S = r.add(s_).umod(this.curve.n);
35775 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
35776};
ebd8d4e8 35777
8b095871
IC
35778/**
35779* @param {Array} message - message bytes
35780* @param {Array|String|Signature} sig - sig bytes
35781* @param {Array|String|Point|KeyPair} pub - public key
35782* @returns {Boolean} - true if public key matches sig of message
35783*/
35784EDDSA.prototype.verify = function verify(message, sig, pub) {
35785 message = parseBytes(message);
35786 sig = this.makeSignature(sig);
35787 var key = this.keyFromPublic(pub);
35788 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
35789 var SG = this.g.mul(sig.S());
35790 var RplusAh = sig.R().add(key.pub().mul(h));
35791 return RplusAh.eq(SG);
35792};
ebd8d4e8 35793
8b095871
IC
35794EDDSA.prototype.hashInt = function hashInt() {
35795 var hash = this.hash();
35796 for (var i = 0; i < arguments.length; i++)
35797 hash.update(arguments[i]);
35798 return utils.intFromLE(hash.digest()).umod(this.curve.n);
35799};
ebd8d4e8 35800
8b095871
IC
35801EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
35802 return KeyPair.fromPublic(this, pub);
35803};
ebd8d4e8 35804
8b095871
IC
35805EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
35806 return KeyPair.fromSecret(this, secret);
35807};
35808
35809EDDSA.prototype.makeSignature = function makeSignature(sig) {
35810 if (sig instanceof Signature)
35811 return sig;
35812 return new Signature(this, sig);
35813};
ebd8d4e8
IC
35814
35815/**
8b095871
IC
35816* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
35817*
35818* EDDSA defines methods for encoding and decoding points and integers. These are
35819* helper convenience methods, that pass along to utility functions implied
35820* parameters.
35821*
35822*/
35823EDDSA.prototype.encodePoint = function encodePoint(point) {
35824 var enc = point.getY().toArray('le', this.encodingLength);
35825 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
35826 return enc;
35827};
ebd8d4e8 35828
8b095871
IC
35829EDDSA.prototype.decodePoint = function decodePoint(bytes) {
35830 bytes = utils.parseBytes(bytes);
ebd8d4e8 35831
8b095871
IC
35832 var lastIx = bytes.length - 1;
35833 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
35834 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
ebd8d4e8 35835
8b095871
IC
35836 var y = utils.intFromLE(normed);
35837 return this.curve.pointFromY(y, xIsOdd);
35838};
ebd8d4e8 35839
8b095871
IC
35840EDDSA.prototype.encodeInt = function encodeInt(num) {
35841 return num.toArray('le', this.encodingLength);
35842};
ebd8d4e8 35843
8b095871
IC
35844EDDSA.prototype.decodeInt = function decodeInt(bytes) {
35845 return utils.intFromLE(bytes);
35846};
ebd8d4e8 35847
8b095871
IC
35848EDDSA.prototype.isPoint = function isPoint(val) {
35849 return val instanceof this.pointClass;
35850};
ebd8d4e8 35851
8b095871
IC
35852},{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
35853'use strict';
ebd8d4e8 35854
8b095871
IC
35855var elliptic = require('../../elliptic');
35856var utils = elliptic.utils;
35857var assert = utils.assert;
35858var parseBytes = utils.parseBytes;
35859var cachedProperty = utils.cachedProperty;
ebd8d4e8 35860
8b095871
IC
35861/**
35862* @param {EDDSA} eddsa - instance
35863* @param {Object} params - public/private key parameters
35864*
35865* @param {Array<Byte>} [params.secret] - secret seed bytes
35866* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
35867* @param {Array<Byte>} [params.pub] - public key point encoded as bytes
35868*
35869*/
35870function KeyPair(eddsa, params) {
35871 this.eddsa = eddsa;
35872 this._secret = parseBytes(params.secret);
35873 if (eddsa.isPoint(params.pub))
35874 this._pub = params.pub;
35875 else
35876 this._pubBytes = parseBytes(params.pub);
ebd8d4e8
IC
35877}
35878
8b095871
IC
35879KeyPair.fromPublic = function fromPublic(eddsa, pub) {
35880 if (pub instanceof KeyPair)
35881 return pub;
35882 return new KeyPair(eddsa, { pub: pub });
35883};
ebd8d4e8 35884
8b095871
IC
35885KeyPair.fromSecret = function fromSecret(eddsa, secret) {
35886 if (secret instanceof KeyPair)
35887 return secret;
35888 return new KeyPair(eddsa, { secret: secret });
35889};
ebd8d4e8 35890
8b095871
IC
35891KeyPair.prototype.secret = function secret() {
35892 return this._secret;
35893};
ebd8d4e8 35894
8b095871
IC
35895cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
35896 return this.eddsa.encodePoint(this.pub());
35897});
ebd8d4e8 35898
8b095871
IC
35899cachedProperty(KeyPair, 'pub', function pub() {
35900 if (this._pubBytes)
35901 return this.eddsa.decodePoint(this._pubBytes);
35902 return this.eddsa.g.mul(this.priv());
35903});
ebd8d4e8 35904
8b095871
IC
35905cachedProperty(KeyPair, 'privBytes', function privBytes() {
35906 var eddsa = this.eddsa;
35907 var hash = this.hash();
35908 var lastIx = eddsa.encodingLength - 1;
ebd8d4e8 35909
8b095871
IC
35910 var a = hash.slice(0, eddsa.encodingLength);
35911 a[0] &= 248;
35912 a[lastIx] &= 127;
35913 a[lastIx] |= 64;
ebd8d4e8 35914
8b095871
IC
35915 return a;
35916});
ebd8d4e8 35917
8b095871
IC
35918cachedProperty(KeyPair, 'priv', function priv() {
35919 return this.eddsa.decodeInt(this.privBytes());
35920});
ebd8d4e8 35921
8b095871
IC
35922cachedProperty(KeyPair, 'hash', function hash() {
35923 return this.eddsa.hash().update(this.secret()).digest();
35924});
ebd8d4e8 35925
8b095871
IC
35926cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
35927 return this.hash().slice(this.eddsa.encodingLength);
35928});
ebd8d4e8 35929
8b095871
IC
35930KeyPair.prototype.sign = function sign(message) {
35931 assert(this._secret, 'KeyPair can only verify');
35932 return this.eddsa.sign(message, this);
35933};
ebd8d4e8 35934
8b095871
IC
35935KeyPair.prototype.verify = function verify(message, sig) {
35936 return this.eddsa.verify(message, sig, this);
35937};
ebd8d4e8 35938
8b095871
IC
35939KeyPair.prototype.getSecret = function getSecret(enc) {
35940 assert(this._secret, 'KeyPair is public only');
35941 return utils.encode(this.secret(), enc);
35942};
ebd8d4e8 35943
8b095871
IC
35944KeyPair.prototype.getPublic = function getPublic(enc) {
35945 return utils.encode(this.pubBytes(), enc);
35946};
ebd8d4e8 35947
8b095871 35948module.exports = KeyPair;
ebd8d4e8 35949
8b095871
IC
35950},{"../../elliptic":39}],51:[function(require,module,exports){
35951'use strict';
ebd8d4e8 35952
8b095871
IC
35953var BN = require('bn.js');
35954var elliptic = require('../../elliptic');
35955var utils = elliptic.utils;
35956var assert = utils.assert;
35957var cachedProperty = utils.cachedProperty;
35958var parseBytes = utils.parseBytes;
ebd8d4e8 35959
8b095871
IC
35960/**
35961* @param {EDDSA} eddsa - eddsa instance
35962* @param {Array<Bytes>|Object} sig -
35963* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
35964* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
35965* @param {Array<Bytes>} [sig.Rencoded] - R point encoded
35966* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
35967*/
35968function Signature(eddsa, sig) {
35969 this.eddsa = eddsa;
ebd8d4e8 35970
8b095871
IC
35971 if (typeof sig !== 'object')
35972 sig = parseBytes(sig);
ebd8d4e8 35973
8b095871
IC
35974 if (Array.isArray(sig)) {
35975 sig = {
35976 R: sig.slice(0, eddsa.encodingLength),
35977 S: sig.slice(eddsa.encodingLength)
35978 };
ab78acc6 35979 }
ebd8d4e8 35980
8b095871 35981 assert(sig.R && sig.S, 'Signature without R or S');
ebd8d4e8 35982
8b095871
IC
35983 if (eddsa.isPoint(sig.R))
35984 this._R = sig.R;
35985 if (sig.S instanceof BN)
35986 this._S = sig.S;
35987
35988 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
35989 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
ebd8d4e8
IC
35990}
35991
8b095871
IC
35992cachedProperty(Signature, 'S', function S() {
35993 return this.eddsa.decodeInt(this.Sencoded());
35994});
ab78acc6 35995
8b095871
IC
35996cachedProperty(Signature, 'R', function R() {
35997 return this.eddsa.decodePoint(this.Rencoded());
35998});
ebd8d4e8 35999
8b095871
IC
36000cachedProperty(Signature, 'Rencoded', function Rencoded() {
36001 return this.eddsa.encodePoint(this.R());
36002});
ebd8d4e8 36003
8b095871
IC
36004cachedProperty(Signature, 'Sencoded', function Sencoded() {
36005 return this.eddsa.encodeInt(this.S());
36006});
ebd8d4e8 36007
8b095871
IC
36008Signature.prototype.toBytes = function toBytes() {
36009 return this.Rencoded().concat(this.Sencoded());
36010};
ebd8d4e8 36011
8b095871
IC
36012Signature.prototype.toHex = function toHex() {
36013 return utils.encode(this.toBytes(), 'hex').toUpperCase();
36014};
ebd8d4e8 36015
8b095871 36016module.exports = Signature;
ebd8d4e8 36017
8b095871
IC
36018},{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
36019'use strict';
ebd8d4e8 36020
8b095871
IC
36021var hash = require('hash.js');
36022var elliptic = require('../elliptic');
36023var utils = elliptic.utils;
36024var assert = utils.assert;
ebd8d4e8 36025
8b095871
IC
36026function HmacDRBG(options) {
36027 if (!(this instanceof HmacDRBG))
36028 return new HmacDRBG(options);
36029 this.hash = options.hash;
36030 this.predResist = !!options.predResist;
ab78acc6 36031
8b095871
IC
36032 this.outLen = this.hash.outSize;
36033 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
ab78acc6 36034
8b095871
IC
36035 this.reseed = null;
36036 this.reseedInterval = null;
36037 this.K = null;
36038 this.V = null;
ebd8d4e8 36039
8b095871
IC
36040 var entropy = utils.toArray(options.entropy, options.entropyEnc);
36041 var nonce = utils.toArray(options.nonce, options.nonceEnc);
36042 var pers = utils.toArray(options.pers, options.persEnc);
36043 assert(entropy.length >= (this.minEntropy / 8),
36044 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
36045 this._init(entropy, nonce, pers);
ebd8d4e8 36046}
8b095871 36047module.exports = HmacDRBG;
ebd8d4e8 36048
8b095871
IC
36049HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
36050 var seed = entropy.concat(nonce).concat(pers);
ebd8d4e8 36051
8b095871
IC
36052 this.K = new Array(this.outLen / 8);
36053 this.V = new Array(this.outLen / 8);
36054 for (var i = 0; i < this.V.length; i++) {
36055 this.K[i] = 0x00;
36056 this.V[i] = 0x01;
36057 }
ebd8d4e8 36058
8b095871
IC
36059 this._update(seed);
36060 this.reseed = 1;
36061 this.reseedInterval = 0x1000000000000; // 2^48
36062};
ebd8d4e8 36063
8b095871
IC
36064HmacDRBG.prototype._hmac = function hmac() {
36065 return new hash.hmac(this.hash, this.K);
36066};
ebd8d4e8 36067
8b095871
IC
36068HmacDRBG.prototype._update = function update(seed) {
36069 var kmac = this._hmac()
36070 .update(this.V)
36071 .update([ 0x00 ]);
36072 if (seed)
36073 kmac = kmac.update(seed);
36074 this.K = kmac.digest();
36075 this.V = this._hmac().update(this.V).digest();
36076 if (!seed)
36077 return;
36078
36079 this.K = this._hmac()
36080 .update(this.V)
36081 .update([ 0x01 ])
36082 .update(seed)
36083 .digest();
36084 this.V = this._hmac().update(this.V).digest();
36085};
36086
36087HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
36088 // Optional entropy enc
36089 if (typeof entropyEnc !== 'string') {
36090 addEnc = add;
36091 add = entropyEnc;
36092 entropyEnc = null;
ebd8d4e8 36093 }
ebd8d4e8 36094
8b095871
IC
36095 entropy = utils.toBuffer(entropy, entropyEnc);
36096 add = utils.toBuffer(add, addEnc);
ebd8d4e8 36097
8b095871
IC
36098 assert(entropy.length >= (this.minEntropy / 8),
36099 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
ebd8d4e8 36100
8b095871
IC
36101 this._update(entropy.concat(add || []));
36102 this.reseed = 1;
36103};
ebd8d4e8 36104
8b095871
IC
36105HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
36106 if (this.reseed > this.reseedInterval)
36107 throw new Error('Reseed is required');
ebd8d4e8 36108
8b095871
IC
36109 // Optional encoding
36110 if (typeof enc !== 'string') {
36111 addEnc = add;
36112 add = enc;
36113 enc = null;
36114 }
ebd8d4e8 36115
8b095871
IC
36116 // Optional additional data
36117 if (add) {
36118 add = utils.toArray(add, addEnc);
36119 this._update(add);
ebd8d4e8
IC
36120 }
36121
8b095871
IC
36122 var temp = [];
36123 while (temp.length < len) {
36124 this.V = this._hmac().update(this.V).digest();
36125 temp = temp.concat(this.V);
ebd8d4e8
IC
36126 }
36127
8b095871
IC
36128 var res = temp.slice(0, len);
36129 this._update(add);
36130 this.reseed++;
36131 return utils.encode(res, enc);
36132};
ebd8d4e8 36133
8b095871
IC
36134},{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
36135module.exports = {
36136 doubles: {
36137 step: 4,
36138 points: [
36139 [
36140 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
36141 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
36142 ],
36143 [
36144 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
36145 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
36146 ],
36147 [
36148 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
36149 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
36150 ],
36151 [
36152 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
36153 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
36154 ],
36155 [
36156 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
36157 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
36158 ],
36159 [
36160 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
36161 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
36162 ],
36163 [
36164 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
36165 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
36166 ],
36167 [
36168 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
36169 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
36170 ],
36171 [
36172 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
36173 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
36174 ],
36175 [
36176 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
36177 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
36178 ],
36179 [
36180 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
36181 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
36182 ],
36183 [
36184 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
36185 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
36186 ],
36187 [
36188 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
36189 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
36190 ],
36191 [
36192 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
36193 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
36194 ],
36195 [
36196 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
36197 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
36198 ],
36199 [
36200 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
36201 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
36202 ],
36203 [
36204 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
36205 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
36206 ],
36207 [
36208 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
36209 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
36210 ],
36211 [
36212 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
36213 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
36214 ],
36215 [
36216 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
36217 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
36218 ],
36219 [
36220 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
36221 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
36222 ],
36223 [
36224 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
36225 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
36226 ],
36227 [
36228 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
36229 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
36230 ],
36231 [
36232 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
36233 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
36234 ],
36235 [
36236 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
36237 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
36238 ],
36239 [
36240 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
36241 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
36242 ],
36243 [
36244 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
36245 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
36246 ],
36247 [
36248 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
36249 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
36250 ],
36251 [
36252 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
36253 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
36254 ],
36255 [
36256 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
36257 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
36258 ],
36259 [
36260 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
36261 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
36262 ],
36263 [
36264 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
36265 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
36266 ],
36267 [
36268 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
36269 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
36270 ],
36271 [
36272 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
36273 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
36274 ],
36275 [
36276 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
36277 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
36278 ],
36279 [
36280 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
36281 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
36282 ],
36283 [
36284 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
36285 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
36286 ],
36287 [
36288 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
36289 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
36290 ],
36291 [
36292 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
36293 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
36294 ],
36295 [
36296 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
36297 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
36298 ],
36299 [
36300 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
36301 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
36302 ],
36303 [
36304 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
36305 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
36306 ],
36307 [
36308 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
36309 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
36310 ],
36311 [
36312 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
36313 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
36314 ],
36315 [
36316 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
36317 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
36318 ],
36319 [
36320 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
36321 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
36322 ],
36323 [
36324 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
36325 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
36326 ],
36327 [
36328 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
36329 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
36330 ],
36331 [
36332 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
36333 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
36334 ],
36335 [
36336 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
36337 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
36338 ],
36339 [
36340 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
36341 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
36342 ],
36343 [
36344 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
36345 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
36346 ],
36347 [
36348 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
36349 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
36350 ],
36351 [
36352 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
36353 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
36354 ],
36355 [
36356 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
36357 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
36358 ],
36359 [
36360 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
36361 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
36362 ],
36363 [
36364 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
36365 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
36366 ],
36367 [
36368 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
36369 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
36370 ],
36371 [
36372 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
36373 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
36374 ],
36375 [
36376 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
36377 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
36378 ],
36379 [
36380 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
36381 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
36382 ],
36383 [
36384 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
36385 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
36386 ],
36387 [
36388 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
36389 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
36390 ],
36391 [
36392 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
36393 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
36394 ],
36395 [
36396 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
36397 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
36398 ]
36399 ]
36400 },
36401 naf: {
36402 wnd: 7,
36403 points: [
36404 [
36405 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
36406 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
36407 ],
36408 [
36409 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
36410 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
36411 ],
36412 [
36413 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
36414 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
36415 ],
36416 [
36417 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
36418 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
36419 ],
36420 [
36421 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
36422 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
36423 ],
36424 [
36425 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
36426 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
36427 ],
36428 [
36429 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
36430 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
36431 ],
36432 [
36433 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
36434 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
36435 ],
36436 [
36437 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
36438 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
36439 ],
36440 [
36441 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
36442 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
36443 ],
36444 [
36445 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
36446 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
36447 ],
36448 [
36449 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
36450 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
36451 ],
36452 [
36453 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
36454 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
36455 ],
36456 [
36457 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
36458 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
36459 ],
36460 [
36461 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
36462 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
36463 ],
36464 [
36465 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
36466 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
36467 ],
36468 [
36469 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
36470 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
36471 ],
36472 [
36473 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
36474 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
36475 ],
36476 [
36477 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
36478 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
36479 ],
36480 [
36481 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
36482 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
36483 ],
36484 [
36485 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
36486 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
36487 ],
36488 [
36489 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
36490 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
36491 ],
36492 [
36493 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
36494 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
36495 ],
36496 [
36497 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
36498 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
36499 ],
36500 [
36501 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
36502 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
36503 ],
36504 [
36505 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
36506 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
36507 ],
36508 [
36509 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
36510 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
36511 ],
36512 [
36513 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
36514 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
36515 ],
36516 [
36517 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
36518 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
36519 ],
36520 [
36521 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
36522 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
36523 ],
36524 [
36525 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
36526 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
36527 ],
36528 [
36529 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
36530 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
36531 ],
36532 [
36533 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
36534 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
36535 ],
36536 [
36537 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
36538 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
36539 ],
36540 [
36541 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
36542 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
36543 ],
36544 [
36545 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
36546 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
36547 ],
36548 [
36549 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
36550 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
36551 ],
36552 [
36553 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
36554 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
36555 ],
36556 [
36557 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
36558 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
36559 ],
36560 [
36561 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
36562 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
36563 ],
36564 [
36565 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
36566 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
36567 ],
36568 [
36569 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
36570 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
36571 ],
36572 [
36573 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
36574 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
36575 ],
36576 [
36577 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
36578 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
36579 ],
36580 [
36581 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
36582 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
36583 ],
36584 [
36585 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
36586 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
36587 ],
36588 [
36589 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
36590 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
36591 ],
36592 [
36593 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
36594 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
36595 ],
36596 [
36597 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
36598 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
36599 ],
36600 [
36601 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
36602 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
36603 ],
36604 [
36605 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
36606 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
36607 ],
36608 [
36609 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
36610 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
36611 ],
36612 [
36613 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
36614 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
36615 ],
36616 [
36617 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
36618 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
36619 ],
36620 [
36621 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
36622 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
36623 ],
36624 [
36625 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
36626 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
36627 ],
36628 [
36629 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
36630 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
36631 ],
36632 [
36633 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
36634 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
36635 ],
36636 [
36637 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
36638 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
36639 ],
36640 [
36641 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
36642 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
36643 ],
36644 [
36645 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
36646 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
36647 ],
36648 [
36649 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
36650 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
36651 ],
36652 [
36653 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
36654 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
36655 ],
36656 [
36657 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
36658 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
36659 ],
36660 [
36661 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
36662 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
36663 ],
36664 [
36665 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
36666 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
36667 ],
36668 [
36669 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
36670 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
36671 ],
36672 [
36673 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
36674 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
36675 ],
36676 [
36677 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
36678 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
36679 ],
36680 [
36681 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
36682 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
36683 ],
36684 [
36685 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
36686 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
36687 ],
36688 [
36689 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
36690 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
36691 ],
36692 [
36693 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
36694 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
36695 ],
36696 [
36697 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
36698 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
36699 ],
36700 [
36701 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
36702 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
36703 ],
36704 [
36705 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
36706 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
36707 ],
36708 [
36709 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
36710 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
36711 ],
36712 [
36713 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
36714 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
36715 ],
36716 [
36717 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
36718 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
36719 ],
36720 [
36721 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
36722 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
36723 ],
36724 [
36725 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
36726 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
36727 ],
36728 [
36729 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
36730 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
36731 ],
36732 [
36733 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
36734 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
36735 ],
36736 [
36737 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
36738 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
36739 ],
36740 [
36741 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
36742 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
36743 ],
36744 [
36745 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
36746 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
36747 ],
36748 [
36749 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
36750 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
36751 ],
36752 [
36753 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
36754 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
36755 ],
36756 [
36757 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
36758 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
36759 ],
36760 [
36761 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
36762 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
36763 ],
36764 [
36765 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
36766 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
36767 ],
36768 [
36769 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
36770 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
36771 ],
36772 [
36773 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
36774 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
36775 ],
36776 [
36777 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
36778 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
36779 ],
36780 [
36781 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
36782 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
36783 ],
36784 [
36785 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
36786 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
36787 ],
36788 [
36789 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
36790 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
36791 ],
36792 [
36793 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
36794 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
36795 ],
36796 [
36797 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
36798 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
36799 ],
36800 [
36801 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
36802 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
36803 ],
36804 [
36805 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
36806 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
36807 ],
36808 [
36809 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
36810 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
36811 ],
36812 [
36813 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
36814 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
36815 ],
36816 [
36817 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
36818 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
36819 ],
36820 [
36821 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
36822 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
36823 ],
36824 [
36825 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
36826 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
36827 ],
36828 [
36829 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
36830 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
36831 ],
36832 [
36833 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
36834 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
36835 ],
36836 [
36837 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
36838 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
36839 ],
36840 [
36841 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
36842 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
36843 ],
36844 [
36845 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
36846 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
36847 ],
36848 [
36849 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
36850 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
36851 ],
36852 [
36853 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
36854 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
36855 ],
36856 [
36857 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
36858 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
36859 ],
36860 [
36861 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
36862 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
36863 ],
36864 [
36865 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
36866 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
36867 ],
36868 [
36869 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
36870 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
36871 ],
36872 [
36873 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
36874 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
36875 ],
36876 [
36877 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
36878 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
36879 ],
36880 [
36881 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
36882 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
36883 ],
36884 [
36885 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
36886 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
36887 ],
36888 [
36889 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
36890 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
36891 ],
36892 [
36893 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
36894 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
36895 ],
36896 [
36897 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
36898 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
36899 ],
36900 [
36901 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
36902 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
36903 ],
36904 [
36905 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
36906 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
36907 ],
36908 [
36909 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
36910 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
36911 ]
36912 ]
36913 }
36914};
ebd8d4e8 36915
8b095871
IC
36916},{}],54:[function(require,module,exports){
36917'use strict';
ebd8d4e8 36918
8b095871
IC
36919var utils = exports;
36920var BN = require('bn.js');
ebd8d4e8 36921
8b095871
IC
36922utils.assert = function assert(val, msg) {
36923 if (!val)
36924 throw new Error(msg || 'Assertion failed');
36925};
ebd8d4e8 36926
8b095871
IC
36927function toArray(msg, enc) {
36928 if (Array.isArray(msg))
36929 return msg.slice();
36930 if (!msg)
36931 return [];
36932 var res = [];
36933 if (typeof msg !== 'string') {
36934 for (var i = 0; i < msg.length; i++)
36935 res[i] = msg[i] | 0;
36936 return res;
36937 }
36938 if (!enc) {
36939 for (var i = 0; i < msg.length; i++) {
36940 var c = msg.charCodeAt(i);
36941 var hi = c >> 8;
36942 var lo = c & 0xff;
36943 if (hi)
36944 res.push(hi, lo);
36945 else
36946 res.push(lo);
36947 }
36948 } else if (enc === 'hex') {
36949 msg = msg.replace(/[^a-z0-9]+/ig, '');
36950 if (msg.length % 2 !== 0)
36951 msg = '0' + msg;
36952 for (var i = 0; i < msg.length; i += 2)
36953 res.push(parseInt(msg[i] + msg[i + 1], 16));
ebd8d4e8 36954 }
8b095871 36955 return res;
ebd8d4e8 36956}
8b095871 36957utils.toArray = toArray;
ebd8d4e8 36958
8b095871
IC
36959function zero2(word) {
36960 if (word.length === 1)
36961 return '0' + word;
36962 else
36963 return word;
36964}
36965utils.zero2 = zero2;
ab78acc6 36966
8b095871
IC
36967function toHex(msg) {
36968 var res = '';
36969 for (var i = 0; i < msg.length; i++)
36970 res += zero2(msg[i].toString(16));
36971 return res;
36972}
36973utils.toHex = toHex;
ebd8d4e8 36974
8b095871
IC
36975utils.encode = function encode(arr, enc) {
36976 if (enc === 'hex')
36977 return toHex(arr);
36978 else
36979 return arr;
36980};
ebd8d4e8 36981
8b095871
IC
36982// Represent num in a w-NAF form
36983function getNAF(num, w) {
36984 var naf = [];
36985 var ws = 1 << (w + 1);
36986 var k = num.clone();
36987 while (k.cmpn(1) >= 0) {
36988 var z;
36989 if (k.isOdd()) {
36990 var mod = k.andln(ws - 1);
36991 if (mod > (ws >> 1) - 1)
36992 z = (ws >> 1) - mod;
36993 else
36994 z = mod;
36995 k.isubn(z);
36996 } else {
36997 z = 0;
36998 }
36999 naf.push(z);
37000
37001 // Optimization, shift by word if possible
37002 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
37003 for (var i = 1; i < shift; i++)
37004 naf.push(0);
37005 k.iushrn(shift);
37006 }
37007
37008 return naf;
37009}
37010utils.getNAF = getNAF;
37011
37012// Represent k1, k2 in a Joint Sparse Form
37013function getJSF(k1, k2) {
37014 var jsf = [
37015 [],
37016 []
37017 ];
37018
37019 k1 = k1.clone();
37020 k2 = k2.clone();
37021 var d1 = 0;
37022 var d2 = 0;
37023 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
37024
37025 // First phase
37026 var m14 = (k1.andln(3) + d1) & 3;
37027 var m24 = (k2.andln(3) + d2) & 3;
37028 if (m14 === 3)
37029 m14 = -1;
37030 if (m24 === 3)
37031 m24 = -1;
37032 var u1;
37033 if ((m14 & 1) === 0) {
37034 u1 = 0;
37035 } else {
37036 var m8 = (k1.andln(7) + d1) & 7;
37037 if ((m8 === 3 || m8 === 5) && m24 === 2)
37038 u1 = -m14;
37039 else
37040 u1 = m14;
37041 }
37042 jsf[0].push(u1);
ebd8d4e8 37043
8b095871
IC
37044 var u2;
37045 if ((m24 & 1) === 0) {
37046 u2 = 0;
37047 } else {
37048 var m8 = (k2.andln(7) + d2) & 7;
37049 if ((m8 === 3 || m8 === 5) && m14 === 2)
37050 u2 = -m24;
37051 else
37052 u2 = m24;
37053 }
37054 jsf[1].push(u2);
ebd8d4e8 37055
8b095871
IC
37056 // Second phase
37057 if (2 * d1 === u1 + 1)
37058 d1 = 1 - d1;
37059 if (2 * d2 === u2 + 1)
37060 d2 = 1 - d2;
37061 k1.iushrn(1);
37062 k2.iushrn(1);
37063 }
ebd8d4e8 37064
8b095871
IC
37065 return jsf;
37066}
37067utils.getJSF = getJSF;
ab78acc6 37068
8b095871
IC
37069function cachedProperty(obj, name, computer) {
37070 var key = '_' + name;
37071 obj.prototype[name] = function cachedProperty() {
37072 return this[key] !== undefined ? this[key] :
37073 this[key] = computer.call(this);
37074 };
37075}
37076utils.cachedProperty = cachedProperty;
ebd8d4e8 37077
8b095871
IC
37078function parseBytes(bytes) {
37079 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
37080 bytes;
37081}
37082utils.parseBytes = parseBytes;
ebd8d4e8 37083
8b095871
IC
37084function intFromLE(bytes) {
37085 return new BN(bytes, 'hex', 'le');
37086}
37087utils.intFromLE = intFromLE;
ebd8d4e8 37088
8b095871
IC
37089
37090},{"bn.js":33}],55:[function(require,module,exports){
37091module.exports={
37092 "_args": [
37093 [
37094 {
37095 "raw": "elliptic@^6.2.3",
37096 "scope": null,
37097 "escapedName": "elliptic",
37098 "name": "elliptic",
37099 "rawSpec": "^6.2.3",
37100 "spec": ">=6.2.3 <7.0.0",
37101 "type": "range"
37102 },
37103 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
37104 ]
37105 ],
37106 "_from": "elliptic@>=6.2.3 <7.0.0",
37107 "_id": "elliptic@6.3.3",
37108 "_inCache": true,
37109 "_location": "/elliptic",
37110 "_nodeVersion": "7.0.0",
37111 "_npmOperationalInternal": {
37112 "host": "packages-18-east.internal.npmjs.com",
37113 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
37114 },
37115 "_npmUser": {
37116 "name": "indutny",
37117 "email": "fedor@indutny.com"
37118 },
37119 "_npmVersion": "3.10.8",
37120 "_phantomChildren": {},
37121 "_requested": {
37122 "raw": "elliptic@^6.2.3",
37123 "scope": null,
37124 "escapedName": "elliptic",
37125 "name": "elliptic",
37126 "rawSpec": "^6.2.3",
37127 "spec": ">=6.2.3 <7.0.0",
37128 "type": "range"
37129 },
37130 "_requiredBy": [
37131 "/browserify-sign",
37132 "/create-ecdh",
37133 "/secp256k1"
37134 ],
37135 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
37136 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37137 "_shrinkwrap": null,
37138 "_spec": "elliptic@^6.2.3",
37139 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
37140 "author": {
37141 "name": "Fedor Indutny",
37142 "email": "fedor@indutny.com"
37143 },
37144 "bugs": {
37145 "url": "https://github.com/indutny/elliptic/issues"
37146 },
37147 "dependencies": {
37148 "bn.js": "^4.4.0",
37149 "brorand": "^1.0.1",
37150 "hash.js": "^1.0.0",
37151 "inherits": "^2.0.1"
37152 },
37153 "description": "EC cryptography",
37154 "devDependencies": {
37155 "brfs": "^1.4.3",
37156 "coveralls": "^2.11.3",
37157 "grunt": "^0.4.5",
37158 "grunt-browserify": "^5.0.0",
37159 "grunt-cli": "^1.2.0",
37160 "grunt-contrib-connect": "^1.0.0",
37161 "grunt-contrib-copy": "^1.0.0",
37162 "grunt-contrib-uglify": "^1.0.1",
37163 "grunt-mocha-istanbul": "^3.0.1",
37164 "grunt-saucelabs": "^8.6.2",
37165 "istanbul": "^0.4.2",
37166 "jscs": "^2.9.0",
37167 "jshint": "^2.6.0",
37168 "mocha": "^2.1.0"
37169 },
37170 "directories": {},
37171 "dist": {
37172 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
37173 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
37174 },
37175 "files": [
37176 "lib"
37177 ],
37178 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
37179 "homepage": "https://github.com/indutny/elliptic",
37180 "keywords": [
37181 "EC",
37182 "Elliptic",
37183 "curve",
37184 "Cryptography"
37185 ],
37186 "license": "MIT",
37187 "main": "lib/elliptic.js",
37188 "maintainers": [
37189 {
37190 "name": "indutny",
37191 "email": "fedor@indutny.com"
37192 }
37193 ],
37194 "name": "elliptic",
37195 "optionalDependencies": {},
37196 "readme": "ERROR: No README data found!",
37197 "repository": {
37198 "type": "git",
37199 "url": "git+ssh://git@github.com/indutny/elliptic.git"
37200 },
37201 "scripts": {
37202 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37203 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
37204 "lint": "npm run jscs && npm run jshint",
37205 "test": "npm run lint && npm run unit",
37206 "unit": "istanbul test _mocha --reporter=spec test/index.js",
37207 "version": "grunt dist && git add dist/"
37208 },
37209 "version": "6.3.3"
ebd8d4e8
IC
37210}
37211
8b095871
IC
37212},{}],56:[function(require,module,exports){
37213(function (Buffer){
37214'use strict';
ab78acc6 37215
8b095871
IC
37216var isHexPrefixed = require('is-hex-prefixed');
37217var stripHexPrefix = require('strip-hex-prefix');
ebd8d4e8 37218
8b095871
IC
37219/**
37220 * Pads a `String` to have an even length
37221 * @param {String} value
37222 * @return {String} output
37223 */
37224function padToEven(value) {
37225 var a = value; // eslint-disable-line
37226
37227 if (typeof a !== 'string') {
37228 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
37229 }
37230
37231 if (a.length % 2) {
37232 a = '0' + a;
37233 }
37234
37235 return a;
ebd8d4e8
IC
37236}
37237
8b095871
IC
37238/**
37239 * Converts a `Number` into a hex `String`
37240 * @param {Number} i
37241 * @return {String}
37242 */
37243function intToHex(i) {
37244 var hex = i.toString(16); // eslint-disable-line
ebd8d4e8 37245
8b095871
IC
37246 return '0x' + padToEven(hex);
37247}
ab78acc6 37248
8b095871
IC
37249/**
37250 * Converts an `Number` to a `Buffer`
37251 * @param {Number} i
37252 * @return {Buffer}
37253 */
37254function intToBuffer(i) {
37255 var hex = intToHex(i);
ab78acc6 37256
8b095871
IC
37257 return new Buffer(hex.slice(2), 'hex');
37258}
ebd8d4e8 37259
8b095871
IC
37260/**
37261 * Get the binary size of a string
37262 * @param {String} str
37263 * @return {Number}
37264 */
37265function getBinarySize(str) {
37266 if (typeof str !== 'string') {
37267 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
37268 }
ebd8d4e8 37269
8b095871
IC
37270 return Buffer.byteLength(str, 'utf8');
37271}
37272
37273/**
37274 * Returns TRUE if the first specified array contains all elements
37275 * from the second one. FALSE otherwise.
37276 *
37277 * @param {array} superset
37278 * @param {array} subset
37279 *
37280 * @returns {boolean}
37281 */
37282function arrayContainsArray(superset, subset, some) {
37283 if (Array.isArray(superset) !== true) {
37284 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
37285 }
37286 if (Array.isArray(subset) !== true) {
37287 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
ebd8d4e8
IC
37288 }
37289
8b095871
IC
37290 return subset[Boolean(some) && 'some' || 'every'](function (value) {
37291 return superset.indexOf(value) >= 0;
37292 });
ebd8d4e8
IC
37293}
37294
8b095871
IC
37295/**
37296 * Should be called to get utf8 from it's hex representation
37297 *
37298 * @method toUtf8
37299 * @param {String} string in hex
37300 * @returns {String} ascii string representation of hex value
37301 */
37302function toUtf8(hex) {
37303 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
ebd8d4e8 37304
8b095871
IC
37305 return bufferValue.toString('utf8');
37306}
ab78acc6 37307
8b095871
IC
37308/**
37309 * Should be called to get ascii from it's hex representation
37310 *
37311 * @method toAscii
37312 * @param {String} string in hex
37313 * @returns {String} ascii string representation of hex value
37314 */
37315function toAscii(hex) {
37316 var str = ''; // eslint-disable-line
37317 var i = 0,
37318 l = hex.length; // eslint-disable-line
ebd8d4e8 37319
8b095871
IC
37320 if (hex.substring(0, 2) === '0x') {
37321 i = 2;
37322 }
ebd8d4e8 37323
8b095871
IC
37324 for (; i < l; i += 2) {
37325 var code = parseInt(hex.substr(i, 2), 16);
37326 str += String.fromCharCode(code);
ebd8d4e8 37327 }
8b095871
IC
37328
37329 return str;
ebd8d4e8
IC
37330}
37331
8b095871
IC
37332/**
37333 * Should be called to get hex representation (prefixed by 0x) of utf8 string
37334 *
37335 * @method fromUtf8
37336 * @param {String} string
37337 * @param {Number} optional padding
37338 * @returns {String} hex representation of input string
37339 */
37340function fromUtf8(stringValue) {
37341 var str = new Buffer(stringValue, 'utf8');
ebd8d4e8 37342
8b095871
IC
37343 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
37344}
ab78acc6 37345
8b095871
IC
37346/**
37347 * Should be called to get hex representation (prefixed by 0x) of ascii string
37348 *
37349 * @method fromAscii
37350 * @param {String} string
37351 * @param {Number} optional padding
37352 * @returns {String} hex representation of input string
37353 */
37354function fromAscii(stringValue) {
37355 var hex = ''; // eslint-disable-line
37356 for (var i = 0; i < stringValue.length; i++) {
37357 // eslint-disable-line
37358 var code = stringValue.charCodeAt(i);
37359 var n = code.toString(16);
37360 hex += n.length < 2 ? '0' + n : n;
37361 }
ab78acc6 37362
8b095871
IC
37363 return '0x' + hex;
37364}
ebd8d4e8 37365
8b095871
IC
37366/**
37367 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
37368 *
37369 * @method getKeys get specific key from inner object array of objects
37370 * @param {String} params
37371 * @param {String} key
37372 * @param {Boolean} allowEmpty
37373 * @returns {Array} output just a simple array of output keys
37374 */
37375function getKeys(params, key, allowEmpty) {
37376 if (!Array.isArray(params)) {
37377 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
37378 }
37379 if (typeof key !== 'string') {
37380 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
37381 }
ebd8d4e8 37382
8b095871 37383 var result = []; // eslint-disable-line
ebd8d4e8 37384
8b095871
IC
37385 for (var i = 0; i < params.length; i++) {
37386 // eslint-disable-line
37387 var value = params[i][key]; // eslint-disable-line
37388 if (allowEmpty && !value) {
37389 value = '';
37390 } else if (typeof value !== 'string') {
37391 throw new Error('invalid abi');
37392 }
37393 result.push(value);
37394 }
ebd8d4e8 37395
8b095871 37396 return result;
ebd8d4e8
IC
37397}
37398
8b095871
IC
37399/**
37400 * Is the string a hex string.
37401 *
37402 * @method check if string is hex string of specific length
37403 * @param {String} value
37404 * @param {Number} length
37405 * @returns {Boolean} output the string is a hex string
37406 */
37407function isHexString(value, length) {
37408 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
37409 return false;
ab78acc6
IC
37410 }
37411
8b095871
IC
37412 if (length && value.length !== 2 + 2 * length) {
37413 return false;
37414 }
ebd8d4e8 37415
8b095871
IC
37416 return true;
37417}
ab78acc6 37418
8b095871
IC
37419module.exports = {
37420 arrayContainsArray: arrayContainsArray,
37421 intToBuffer: intToBuffer,
37422 getBinarySize: getBinarySize,
37423 isHexPrefixed: isHexPrefixed,
37424 stripHexPrefix: stripHexPrefix,
37425 padToEven: padToEven,
37426 intToHex: intToHex,
37427 fromAscii: fromAscii,
37428 fromUtf8: fromUtf8,
37429 toAscii: toAscii,
37430 toUtf8: toUtf8,
37431 getKeys: getKeys,
37432 isHexString: isHexString
37433};
37434}).call(this,require("buffer").Buffer)
37435},{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
37436var hash = exports;
37437
37438hash.utils = require('./hash/utils');
37439hash.common = require('./hash/common');
37440hash.sha = require('./hash/sha');
37441hash.ripemd = require('./hash/ripemd');
37442hash.hmac = require('./hash/hmac');
37443
37444// Proxy hash functions to the main object
37445hash.sha1 = hash.sha.sha1;
37446hash.sha256 = hash.sha.sha256;
37447hash.sha224 = hash.sha.sha224;
37448hash.sha384 = hash.sha.sha384;
37449hash.sha512 = hash.sha.sha512;
37450hash.ripemd160 = hash.ripemd.ripemd160;
37451
37452},{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
37453var hash = require('../hash');
37454var utils = hash.utils;
37455var assert = utils.assert;
37456
37457function BlockHash() {
37458 this.pending = null;
37459 this.pendingTotal = 0;
37460 this.blockSize = this.constructor.blockSize;
37461 this.outSize = this.constructor.outSize;
37462 this.hmacStrength = this.constructor.hmacStrength;
37463 this.padLength = this.constructor.padLength / 8;
37464 this.endian = 'big';
37465
37466 this._delta8 = this.blockSize / 8;
37467 this._delta32 = this.blockSize / 32;
37468}
37469exports.BlockHash = BlockHash;
37470
37471BlockHash.prototype.update = function update(msg, enc) {
37472 // Convert message to array, pad it, and join into 32bit blocks
37473 msg = utils.toArray(msg, enc);
37474 if (!this.pending)
37475 this.pending = msg;
37476 else
37477 this.pending = this.pending.concat(msg);
37478 this.pendingTotal += msg.length;
ab78acc6 37479
8b095871
IC
37480 // Enough data, try updating
37481 if (this.pending.length >= this._delta8) {
37482 msg = this.pending;
ebd8d4e8 37483
8b095871
IC
37484 // Process pending data in blocks
37485 var r = msg.length % this._delta8;
37486 this.pending = msg.slice(msg.length - r, msg.length);
37487 if (this.pending.length === 0)
37488 this.pending = null;
ebd8d4e8 37489
8b095871
IC
37490 msg = utils.join32(msg, 0, msg.length - r, this.endian);
37491 for (var i = 0; i < msg.length; i += this._delta32)
37492 this._update(msg, i, i + this._delta32);
ebd8d4e8
IC
37493 }
37494
8b095871
IC
37495 return this;
37496};
ebd8d4e8 37497
8b095871
IC
37498BlockHash.prototype.digest = function digest(enc) {
37499 this.update(this._pad());
37500 assert(this.pending === null);
ebd8d4e8 37501
8b095871
IC
37502 return this._digest(enc);
37503};
ebd8d4e8 37504
8b095871
IC
37505BlockHash.prototype._pad = function pad() {
37506 var len = this.pendingTotal;
37507 var bytes = this._delta8;
37508 var k = bytes - ((len + this.padLength) % bytes);
37509 var res = new Array(k + this.padLength);
37510 res[0] = 0x80;
37511 for (var i = 1; i < k; i++)
37512 res[i] = 0;
37513
37514 // Append length
37515 len <<= 3;
37516 if (this.endian === 'big') {
37517 for (var t = 8; t < this.padLength; t++)
37518 res[i++] = 0;
37519
37520 res[i++] = 0;
37521 res[i++] = 0;
37522 res[i++] = 0;
37523 res[i++] = 0;
37524 res[i++] = (len >>> 24) & 0xff;
37525 res[i++] = (len >>> 16) & 0xff;
37526 res[i++] = (len >>> 8) & 0xff;
37527 res[i++] = len & 0xff;
ebd8d4e8 37528 } else {
8b095871
IC
37529 res[i++] = len & 0xff;
37530 res[i++] = (len >>> 8) & 0xff;
37531 res[i++] = (len >>> 16) & 0xff;
37532 res[i++] = (len >>> 24) & 0xff;
37533 res[i++] = 0;
37534 res[i++] = 0;
37535 res[i++] = 0;
37536 res[i++] = 0;
ebd8d4e8 37537
8b095871
IC
37538 for (var t = 8; t < this.padLength; t++)
37539 res[i++] = 0;
ebd8d4e8
IC
37540 }
37541
8b095871
IC
37542 return res;
37543};
ebd8d4e8 37544
8b095871
IC
37545},{"../hash":57}],59:[function(require,module,exports){
37546var hmac = exports;
ebd8d4e8 37547
8b095871
IC
37548var hash = require('../hash');
37549var utils = hash.utils;
37550var assert = utils.assert;
ebd8d4e8 37551
8b095871
IC
37552function Hmac(hash, key, enc) {
37553 if (!(this instanceof Hmac))
37554 return new Hmac(hash, key, enc);
37555 this.Hash = hash;
37556 this.blockSize = hash.blockSize / 8;
37557 this.outSize = hash.outSize / 8;
37558 this.inner = null;
37559 this.outer = null;
ebd8d4e8 37560
8b095871 37561 this._init(utils.toArray(key, enc));
ebd8d4e8 37562}
8b095871 37563module.exports = Hmac;
ebd8d4e8 37564
8b095871
IC
37565Hmac.prototype._init = function init(key) {
37566 // Shorten key, if needed
37567 if (key.length > this.blockSize)
37568 key = new this.Hash().update(key).digest();
37569 assert(key.length <= this.blockSize);
ebd8d4e8 37570
8b095871
IC
37571 // Add padding to key
37572 for (var i = key.length; i < this.blockSize; i++)
37573 key.push(0);
ab78acc6 37574
8b095871
IC
37575 for (var i = 0; i < key.length; i++)
37576 key[i] ^= 0x36;
37577 this.inner = new this.Hash().update(key);
ab78acc6 37578
8b095871
IC
37579 // 0x36 ^ 0x5c = 0x6a
37580 for (var i = 0; i < key.length; i++)
37581 key[i] ^= 0x6a;
37582 this.outer = new this.Hash().update(key);
37583};
ebd8d4e8 37584
8b095871
IC
37585Hmac.prototype.update = function update(msg, enc) {
37586 this.inner.update(msg, enc);
37587 return this;
37588};
ab78acc6 37589
8b095871
IC
37590Hmac.prototype.digest = function digest(enc) {
37591 this.outer.update(this.inner.digest());
37592 return this.outer.digest(enc);
37593};
ab78acc6 37594
8b095871
IC
37595},{"../hash":57}],60:[function(require,module,exports){
37596var hash = require('../hash');
37597var utils = hash.utils;
37598
37599var rotl32 = utils.rotl32;
37600var sum32 = utils.sum32;
37601var sum32_3 = utils.sum32_3;
37602var sum32_4 = utils.sum32_4;
37603var BlockHash = hash.common.BlockHash;
37604
37605function RIPEMD160() {
37606 if (!(this instanceof RIPEMD160))
37607 return new RIPEMD160();
37608
37609 BlockHash.call(this);
37610
37611 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
37612 this.endian = 'little';
37613}
37614utils.inherits(RIPEMD160, BlockHash);
37615exports.ripemd160 = RIPEMD160;
37616
37617RIPEMD160.blockSize = 512;
37618RIPEMD160.outSize = 160;
37619RIPEMD160.hmacStrength = 192;
37620RIPEMD160.padLength = 64;
37621
37622RIPEMD160.prototype._update = function update(msg, start) {
37623 var A = this.h[0];
37624 var B = this.h[1];
37625 var C = this.h[2];
37626 var D = this.h[3];
37627 var E = this.h[4];
37628 var Ah = A;
37629 var Bh = B;
37630 var Ch = C;
37631 var Dh = D;
37632 var Eh = E;
37633 for (var j = 0; j < 80; j++) {
37634 var T = sum32(
37635 rotl32(
37636 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
37637 s[j]),
37638 E);
37639 A = E;
37640 E = D;
37641 D = rotl32(C, 10);
37642 C = B;
37643 B = T;
37644 T = sum32(
37645 rotl32(
37646 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
37647 sh[j]),
37648 Eh);
37649 Ah = Eh;
37650 Eh = Dh;
37651 Dh = rotl32(Ch, 10);
37652 Ch = Bh;
37653 Bh = T;
37654 }
37655 T = sum32_3(this.h[1], C, Dh);
37656 this.h[1] = sum32_3(this.h[2], D, Eh);
37657 this.h[2] = sum32_3(this.h[3], E, Ah);
37658 this.h[3] = sum32_3(this.h[4], A, Bh);
37659 this.h[4] = sum32_3(this.h[0], B, Ch);
37660 this.h[0] = T;
37661};
ebd8d4e8 37662
8b095871
IC
37663RIPEMD160.prototype._digest = function digest(enc) {
37664 if (enc === 'hex')
37665 return utils.toHex32(this.h, 'little');
37666 else
37667 return utils.split32(this.h, 'little');
37668};
ebd8d4e8 37669
8b095871
IC
37670function f(j, x, y, z) {
37671 if (j <= 15)
37672 return x ^ y ^ z;
37673 else if (j <= 31)
37674 return (x & y) | ((~x) & z);
37675 else if (j <= 47)
37676 return (x | (~y)) ^ z;
37677 else if (j <= 63)
37678 return (x & z) | (y & (~z));
37679 else
37680 return x ^ (y | (~z));
37681}
37682
37683function K(j) {
37684 if (j <= 15)
37685 return 0x00000000;
37686 else if (j <= 31)
37687 return 0x5a827999;
37688 else if (j <= 47)
37689 return 0x6ed9eba1;
37690 else if (j <= 63)
37691 return 0x8f1bbcdc;
37692 else
37693 return 0xa953fd4e;
37694}
37695
37696function Kh(j) {
37697 if (j <= 15)
37698 return 0x50a28be6;
37699 else if (j <= 31)
37700 return 0x5c4dd124;
37701 else if (j <= 47)
37702 return 0x6d703ef3;
37703 else if (j <= 63)
37704 return 0x7a6d76e9;
37705 else
37706 return 0x00000000;
37707}
ebd8d4e8 37708
8b095871
IC
37709var r = [
37710 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
37711 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
37712 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
37713 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
37714 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
37715];
ebd8d4e8 37716
8b095871
IC
37717var rh = [
37718 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
37719 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
37720 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
37721 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
37722 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
37723];
ebd8d4e8 37724
8b095871
IC
37725var s = [
37726 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
37727 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
37728 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
37729 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
37730 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
37731];
ebd8d4e8 37732
8b095871
IC
37733var sh = [
37734 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
37735 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
37736 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
37737 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
37738 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
37739];
ebd8d4e8 37740
8b095871
IC
37741},{"../hash":57}],61:[function(require,module,exports){
37742var hash = require('../hash');
37743var utils = hash.utils;
37744var assert = utils.assert;
37745
37746var rotr32 = utils.rotr32;
37747var rotl32 = utils.rotl32;
37748var sum32 = utils.sum32;
37749var sum32_4 = utils.sum32_4;
37750var sum32_5 = utils.sum32_5;
37751var rotr64_hi = utils.rotr64_hi;
37752var rotr64_lo = utils.rotr64_lo;
37753var shr64_hi = utils.shr64_hi;
37754var shr64_lo = utils.shr64_lo;
37755var sum64 = utils.sum64;
37756var sum64_hi = utils.sum64_hi;
37757var sum64_lo = utils.sum64_lo;
37758var sum64_4_hi = utils.sum64_4_hi;
37759var sum64_4_lo = utils.sum64_4_lo;
37760var sum64_5_hi = utils.sum64_5_hi;
37761var sum64_5_lo = utils.sum64_5_lo;
37762var BlockHash = hash.common.BlockHash;
37763
37764var sha256_K = [
37765 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
37766 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
37767 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
37768 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
37769 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
37770 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
37771 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
37772 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
37773 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
37774 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
37775 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
37776 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
37777 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
37778 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
37779 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
37780 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
37781];
ebd8d4e8 37782
8b095871
IC
37783var sha512_K = [
37784 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
37785 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
37786 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
37787 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
37788 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
37789 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
37790 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
37791 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
37792 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
37793 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
37794 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
37795 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
37796 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
37797 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
37798 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
37799 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
37800 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
37801 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
37802 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
37803 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
37804 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
37805 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
37806 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
37807 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
37808 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
37809 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
37810 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
37811 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
37812 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
37813 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
37814 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
37815 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
37816 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
37817 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
37818 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
37819 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
37820 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
37821 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
37822 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
37823 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
37824];
ebd8d4e8 37825
8b095871
IC
37826var sha1_K = [
37827 0x5A827999, 0x6ED9EBA1,
37828 0x8F1BBCDC, 0xCA62C1D6
37829];
ebd8d4e8 37830
8b095871
IC
37831function SHA256() {
37832 if (!(this instanceof SHA256))
37833 return new SHA256();
37834
37835 BlockHash.call(this);
37836 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
37837 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
37838 this.k = sha256_K;
37839 this.W = new Array(64);
37840}
37841utils.inherits(SHA256, BlockHash);
37842exports.sha256 = SHA256;
37843
37844SHA256.blockSize = 512;
37845SHA256.outSize = 256;
37846SHA256.hmacStrength = 192;
37847SHA256.padLength = 64;
37848
37849SHA256.prototype._update = function _update(msg, start) {
37850 var W = this.W;
37851
37852 for (var i = 0; i < 16; i++)
37853 W[i] = msg[start + i];
37854 for (; i < W.length; i++)
37855 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
37856
37857 var a = this.h[0];
37858 var b = this.h[1];
37859 var c = this.h[2];
37860 var d = this.h[3];
37861 var e = this.h[4];
37862 var f = this.h[5];
37863 var g = this.h[6];
37864 var h = this.h[7];
37865
37866 assert(this.k.length === W.length);
37867 for (var i = 0; i < W.length; i++) {
37868 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
37869 var T2 = sum32(s0_256(a), maj32(a, b, c));
37870 h = g;
37871 g = f;
37872 f = e;
37873 e = sum32(d, T1);
37874 d = c;
37875 c = b;
37876 b = a;
37877 a = sum32(T1, T2);
37878 }
37879
37880 this.h[0] = sum32(this.h[0], a);
37881 this.h[1] = sum32(this.h[1], b);
37882 this.h[2] = sum32(this.h[2], c);
37883 this.h[3] = sum32(this.h[3], d);
37884 this.h[4] = sum32(this.h[4], e);
37885 this.h[5] = sum32(this.h[5], f);
37886 this.h[6] = sum32(this.h[6], g);
37887 this.h[7] = sum32(this.h[7], h);
37888};
ebd8d4e8 37889
8b095871
IC
37890SHA256.prototype._digest = function digest(enc) {
37891 if (enc === 'hex')
37892 return utils.toHex32(this.h, 'big');
37893 else
37894 return utils.split32(this.h, 'big');
37895};
ebd8d4e8 37896
8b095871
IC
37897function SHA224() {
37898 if (!(this instanceof SHA224))
37899 return new SHA224();
ebd8d4e8 37900
8b095871
IC
37901 SHA256.call(this);
37902 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
37903 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
37904}
37905utils.inherits(SHA224, SHA256);
37906exports.sha224 = SHA224;
ebd8d4e8 37907
8b095871
IC
37908SHA224.blockSize = 512;
37909SHA224.outSize = 224;
37910SHA224.hmacStrength = 192;
37911SHA224.padLength = 64;
ebd8d4e8 37912
8b095871
IC
37913SHA224.prototype._digest = function digest(enc) {
37914 // Just truncate output
37915 if (enc === 'hex')
37916 return utils.toHex32(this.h.slice(0, 7), 'big');
37917 else
37918 return utils.split32(this.h.slice(0, 7), 'big');
37919};
37920
37921function SHA512() {
37922 if (!(this instanceof SHA512))
37923 return new SHA512();
37924
37925 BlockHash.call(this);
37926 this.h = [ 0x6a09e667, 0xf3bcc908,
37927 0xbb67ae85, 0x84caa73b,
37928 0x3c6ef372, 0xfe94f82b,
37929 0xa54ff53a, 0x5f1d36f1,
37930 0x510e527f, 0xade682d1,
37931 0x9b05688c, 0x2b3e6c1f,
37932 0x1f83d9ab, 0xfb41bd6b,
37933 0x5be0cd19, 0x137e2179 ];
37934 this.k = sha512_K;
37935 this.W = new Array(160);
37936}
37937utils.inherits(SHA512, BlockHash);
37938exports.sha512 = SHA512;
37939
37940SHA512.blockSize = 1024;
37941SHA512.outSize = 512;
37942SHA512.hmacStrength = 192;
37943SHA512.padLength = 128;
37944
37945SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
37946 var W = this.W;
37947
37948 // 32 x 32bit words
37949 for (var i = 0; i < 32; i++)
37950 W[i] = msg[start + i];
37951 for (; i < W.length; i += 2) {
37952 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
37953 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
37954 var c1_hi = W[i - 14]; // i - 7
37955 var c1_lo = W[i - 13];
37956 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
37957 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
37958 var c3_hi = W[i - 32]; // i - 16
37959 var c3_lo = W[i - 31];
37960
37961 W[i] = sum64_4_hi(c0_hi, c0_lo,
37962 c1_hi, c1_lo,
37963 c2_hi, c2_lo,
37964 c3_hi, c3_lo);
37965 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
37966 c1_hi, c1_lo,
37967 c2_hi, c2_lo,
37968 c3_hi, c3_lo);
ebd8d4e8 37969 }
8b095871
IC
37970};
37971
37972SHA512.prototype._update = function _update(msg, start) {
37973 this._prepareBlock(msg, start);
37974
37975 var W = this.W;
37976
37977 var ah = this.h[0];
37978 var al = this.h[1];
37979 var bh = this.h[2];
37980 var bl = this.h[3];
37981 var ch = this.h[4];
37982 var cl = this.h[5];
37983 var dh = this.h[6];
37984 var dl = this.h[7];
37985 var eh = this.h[8];
37986 var el = this.h[9];
37987 var fh = this.h[10];
37988 var fl = this.h[11];
37989 var gh = this.h[12];
37990 var gl = this.h[13];
37991 var hh = this.h[14];
37992 var hl = this.h[15];
37993
37994 assert(this.k.length === W.length);
37995 for (var i = 0; i < W.length; i += 2) {
37996 var c0_hi = hh;
37997 var c0_lo = hl;
37998 var c1_hi = s1_512_hi(eh, el);
37999 var c1_lo = s1_512_lo(eh, el);
38000 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
38001 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
38002 var c3_hi = this.k[i];
38003 var c3_lo = this.k[i + 1];
38004 var c4_hi = W[i];
38005 var c4_lo = W[i + 1];
38006
38007 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
38008 c1_hi, c1_lo,
38009 c2_hi, c2_lo,
38010 c3_hi, c3_lo,
38011 c4_hi, c4_lo);
38012 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
38013 c1_hi, c1_lo,
38014 c2_hi, c2_lo,
38015 c3_hi, c3_lo,
38016 c4_hi, c4_lo);
38017
38018 var c0_hi = s0_512_hi(ah, al);
38019 var c0_lo = s0_512_lo(ah, al);
38020 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
38021 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
38022
38023 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
38024 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
38025
38026 hh = gh;
38027 hl = gl;
38028
38029 gh = fh;
38030 gl = fl;
38031
38032 fh = eh;
38033 fl = el;
38034
38035 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
38036 el = sum64_lo(dl, dl, T1_hi, T1_lo);
38037
38038 dh = ch;
38039 dl = cl;
38040
38041 ch = bh;
38042 cl = bl;
38043
38044 bh = ah;
38045 bl = al;
38046
38047 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
38048 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
38049 }
38050
38051 sum64(this.h, 0, ah, al);
38052 sum64(this.h, 2, bh, bl);
38053 sum64(this.h, 4, ch, cl);
38054 sum64(this.h, 6, dh, dl);
38055 sum64(this.h, 8, eh, el);
38056 sum64(this.h, 10, fh, fl);
38057 sum64(this.h, 12, gh, gl);
38058 sum64(this.h, 14, hh, hl);
38059};
38060
38061SHA512.prototype._digest = function digest(enc) {
38062 if (enc === 'hex')
38063 return utils.toHex32(this.h, 'big');
38064 else
38065 return utils.split32(this.h, 'big');
38066};
38067
38068function SHA384() {
38069 if (!(this instanceof SHA384))
38070 return new SHA384();
38071
38072 SHA512.call(this);
38073 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
38074 0x629a292a, 0x367cd507,
38075 0x9159015a, 0x3070dd17,
38076 0x152fecd8, 0xf70e5939,
38077 0x67332667, 0xffc00b31,
38078 0x8eb44a87, 0x68581511,
38079 0xdb0c2e0d, 0x64f98fa7,
38080 0x47b5481d, 0xbefa4fa4 ];
38081}
38082utils.inherits(SHA384, SHA512);
38083exports.sha384 = SHA384;
38084
38085SHA384.blockSize = 1024;
38086SHA384.outSize = 384;
38087SHA384.hmacStrength = 192;
38088SHA384.padLength = 128;
38089
38090SHA384.prototype._digest = function digest(enc) {
38091 if (enc === 'hex')
38092 return utils.toHex32(this.h.slice(0, 12), 'big');
38093 else
38094 return utils.split32(this.h.slice(0, 12), 'big');
38095};
ebd8d4e8 38096
8b095871
IC
38097function SHA1() {
38098 if (!(this instanceof SHA1))
38099 return new SHA1();
ebd8d4e8 38100
8b095871
IC
38101 BlockHash.call(this);
38102 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
38103 0x10325476, 0xc3d2e1f0 ];
38104 this.W = new Array(80);
38105}
ebd8d4e8 38106
8b095871
IC
38107utils.inherits(SHA1, BlockHash);
38108exports.sha1 = SHA1;
ebd8d4e8 38109
8b095871
IC
38110SHA1.blockSize = 512;
38111SHA1.outSize = 160;
38112SHA1.hmacStrength = 80;
38113SHA1.padLength = 64;
ebd8d4e8 38114
8b095871
IC
38115SHA1.prototype._update = function _update(msg, start) {
38116 var W = this.W;
ebd8d4e8 38117
8b095871
IC
38118 for (var i = 0; i < 16; i++)
38119 W[i] = msg[start + i];
ebd8d4e8 38120
8b095871
IC
38121 for(; i < W.length; i++)
38122 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
ebd8d4e8 38123
8b095871
IC
38124 var a = this.h[0];
38125 var b = this.h[1];
38126 var c = this.h[2];
38127 var d = this.h[3];
38128 var e = this.h[4];
ebd8d4e8 38129
8b095871
IC
38130 for (var i = 0; i < W.length; i++) {
38131 var s = ~~(i / 20);
38132 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
38133 e = d;
38134 d = c;
38135 c = rotl32(b, 30);
38136 b = a;
38137 a = t;
ebd8d4e8
IC
38138 }
38139
8b095871
IC
38140 this.h[0] = sum32(this.h[0], a);
38141 this.h[1] = sum32(this.h[1], b);
38142 this.h[2] = sum32(this.h[2], c);
38143 this.h[3] = sum32(this.h[3], d);
38144 this.h[4] = sum32(this.h[4], e);
38145};
ebd8d4e8 38146
8b095871
IC
38147SHA1.prototype._digest = function digest(enc) {
38148 if (enc === 'hex')
38149 return utils.toHex32(this.h, 'big');
38150 else
38151 return utils.split32(this.h, 'big');
38152};
38153
38154function ch32(x, y, z) {
38155 return (x & y) ^ ((~x) & z);
ebd8d4e8
IC
38156}
38157
8b095871
IC
38158function maj32(x, y, z) {
38159 return (x & y) ^ (x & z) ^ (y & z);
ebd8d4e8
IC
38160}
38161
8b095871
IC
38162function p32(x, y, z) {
38163 return x ^ y ^ z;
38164}
ebd8d4e8 38165
8b095871
IC
38166function s0_256(x) {
38167 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
38168}
ebd8d4e8 38169
8b095871
IC
38170function s1_256(x) {
38171 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
ab78acc6
IC
38172}
38173
8b095871
IC
38174function g0_256(x) {
38175 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
38176}
ab78acc6 38177
8b095871
IC
38178function g1_256(x) {
38179 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
38180}
ab78acc6 38181
8b095871
IC
38182function ft_1(s, x, y, z) {
38183 if (s === 0)
38184 return ch32(x, y, z);
38185 if (s === 1 || s === 3)
38186 return p32(x, y, z);
38187 if (s === 2)
38188 return maj32(x, y, z);
38189}
ebd8d4e8 38190
8b095871
IC
38191function ch64_hi(xh, xl, yh, yl, zh, zl) {
38192 var r = (xh & yh) ^ ((~xh) & zh);
38193 if (r < 0)
38194 r += 0x100000000;
38195 return r;
38196}
ebd8d4e8 38197
8b095871
IC
38198function ch64_lo(xh, xl, yh, yl, zh, zl) {
38199 var r = (xl & yl) ^ ((~xl) & zl);
38200 if (r < 0)
38201 r += 0x100000000;
38202 return r;
ebd8d4e8
IC
38203}
38204
8b095871
IC
38205function maj64_hi(xh, xl, yh, yl, zh, zl) {
38206 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
38207 if (r < 0)
38208 r += 0x100000000;
38209 return r;
38210}
ebd8d4e8 38211
8b095871
IC
38212function maj64_lo(xh, xl, yh, yl, zh, zl) {
38213 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
38214 if (r < 0)
38215 r += 0x100000000;
38216 return r;
38217}
ebd8d4e8 38218
8b095871
IC
38219function s0_512_hi(xh, xl) {
38220 var c0_hi = rotr64_hi(xh, xl, 28);
38221 var c1_hi = rotr64_hi(xl, xh, 2); // 34
38222 var c2_hi = rotr64_hi(xl, xh, 7); // 39
38223
38224 var r = c0_hi ^ c1_hi ^ c2_hi;
38225 if (r < 0)
38226 r += 0x100000000;
38227 return r;
ebd8d4e8
IC
38228}
38229
8b095871
IC
38230function s0_512_lo(xh, xl) {
38231 var c0_lo = rotr64_lo(xh, xl, 28);
38232 var c1_lo = rotr64_lo(xl, xh, 2); // 34
38233 var c2_lo = rotr64_lo(xl, xh, 7); // 39
ab78acc6 38234
8b095871
IC
38235 var r = c0_lo ^ c1_lo ^ c2_lo;
38236 if (r < 0)
38237 r += 0x100000000;
38238 return r;
38239}
ebd8d4e8 38240
8b095871
IC
38241function s1_512_hi(xh, xl) {
38242 var c0_hi = rotr64_hi(xh, xl, 14);
38243 var c1_hi = rotr64_hi(xh, xl, 18);
38244 var c2_hi = rotr64_hi(xl, xh, 9); // 41
ebd8d4e8 38245
8b095871
IC
38246 var r = c0_hi ^ c1_hi ^ c2_hi;
38247 if (r < 0)
38248 r += 0x100000000;
38249 return r;
ebd8d4e8
IC
38250}
38251
8b095871
IC
38252function s1_512_lo(xh, xl) {
38253 var c0_lo = rotr64_lo(xh, xl, 14);
38254 var c1_lo = rotr64_lo(xh, xl, 18);
38255 var c2_lo = rotr64_lo(xl, xh, 9); // 41
38256
38257 var r = c0_lo ^ c1_lo ^ c2_lo;
38258 if (r < 0)
38259 r += 0x100000000;
38260 return r;
ebd8d4e8
IC
38261}
38262
8b095871
IC
38263function g0_512_hi(xh, xl) {
38264 var c0_hi = rotr64_hi(xh, xl, 1);
38265 var c1_hi = rotr64_hi(xh, xl, 8);
38266 var c2_hi = shr64_hi(xh, xl, 7);
ebd8d4e8 38267
8b095871
IC
38268 var r = c0_hi ^ c1_hi ^ c2_hi;
38269 if (r < 0)
38270 r += 0x100000000;
38271 return r;
38272}
38273
38274function g0_512_lo(xh, xl) {
38275 var c0_lo = rotr64_lo(xh, xl, 1);
38276 var c1_lo = rotr64_lo(xh, xl, 8);
38277 var c2_lo = shr64_lo(xh, xl, 7);
38278
38279 var r = c0_lo ^ c1_lo ^ c2_lo;
38280 if (r < 0)
38281 r += 0x100000000;
38282 return r;
38283}
38284
38285function g1_512_hi(xh, xl) {
38286 var c0_hi = rotr64_hi(xh, xl, 19);
38287 var c1_hi = rotr64_hi(xl, xh, 29); // 61
38288 var c2_hi = shr64_hi(xh, xl, 6);
38289
38290 var r = c0_hi ^ c1_hi ^ c2_hi;
38291 if (r < 0)
38292 r += 0x100000000;
38293 return r;
38294}
38295
38296function g1_512_lo(xh, xl) {
38297 var c0_lo = rotr64_lo(xh, xl, 19);
38298 var c1_lo = rotr64_lo(xl, xh, 29); // 61
38299 var c2_lo = shr64_lo(xh, xl, 6);
38300
38301 var r = c0_lo ^ c1_lo ^ c2_lo;
38302 if (r < 0)
38303 r += 0x100000000;
38304 return r;
38305}
38306
38307},{"../hash":57}],62:[function(require,module,exports){
38308var utils = exports;
38309var inherits = require('inherits');
38310
38311function toArray(msg, enc) {
38312 if (Array.isArray(msg))
38313 return msg.slice();
38314 if (!msg)
38315 return [];
38316 var res = [];
38317 if (typeof msg === 'string') {
38318 if (!enc) {
38319 for (var i = 0; i < msg.length; i++) {
38320 var c = msg.charCodeAt(i);
38321 var hi = c >> 8;
38322 var lo = c & 0xff;
38323 if (hi)
38324 res.push(hi, lo);
38325 else
38326 res.push(lo);
38327 }
38328 } else if (enc === 'hex') {
38329 msg = msg.replace(/[^a-z0-9]+/ig, '');
38330 if (msg.length % 2 !== 0)
38331 msg = '0' + msg;
38332 for (var i = 0; i < msg.length; i += 2)
38333 res.push(parseInt(msg[i] + msg[i + 1], 16));
38334 }
38335 } else {
38336 for (var i = 0; i < msg.length; i++)
38337 res[i] = msg[i] | 0;
ebd8d4e8 38338 }
8b095871 38339 return res;
ebd8d4e8 38340}
8b095871 38341utils.toArray = toArray;
ebd8d4e8 38342
8b095871
IC
38343function toHex(msg) {
38344 var res = '';
38345 for (var i = 0; i < msg.length; i++)
38346 res += zero2(msg[i].toString(16));
38347 return res;
38348}
38349utils.toHex = toHex;
ebd8d4e8 38350
8b095871
IC
38351function htonl(w) {
38352 var res = (w >>> 24) |
38353 ((w >>> 8) & 0xff00) |
38354 ((w << 8) & 0xff0000) |
38355 ((w & 0xff) << 24);
38356 return res >>> 0;
38357}
38358utils.htonl = htonl;
ebd8d4e8 38359
8b095871
IC
38360function toHex32(msg, endian) {
38361 var res = '';
38362 for (var i = 0; i < msg.length; i++) {
38363 var w = msg[i];
38364 if (endian === 'little')
38365 w = htonl(w);
38366 res += zero8(w.toString(16));
38367 }
38368 return res;
38369}
38370utils.toHex32 = toHex32;
ebd8d4e8 38371
8b095871
IC
38372function zero2(word) {
38373 if (word.length === 1)
38374 return '0' + word;
38375 else
38376 return word;
38377}
38378utils.zero2 = zero2;
38379
38380function zero8(word) {
38381 if (word.length === 7)
38382 return '0' + word;
38383 else if (word.length === 6)
38384 return '00' + word;
38385 else if (word.length === 5)
38386 return '000' + word;
38387 else if (word.length === 4)
38388 return '0000' + word;
38389 else if (word.length === 3)
38390 return '00000' + word;
38391 else if (word.length === 2)
38392 return '000000' + word;
38393 else if (word.length === 1)
38394 return '0000000' + word;
38395 else
38396 return word;
38397}
38398utils.zero8 = zero8;
38399
38400function join32(msg, start, end, endian) {
38401 var len = end - start;
38402 assert(len % 4 === 0);
38403 var res = new Array(len / 4);
38404 for (var i = 0, k = start; i < res.length; i++, k += 4) {
38405 var w;
38406 if (endian === 'big')
38407 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
38408 else
38409 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
38410 res[i] = w >>> 0;
38411 }
38412 return res;
38413}
38414utils.join32 = join32;
38415
38416function split32(msg, endian) {
38417 var res = new Array(msg.length * 4);
38418 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
38419 var m = msg[i];
38420 if (endian === 'big') {
38421 res[k] = m >>> 24;
38422 res[k + 1] = (m >>> 16) & 0xff;
38423 res[k + 2] = (m >>> 8) & 0xff;
38424 res[k + 3] = m & 0xff;
38425 } else {
38426 res[k + 3] = m >>> 24;
38427 res[k + 2] = (m >>> 16) & 0xff;
38428 res[k + 1] = (m >>> 8) & 0xff;
38429 res[k] = m & 0xff;
38430 }
ebd8d4e8 38431 }
8b095871 38432 return res;
ebd8d4e8 38433}
8b095871 38434utils.split32 = split32;
ebd8d4e8 38435
8b095871
IC
38436function rotr32(w, b) {
38437 return (w >>> b) | (w << (32 - b));
38438}
38439utils.rotr32 = rotr32;
ebd8d4e8 38440
8b095871
IC
38441function rotl32(w, b) {
38442 return (w << b) | (w >>> (32 - b));
38443}
38444utils.rotl32 = rotl32;
ebd8d4e8 38445
8b095871
IC
38446function sum32(a, b) {
38447 return (a + b) >>> 0;
38448}
38449utils.sum32 = sum32;
ebd8d4e8 38450
8b095871
IC
38451function sum32_3(a, b, c) {
38452 return (a + b + c) >>> 0;
38453}
38454utils.sum32_3 = sum32_3;
ebd8d4e8 38455
8b095871
IC
38456function sum32_4(a, b, c, d) {
38457 return (a + b + c + d) >>> 0;
38458}
38459utils.sum32_4 = sum32_4;
ebd8d4e8 38460
8b095871
IC
38461function sum32_5(a, b, c, d, e) {
38462 return (a + b + c + d + e) >>> 0;
38463}
38464utils.sum32_5 = sum32_5;
ebd8d4e8 38465
8b095871
IC
38466function assert(cond, msg) {
38467 if (!cond)
38468 throw new Error(msg || 'Assertion failed');
38469}
38470utils.assert = assert;
ab78acc6 38471
8b095871 38472utils.inherits = inherits;
ab78acc6 38473
8b095871
IC
38474function sum64(buf, pos, ah, al) {
38475 var bh = buf[pos];
38476 var bl = buf[pos + 1];
ab78acc6 38477
8b095871
IC
38478 var lo = (al + bl) >>> 0;
38479 var hi = (lo < al ? 1 : 0) + ah + bh;
38480 buf[pos] = hi >>> 0;
38481 buf[pos + 1] = lo;
38482}
38483exports.sum64 = sum64;
ebd8d4e8 38484
8b095871
IC
38485function sum64_hi(ah, al, bh, bl) {
38486 var lo = (al + bl) >>> 0;
38487 var hi = (lo < al ? 1 : 0) + ah + bh;
38488 return hi >>> 0;
38489};
38490exports.sum64_hi = sum64_hi;
ebd8d4e8 38491
8b095871
IC
38492function sum64_lo(ah, al, bh, bl) {
38493 var lo = al + bl;
38494 return lo >>> 0;
38495};
38496exports.sum64_lo = sum64_lo;
38497
38498function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
38499 var carry = 0;
38500 var lo = al;
38501 lo = (lo + bl) >>> 0;
38502 carry += lo < al ? 1 : 0;
38503 lo = (lo + cl) >>> 0;
38504 carry += lo < cl ? 1 : 0;
38505 lo = (lo + dl) >>> 0;
38506 carry += lo < dl ? 1 : 0;
38507
38508 var hi = ah + bh + ch + dh + carry;
38509 return hi >>> 0;
38510};
38511exports.sum64_4_hi = sum64_4_hi;
ebd8d4e8 38512
8b095871
IC
38513function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
38514 var lo = al + bl + cl + dl;
38515 return lo >>> 0;
38516};
38517exports.sum64_4_lo = sum64_4_lo;
38518
38519function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38520 var carry = 0;
38521 var lo = al;
38522 lo = (lo + bl) >>> 0;
38523 carry += lo < al ? 1 : 0;
38524 lo = (lo + cl) >>> 0;
38525 carry += lo < cl ? 1 : 0;
38526 lo = (lo + dl) >>> 0;
38527 carry += lo < dl ? 1 : 0;
38528 lo = (lo + el) >>> 0;
38529 carry += lo < el ? 1 : 0;
38530
38531 var hi = ah + bh + ch + dh + eh + carry;
38532 return hi >>> 0;
38533};
38534exports.sum64_5_hi = sum64_5_hi;
38535
38536function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
38537 var lo = al + bl + cl + dl + el;
38538
38539 return lo >>> 0;
38540};
38541exports.sum64_5_lo = sum64_5_lo;
38542
38543function rotr64_hi(ah, al, num) {
38544 var r = (al << (32 - num)) | (ah >>> num);
38545 return r >>> 0;
38546};
38547exports.rotr64_hi = rotr64_hi;
38548
38549function rotr64_lo(ah, al, num) {
38550 var r = (ah << (32 - num)) | (al >>> num);
38551 return r >>> 0;
38552};
38553exports.rotr64_lo = rotr64_lo;
38554
38555function shr64_hi(ah, al, num) {
38556 return ah >>> num;
38557};
38558exports.shr64_hi = shr64_hi;
38559
38560function shr64_lo(ah, al, num) {
38561 var r = (ah << (32 - num)) | (al >>> num);
38562 return r >>> 0;
38563};
38564exports.shr64_lo = shr64_lo;
38565
38566},{"inherits":63}],63:[function(require,module,exports){
38567arguments[4][9][0].apply(exports,arguments)
38568},{"dup":9}],64:[function(require,module,exports){
38569/**
38570 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
38571 * @param {String} str the string input value
38572 * @return {Boolean} a boolean if it is or is not hex prefixed
38573 * @throws if the str input is not a string
38574 */
38575module.exports = function isHexPrefixed(str) {
38576 if (typeof str !== 'string') {
38577 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
38578 }
38579
38580 return str.slice(0, 2) === '0x';
ebd8d4e8
IC
38581}
38582
8b095871
IC
38583},{}],65:[function(require,module,exports){
38584'use strict'
38585module.exports = require('./lib/api')(require('./lib/keccak'))
38586
38587},{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
38588'use strict'
38589var createKeccak = require('./keccak')
38590var createShake = require('./shake')
38591
38592module.exports = function (KeccakState) {
38593 var Keccak = createKeccak(KeccakState)
38594 var Shake = createShake(KeccakState)
38595
38596 return function (algorithm, options) {
38597 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
38598 switch (hash) {
38599 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
38600 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
38601 case 'keccak384': return new Keccak(832, 768, null, 384, options)
38602 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
38603
38604 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
38605 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
38606 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
38607 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
38608
38609 case 'shake128': return new Shake(1344, 256, 0x1f, options)
38610 case 'shake256': return new Shake(1088, 512, 0x1f, options)
38611
38612 default: throw new Error('Invald algorithm: ' + algorithm)
38613 }
38614 }
38615}
38616
38617},{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
ebd8d4e8 38618(function (Buffer){
8b095871
IC
38619'use strict'
38620var Transform = require('stream').Transform
38621var inherits = require('inherits')
38622
38623module.exports = function (KeccakState) {
38624 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
38625 Transform.call(this, options)
38626
38627 this._rate = rate
38628 this._capacity = capacity
38629 this._delimitedSuffix = delimitedSuffix
38630 this._hashBitLength = hashBitLength
38631 this._options = options
38632
38633 this._state = new KeccakState()
38634 this._state.initialize(rate, capacity)
38635 this._finalized = false
38636 }
38637
38638 inherits(Keccak, Transform)
38639
38640 Keccak.prototype._transform = function (chunk, encoding, callback) {
38641 var error = null
38642 try {
38643 this.update(chunk, encoding)
38644 } catch (err) {
38645 error = err
38646 }
38647
38648 callback(error)
38649 }
38650
38651 Keccak.prototype._flush = function (callback) {
38652 var error = null
38653 try {
38654 this.push(this.digest())
38655 } catch (err) {
38656 error = err
38657 }
38658
38659 callback(error)
38660 }
38661
38662 Keccak.prototype.update = function (data, encoding) {
38663 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38664 if (this._finalized) throw new Error('Digest already called')
38665 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38666
38667 this._state.absorb(data)
38668
38669 return this
38670 }
38671
38672 Keccak.prototype.digest = function (encoding) {
38673 if (this._finalized) throw new Error('Digest already called')
38674 this._finalized = true
38675
38676 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
38677 var digest = this._state.squeeze(this._hashBitLength / 8)
38678 if (encoding !== undefined) digest = digest.toString(encoding)
38679
38680 this._resetState()
38681
38682 return digest
38683 }
38684
38685 // remove result from memory
38686 Keccak.prototype._resetState = function () {
38687 this._state.initialize(this._rate, this._capacity)
38688 return this
38689 }
38690
38691 // because sometimes we need hash right now and little later
38692 Keccak.prototype._clone = function () {
38693 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
38694 this._state.copy(clone._state)
38695 clone._finalized = this._finalized
38696
38697 return clone
38698 }
38699
38700 return Keccak
38701}
38702
38703}).call(this,require("buffer").Buffer)
38704},{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
38705(function (Buffer){
38706'use strict'
38707var Transform = require('stream').Transform
38708var inherits = require('inherits')
38709
38710module.exports = function (KeccakState) {
38711 function Shake (rate, capacity, delimitedSuffix, options) {
38712 Transform.call(this, options)
38713
38714 this._rate = rate
38715 this._capacity = capacity
38716 this._delimitedSuffix = delimitedSuffix
38717 this._options = options
38718
38719 this._state = new KeccakState()
38720 this._state.initialize(rate, capacity)
38721 this._finalized = false
38722 }
38723
38724 inherits(Shake, Transform)
38725
38726 Shake.prototype._transform = function (chunk, encoding, callback) {
38727 var error = null
38728 try {
38729 this.update(chunk, encoding)
38730 } catch (err) {
38731 error = err
38732 }
ebd8d4e8 38733
8b095871
IC
38734 callback(error)
38735 }
ebd8d4e8 38736
8b095871 38737 Shake.prototype._flush = function () {}
ebd8d4e8 38738
8b095871
IC
38739 Shake.prototype._read = function (size) {
38740 this.push(this.squeeze(size))
38741 }
ebd8d4e8 38742
8b095871
IC
38743 Shake.prototype.update = function (data, encoding) {
38744 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
38745 if (this._finalized) throw new Error('Squeeze already called')
38746 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
38747
38748 this._state.absorb(data)
38749
38750 return this
38751 }
38752
38753 Shake.prototype.squeeze = function (dataByteLength, encoding) {
38754 if (!this._finalized) {
38755 this._finalized = true
38756 this._state.absorbLastFewBits(this._delimitedSuffix)
ebd8d4e8 38757 }
ebd8d4e8 38758
8b095871
IC
38759 var data = this._state.squeeze(dataByteLength)
38760 if (encoding !== undefined) data = data.toString(encoding)
ebd8d4e8 38761
8b095871
IC
38762 return data
38763 }
ebd8d4e8 38764
8b095871
IC
38765 Shake.prototype._resetState = function () {
38766 this._state.initialize(this._rate, this._capacity)
38767 return this
38768 }
ebd8d4e8 38769
8b095871
IC
38770 Shake.prototype._clone = function () {
38771 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
38772 this._state.copy(clone._state)
38773 clone._finalized = this._finalized
ab78acc6 38774
8b095871
IC
38775 return clone
38776 }
ebd8d4e8 38777
8b095871
IC
38778 return Shake
38779}
ab78acc6 38780
8b095871
IC
38781}).call(this,require("buffer").Buffer)
38782},{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
38783'use strict'
38784var 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]
38785
38786exports.p1600 = function (s) {
38787 for (var round = 0; round < 24; ++round) {
38788 // theta
38789 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
38790 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
38791 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
38792 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
38793 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
38794 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
38795 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
38796 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
38797 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
38798 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
38799
38800 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
38801 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
38802 var t1slo0 = s[0] ^ lo
38803 var t1shi0 = s[1] ^ hi
38804 var t1slo5 = s[10] ^ lo
38805 var t1shi5 = s[11] ^ hi
38806 var t1slo10 = s[20] ^ lo
38807 var t1shi10 = s[21] ^ hi
38808 var t1slo15 = s[30] ^ lo
38809 var t1shi15 = s[31] ^ hi
38810 var t1slo20 = s[40] ^ lo
38811 var t1shi20 = s[41] ^ hi
38812 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
38813 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
38814 var t1slo1 = s[2] ^ lo
38815 var t1shi1 = s[3] ^ hi
38816 var t1slo6 = s[12] ^ lo
38817 var t1shi6 = s[13] ^ hi
38818 var t1slo11 = s[22] ^ lo
38819 var t1shi11 = s[23] ^ hi
38820 var t1slo16 = s[32] ^ lo
38821 var t1shi16 = s[33] ^ hi
38822 var t1slo21 = s[42] ^ lo
38823 var t1shi21 = s[43] ^ hi
38824 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
38825 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
38826 var t1slo2 = s[4] ^ lo
38827 var t1shi2 = s[5] ^ hi
38828 var t1slo7 = s[14] ^ lo
38829 var t1shi7 = s[15] ^ hi
38830 var t1slo12 = s[24] ^ lo
38831 var t1shi12 = s[25] ^ hi
38832 var t1slo17 = s[34] ^ lo
38833 var t1shi17 = s[35] ^ hi
38834 var t1slo22 = s[44] ^ lo
38835 var t1shi22 = s[45] ^ hi
38836 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
38837 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
38838 var t1slo3 = s[6] ^ lo
38839 var t1shi3 = s[7] ^ hi
38840 var t1slo8 = s[16] ^ lo
38841 var t1shi8 = s[17] ^ hi
38842 var t1slo13 = s[26] ^ lo
38843 var t1shi13 = s[27] ^ hi
38844 var t1slo18 = s[36] ^ lo
38845 var t1shi18 = s[37] ^ hi
38846 var t1slo23 = s[46] ^ lo
38847 var t1shi23 = s[47] ^ hi
38848 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
38849 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
38850 var t1slo4 = s[8] ^ lo
38851 var t1shi4 = s[9] ^ hi
38852 var t1slo9 = s[18] ^ lo
38853 var t1shi9 = s[19] ^ hi
38854 var t1slo14 = s[28] ^ lo
38855 var t1shi14 = s[29] ^ hi
38856 var t1slo19 = s[38] ^ lo
38857 var t1shi19 = s[39] ^ hi
38858 var t1slo24 = s[48] ^ lo
38859 var t1shi24 = s[49] ^ hi
38860
38861 // rho & pi
38862 var t2slo0 = t1slo0
38863 var t2shi0 = t1shi0
38864 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
38865 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
38866 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
38867 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
38868 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
38869 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
38870 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
38871 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
38872 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
38873 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
38874 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
38875 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
38876 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
38877 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
38878 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
38879 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
38880 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
38881 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
38882 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
38883 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
38884 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
38885 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
38886 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
38887 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
38888 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
38889 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
38890 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
38891 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
38892 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
38893 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
38894 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
38895 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
38896 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
38897 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
38898 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
38899 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
38900 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
38901 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
38902 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
38903 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
38904 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
38905 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
38906 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
38907 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
38908 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
38909 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
38910 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
38911 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
38912
38913 // chi
38914 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
38915 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
38916 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
38917 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
38918 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
38919 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
38920 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
38921 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
38922 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
38923 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
38924 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
38925 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
38926 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
38927 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
38928 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
38929 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
38930 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
38931 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
38932 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
38933 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
38934 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
38935 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
38936 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
38937 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
38938 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
38939 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
38940 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
38941 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
38942 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
38943 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
38944 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
38945 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
38946 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
38947 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
38948 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
38949 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
38950 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
38951 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
38952 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
38953 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
38954 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
38955 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
38956 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
38957 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
38958 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
38959 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
38960 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
38961 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
38962 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
38963 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
38964
38965 // iota
38966 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
38967 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
38968 }
38969}
38970
38971},{}],70:[function(require,module,exports){
38972(function (Buffer){
38973'use strict'
38974var keccakState = require('./keccak-state-unroll')
ebd8d4e8 38975
8b095871
IC
38976function Keccak () {
38977 // much faster than `new Array(50)`
38978 this.state = [
38979 0, 0, 0, 0, 0,
38980 0, 0, 0, 0, 0,
38981 0, 0, 0, 0, 0,
38982 0, 0, 0, 0, 0,
38983 0, 0, 0, 0, 0
38984 ]
ebd8d4e8 38985
8b095871
IC
38986 this.blockSize = null
38987 this.count = 0
38988 this.squeezing = false
38989}
ebd8d4e8 38990
8b095871
IC
38991Keccak.prototype.initialize = function (rate, capacity) {
38992 for (var i = 0; i < 50; ++i) this.state[i] = 0
38993 this.blockSize = rate / 8
38994 this.count = 0
38995 this.squeezing = false
38996}
38997
38998Keccak.prototype.absorb = function (data) {
38999 for (var i = 0; i < data.length; ++i) {
39000 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
39001 this.count += 1
39002 if (this.count === this.blockSize) {
39003 keccakState.p1600(this.state)
39004 this.count = 0
ebd8d4e8
IC
39005 }
39006 }
8b095871 39007}
ebd8d4e8 39008
8b095871
IC
39009Keccak.prototype.absorbLastFewBits = function (bits) {
39010 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
39011 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
39012 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
39013 keccakState.p1600(this.state)
39014 this.count = 0
39015 this.squeezing = true
ebd8d4e8
IC
39016}
39017
8b095871
IC
39018Keccak.prototype.squeeze = function (length) {
39019 if (!this.squeezing) this.absorbLastFewBits(0x01)
ebd8d4e8 39020
8b095871
IC
39021 var output = Buffer.allocUnsafe(length)
39022 for (var i = 0; i < length; ++i) {
39023 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
39024 this.count += 1
39025 if (this.count === this.blockSize) {
39026 keccakState.p1600(this.state)
39027 this.count = 0
ebd8d4e8 39028 }
8b095871 39029 }
ebd8d4e8 39030
8b095871
IC
39031 return output
39032}
ebd8d4e8 39033
8b095871
IC
39034Keccak.prototype.copy = function (dest) {
39035 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
39036 dest.blockSize = this.blockSize
39037 dest.count = this.count
39038 dest.squeezing = this.squeezing
39039}
ebd8d4e8 39040
8b095871 39041module.exports = Keccak
ebd8d4e8 39042
8b095871
IC
39043}).call(this,require("buffer").Buffer)
39044},{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
39045(function (Buffer){
39046/*
39047CryptoJS v3.1.2
39048code.google.com/p/crypto-js
39049(c) 2009-2013 by Jeff Mott. All rights reserved.
39050code.google.com/p/crypto-js/wiki/License
39051*/
39052/** @preserve
39053(c) 2012 by Cédric Mesnil. All rights reserved.
ebd8d4e8 39054
8b095871 39055Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
ebd8d4e8 39056
8b095871
IC
39057 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
39058 - 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.
39059
39060THIS 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.
39061*/
39062
39063// constants table
39064var zl = [
39065 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
39066 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
39067 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
39068 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
39069 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
39070]
39071
39072var zr = [
39073 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
39074 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
39075 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
39076 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
39077 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
39078]
39079
39080var sl = [
39081 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
39082 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
39083 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
39084 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
39085 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
39086]
39087
39088var sr = [
39089 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
39090 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
39091 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
39092 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
39093 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
39094]
39095
39096var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
39097var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
39098
39099function bytesToWords (bytes) {
39100 var words = []
39101 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
39102 words[b >>> 5] |= bytes[i] << (24 - b % 32)
39103 }
39104 return words
ebd8d4e8
IC
39105}
39106
8b095871
IC
39107function wordsToBytes (words) {
39108 var bytes = []
39109 for (var b = 0; b < words.length * 32; b += 8) {
39110 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
39111 }
39112 return bytes
ebd8d4e8
IC
39113}
39114
8b095871
IC
39115function processBlock (H, M, offset) {
39116 // swap endian
39117 for (var i = 0; i < 16; i++) {
39118 var offset_i = offset + i
39119 var M_offset_i = M[offset_i]
ebd8d4e8 39120
8b095871
IC
39121 // Swap
39122 M[offset_i] = (
39123 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
39124 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
39125 )
39126 }
ebd8d4e8 39127
8b095871
IC
39128 // Working variables
39129 var al, bl, cl, dl, el
39130 var ar, br, cr, dr, er
39131
39132 ar = al = H[0]
39133 br = bl = H[1]
39134 cr = cl = H[2]
39135 dr = dl = H[3]
39136 er = el = H[4]
39137
39138 // computation
39139 var t
39140 for (i = 0; i < 80; i += 1) {
39141 t = (al + M[offset + zl[i]]) | 0
39142 if (i < 16) {
39143 t += f1(bl, cl, dl) + hl[0]
39144 } else if (i < 32) {
39145 t += f2(bl, cl, dl) + hl[1]
39146 } else if (i < 48) {
39147 t += f3(bl, cl, dl) + hl[2]
39148 } else if (i < 64) {
39149 t += f4(bl, cl, dl) + hl[3]
39150 } else {// if (i<80) {
39151 t += f5(bl, cl, dl) + hl[4]
39152 }
39153 t = t | 0
39154 t = rotl(t, sl[i])
39155 t = (t + el) | 0
39156 al = el
39157 el = dl
39158 dl = rotl(cl, 10)
39159 cl = bl
39160 bl = t
39161
39162 t = (ar + M[offset + zr[i]]) | 0
39163 if (i < 16) {
39164 t += f5(br, cr, dr) + hr[0]
39165 } else if (i < 32) {
39166 t += f4(br, cr, dr) + hr[1]
39167 } else if (i < 48) {
39168 t += f3(br, cr, dr) + hr[2]
39169 } else if (i < 64) {
39170 t += f2(br, cr, dr) + hr[3]
39171 } else {// if (i<80) {
39172 t += f1(br, cr, dr) + hr[4]
39173 }
39174
39175 t = t | 0
39176 t = rotl(t, sr[i])
39177 t = (t + er) | 0
39178 ar = er
39179 er = dr
39180 dr = rotl(cr, 10)
39181 cr = br
39182 br = t
39183 }
39184
39185 // intermediate hash value
39186 t = (H[1] + cl + dr) | 0
39187 H[1] = (H[2] + dl + er) | 0
39188 H[2] = (H[3] + el + ar) | 0
39189 H[3] = (H[4] + al + br) | 0
39190 H[4] = (H[0] + bl + cr) | 0
39191 H[0] = t
ebd8d4e8
IC
39192}
39193
8b095871
IC
39194function f1 (x, y, z) {
39195 return ((x) ^ (y) ^ (z))
ebd8d4e8
IC
39196}
39197
8b095871
IC
39198function f2 (x, y, z) {
39199 return (((x) & (y)) | ((~x) & (z)))
39200}
ebd8d4e8 39201
8b095871
IC
39202function f3 (x, y, z) {
39203 return (((x) | (~(y))) ^ (z))
ebd8d4e8
IC
39204}
39205
8b095871
IC
39206function f4 (x, y, z) {
39207 return (((x) & (z)) | ((y) & (~(z))))
ebd8d4e8
IC
39208}
39209
8b095871
IC
39210function f5 (x, y, z) {
39211 return ((x) ^ ((y) | (~(z))))
ebd8d4e8
IC
39212}
39213
8b095871
IC
39214function rotl (x, n) {
39215 return (x << n) | (x >>> (32 - n))
39216}
ebd8d4e8 39217
8b095871
IC
39218function ripemd160 (message) {
39219 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
ebd8d4e8 39220
8b095871
IC
39221 if (typeof message === 'string') {
39222 message = new Buffer(message, 'utf8')
39223 }
ebd8d4e8 39224
8b095871 39225 var m = bytesToWords(message)
ebd8d4e8 39226
8b095871
IC
39227 var nBitsLeft = message.length * 8
39228 var nBitsTotal = message.length * 8
ebd8d4e8 39229
8b095871
IC
39230 // Add padding
39231 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
39232 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
39233 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
39234 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
39235 )
ebd8d4e8 39236
8b095871
IC
39237 for (var i = 0; i < m.length; i += 16) {
39238 processBlock(H, m, i)
ebd8d4e8
IC
39239 }
39240
8b095871
IC
39241 // swap endian
39242 for (i = 0; i < 5; i++) {
39243 // shortcut
39244 var H_i = H[i]
ebd8d4e8 39245
8b095871
IC
39246 // Swap
39247 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
39248 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
ebd8d4e8
IC
39249 }
39250
8b095871
IC
39251 var digestbytes = wordsToBytes(H)
39252 return new Buffer(digestbytes)
ebd8d4e8
IC
39253}
39254
8b095871 39255module.exports = ripemd160
ebd8d4e8 39256
8b095871
IC
39257}).call(this,require("buffer").Buffer)
39258},{"buffer":5}],72:[function(require,module,exports){
39259(function (Buffer){
39260const assert = require('assert')
39261/**
39262 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
39263 * This function takes in a data, convert it to buffer if not, and a length for recursion
39264 *
39265 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39266 * @returns {Buffer} - returns buffer of encoded data
39267 **/
39268exports.encode = function (input) {
39269 if (input instanceof Array) {
39270 var output = []
39271 for (var i = 0; i < input.length; i++) {
39272 output.push(exports.encode(input[i]))
39273 }
39274 var buf = Buffer.concat(output)
39275 return Buffer.concat([encodeLength(buf.length, 192), buf])
39276 } else {
39277 input = toBuffer(input)
39278 if (input.length === 1 && input[0] < 128) {
39279 return input
39280 } else {
39281 return Buffer.concat([encodeLength(input.length, 128), input])
39282 }
39283 }
ebd8d4e8
IC
39284}
39285
8b095871
IC
39286function safeParseInt (v, base) {
39287 if (v.slice(0, 2) === '00') {
39288 throw (new Error('invalid RLP: extra zeros'))
39289 }
ebd8d4e8 39290
8b095871 39291 return parseInt(v, base)
ebd8d4e8
IC
39292}
39293
8b095871
IC
39294function encodeLength (len, offset) {
39295 if (len < 56) {
39296 return new Buffer([len + offset])
39297 } else {
39298 var hexLength = intToHex(len)
39299 var lLength = hexLength.length / 2
39300 var firstByte = intToHex(offset + 55 + lLength)
39301 return new Buffer(firstByte + hexLength, 'hex')
39302 }
39303}
ebd8d4e8 39304
8b095871
IC
39305/**
39306 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
39307 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
39308 * @returns {Array} - returns decode Array of Buffers containg the original message
39309 **/
39310exports.decode = function (input, stream) {
39311 if (!input || input.length === 0) {
39312 return new Buffer([])
39313 }
ebd8d4e8 39314
8b095871
IC
39315 input = toBuffer(input)
39316 var decoded = _decode(input)
ab78acc6 39317
8b095871
IC
39318 if (stream) {
39319 return decoded
39320 }
ebd8d4e8 39321
8b095871
IC
39322 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
39323 return decoded.data
ebd8d4e8
IC
39324}
39325
8b095871
IC
39326exports.getLength = function (input) {
39327 if (!input || input.length === 0) {
39328 return new Buffer([])
ab78acc6
IC
39329 }
39330
8b095871
IC
39331 input = toBuffer(input)
39332 var firstByte = input[0]
39333 if (firstByte <= 0x7f) {
39334 return input.length
39335 } else if (firstByte <= 0xb7) {
39336 return firstByte - 0x7f
39337 } else if (firstByte <= 0xbf) {
39338 return firstByte - 0xb6
39339 } else if (firstByte <= 0xf7) {
39340 // a list between 0-55 bytes long
39341 return firstByte - 0xbf
39342 } else {
39343 // a list over 55 bytes long
39344 var llength = firstByte - 0xf6
39345 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39346 return llength + length
39347 }
ebd8d4e8
IC
39348}
39349
8b095871
IC
39350function _decode (input) {
39351 var length, llength, data, innerRemainder, d
39352 var decoded = []
39353 var firstByte = input[0]
ebd8d4e8 39354
8b095871
IC
39355 if (firstByte <= 0x7f) {
39356 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
39357 return {
39358 data: input.slice(0, 1),
39359 remainder: input.slice(1)
39360 }
39361 } else if (firstByte <= 0xb7) {
39362 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
39363 // The range of the first byte is [0x80, 0xb7]
39364 length = firstByte - 0x7f
ebd8d4e8 39365
8b095871
IC
39366 // set 0x80 null to 0
39367 if (firstByte === 0x80) {
39368 data = new Buffer([])
39369 } else {
39370 data = input.slice(1, length)
39371 }
ebd8d4e8 39372
8b095871
IC
39373 if (length === 2 && data[0] < 0x80) {
39374 throw new Error('invalid rlp encoding: byte must be less 0x80')
39375 }
ebd8d4e8 39376
8b095871
IC
39377 return {
39378 data: data,
39379 remainder: input.slice(length)
39380 }
39381 } else if (firstByte <= 0xbf) {
39382 llength = firstByte - 0xb6
39383 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39384 data = input.slice(llength, length + llength)
39385 if (data.length < length) {
39386 throw (new Error('invalid RLP'))
39387 }
ebd8d4e8 39388
8b095871
IC
39389 return {
39390 data: data,
39391 remainder: input.slice(length + llength)
39392 }
39393 } else if (firstByte <= 0xf7) {
39394 // a list between 0-55 bytes long
39395 length = firstByte - 0xbf
39396 innerRemainder = input.slice(1, length)
39397 while (innerRemainder.length) {
39398 d = _decode(innerRemainder)
39399 decoded.push(d.data)
39400 innerRemainder = d.remainder
39401 }
ebd8d4e8 39402
8b095871
IC
39403 return {
39404 data: decoded,
39405 remainder: input.slice(length)
39406 }
39407 } else {
39408 // a list over 55 bytes long
39409 llength = firstByte - 0xf6
39410 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
39411 var totalLength = llength + length
39412 if (totalLength > input.length) {
39413 throw new Error('invalid rlp: total length is larger than the data')
39414 }
ab78acc6 39415
8b095871
IC
39416 innerRemainder = input.slice(llength, totalLength)
39417 if (innerRemainder.length === 0) {
39418 throw new Error('invalid rlp, List has a invalid length')
39419 }
ab78acc6 39420
8b095871
IC
39421 while (innerRemainder.length) {
39422 d = _decode(innerRemainder)
39423 decoded.push(d.data)
39424 innerRemainder = d.remainder
39425 }
39426 return {
39427 data: decoded,
39428 remainder: input.slice(totalLength)
39429 }
ab78acc6 39430 }
8b095871 39431}
ab78acc6 39432
8b095871
IC
39433function isHexPrefixed (str) {
39434 return str.slice(0, 2) === '0x'
ab78acc6
IC
39435}
39436
8b095871
IC
39437// Removes 0x from a given String
39438function stripHexPrefix (str) {
39439 if (typeof str !== 'string') {
39440 return str
39441 }
39442 return isHexPrefixed(str) ? str.slice(2) : str
39443}
ab78acc6 39444
8b095871
IC
39445function intToHex (i) {
39446 var hex = i.toString(16)
39447 if (hex.length % 2) {
39448 hex = '0' + hex
ab78acc6
IC
39449 }
39450
8b095871 39451 return hex
ebd8d4e8
IC
39452}
39453
8b095871
IC
39454function padToEven (a) {
39455 if (a.length % 2) a = '0' + a
39456 return a
ebd8d4e8
IC
39457}
39458
8b095871
IC
39459function intToBuffer (i) {
39460 var hex = intToHex(i)
39461 return new Buffer(hex, 'hex')
ebd8d4e8
IC
39462}
39463
8b095871
IC
39464function toBuffer (v) {
39465 if (!Buffer.isBuffer(v)) {
39466 if (typeof v === 'string') {
39467 if (isHexPrefixed(v)) {
39468 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
39469 } else {
39470 v = new Buffer(v)
39471 }
39472 } else if (typeof v === 'number') {
39473 if (!v) {
39474 v = new Buffer([])
39475 } else {
39476 v = intToBuffer(v)
39477 }
39478 } else if (v === null || v === undefined) {
39479 v = new Buffer([])
39480 } else if (v.toArray) {
39481 // converts a BN to a Buffer
39482 v = new Buffer(v.toArray())
39483 } else {
39484 throw new Error('invalid type')
39485 }
39486 }
39487 return v
ebd8d4e8
IC
39488}
39489
8b095871
IC
39490}).call(this,require("buffer").Buffer)
39491},{"assert":1,"buffer":5}],73:[function(require,module,exports){
39492'use strict'
39493module.exports = require('./lib')(require('./lib/elliptic'))
ebd8d4e8 39494
8b095871
IC
39495},{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
39496(function (Buffer){
39497'use strict'
39498var toString = Object.prototype.toString
ebd8d4e8 39499
8b095871
IC
39500// TypeError
39501exports.isArray = function (value, message) {
39502 if (!Array.isArray(value)) throw TypeError(message)
ebd8d4e8
IC
39503}
39504
8b095871
IC
39505exports.isBoolean = function (value, message) {
39506 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
39507}
ebd8d4e8 39508
8b095871
IC
39509exports.isBuffer = function (value, message) {
39510 if (!Buffer.isBuffer(value)) throw TypeError(message)
ebd8d4e8
IC
39511}
39512
8b095871
IC
39513exports.isFunction = function (value, message) {
39514 if (toString.call(value) !== '[object Function]') throw TypeError(message)
ebd8d4e8
IC
39515}
39516
8b095871
IC
39517exports.isNumber = function (value, message) {
39518 if (toString.call(value) !== '[object Number]') throw TypeError(message)
39519}
ab78acc6 39520
8b095871
IC
39521exports.isObject = function (value, message) {
39522 if (toString.call(value) !== '[object Object]') throw TypeError(message)
39523}
ebd8d4e8 39524
8b095871
IC
39525// RangeError
39526exports.isBufferLength = function (buffer, length, message) {
39527 if (buffer.length !== length) throw RangeError(message)
39528}
ebd8d4e8 39529
8b095871
IC
39530exports.isBufferLength2 = function (buffer, length1, length2, message) {
39531 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
ab78acc6
IC
39532}
39533
8b095871
IC
39534exports.isLengthGTZero = function (value, message) {
39535 if (value.length === 0) throw RangeError(message)
ebd8d4e8
IC
39536}
39537
8b095871
IC
39538exports.isNumberInInterval = function (number, x, y, message) {
39539 if (number <= x || number >= y) throw RangeError(message)
ebd8d4e8
IC
39540}
39541
8b095871
IC
39542}).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
39543},{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
ebd8d4e8 39544(function (Buffer){
8b095871
IC
39545'use strict'
39546var bip66 = require('bip66')
39547
39548var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
39549 // begin
39550 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
39551 // private key
39552 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39553 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39554 // middle
39555 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39556 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39557 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39558 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39559 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39560 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39561 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39562 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39563 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
39564 // public key
39565 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39566 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39567 0x00
39568])
39569
39570var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
39571 // begin
39572 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
39573 // private key
39574 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39575 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39576 // middle
39577 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
39578 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39579 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39580 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
39581 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
39582 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
39583 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
39584 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
39585 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
39586 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
39587 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
39588 // public key
39589 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39590 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39591 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39592 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39593 0x00
39594])
39595
39596var ZERO_BUFFER_32 = new Buffer([
39597 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39598 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
39599])
39600
39601exports.privateKeyExport = function (privateKey, publicKey, compressed) {
39602 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
39603 privateKey.copy(result, compressed ? 8 : 9)
39604 publicKey.copy(result, compressed ? 181 : 214)
39605 return result
39606}
39607
39608exports.privateKeyImport = function (privateKey) {
39609 var length = privateKey.length
39610
39611 // sequence header
39612 var index = 0
39613 if (length < index + 1 || privateKey[index] !== 0x30) return
39614 index += 1
39615
39616 // sequence length constructor
39617 if (length < index + 1 || !(privateKey[index] & 0x80)) return
39618
39619 var lenb = privateKey[index] & 0x7f
39620 index += 1
39621 if (lenb < 1 || lenb > 2) return
39622 if (length < index + lenb) return
39623
39624 // sequence length
39625 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
39626 index += lenb
39627 if (length < index + len) return
39628
39629 // sequence element 0: version number (=1)
39630 if (length < index + 3 ||
39631 privateKey[index] !== 0x02 ||
39632 privateKey[index + 1] !== 0x01 ||
39633 privateKey[index + 2] !== 0x01) {
39634 return
39635 }
39636 index += 3
ab78acc6 39637
8b095871
IC
39638 // sequence element 1: octet string, up to 32 bytes
39639 if (length < index + 2 ||
39640 privateKey[index] !== 0x04 ||
39641 privateKey[index + 1] > 0x20 ||
39642 length < index + 2 + privateKey[index + 1]) {
39643 return
39644 }
ab78acc6 39645
8b095871 39646 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
ab78acc6 39647}
ebd8d4e8 39648
8b095871
IC
39649exports.signatureExport = function (sigObj) {
39650 var r = Buffer.concat([new Buffer([0]), sigObj.r])
39651 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
ebd8d4e8 39652
8b095871
IC
39653 var s = Buffer.concat([new Buffer([0]), sigObj.s])
39654 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
ab78acc6 39655
8b095871
IC
39656 return bip66.encode(r.slice(posR), s.slice(posS))
39657}
ab78acc6 39658
8b095871
IC
39659exports.signatureImport = function (sig) {
39660 var r = new Buffer(ZERO_BUFFER_32)
39661 var s = new Buffer(ZERO_BUFFER_32)
ab78acc6 39662
8b095871
IC
39663 try {
39664 var sigObj = bip66.decode(sig)
39665 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
39666 if (sigObj.r.length > 32) throw new Error('R length is too long')
39667 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
39668 if (sigObj.s.length > 32) throw new Error('S length is too long')
39669 } catch (err) {
39670 return
ab78acc6
IC
39671 }
39672
8b095871
IC
39673 sigObj.r.copy(r, 32 - sigObj.r.length)
39674 sigObj.s.copy(s, 32 - sigObj.s.length)
ab78acc6 39675
8b095871
IC
39676 return { r: r, s: s }
39677}
ab78acc6 39678
8b095871
IC
39679exports.signatureImportLax = function (sig) {
39680 var r = new Buffer(ZERO_BUFFER_32)
39681 var s = new Buffer(ZERO_BUFFER_32)
ab78acc6 39682
8b095871
IC
39683 var length = sig.length
39684 var index = 0
ab78acc6 39685
8b095871
IC
39686 // sequence tag byte
39687 if (sig[index++] !== 0x30) return
39688
39689 // sequence length byte
39690 var lenbyte = sig[index++]
39691 if (lenbyte & 0x80) {
39692 index += lenbyte - 0x80
39693 if (index > length) return
ab78acc6
IC
39694 }
39695
8b095871
IC
39696 // sequence tag byte for r
39697 if (sig[index++] !== 0x02) return
39698
39699 // length for r
39700 var rlen = sig[index++]
39701 if (rlen & 0x80) {
39702 lenbyte = rlen - 0x80
39703 if (index + lenbyte > length) return
39704 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39705 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
ab78acc6 39706 }
8b095871
IC
39707 if (rlen > length - index) return
39708 var rindex = index
39709 index += rlen
ab78acc6 39710
8b095871
IC
39711 // sequence tag byte for s
39712 if (sig[index++] !== 0x02) return
ab78acc6 39713
8b095871
IC
39714 // length for s
39715 var slen = sig[index++]
39716 if (slen & 0x80) {
39717 lenbyte = slen - 0x80
39718 if (index + lenbyte > length) return
39719 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
39720 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
ab78acc6 39721 }
8b095871
IC
39722 if (slen > length - index) return
39723 var sindex = index
39724 index += slen
ab78acc6 39725
8b095871
IC
39726 // ignore leading zeros in r
39727 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
39728 // copy r value
39729 if (rlen > 32) return
39730 var rvalue = sig.slice(rindex, rindex + rlen)
39731 rvalue.copy(r, 32 - rvalue.length)
ab78acc6 39732
8b095871
IC
39733 // ignore leading zeros in s
39734 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
39735 // copy s value
39736 if (slen > 32) return
39737 var svalue = sig.slice(sindex, sindex + slen)
39738 svalue.copy(s, 32 - svalue.length)
39739
39740 return { r: r, s: s }
ab78acc6
IC
39741}
39742
8b095871
IC
39743}).call(this,require("buffer").Buffer)
39744},{"bip66":32,"buffer":5}],76:[function(require,module,exports){
39745(function (Buffer){
39746'use strict'
39747var createHash = require('create-hash')
39748var BN = require('bn.js')
39749var EC = require('elliptic').ec
39750
39751var messages = require('../messages.json')
39752
39753var ec = new EC('secp256k1')
39754var ecparams = ec.curve
39755
39756function loadCompressedPublicKey (first, xBuffer) {
39757 var x = new BN(xBuffer)
39758
39759 // overflow
39760 if (x.cmp(ecparams.p) >= 0) return null
39761 x = x.toRed(ecparams.red)
39762
39763 // compute corresponding Y
39764 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
39765 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
39766
39767 return ec.keyPair({ pub: { x: x, y: y } })
ebd8d4e8
IC
39768}
39769
8b095871
IC
39770function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
39771 var x = new BN(xBuffer)
39772 var y = new BN(yBuffer)
ebd8d4e8 39773
8b095871
IC
39774 // overflow
39775 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
ebd8d4e8 39776
8b095871
IC
39777 x = x.toRed(ecparams.red)
39778 y = y.toRed(ecparams.red)
ebd8d4e8 39779
8b095871
IC
39780 // is odd flag
39781 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
ab78acc6 39782
8b095871
IC
39783 // x*x*x + b = y*y
39784 var x3 = x.redSqr().redIMul(x)
39785 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
ebd8d4e8 39786
8b095871 39787 return ec.keyPair({ pub: { x: x, y: y } })
ebd8d4e8
IC
39788}
39789
8b095871
IC
39790function loadPublicKey (publicKey) {
39791 var first = publicKey[0]
39792 switch (first) {
39793 case 0x02:
39794 case 0x03:
39795 if (publicKey.length !== 33) return null
39796 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
39797 case 0x04:
39798 case 0x06:
39799 case 0x07:
39800 if (publicKey.length !== 65) return null
39801 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
39802 default:
39803 return null
ebd8d4e8 39804 }
8b095871 39805}
ebd8d4e8 39806
8b095871
IC
39807exports.privateKeyVerify = function (privateKey) {
39808 var bn = new BN(privateKey)
39809 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
39810}
ebd8d4e8 39811
8b095871
IC
39812exports.privateKeyExport = function (privateKey, compressed) {
39813 var d = new BN(privateKey)
39814 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
ab78acc6 39815
8b095871 39816 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
ebd8d4e8
IC
39817}
39818
8b095871
IC
39819exports.privateKeyTweakAdd = function (privateKey, tweak) {
39820 var bn = new BN(tweak)
39821 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
ab78acc6 39822
8b095871
IC
39823 bn.iadd(new BN(privateKey))
39824 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
39825 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
ab78acc6 39826
8b095871
IC
39827 return bn.toArrayLike(Buffer, 'be', 32)
39828}
39829
39830exports.privateKeyTweakMul = function (privateKey, tweak) {
39831 var bn = new BN(tweak)
39832 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
39833
39834 bn.imul(new BN(privateKey))
39835 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
39836
39837 return bn.toArrayLike(Buffer, 'be', 32)
39838}
39839
39840exports.publicKeyCreate = function (privateKey, compressed) {
39841 var d = new BN(privateKey)
39842 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
39843
39844 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
39845}
39846
39847exports.publicKeyConvert = function (publicKey, compressed) {
39848 var pair = loadPublicKey(publicKey)
39849 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6 39850
8b095871 39851 return new Buffer(pair.getPublic(compressed, true))
ab78acc6
IC
39852}
39853
8b095871
IC
39854exports.publicKeyVerify = function (publicKey) {
39855 return loadPublicKey(publicKey) !== null
39856}
ab78acc6 39857
8b095871
IC
39858exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
39859 var pair = loadPublicKey(publicKey)
39860 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6 39861
8b095871
IC
39862 tweak = new BN(tweak)
39863 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
ab78acc6 39864
8b095871
IC
39865 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
39866}
ab78acc6 39867
8b095871
IC
39868exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
39869 var pair = loadPublicKey(publicKey)
39870 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6 39871
8b095871
IC
39872 tweak = new BN(tweak)
39873 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
ab78acc6 39874
8b095871
IC
39875 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
39876}
ab78acc6 39877
8b095871
IC
39878exports.publicKeyCombine = function (publicKeys, compressed) {
39879 var pairs = new Array(publicKeys.length)
39880 for (var i = 0; i < publicKeys.length; ++i) {
39881 pairs[i] = loadPublicKey(publicKeys[i])
39882 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6
IC
39883 }
39884
8b095871
IC
39885 var point = pairs[0].pub
39886 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
39887 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
ab78acc6 39888
8b095871
IC
39889 return new Buffer(point.encode(true, compressed))
39890}
ab78acc6 39891
8b095871
IC
39892exports.signatureNormalize = function (signature) {
39893 var r = new BN(signature.slice(0, 32))
39894 var s = new BN(signature.slice(32, 64))
39895 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39896
39897 var result = new Buffer(signature)
39898 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
39899
39900 return result
ab78acc6
IC
39901}
39902
8b095871
IC
39903exports.signatureExport = function (signature) {
39904 var r = signature.slice(0, 32)
39905 var s = signature.slice(32, 64)
39906 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39907
39908 return { r: r, s: s }
ab78acc6
IC
39909}
39910
8b095871
IC
39911exports.signatureImport = function (sigObj) {
39912 var r = new BN(sigObj.r)
39913 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
39914
39915 var s = new BN(sigObj.s)
39916 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
39917
39918 return Buffer.concat([
39919 r.toArrayLike(Buffer, 'be', 32),
39920 s.toArrayLike(Buffer, 'be', 32)
39921 ])
ab78acc6
IC
39922}
39923
8b095871
IC
39924exports.sign = function (message, privateKey, noncefn, data) {
39925 if (typeof noncefn === 'function') {
39926 var getNonce = noncefn
39927 noncefn = function (counter) {
39928 var nonce = getNonce(message, privateKey, null, data, counter)
39929 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
ebd8d4e8 39930
8b095871
IC
39931 return new BN(nonce)
39932 }
ab78acc6 39933 }
ebd8d4e8 39934
8b095871
IC
39935 var d = new BN(privateKey)
39936 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
ebd8d4e8 39937
8b095871
IC
39938 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
39939 return {
39940 signature: Buffer.concat([
39941 result.r.toArrayLike(Buffer, 'be', 32),
39942 result.s.toArrayLike(Buffer, 'be', 32)
39943 ]),
39944 recovery: result.recoveryParam
ebd8d4e8 39945 }
8b095871 39946}
ab78acc6 39947
8b095871
IC
39948exports.verify = function (message, signature, publicKey) {
39949 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
ab78acc6 39950
8b095871
IC
39951 var sigr = new BN(sigObj.r)
39952 var sigs = new BN(sigObj.s)
39953 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
39954 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
ab78acc6 39955
8b095871
IC
39956 var pair = loadPublicKey(publicKey)
39957 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ebd8d4e8 39958
8b095871
IC
39959 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
39960}
ebd8d4e8 39961
8b095871
IC
39962exports.recover = function (message, signature, recovery, compressed) {
39963 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
ebd8d4e8 39964
8b095871
IC
39965 var sigr = new BN(sigObj.r)
39966 var sigs = new BN(sigObj.s)
39967 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
ebd8d4e8 39968
8b095871
IC
39969 try {
39970 if (sigr.isZero() || sigs.isZero()) throw new Error()
ebd8d4e8 39971
8b095871
IC
39972 var point = ec.recoverPubKey(message, sigObj, recovery)
39973 return new Buffer(point.encode(true, compressed))
39974 } catch (err) {
39975 throw new Error(messages.ECDSA_RECOVER_FAIL)
39976 }
ebd8d4e8
IC
39977}
39978
8b095871
IC
39979exports.ecdh = function (publicKey, privateKey) {
39980 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
39981 return createHash('sha256').update(shared).digest()
ebd8d4e8
IC
39982}
39983
8b095871
IC
39984exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
39985 var pair = loadPublicKey(publicKey)
39986 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
ab78acc6 39987
8b095871
IC
39988 var scalar = new BN(privateKey)
39989 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
39990
39991 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
ab78acc6
IC
39992}
39993
8b095871
IC
39994}).call(this,require("buffer").Buffer)
39995},{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
39996'use strict'
39997var assert = require('./assert')
39998var der = require('./der')
39999var messages = require('./messages.json')
ab78acc6 40000
8b095871
IC
40001function initCompressedValue (value, defaultValue) {
40002 if (value === undefined) return defaultValue
ab78acc6 40003
8b095871
IC
40004 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
40005 return value
ab78acc6
IC
40006}
40007
8b095871
IC
40008module.exports = function (secp256k1) {
40009 return {
40010 privateKeyVerify: function (privateKey) {
40011 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40012 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
40013 },
ab78acc6 40014
8b095871
IC
40015 privateKeyExport: function (privateKey, compressed) {
40016 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40017 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 40018
8b095871
IC
40019 compressed = initCompressedValue(compressed, true)
40020 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
ab78acc6 40021
8b095871
IC
40022 return der.privateKeyExport(privateKey, publicKey, compressed)
40023 },
ab78acc6 40024
8b095871
IC
40025 privateKeyImport: function (privateKey) {
40026 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
ab78acc6 40027
8b095871
IC
40028 privateKey = der.privateKeyImport(privateKey)
40029 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
ab78acc6 40030
8b095871
IC
40031 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
40032 },
ab78acc6 40033
8b095871
IC
40034 privateKeyTweakAdd: function (privateKey, tweak) {
40035 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40036 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 40037
8b095871
IC
40038 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40039 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
ab78acc6 40040
8b095871
IC
40041 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
40042 },
ab78acc6 40043
8b095871
IC
40044 privateKeyTweakMul: function (privateKey, tweak) {
40045 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40046 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 40047
8b095871
IC
40048 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40049 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
ab78acc6 40050
8b095871
IC
40051 return secp256k1.privateKeyTweakMul(privateKey, tweak)
40052 },
ab78acc6 40053
8b095871
IC
40054 publicKeyCreate: function (privateKey, compressed) {
40055 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40056 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 40057
8b095871 40058 compressed = initCompressedValue(compressed, true)
ab78acc6 40059
8b095871
IC
40060 return secp256k1.publicKeyCreate(privateKey, compressed)
40061 },
ab78acc6 40062
8b095871
IC
40063 publicKeyConvert: function (publicKey, compressed) {
40064 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40065 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
ab78acc6 40066
8b095871
IC
40067 compressed = initCompressedValue(compressed, true)
40068
40069 return secp256k1.publicKeyConvert(publicKey, compressed)
40070 },
40071
40072 publicKeyVerify: function (publicKey) {
40073 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40074 return secp256k1.publicKeyVerify(publicKey)
40075 },
40076
40077 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
40078 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40079 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40080
40081 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40082 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40083
40084 compressed = initCompressedValue(compressed, true)
40085
40086 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
40087 },
40088
40089 publicKeyTweakMul: function (publicKey, tweak, compressed) {
40090 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40091 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40092
40093 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
40094 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
40095
40096 compressed = initCompressedValue(compressed, true)
40097
40098 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
40099 },
40100
40101 publicKeyCombine: function (publicKeys, compressed) {
40102 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
40103 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
40104 for (var i = 0; i < publicKeys.length; ++i) {
40105 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
40106 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
ab78acc6
IC
40107 }
40108
8b095871 40109 compressed = initCompressedValue(compressed, true)
ab78acc6 40110
8b095871
IC
40111 return secp256k1.publicKeyCombine(publicKeys, compressed)
40112 },
ab78acc6 40113
8b095871
IC
40114 signatureNormalize: function (signature) {
40115 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40116 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
ab78acc6 40117
8b095871
IC
40118 return secp256k1.signatureNormalize(signature)
40119 },
ab78acc6 40120
8b095871
IC
40121 signatureExport: function (signature) {
40122 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40123 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40124
40125 var sigObj = secp256k1.signatureExport(signature)
40126 return der.signatureExport(sigObj)
40127 },
40128
40129 signatureImport: function (sig) {
40130 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40131 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40132
40133 var sigObj = der.signatureImport(sig)
40134 if (sigObj) return secp256k1.signatureImport(sigObj)
40135
40136 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40137 },
40138
40139 signatureImportLax: function (sig) {
40140 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40141 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
40142
40143 var sigObj = der.signatureImportLax(sig)
40144 if (sigObj) return secp256k1.signatureImport(sigObj)
40145
40146 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
40147 },
40148
40149 sign: function (message, privateKey, options) {
40150 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40151 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
40152
40153 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40154 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
40155
40156 var data = null
40157 var noncefn = null
40158 if (options !== undefined) {
40159 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
40160
40161 if (options.data !== undefined) {
40162 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
40163 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
40164 data = options.data
40165 }
40166
40167 if (options.noncefn !== undefined) {
40168 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
40169 noncefn = options.noncefn
40170 }
ab78acc6
IC
40171 }
40172
8b095871
IC
40173 return secp256k1.sign(message, privateKey, noncefn, data)
40174 },
ab78acc6 40175
8b095871
IC
40176 verify: function (message, signature, publicKey) {
40177 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40178 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
ab78acc6 40179
8b095871
IC
40180 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40181 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
ab78acc6 40182
8b095871
IC
40183 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40184 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
40185
40186 return secp256k1.verify(message, signature, publicKey)
40187 },
ab78acc6 40188
8b095871
IC
40189 recover: function (message, signature, recovery, compressed) {
40190 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
40191 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
ab78acc6 40192
8b095871
IC
40193 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
40194 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
ab78acc6 40195
8b095871
IC
40196 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
40197 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
ab78acc6 40198
8b095871 40199 compressed = initCompressedValue(compressed, true)
ab78acc6 40200
8b095871
IC
40201 return secp256k1.recover(message, signature, recovery, compressed)
40202 },
ab78acc6 40203
8b095871
IC
40204 ecdh: function (publicKey, privateKey) {
40205 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40206 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
ab78acc6 40207
8b095871
IC
40208 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40209 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 40210
8b095871
IC
40211 return secp256k1.ecdh(publicKey, privateKey)
40212 },
ab78acc6 40213
8b095871
IC
40214 ecdhUnsafe: function (publicKey, privateKey, compressed) {
40215 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
40216 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
ab78acc6 40217
8b095871
IC
40218 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
40219 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
ab78acc6 40220
8b095871 40221 compressed = initCompressedValue(compressed, true)
ab78acc6 40222
8b095871
IC
40223 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
40224 }
40225 }
40226}
ab78acc6 40227
8b095871
IC
40228},{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
40229module.exports={
40230 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
40231 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
40232 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
40233 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
40234 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40235 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
40236 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
40237 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
40238 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
40239 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
40240 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
40241 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
40242 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
40243 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
40244 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
40245 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
40246 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
40247 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
40248 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
40249 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
40250 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
40251 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
40252 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
40253 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
40254 "MSG32_TYPE_INVALID": "message should be a Buffer",
40255 "MSG32_LENGTH_INVALID": "message length is invalid",
40256 "OPTIONS_TYPE_INVALID": "options should be an Object",
40257 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
40258 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
40259 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
40260 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
40261 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
40262 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
40263 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
40264}
40265
40266},{}],79:[function(require,module,exports){
40267(function (Buffer){
40268// prototype class for hash functions
40269function Hash (blockSize, finalSize) {
40270 this._block = new Buffer(blockSize)
40271 this._finalSize = finalSize
40272 this._blockSize = blockSize
40273 this._len = 0
40274 this._s = 0
40275}
40276
40277Hash.prototype.update = function (data, enc) {
40278 if (typeof data === 'string') {
40279 enc = enc || 'utf8'
40280 data = new Buffer(data, enc)
ab78acc6
IC
40281 }
40282
8b095871
IC
40283 var l = this._len += data.length
40284 var s = this._s || 0
40285 var f = 0
40286 var buffer = this._block
ab78acc6 40287
8b095871
IC
40288 while (s < l) {
40289 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
40290 var ch = (t - f)
ab78acc6 40291
8b095871
IC
40292 for (var i = 0; i < ch; i++) {
40293 buffer[(s % this._blockSize) + i] = data[i + f]
ab78acc6
IC
40294 }
40295
8b095871
IC
40296 s += ch
40297 f += ch
ab78acc6 40298
8b095871
IC
40299 if ((s % this._blockSize) === 0) {
40300 this._update(buffer)
40301 }
ab78acc6 40302 }
8b095871 40303 this._s = s
ab78acc6 40304
8b095871
IC
40305 return this
40306}
ab78acc6 40307
8b095871
IC
40308Hash.prototype.digest = function (enc) {
40309 // Suppose the length of the message M, in bits, is l
40310 var l = this._len * 8
ab78acc6 40311
8b095871
IC
40312 // Append the bit 1 to the end of the message
40313 this._block[this._len % this._blockSize] = 0x80
ab78acc6 40314
8b095871
IC
40315 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
40316 this._block.fill(0, this._len % this._blockSize + 1)
ab78acc6 40317
8b095871
IC
40318 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
40319 this._update(this._block)
40320 this._block.fill(0)
40321 }
ab78acc6 40322
8b095871
IC
40323 // to this append the block which is equal to the number l written in binary
40324 // TODO: handle case where l is > Math.pow(2, 29)
40325 this._block.writeInt32BE(l, this._blockSize - 4)
ebd8d4e8 40326
8b095871 40327 var hash = this._update(this._block) || this._hash()
ebd8d4e8 40328
8b095871 40329 return enc ? hash.toString(enc) : hash
ab78acc6 40330}
ebd8d4e8 40331
8b095871
IC
40332Hash.prototype._update = function () {
40333 throw new Error('_update must be implemented by subclass')
ab78acc6 40334}
8b095871
IC
40335
40336module.exports = Hash
40337
40338}).call(this,require("buffer").Buffer)
40339},{"buffer":5}],80:[function(require,module,exports){
40340var exports = module.exports = function SHA (algorithm) {
40341 algorithm = algorithm.toLowerCase()
40342
40343 var Algorithm = exports[algorithm]
40344 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
40345
40346 return new Algorithm()
ab78acc6 40347}
ebd8d4e8 40348
8b095871
IC
40349exports.sha = require('./sha')
40350exports.sha1 = require('./sha1')
40351exports.sha224 = require('./sha224')
40352exports.sha256 = require('./sha256')
40353exports.sha384 = require('./sha384')
40354exports.sha512 = require('./sha512')
40355
40356},{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
40357(function (Buffer){
40358/*
40359 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
40360 * in FIPS PUB 180-1
40361 * This source code is derived from sha1.js of the same repository.
40362 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
40363 * operation was added.
40364 */
40365
40366var inherits = require('inherits')
40367var Hash = require('./hash')
40368
40369var K = [
40370 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40371]
40372
40373var W = new Array(80)
40374
40375function Sha () {
40376 this.init()
40377 this._w = W
40378
40379 Hash.call(this, 64, 56)
ab78acc6 40380}
ebd8d4e8 40381
8b095871 40382inherits(Sha, Hash)
ebd8d4e8 40383
8b095871
IC
40384Sha.prototype.init = function () {
40385 this._a = 0x67452301
40386 this._b = 0xefcdab89
40387 this._c = 0x98badcfe
40388 this._d = 0x10325476
40389 this._e = 0xc3d2e1f0
ebd8d4e8 40390
8b095871
IC
40391 return this
40392}
ebd8d4e8 40393
8b095871
IC
40394function rotl5 (num) {
40395 return (num << 5) | (num >>> 27)
40396}
ebd8d4e8 40397
8b095871
IC
40398function rotl30 (num) {
40399 return (num << 30) | (num >>> 2)
40400}
ebd8d4e8 40401
8b095871
IC
40402function ft (s, b, c, d) {
40403 if (s === 0) return (b & c) | ((~b) & d)
40404 if (s === 2) return (b & c) | (b & d) | (c & d)
40405 return b ^ c ^ d
40406}
ebd8d4e8 40407
8b095871
IC
40408Sha.prototype._update = function (M) {
40409 var W = this._w
ebd8d4e8 40410
8b095871
IC
40411 var a = this._a | 0
40412 var b = this._b | 0
40413 var c = this._c | 0
40414 var d = this._d | 0
40415 var e = this._e | 0
ebd8d4e8 40416
8b095871
IC
40417 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40418 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
ebd8d4e8 40419
8b095871
IC
40420 for (var j = 0; j < 80; ++j) {
40421 var s = ~~(j / 20)
40422 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
ebd8d4e8 40423
8b095871
IC
40424 e = d
40425 d = c
40426 c = rotl30(b)
40427 b = a
40428 a = t
40429 }
40430
40431 this._a = (a + this._a) | 0
40432 this._b = (b + this._b) | 0
40433 this._c = (c + this._c) | 0
40434 this._d = (d + this._d) | 0
40435 this._e = (e + this._e) | 0
40436}
40437
40438Sha.prototype._hash = function () {
40439 var H = new Buffer(20)
ab78acc6 40440
8b095871
IC
40441 H.writeInt32BE(this._a | 0, 0)
40442 H.writeInt32BE(this._b | 0, 4)
40443 H.writeInt32BE(this._c | 0, 8)
40444 H.writeInt32BE(this._d | 0, 12)
40445 H.writeInt32BE(this._e | 0, 16)
ebd8d4e8 40446
8b095871 40447 return H
ebd8d4e8
IC
40448}
40449
8b095871 40450module.exports = Sha
ebd8d4e8 40451
8b095871
IC
40452}).call(this,require("buffer").Buffer)
40453},{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
40454(function (Buffer){
40455/*
40456 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
40457 * in FIPS PUB 180-1
40458 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
40459 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40460 * Distributed under the BSD License
40461 * See http://pajhome.org.uk/crypt/md5 for details.
40462 */
ebd8d4e8 40463
8b095871
IC
40464var inherits = require('inherits')
40465var Hash = require('./hash')
ebd8d4e8 40466
8b095871
IC
40467var K = [
40468 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
40469]
ebd8d4e8 40470
8b095871 40471var W = new Array(80)
ab78acc6 40472
8b095871
IC
40473function Sha1 () {
40474 this.init()
40475 this._w = W
ebd8d4e8 40476
8b095871
IC
40477 Hash.call(this, 64, 56)
40478}
ebd8d4e8 40479
8b095871 40480inherits(Sha1, Hash)
ebd8d4e8 40481
8b095871
IC
40482Sha1.prototype.init = function () {
40483 this._a = 0x67452301
40484 this._b = 0xefcdab89
40485 this._c = 0x98badcfe
40486 this._d = 0x10325476
40487 this._e = 0xc3d2e1f0
ebd8d4e8 40488
8b095871
IC
40489 return this
40490}
ebd8d4e8 40491
8b095871
IC
40492function rotl1 (num) {
40493 return (num << 1) | (num >>> 31)
40494}
ebd8d4e8 40495
8b095871
IC
40496function rotl5 (num) {
40497 return (num << 5) | (num >>> 27)
40498}
ebd8d4e8 40499
8b095871
IC
40500function rotl30 (num) {
40501 return (num << 30) | (num >>> 2)
40502}
ebd8d4e8 40503
8b095871
IC
40504function ft (s, b, c, d) {
40505 if (s === 0) return (b & c) | ((~b) & d)
40506 if (s === 2) return (b & c) | (b & d) | (c & d)
40507 return b ^ c ^ d
40508}
ebd8d4e8 40509
8b095871
IC
40510Sha1.prototype._update = function (M) {
40511 var W = this._w
ebd8d4e8 40512
8b095871
IC
40513 var a = this._a | 0
40514 var b = this._b | 0
40515 var c = this._c | 0
40516 var d = this._d | 0
40517 var e = this._e | 0
ebd8d4e8 40518
8b095871
IC
40519 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40520 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
40521
40522 for (var j = 0; j < 80; ++j) {
40523 var s = ~~(j / 20)
40524 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
40525
40526 e = d
40527 d = c
40528 c = rotl30(b)
40529 b = a
40530 a = t
ab78acc6
IC
40531 }
40532
8b095871
IC
40533 this._a = (a + this._a) | 0
40534 this._b = (b + this._b) | 0
40535 this._c = (c + this._c) | 0
40536 this._d = (d + this._d) | 0
40537 this._e = (e + this._e) | 0
40538}
ab78acc6 40539
8b095871
IC
40540Sha1.prototype._hash = function () {
40541 var H = new Buffer(20)
ab78acc6 40542
8b095871
IC
40543 H.writeInt32BE(this._a | 0, 0)
40544 H.writeInt32BE(this._b | 0, 4)
40545 H.writeInt32BE(this._c | 0, 8)
40546 H.writeInt32BE(this._d | 0, 12)
40547 H.writeInt32BE(this._e | 0, 16)
ab78acc6 40548
8b095871
IC
40549 return H
40550}
ab78acc6 40551
8b095871 40552module.exports = Sha1
ab78acc6 40553
8b095871
IC
40554}).call(this,require("buffer").Buffer)
40555},{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
40556(function (Buffer){
40557/**
40558 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40559 * in FIPS 180-2
40560 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40561 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40562 *
40563 */
ab78acc6 40564
8b095871
IC
40565var inherits = require('inherits')
40566var Sha256 = require('./sha256')
40567var Hash = require('./hash')
ab78acc6 40568
8b095871 40569var W = new Array(64)
ab78acc6 40570
8b095871
IC
40571function Sha224 () {
40572 this.init()
ab78acc6 40573
8b095871 40574 this._w = W // new Array(64)
ebd8d4e8 40575
8b095871
IC
40576 Hash.call(this, 64, 56)
40577}
ebd8d4e8 40578
8b095871 40579inherits(Sha224, Sha256)
ebd8d4e8 40580
8b095871
IC
40581Sha224.prototype.init = function () {
40582 this._a = 0xc1059ed8
40583 this._b = 0x367cd507
40584 this._c = 0x3070dd17
40585 this._d = 0xf70e5939
40586 this._e = 0xffc00b31
40587 this._f = 0x68581511
40588 this._g = 0x64f98fa7
40589 this._h = 0xbefa4fa4
ebd8d4e8 40590
8b095871
IC
40591 return this
40592}
ab78acc6 40593
8b095871
IC
40594Sha224.prototype._hash = function () {
40595 var H = new Buffer(28)
ebd8d4e8 40596
8b095871
IC
40597 H.writeInt32BE(this._a, 0)
40598 H.writeInt32BE(this._b, 4)
40599 H.writeInt32BE(this._c, 8)
40600 H.writeInt32BE(this._d, 12)
40601 H.writeInt32BE(this._e, 16)
40602 H.writeInt32BE(this._f, 20)
40603 H.writeInt32BE(this._g, 24)
ab78acc6 40604
8b095871
IC
40605 return H
40606}
ebd8d4e8 40607
8b095871 40608module.exports = Sha224
ebd8d4e8 40609
8b095871
IC
40610}).call(this,require("buffer").Buffer)
40611},{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
40612(function (Buffer){
40613/**
40614 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
40615 * in FIPS 180-2
40616 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
40617 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
40618 *
40619 */
ebd8d4e8 40620
8b095871
IC
40621var inherits = require('inherits')
40622var Hash = require('./hash')
ab78acc6 40623
8b095871
IC
40624var K = [
40625 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
40626 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
40627 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
40628 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
40629 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
40630 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
40631 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
40632 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
40633 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
40634 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
40635 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
40636 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
40637 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
40638 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
40639 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
40640 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
40641]
ebd8d4e8 40642
8b095871 40643var W = new Array(64)
ebd8d4e8 40644
8b095871
IC
40645function Sha256 () {
40646 this.init()
ebd8d4e8 40647
8b095871 40648 this._w = W // new Array(64)
ebd8d4e8 40649
8b095871 40650 Hash.call(this, 64, 56)
ab78acc6 40651}
ebd8d4e8 40652
8b095871 40653inherits(Sha256, Hash)
ebd8d4e8 40654
8b095871
IC
40655Sha256.prototype.init = function () {
40656 this._a = 0x6a09e667
40657 this._b = 0xbb67ae85
40658 this._c = 0x3c6ef372
40659 this._d = 0xa54ff53a
40660 this._e = 0x510e527f
40661 this._f = 0x9b05688c
40662 this._g = 0x1f83d9ab
40663 this._h = 0x5be0cd19
ebd8d4e8 40664
8b095871
IC
40665 return this
40666}
ebd8d4e8 40667
8b095871
IC
40668function ch (x, y, z) {
40669 return z ^ (x & (y ^ z))
40670}
ebd8d4e8 40671
8b095871
IC
40672function maj (x, y, z) {
40673 return (x & y) | (z & (x | y))
40674}
ebd8d4e8 40675
8b095871
IC
40676function sigma0 (x) {
40677 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
40678}
ebd8d4e8 40679
8b095871
IC
40680function sigma1 (x) {
40681 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
40682}
ebd8d4e8 40683
8b095871
IC
40684function gamma0 (x) {
40685 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
40686}
ebd8d4e8 40687
8b095871
IC
40688function gamma1 (x) {
40689 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
40690}
ab78acc6 40691
8b095871
IC
40692Sha256.prototype._update = function (M) {
40693 var W = this._w
ebd8d4e8 40694
8b095871
IC
40695 var a = this._a | 0
40696 var b = this._b | 0
40697 var c = this._c | 0
40698 var d = this._d | 0
40699 var e = this._e | 0
40700 var f = this._f | 0
40701 var g = this._g | 0
40702 var h = this._h | 0
ab78acc6 40703
8b095871
IC
40704 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
40705 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
ab78acc6 40706
8b095871
IC
40707 for (var j = 0; j < 64; ++j) {
40708 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
40709 var T2 = (sigma0(a) + maj(a, b, c)) | 0
ebd8d4e8 40710
8b095871
IC
40711 h = g
40712 g = f
40713 f = e
40714 e = (d + T1) | 0
40715 d = c
40716 c = b
40717 b = a
40718 a = (T1 + T2) | 0
ebd8d4e8
IC
40719 }
40720
8b095871
IC
40721 this._a = (a + this._a) | 0
40722 this._b = (b + this._b) | 0
40723 this._c = (c + this._c) | 0
40724 this._d = (d + this._d) | 0
40725 this._e = (e + this._e) | 0
40726 this._f = (f + this._f) | 0
40727 this._g = (g + this._g) | 0
40728 this._h = (h + this._h) | 0
ab78acc6 40729}
ebd8d4e8 40730
8b095871
IC
40731Sha256.prototype._hash = function () {
40732 var H = new Buffer(32)
ebd8d4e8 40733
8b095871
IC
40734 H.writeInt32BE(this._a, 0)
40735 H.writeInt32BE(this._b, 4)
40736 H.writeInt32BE(this._c, 8)
40737 H.writeInt32BE(this._d, 12)
40738 H.writeInt32BE(this._e, 16)
40739 H.writeInt32BE(this._f, 20)
40740 H.writeInt32BE(this._g, 24)
40741 H.writeInt32BE(this._h, 28)
40742
40743 return H
ab78acc6 40744}
ebd8d4e8 40745
8b095871 40746module.exports = Sha256
ebd8d4e8 40747
8b095871
IC
40748}).call(this,require("buffer").Buffer)
40749},{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
40750(function (Buffer){
40751var inherits = require('inherits')
40752var SHA512 = require('./sha512')
40753var Hash = require('./hash')
ebd8d4e8 40754
8b095871 40755var W = new Array(160)
ebd8d4e8 40756
8b095871
IC
40757function Sha384 () {
40758 this.init()
40759 this._w = W
ab78acc6 40760
8b095871
IC
40761 Hash.call(this, 128, 112)
40762}
ab78acc6 40763
8b095871 40764inherits(Sha384, SHA512)
ebd8d4e8 40765
8b095871
IC
40766Sha384.prototype.init = function () {
40767 this._ah = 0xcbbb9d5d
40768 this._bh = 0x629a292a
40769 this._ch = 0x9159015a
40770 this._dh = 0x152fecd8
40771 this._eh = 0x67332667
40772 this._fh = 0x8eb44a87
40773 this._gh = 0xdb0c2e0d
40774 this._hh = 0x47b5481d
40775
40776 this._al = 0xc1059ed8
40777 this._bl = 0x367cd507
40778 this._cl = 0x3070dd17
40779 this._dl = 0xf70e5939
40780 this._el = 0xffc00b31
40781 this._fl = 0x68581511
40782 this._gl = 0x64f98fa7
40783 this._hl = 0xbefa4fa4
ebd8d4e8 40784
8b095871
IC
40785 return this
40786}
ebd8d4e8 40787
8b095871
IC
40788Sha384.prototype._hash = function () {
40789 var H = new Buffer(48)
ebd8d4e8 40790
8b095871
IC
40791 function writeInt64BE (h, l, offset) {
40792 H.writeInt32BE(h, offset)
40793 H.writeInt32BE(l, offset + 4)
40794 }
ebd8d4e8 40795
8b095871
IC
40796 writeInt64BE(this._ah, this._al, 0)
40797 writeInt64BE(this._bh, this._bl, 8)
40798 writeInt64BE(this._ch, this._cl, 16)
40799 writeInt64BE(this._dh, this._dl, 24)
40800 writeInt64BE(this._eh, this._el, 32)
40801 writeInt64BE(this._fh, this._fl, 40)
ebd8d4e8 40802
8b095871 40803 return H
ab78acc6 40804}
ebd8d4e8 40805
8b095871
IC
40806module.exports = Sha384
40807
40808}).call(this,require("buffer").Buffer)
40809},{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
40810(function (Buffer){
40811var inherits = require('inherits')
40812var Hash = require('./hash')
40813
40814var K = [
40815 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
40816 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
40817 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
40818 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
40819 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
40820 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
40821 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
40822 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
40823 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
40824 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
40825 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
40826 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
40827 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
40828 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
40829 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
40830 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
40831 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
40832 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
40833 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
40834 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
40835 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
40836 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
40837 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
40838 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
40839 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
40840 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
40841 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
40842 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
40843 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
40844 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
40845 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
40846 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
40847 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
40848 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
40849 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
40850 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
40851 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
40852 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
40853 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
40854 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
40855]
40856
40857var W = new Array(160)
ebd8d4e8 40858
8b095871
IC
40859function Sha512 () {
40860 this.init()
40861 this._w = W
ebd8d4e8 40862
8b095871 40863 Hash.call(this, 128, 112)
ab78acc6 40864}
ebd8d4e8 40865
8b095871 40866inherits(Sha512, Hash)
ebd8d4e8 40867
8b095871
IC
40868Sha512.prototype.init = function () {
40869 this._ah = 0x6a09e667
40870 this._bh = 0xbb67ae85
40871 this._ch = 0x3c6ef372
40872 this._dh = 0xa54ff53a
40873 this._eh = 0x510e527f
40874 this._fh = 0x9b05688c
40875 this._gh = 0x1f83d9ab
40876 this._hh = 0x5be0cd19
40877
40878 this._al = 0xf3bcc908
40879 this._bl = 0x84caa73b
40880 this._cl = 0xfe94f82b
40881 this._dl = 0x5f1d36f1
40882 this._el = 0xade682d1
40883 this._fl = 0x2b3e6c1f
40884 this._gl = 0xfb41bd6b
40885 this._hl = 0x137e2179
ebd8d4e8 40886
8b095871 40887 return this
ab78acc6 40888}
ebd8d4e8 40889
8b095871
IC
40890function Ch (x, y, z) {
40891 return z ^ (x & (y ^ z))
40892}
ebd8d4e8 40893
8b095871
IC
40894function maj (x, y, z) {
40895 return (x & y) | (z & (x | y))
ab78acc6 40896}
ebd8d4e8 40897
8b095871
IC
40898function sigma0 (x, xl) {
40899 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
40900}
ebd8d4e8 40901
8b095871
IC
40902function sigma1 (x, xl) {
40903 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
40904}
ab78acc6 40905
8b095871
IC
40906function Gamma0 (x, xl) {
40907 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
ab78acc6 40908}
ebd8d4e8 40909
8b095871
IC
40910function Gamma0l (x, xl) {
40911 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
40912}
ebd8d4e8 40913
8b095871
IC
40914function Gamma1 (x, xl) {
40915 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
ab78acc6
IC
40916}
40917
8b095871
IC
40918function Gamma1l (x, xl) {
40919 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
ab78acc6
IC
40920}
40921
8b095871
IC
40922function getCarry (a, b) {
40923 return (a >>> 0) < (b >>> 0) ? 1 : 0
ab78acc6
IC
40924}
40925
8b095871
IC
40926Sha512.prototype._update = function (M) {
40927 var W = this._w
ebd8d4e8 40928
8b095871
IC
40929 var ah = this._ah | 0
40930 var bh = this._bh | 0
40931 var ch = this._ch | 0
40932 var dh = this._dh | 0
40933 var eh = this._eh | 0
40934 var fh = this._fh | 0
40935 var gh = this._gh | 0
40936 var hh = this._hh | 0
ebd8d4e8 40937
8b095871
IC
40938 var al = this._al | 0
40939 var bl = this._bl | 0
40940 var cl = this._cl | 0
40941 var dl = this._dl | 0
40942 var el = this._el | 0
40943 var fl = this._fl | 0
40944 var gl = this._gl | 0
40945 var hl = this._hl | 0
ebd8d4e8 40946
8b095871
IC
40947 for (var i = 0; i < 32; i += 2) {
40948 W[i] = M.readInt32BE(i * 4)
40949 W[i + 1] = M.readInt32BE(i * 4 + 4)
40950 }
40951 for (; i < 160; i += 2) {
40952 var xh = W[i - 15 * 2]
40953 var xl = W[i - 15 * 2 + 1]
40954 var gamma0 = Gamma0(xh, xl)
40955 var gamma0l = Gamma0l(xl, xh)
ebd8d4e8 40956
8b095871
IC
40957 xh = W[i - 2 * 2]
40958 xl = W[i - 2 * 2 + 1]
40959 var gamma1 = Gamma1(xh, xl)
40960 var gamma1l = Gamma1l(xl, xh)
ebd8d4e8 40961
8b095871
IC
40962 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
40963 var Wi7h = W[i - 7 * 2]
40964 var Wi7l = W[i - 7 * 2 + 1]
ebd8d4e8 40965
8b095871
IC
40966 var Wi16h = W[i - 16 * 2]
40967 var Wi16l = W[i - 16 * 2 + 1]
ab78acc6 40968
8b095871
IC
40969 var Wil = (gamma0l + Wi7l) | 0
40970 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
40971 Wil = (Wil + gamma1l) | 0
40972 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
40973 Wil = (Wil + Wi16l) | 0
40974 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
ebd8d4e8 40975
8b095871
IC
40976 W[i] = Wih
40977 W[i + 1] = Wil
40978 }
ebd8d4e8 40979
8b095871
IC
40980 for (var j = 0; j < 160; j += 2) {
40981 Wih = W[j]
40982 Wil = W[j + 1]
ebd8d4e8 40983
8b095871
IC
40984 var majh = maj(ah, bh, ch)
40985 var majl = maj(al, bl, cl)
ebd8d4e8 40986
8b095871
IC
40987 var sigma0h = sigma0(ah, al)
40988 var sigma0l = sigma0(al, ah)
40989 var sigma1h = sigma1(eh, el)
40990 var sigma1l = sigma1(el, eh)
ab78acc6 40991
8b095871
IC
40992 // t1 = h + sigma1 + ch + K[j] + W[j]
40993 var Kih = K[j]
40994 var Kil = K[j + 1]
ab78acc6 40995
8b095871
IC
40996 var chh = Ch(eh, fh, gh)
40997 var chl = Ch(el, fl, gl)
ebd8d4e8 40998
8b095871
IC
40999 var t1l = (hl + sigma1l) | 0
41000 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
41001 t1l = (t1l + chl) | 0
41002 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
41003 t1l = (t1l + Kil) | 0
41004 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
41005 t1l = (t1l + Wil) | 0
41006 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
ebd8d4e8 41007
8b095871
IC
41008 // t2 = sigma0 + maj
41009 var t2l = (sigma0l + majl) | 0
41010 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
ebd8d4e8 41011
8b095871
IC
41012 hh = gh
41013 hl = gl
41014 gh = fh
41015 gl = fl
41016 fh = eh
41017 fl = el
41018 el = (dl + t1l) | 0
41019 eh = (dh + t1h + getCarry(el, dl)) | 0
41020 dh = ch
41021 dl = cl
41022 ch = bh
41023 cl = bl
41024 bh = ah
41025 bl = al
41026 al = (t1l + t2l) | 0
41027 ah = (t1h + t2h + getCarry(al, t1l)) | 0
41028 }
ab78acc6 41029
8b095871
IC
41030 this._al = (this._al + al) | 0
41031 this._bl = (this._bl + bl) | 0
41032 this._cl = (this._cl + cl) | 0
41033 this._dl = (this._dl + dl) | 0
41034 this._el = (this._el + el) | 0
41035 this._fl = (this._fl + fl) | 0
41036 this._gl = (this._gl + gl) | 0
41037 this._hl = (this._hl + hl) | 0
ab78acc6 41038
8b095871
IC
41039 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
41040 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
41041 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
41042 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
41043 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
41044 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
41045 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
41046 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
ab78acc6
IC
41047}
41048
8b095871
IC
41049Sha512.prototype._hash = function () {
41050 var H = new Buffer(64)
ab78acc6 41051
8b095871
IC
41052 function writeInt64BE (h, l, offset) {
41053 H.writeInt32BE(h, offset)
41054 H.writeInt32BE(l, offset + 4)
41055 }
ab78acc6 41056
8b095871
IC
41057 writeInt64BE(this._ah, this._al, 0)
41058 writeInt64BE(this._bh, this._bl, 8)
41059 writeInt64BE(this._ch, this._cl, 16)
41060 writeInt64BE(this._dh, this._dl, 24)
41061 writeInt64BE(this._eh, this._el, 32)
41062 writeInt64BE(this._fh, this._fl, 40)
41063 writeInt64BE(this._gh, this._gl, 48)
41064 writeInt64BE(this._hh, this._hl, 56)
ab78acc6 41065
8b095871 41066 return H
ebd8d4e8
IC
41067}
41068
8b095871 41069module.exports = Sha512
ebd8d4e8 41070
ab78acc6 41071}).call(this,require("buffer").Buffer)
8b095871
IC
41072},{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
41073var isHexPrefixed = require('is-hex-prefixed');
d5dc92fd 41074
8b095871
IC
41075/**
41076 * Removes '0x' from a given `String` is present
41077 * @param {String} str the string value
41078 * @return {String|Optional} a string by pass if necessary
41079 */
41080module.exports = function stripHexPrefix(str) {
41081 if (typeof str !== 'string') {
41082 return str;
41083 }
07ac4350 41084
8b095871
IC
41085 return isHexPrefixed(str) ? str.slice(2) : str;
41086}
07ac4350 41087
8b095871
IC
41088},{"is-hex-prefixed":64}]},{},[31])(31)
41089});</script>
8a1f452d 41090 <script>function convertRippleAdrr(address) {
41091 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
41092 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
41093 )
41094 }
41095
41096function convertRipplePriv(priv) {
920eb591 41097 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2,66)
8a1f452d 41098}
41099
41100</script>
ab78acc6 41101 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
80c4dd2a
IC
41102
41103//// base.js
41104
41105/** @fileOverview Javascript cryptography implementation.
41106 *
41107 * Crush to remove comments, shorten variable names and
41108 * generally reduce transmission size.
41109 *
41110 * @author Emily Stark
41111 * @author Mike Hamburg
41112 * @author Dan Boneh
41113 */
41114
41115"use strict";
41116/*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
41117/*global document, window, escape, unescape, module, require, Uint32Array */
41118
41119/** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
41120var sjcl = {
41121 /** @namespace Symmetric ciphers. */
41122 cipher: {},
41123
41124 /** @namespace Hash functions. Right now only SHA256 is implemented. */
41125 hash: {},
41126
41127 /** @namespace Key exchange functions. Right now only SRP is implemented. */
41128 keyexchange: {},
41129
41130 /** @namespace Block cipher modes of operation. */
41131 mode: {},
41132
41133 /** @namespace Miscellaneous. HMAC and PBKDF2. */
41134 misc: {},
41135
41136 /**
41137 * @namespace Bit array encoders and decoders.
41138 *
41139 * @description
41140 * The members of this namespace are functions which translate between
41141 * SJCL's bitArrays and other objects (usually strings). Because it
41142 * isn't always clear which direction is encoding and which is decoding,
41143 * the method names are "fromBits" and "toBits".
41144 */
41145 codec: {},
41146
41147 /** @namespace Exceptions. */
41148 exception: {
41149 /** @constructor Ciphertext is corrupt. */
41150 corrupt: function(message) {
41151 this.toString = function() { return "CORRUPT: "+this.message; };
41152 this.message = message;
41153 },
41154
41155 /** @constructor Invalid parameter. */
41156 invalid: function(message) {
41157 this.toString = function() { return "INVALID: "+this.message; };
41158 this.message = message;
41159 },
41160
41161 /** @constructor Bug or missing feature in SJCL. @constructor */
41162 bug: function(message) {
41163 this.toString = function() { return "BUG: "+this.message; };
41164 this.message = message;
41165 },
41166
41167 /** @constructor Something isn't ready. */
41168 notReady: function(message) {
41169 this.toString = function() { return "NOT READY: "+this.message; };
41170 this.message = message;
ebd8d4e8 41171 }
80c4dd2a
IC
41172 }
41173};
41174
41175if(typeof module !== 'undefined' && module.exports){
41176 module.exports = sjcl;
41177}
41178if (typeof define === "function") {
41179 define([], function () {
41180 return sjcl;
41181 });
41182}
41183
41184
41185//// bitArray.js
41186
41187/** @fileOverview Arrays of bits, encoded as arrays of Numbers.
41188 *
41189 * @author Emily Stark
41190 * @author Mike Hamburg
41191 * @author Dan Boneh
41192 */
41193
41194/** @namespace Arrays of bits, encoded as arrays of Numbers.
41195 *
41196 * @description
41197 * <p>
41198 * These objects are the currency accepted by SJCL's crypto functions.
41199 * </p>
41200 *
41201 * <p>
41202 * Most of our crypto primitives operate on arrays of 4-byte words internally,
41203 * but many of them can take arguments that are not a multiple of 4 bytes.
41204 * This library encodes arrays of bits (whose size need not be a multiple of 8
41205 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
41206 * array of words, 32 bits at a time. Since the words are double-precision
41207 * floating point numbers, they fit some extra data. We use this (in a private,
41208 * possibly-changing manner) to encode the number of bits actually present
41209 * in the last word of the array.
41210 * </p>
41211 *
41212 * <p>
41213 * Because bitwise ops clear this out-of-band data, these arrays can be passed
41214 * to ciphers like AES which want arrays of words.
41215 * </p>
41216 */
41217sjcl.bitArray = {
41218 /**
41219 * Array slices in units of bits.
41220 * @param {bitArray} a The array to slice.
41221 * @param {Number} bstart The offset to the start of the slice, in bits.
41222 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
41223 * slice until the end of the array.
41224 * @return {bitArray} The requested slice.
41225 */
41226 bitSlice: function (a, bstart, bend) {
41227 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
41228 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
41229 },
41230
41231 /**
41232 * Extract a number packed into a bit array.
41233 * @param {bitArray} a The array to slice.
41234 * @param {Number} bstart The offset to the start of the slice, in bits.
41235 * @param {Number} length The length of the number to extract.
41236 * @return {Number} The requested slice.
41237 */
41238 extract: function(a, bstart, blength) {
41239 // FIXME: this Math.floor is not necessary at all, but for some reason
41240 // seems to suppress a bug in the Chromium JIT.
41241 var x, sh = Math.floor((-bstart-blength) & 31);
41242 if ((bstart + blength - 1 ^ bstart) & -32) {
41243 // it crosses a boundary
41244 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
41245 } else {
41246 // within a single word
41247 x = a[bstart/32|0] >>> sh;
ebd8d4e8 41248 }
80c4dd2a
IC
41249 return x & ((1<<blength) - 1);
41250 },
41251
41252 /**
41253 * Concatenate two bit arrays.
41254 * @param {bitArray} a1 The first array.
41255 * @param {bitArray} a2 The second array.
41256 * @return {bitArray} The concatenation of a1 and a2.
41257 */
41258 concat: function (a1, a2) {
41259 if (a1.length === 0 || a2.length === 0) {
41260 return a1.concat(a2);
41261 }
41262
41263 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
41264 if (shift === 32) {
41265 return a1.concat(a2);
41266 } else {
41267 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
ebd8d4e8 41268 }
80c4dd2a
IC
41269 },
41270
41271 /**
41272 * Find the length of an array of bits.
41273 * @param {bitArray} a The array.
41274 * @return {Number} The length of a, in bits.
41275 */
41276 bitLength: function (a) {
41277 var l = a.length, x;
41278 if (l === 0) { return 0; }
41279 x = a[l - 1];
41280 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
41281 },
41282
41283 /**
41284 * Truncate an array.
41285 * @param {bitArray} a The array.
41286 * @param {Number} len The length to truncate to, in bits.
41287 * @return {bitArray} A new array, truncated to len bits.
41288 */
41289 clamp: function (a, len) {
41290 if (a.length * 32 < len) { return a; }
41291 a = a.slice(0, Math.ceil(len / 32));
41292 var l = a.length;
41293 len = len & 31;
41294 if (l > 0 && len) {
41295 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
41296 }
41297 return a;
41298 },
41299
41300 /**
41301 * Make a partial word for a bit array.
41302 * @param {Number} len The number of bits in the word.
41303 * @param {Number} x The bits.
41304 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
41305 * @return {Number} The partial word.
41306 */
41307 partial: function (len, x, _end) {
41308 if (len === 32) { return x; }
41309 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
41310 },
41311
41312 /**
41313 * Get the number of bits used by a partial word.
41314 * @param {Number} x The partial word.
41315 * @return {Number} The number of bits used by the partial word.
41316 */
41317 getPartial: function (x) {
41318 return Math.round(x/0x10000000000) || 32;
41319 },
41320
41321 /**
41322 * Compare two arrays for equality in a predictable amount of time.
41323 * @param {bitArray} a The first array.
41324 * @param {bitArray} b The second array.
41325 * @return {boolean} true if a == b; false otherwise.
41326 */
41327 equal: function (a, b) {
41328 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
41329 return false;
ebd8d4e8 41330 }
80c4dd2a
IC
41331 var x = 0, i;
41332 for (i=0; i<a.length; i++) {
41333 x |= a[i]^b[i];
ebd8d4e8 41334 }
80c4dd2a
IC
41335 return (x === 0);
41336 },
41337
41338 /** Shift an array right.
41339 * @param {bitArray} a The array to shift.
41340 * @param {Number} shift The number of bits to shift.
41341 * @param {Number} [carry=0] A byte to carry in
41342 * @param {bitArray} [out=[]] An array to prepend to the output.
41343 * @private
41344 */
41345 _shiftRight: function (a, shift, carry, out) {
41346 var i, last2=0, shift2;
41347 if (out === undefined) { out = []; }
41348
41349 for (; shift >= 32; shift -= 32) {
41350 out.push(carry);
41351 carry = 0;
41352 }
41353 if (shift === 0) {
41354 return out.concat(a);
41355 }
41356
41357 for (i=0; i<a.length; i++) {
41358 out.push(carry | a[i]>>>shift);
41359 carry = a[i] << (32-shift);
41360 }
41361 last2 = a.length ? a[a.length-1] : 0;
41362 shift2 = sjcl.bitArray.getPartial(last2);
41363 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
41364 return out;
41365 },
41366
41367 /** xor a block of 4 words together.
41368 * @private
41369 */
41370 _xor4: function(x,y) {
41371 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
41372 },
41373
41374 /** byteswap a word array inplace.
41375 * (does not handle partial words)
41376 * @param {sjcl.bitArray} a word array
41377 * @return {sjcl.bitArray} byteswapped array
41378 */
41379 byteswapM: function(a) {
41380 var i, v, m = 0xff00;
41381 for (i = 0; i < a.length; ++i) {
41382 v = a[i];
41383 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
ebd8d4e8 41384 }
80c4dd2a
IC
41385 return a;
41386 }
41387};
41388
41389
41390//// codecString.js
41391
41392/** @fileOverview Bit array codec implementations.
41393 *
41394 * @author Emily Stark
41395 * @author Mike Hamburg
41396 * @author Dan Boneh
41397 */
41398
41399/** @namespace UTF-8 strings */
41400sjcl.codec.utf8String = {
41401 /** Convert from a bitArray to a UTF-8 string. */
41402 fromBits: function (arr) {
41403 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
41404 for (i=0; i<bl/8; i++) {
41405 if ((i&3) === 0) {
41406 tmp = arr[i/4];
41407 }
41408 out += String.fromCharCode(tmp >>> 24);
41409 tmp <<= 8;
ebd8d4e8 41410 }
80c4dd2a
IC
41411 return decodeURIComponent(escape(out));
41412 },
41413
41414 /** Convert from a UTF-8 string to a bitArray. */
41415 toBits: function (str) {
41416 str = unescape(encodeURIComponent(str));
41417 var out = [], i, tmp=0;
41418 for (i=0; i<str.length; i++) {
41419 tmp = tmp << 8 | str.charCodeAt(i);
41420 if ((i&3) === 3) {
41421 out.push(tmp);
41422 tmp = 0;
41423 }
ebd8d4e8 41424 }
80c4dd2a
IC
41425 if (i&3) {
41426 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
ebd8d4e8 41427 }
80c4dd2a
IC
41428 return out;
41429 }
41430};
41431
41432
41433//// codecHex.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 Hexadecimal */
41443sjcl.codec.hex = {
41444 /** Convert from a bitArray to a hex string. */
41445 fromBits: function (arr) {
41446 var out = "", i;
41447 for (i=0; i<arr.length; i++) {
41448 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
ebd8d4e8 41449 }
80c4dd2a
IC
41450 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
41451 },
41452 /** Convert from a hex string to a bitArray. */
41453 toBits: function (str) {
41454 var i, out=[], len;
41455 str = str.replace(/\s|0x/g, "");
41456 len = str.length;
41457 str = str + "00000000";
41458 for (i=0; i<str.length; i+=8) {
41459 out.push(parseInt(str.substr(i,8),16)^0);
ebd8d4e8 41460 }
80c4dd2a
IC
41461 return sjcl.bitArray.clamp(out, len*4);
41462 }
41463};
41464
41465
41466//// sha512.js
41467
41468/** @fileOverview Javascript SHA-512 implementation.
41469 *
41470 * This implementation was written for CryptoJS by Jeff Mott and adapted for
41471 * SJCL by Stefan Thomas.
41472 *
41473 * CryptoJS (c) 2009–2012 by Jeff Mott. All rights reserved.
41474 * Released with New BSD License
41475 *
41476 * @author Emily Stark
41477 * @author Mike Hamburg
41478 * @author Dan Boneh
41479 * @author Jeff Mott
41480 * @author Stefan Thomas
41481 */
41482
41483/**
41484 * Context for a SHA-512 operation in progress.
41485 * @constructor
41486 * @class Secure Hash Algorithm, 512 bits.
41487 */
41488sjcl.hash.sha512 = function (hash) {
41489 if (!this._key[0]) { this._precompute(); }
41490 if (hash) {
41491 this._h = hash._h.slice(0);
41492 this._buffer = hash._buffer.slice(0);
41493 this._length = hash._length;
41494 } else {
41495 this.reset();
41496 }
41497};
41498
41499/**
41500 * Hash a string or an array of words.
41501 * @static
41502 * @param {bitArray|String} data the data to hash.
41503 * @return {bitArray} The hash value, an array of 16 big-endian words.
41504 */
41505sjcl.hash.sha512.hash = function (data) {
41506 return (new sjcl.hash.sha512()).update(data).finalize();
41507};
41508
41509sjcl.hash.sha512.prototype = {
41510 /**
41511 * The hash's block size, in bits.
41512 * @constant
41513 */
41514 blockSize: 1024,
41515
41516 /**
41517 * Reset the hash state.
41518 * @return this
41519 */
41520 reset:function () {
41521 this._h = this._init.slice(0);
41522 this._buffer = [];
41523 this._length = 0;
41524 return this;
41525 },
41526
41527 /**
41528 * Input several words to the hash.
41529 * @param {bitArray|String} data the data to hash.
41530 * @return this
41531 */
41532 update: function (data) {
41533 if (typeof data === "string") {
41534 data = sjcl.codec.utf8String.toBits(data);
ebd8d4e8 41535 }
80c4dd2a
IC
41536 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
41537 ol = this._length,
41538 nl = this._length = ol + sjcl.bitArray.bitLength(data);
41539 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
41540 this._block(b.splice(0,32));
ebd8d4e8 41541 }
80c4dd2a
IC
41542 return this;
41543 },
41544
41545 /**
41546 * Complete hashing and output the hash value.
41547 * @return {bitArray} The hash value, an array of 16 big-endian words.
41548 */
41549 finalize:function () {
41550 var i, b = this._buffer, h = this._h;
41551
41552 // Round out and push the buffer
41553 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
41554
41555 // Round out the buffer to a multiple of 32 words, less the 4 length words.
41556 for (i = b.length + 4; i & 31; i++) {
41557 b.push(0);
ebd8d4e8 41558 }
80c4dd2a
IC
41559
41560 // append the length
41561 b.push(0);
41562 b.push(0);
41563 b.push(Math.floor(this._length / 0x100000000));
41564 b.push(this._length | 0);
41565
41566 while (b.length) {
41567 this._block(b.splice(0,32));
ebd8d4e8 41568 }
80c4dd2a
IC
41569
41570 this.reset();
41571 return h;
41572 },
41573
41574 /**
41575 * The SHA-512 initialization vector, to be precomputed.
41576 * @private
41577 */
41578 _init:[],
41579
41580 /**
41581 * Least significant 24 bits of SHA512 initialization values.
41582 *
41583 * Javascript only has 53 bits of precision, so we compute the 40 most
41584 * significant bits and add the remaining 24 bits as constants.
41585 *
41586 * @private
41587 */
41588 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
41589
41590 /*
41591 _init:
41592 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
41593 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
41594 */
41595
41596 /**
41597 * The SHA-512 hash key, to be precomputed.
41598 * @private
41599 */
41600 _key:[],
41601
41602 /**
41603 * Least significant 24 bits of SHA512 key values.
41604 * @private
41605 */
41606 _keyr:
41607 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
41608 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
41609 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
41610 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
41611 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
41612 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
41613 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
41614 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
41615 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
41616 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
41617
41618 /*
41619 _key:
41620 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
41621 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
41622 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
41623 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
41624 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
41625 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
41626 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
41627 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
41628 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
41629 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
41630 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
41631 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
41632 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
41633 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
41634 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
41635 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
41636 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
41637 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
41638 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
41639 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
41640 */
41641
41642 /**
41643 * Function to precompute _init and _key.
41644 * @private
41645 */
41646 _precompute: function () {
41647 // XXX: This code is for precomputing the SHA256 constants, change for
41648 // SHA512 and re-enable.
41649 var i = 0, prime = 2, factor;
41650
41651 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
41652 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
41653
41654 outer: for (; i<80; prime++) {
41655 for (factor=2; factor*factor <= prime; factor++) {
41656 if (prime % factor === 0) {
41657 // not a prime
41658 continue outer;
ebd8d4e8 41659 }
80c4dd2a
IC
41660 }
41661
41662 if (i<8) {
41663 this._init[i*2] = frac(Math.pow(prime, 1/2));
41664 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
41665 }
41666 this._key[i*2] = frac(Math.pow(prime, 1/3));
41667 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
41668 i++;
ebd8d4e8 41669 }
80c4dd2a
IC
41670 },
41671
41672 /**
41673 * Perform one cycle of SHA-512.
41674 * @param {bitArray} words one block of words.
41675 * @private
41676 */
41677 _block:function (words) {
41678 var i, wrh, wrl,
41679 w = words.slice(0),
41680 h = this._h,
41681 k = this._key,
41682 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
41683 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
41684 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
41685 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
41686
41687 // Working variables
41688 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
41689 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
41690 eh = h4h, el = h4l, fh = h5h, fl = h5l,
41691 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
41692
41693 for (i=0; i<80; i++) {
41694 // load up the input word for this round
41695 if (i<16) {
41696 wrh = w[i * 2];
41697 wrl = w[i * 2 + 1];
41698 } else {
41699 // Gamma0
41700 var gamma0xh = w[(i-15) * 2];
41701 var gamma0xl = w[(i-15) * 2 + 1];
41702 var gamma0h =
41703 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
41704 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
41705 (gamma0xh >>> 7);
41706 var gamma0l =
41707 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
41708 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
41709 ((gamma0xh << 25) | (gamma0xl >>> 7));
41710
41711 // Gamma1
41712 var gamma1xh = w[(i-2) * 2];
41713 var gamma1xl = w[(i-2) * 2 + 1];
41714 var gamma1h =
41715 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
41716 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
41717 (gamma1xh >>> 6);
41718 var gamma1l =
41719 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
41720 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
41721 ((gamma1xh << 26) | (gamma1xl >>> 6));
41722
41723 // Shortcuts
41724 var wr7h = w[(i-7) * 2];
41725 var wr7l = w[(i-7) * 2 + 1];
41726
41727 var wr16h = w[(i-16) * 2];
41728 var wr16l = w[(i-16) * 2 + 1];
41729
41730 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
41731 wrl = gamma0l + wr7l;
41732 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
41733 wrl += gamma1l;
41734 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
41735 wrl += wr16l;
41736 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
41737 }
41738
41739 w[i*2] = wrh |= 0;
41740 w[i*2 + 1] = wrl |= 0;
41741
41742 // Ch
41743 var chh = (eh & fh) ^ (~eh & gh);
41744 var chl = (el & fl) ^ (~el & gl);
41745
41746 // Maj
41747 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
41748 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
41749
41750 // Sigma0
41751 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
41752 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
41753
41754 // Sigma1
41755 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
41756 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
41757
41758 // K(round)
41759 var krh = k[i*2];
41760 var krl = k[i*2+1];
41761
41762 // t1 = h + sigma1 + ch + K(round) + W(round)
41763 var t1l = hl + sigma1l;
41764 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
41765 t1l += chl;
41766 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
41767 t1l += krl;
41768 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
41769 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
41770 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
41771
41772 // t2 = sigma0 + maj
41773 var t2l = sigma0l + majl;
41774 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
41775
41776 // Update working variables
41777 hh = gh;
41778 hl = gl;
41779 gh = fh;
41780 gl = fl;
41781 fh = eh;
41782 fl = el;
41783 el = (dl + t1l) | 0;
41784 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41785 dh = ch;
41786 dl = cl;
41787 ch = bh;
41788 cl = bl;
41789 bh = ah;
41790 bl = al;
41791 al = (t1l + t2l) | 0;
41792 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
41793 }
41794
41795 // Intermediate hash
41796 h0l = h[1] = (h0l + al) | 0;
41797 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
41798 h1l = h[3] = (h1l + bl) | 0;
41799 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
41800 h2l = h[5] = (h2l + cl) | 0;
41801 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
41802 h3l = h[7] = (h3l + dl) | 0;
41803 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
41804 h4l = h[9] = (h4l + el) | 0;
41805 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
41806 h5l = h[11] = (h5l + fl) | 0;
41807 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
41808 h6l = h[13] = (h6l + gl) | 0;
41809 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
41810 h7l = h[15] = (h7l + hl) | 0;
41811 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
41812 }
41813};
41814
41815
41816//// hmac.js
41817
41818/** @fileOverview HMAC implementation.
41819 *
41820 * @author Emily Stark
41821 * @author Mike Hamburg
41822 * @author Dan Boneh
41823 */
41824
41825/** HMAC with the specified hash function.
41826 * @constructor
41827 * @param {bitArray} key the key for HMAC.
41828 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
41829 */
41830sjcl.misc.hmac = function (key, Hash) {
41831 this._hash = Hash = Hash || sjcl.hash.sha256;
41832 var exKey = [[],[]], i,
41833 bs = Hash.prototype.blockSize / 32;
41834 this._baseHash = [new Hash(), new Hash()];
41835
41836 if (key.length > bs) {
41837 key = Hash.hash(key);
41838 }
41839
41840 for (i=0; i<bs; i++) {
41841 exKey[0][i] = key[i]^0x36363636;
41842 exKey[1][i] = key[i]^0x5C5C5C5C;
41843 }
41844
41845 this._baseHash[0].update(exKey[0]);
41846 this._baseHash[1].update(exKey[1]);
41847 this._resultHash = new Hash(this._baseHash[0]);
41848};
41849
41850/** HMAC with the specified hash function. Also called encrypt since it's a prf.
41851 * @param {bitArray|String} data The data to mac.
41852 */
41853sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
41854 if (!this._updated) {
41855 this.update(data);
41856 return this.digest(data);
41857 } else {
41858 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
41859 }
41860};
41861
41862sjcl.misc.hmac.prototype.reset = function () {
41863 this._resultHash = new this._hash(this._baseHash[0]);
41864 this._updated = false;
41865};
41866
41867sjcl.misc.hmac.prototype.update = function (data) {
41868 this._updated = true;
41869 this._resultHash.update(data);
41870};
41871
41872sjcl.misc.hmac.prototype.digest = function () {
41873 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
41874
41875 this.reset();
41876
41877 return result;
41878};
41879
41880
41881//// pbkdf2.js
41882
41883
41884/** @fileOverview Password-based key-derivation function, version 2.0.
41885 *
41886 * @author Emily Stark
41887 * @author Mike Hamburg
41888 * @author Dan Boneh
41889 */
41890
41891/** Password-Based Key-Derivation Function, version 2.0.
41892 *
41893 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
41894 *
41895 * This is the method specified by RSA's PKCS #5 standard.
41896 *
41897 * @param {bitArray|String} password The password.
41898 * @param {bitArray|String} salt The salt. Should have lots of entropy.
41899 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
41900 * @param {Number} [length] The length of the derived key. Defaults to the
41901 output size of the hash function.
41902 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
41903 * @return {bitArray} the derived key.
41904 */
41905sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
41906 count = count || 1000;
41907
41908 if (length < 0 || count < 0) {
41909 throw sjcl.exception.invalid("invalid params to pbkdf2");
41910 }
41911
41912 if (typeof password === "string") {
41913 password = sjcl.codec.utf8String.toBits(password);
41914 }
41915
41916 if (typeof salt === "string") {
41917 salt = sjcl.codec.utf8String.toBits(salt);
41918 }
41919
41920 Prff = Prff || sjcl.misc.hmac;
41921
41922 var prf = new Prff(password),
41923 u, ui, i, j, k, out = [], b = sjcl.bitArray;
41924
41925 for (k = 1; 32 * out.length < (length || 1); k++) {
41926 u = ui = prf.encrypt(b.concat(salt,[k]));
41927
41928 for (i=1; i<count; i++) {
41929 ui = prf.encrypt(ui);
41930 for (j=0; j<ui.length; j++) {
41931 u[j] ^= ui[j];
41932 }
ebd8d4e8 41933 }
80c4dd2a
IC
41934
41935 out = out.concat(u);
41936 }
41937
41938 if (length) { out = b.clamp(out, length); }
41939
41940 return out;
41941};
41942
41943
41944//// sha256.js
41945
41946/** @fileOverview Javascript SHA-256 implementation.
41947 *
41948 * An older version of this implementation is available in the public
41949 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
41950 * Stanford University 2008-2010 and BSD-licensed for liability
41951 * reasons.
41952 *
41953 * Special thanks to Aldo Cortesi for pointing out several bugs in
41954 * this code.
41955 *
41956 * @author Emily Stark
41957 * @author Mike Hamburg
41958 * @author Dan Boneh
41959 */
41960
41961/**
41962 * Context for a SHA-256 operation in progress.
41963 * @constructor
41964 * @class Secure Hash Algorithm, 256 bits.
41965 */
41966sjcl.hash.sha256 = function (hash) {
41967 if (!this._key[0]) { this._precompute(); }
41968 if (hash) {
41969 this._h = hash._h.slice(0);
41970 this._buffer = hash._buffer.slice(0);
41971 this._length = hash._length;
41972 } else {
41973 this.reset();
41974 }
41975};
41976
41977/**
41978 * Hash a string or an array of words.
41979 * @static
41980 * @param {bitArray|String} data the data to hash.
41981 * @return {bitArray} The hash value, an array of 16 big-endian words.
41982 */
41983sjcl.hash.sha256.hash = function (data) {
41984 return (new sjcl.hash.sha256()).update(data).finalize();
41985};
41986
41987sjcl.hash.sha256.prototype = {
41988 /**
41989 * The hash's block size, in bits.
41990 * @constant
41991 */
41992 blockSize: 512,
41993
41994 /**
41995 * Reset the hash state.
41996 * @return this
41997 */
41998 reset:function () {
41999 this._h = this._init.slice(0);
42000 this._buffer = [];
42001 this._length = 0;
42002 return this;
42003 },
42004
42005 /**
42006 * Input several words to the hash.
42007 * @param {bitArray|String} data the data to hash.
42008 * @return this
42009 */
42010 update: function (data) {
42011 if (typeof data === "string") {
42012 data = sjcl.codec.utf8String.toBits(data);
42013 }
42014 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
42015 ol = this._length,
42016 nl = this._length = ol + sjcl.bitArray.bitLength(data);
42017 for (i = 512+ol & -512; i <= nl; i+= 512) {
42018 this._block(b.splice(0,16));
ebd8d4e8 42019 }
3af2954a 42020 return this;
80c4dd2a
IC
42021 },
42022
42023 /**
42024 * Complete hashing and output the hash value.
42025 * @return {bitArray} The hash value, an array of 8 big-endian words.
42026 */
42027 finalize:function () {
42028 var i, b = this._buffer, h = this._h;
42029
42030 // Round out and push the buffer
42031 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
42032
42033 // Round out the buffer to a multiple of 16 words, less the 2 length words.
42034 for (i = b.length + 2; i & 15; i++) {
42035 b.push(0);
42036 }
42037
42038 // append the length
42039 b.push(Math.floor(this._length / 0x100000000));
42040 b.push(this._length | 0);
42041
42042 while (b.length) {
42043 this._block(b.splice(0,16));
42044 }
42045
42046 this.reset();
42047 return h;
42048 },
42049
42050 /**
42051 * The SHA-256 initialization vector, to be precomputed.
42052 * @private
42053 */
42054 _init:[],
42055 /*
42056 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
42057 */
42058
42059 /**
42060 * The SHA-256 hash key, to be precomputed.
42061 * @private
42062 */
42063 _key:[],
42064 /*
42065 _key:
42066 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
42067 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
42068 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
42069 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
42070 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
42071 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
42072 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
42073 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
42074 */
42075
42076
42077 /**
42078 * Function to precompute _init and _key.
42079 * @private
42080 */
42081 _precompute: function () {
42082 var i = 0, prime = 2, factor;
42083
42084 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
42085
42086 outer: for (; i<64; prime++) {
42087 for (factor=2; factor*factor <= prime; factor++) {
42088 if (prime % factor === 0) {
42089 // not a prime
42090 continue outer;
ebd8d4e8 42091 }
80c4dd2a
IC
42092 }
42093
42094 if (i<8) {
42095 this._init[i] = frac(Math.pow(prime, 1/2));
42096 }
42097 this._key[i] = frac(Math.pow(prime, 1/3));
42098 i++;
ebd8d4e8 42099 }
80c4dd2a
IC
42100 },
42101
42102 /**
42103 * Perform one cycle of SHA-256.
42104 * @param {bitArray} words one block of words.
42105 * @private
42106 */
42107 _block:function (words) {
42108 var i, tmp, a, b,
42109 w = words.slice(0),
42110 h = this._h,
42111 k = this._key,
42112 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
42113 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
42114
42115 /* Rationale for placement of |0 :
42116 * If a value can overflow is original 32 bits by a factor of more than a few
42117 * million (2^23 ish), there is a possibility that it might overflow the
42118 * 53-bit mantissa and lose precision.
42119 *
42120 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
42121 * propagates around the loop, and on the hash state h[]. I don't believe
42122 * that the clamps on h4 and on h0 are strictly necessary, but it's close
42123 * (for h4 anyway), and better safe than sorry.
42124 *
42125 * The clamps on h[] are necessary for the output to be correct even in the
42126 * common case and for short inputs.
42127 */
42128 for (i=0; i<64; i++) {
42129 // load up the input word for this round
42130 if (i<16) {
42131 tmp = w[i];
42132 } else {
42133 a = w[(i+1 ) & 15];
42134 b = w[(i+14) & 15];
42135 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
42136 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
42137 w[i&15] + w[(i+9) & 15]) | 0;
42138 }
42139
42140 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
42141
42142 // shift register
42143 h7 = h6; h6 = h5; h5 = h4;
42144 h4 = h3 + tmp | 0;
42145 h3 = h2; h2 = h1; h1 = h0;
42146
42147 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
42148 }
42149
42150 h[0] = h[0]+h0 | 0;
42151 h[1] = h[1]+h1 | 0;
42152 h[2] = h[2]+h2 | 0;
42153 h[3] = h[3]+h3 | 0;
42154 h[4] = h[4]+h4 | 0;
42155 h[5] = h[5]+h5 | 0;
42156 h[6] = h[6]+h6 | 0;
42157 h[7] = h[7]+h7 | 0;
42158 }
42159};
ea87f1d3
IC
42160</script>
42161 <script>// An extremely basic translation library
42162//
42163// Example usage:
42164//
42165// Set some html to be translated. Do this using the 'data-translate' attribute:
42166//
42167// <div data-translate>Test</div>
42168// <div data-translate-html><em>keep em tag</em></div>
52da415f
IC
42169// <input data-translate-placeholder placeholder="Example placeholder">
42170// <span data-translate-title title="Example title"></span>
ea87f1d3
IC
42171//
42172// Obtain all the phrases to be translated via js debug console:
42173//
42174// Translate.phrasesAsJson();
42175//
42176// Use that template to translate the phrases into another language.
42177// Leave the key the same. Change the value to the new language.
42178//
42179// Create a js file to load the new phrases. In this example for Spanish,
42180// es.js will contain the following code:
42181//
42182// Translate.loadForeignPhrases("es", {
42183// "Test": "Test in Spanish",
42184// "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
52da415f
IC
42185// "Example placeholder": "Example placeholder in Spanish"
42186// "Example title": "Example title in Spanish"
ea87f1d3
IC
42187// });
42188//
42189// In your UI put a listener for clicking on the Spanish button:
42190//
42191// mySpanishButton.addEventListener("click", function() {
42192// Translate.setLanguage("es");
42193// });
42194// myEnglishButton.addEventListener("click", function() {
42195// Translate.setLanguage("en");
42196// });
42197
42198Translate = new (function() {
42199
42200 var defaultLanguage = "en";
42201
42202 var allPhrases = {};
42203 allPhrases[defaultLanguage] = {};
42204
42205 // Node types
42206
42207 var text = {
42208 selector: "[data-translate]",
42209 getKey: function() {
42210 return this.textContent.trim().replace(/\s+/g, " ");
42211 },
42212 setPhrase: function(p) {
42213 this.textContent = p;
42214 },
42215 }
42216
42217 var html = {
42218 selector: "[data-translate-html]",
42219 getKey: function() {
42220 return this.innerHTML.trim().replace(/\s+/g, " ");
42221 },
42222 setPhrase: function(p) {
42223 this.innerHTML = p;
42224 },
42225 }
42226
42227 var placeholder = {
42228 selector: "[data-translate-placeholder]",
42229 getKey: function() {
42230 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
42231 },
42232 setPhrase: function(p) {
42233 this.setAttribute("placeholder", p);
42234 },
42235 }
42236
52da415f
IC
42237 var title = {
42238 selector: "[data-translate-title]",
42239 getKey: function() {
42240 return this.getAttribute("title").trim().replace(/\s+/g, " ");
42241 },
42242 setPhrase: function(p) {
42243 this.setAttribute("title", p);
42244 },
42245 }
42246
ea87f1d3
IC
42247 // Get elements to be translated
42248 var allEls = getEls(text)
42249 .concat(getEls(html))
52da415f
IC
42250 .concat(getEls(placeholder))
42251 .concat(getEls(title));
ea87f1d3
IC
42252
42253 // Provides access to phrases from a non-default language.
42254 // See phrases_en.js for example usage.
42255 this.loadForeignPhrases = function(language, phrases) {
42256 allPhrases[language] = phrases;
42257 }
42258
42259 // Displays a different language, eg "en" or "fr"
42260 this.setLanguage = function(language) {
42261 for (var i=0; i<allEls.length; i++) {
42262 var el = allEls[i];
42263 var key = el.key;
42264 if (!(language in allPhrases)) {
42265 console.log(language + " not in allPhrases");
42266 return;
42267 }
42268 if (!(key in allPhrases[language])) {
42269 console.log(language + " does not contain phrase: " + key);
42270 return;
42271 }
42272 var phrase = allPhrases[language][key];
42273 el.setPhrase(phrase);
42274 }
42275 }
42276
42277 // Converts the phrases to a key-pair json file.
42278 // This is a good way to export phrases for use in translation tools.
42279 this.phrasesAsJson = function(language) {
42280 var keys = [];
42281 for (var i=0; i<allEls.length; i++) {
42282 var el = allEls[i];
42283 var key = el.key;
42284 keys.push(key);
42285 }
42286 keys.sort();
42287 var output = {};
42288 for (var i=0; i<keys.length; i++) {
42289 var key = keys[i];
42290 var translated = "";
42291 if (language in allPhrases && key in allPhrases[language]) {
42292 translated = allPhrases[language][key];
42293 }
42294 output[key] = translated;
42295 }
42296 return JSON.stringify(output, null, 2);
42297 }
42298
42299 function getEls(nodeType) {
42300 var nodes = document.querySelectorAll(nodeType.selector);
42301 var els = [];
42302 for (var i=0; i<nodes.length; i++) {
42303 var node = nodes[i];
42304 node.getKey = nodeType.getKey;
42305 node.setPhrase = nodeType.setPhrase;
42306 node.key = node.getKey();
42307 allPhrases[defaultLanguage][node.key] = node.key;
42308 els.push(node);
42309 }
42310 return els;
42311 }
42312
42313})();
42314</script>
42315 <script>Translate.loadForeignPhrases("en",
42316{
42317 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
42318 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
42319 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
42320 "<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).",
42321 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
42322 "Account": "Account",
42323 "Address": "Address",
42324 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
42325 "BIP32 Derivation Path": "BIP32 Derivation Path",
42326 "BIP32 Extended Key": "BIP32 Extended Key",
42327 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
42328 "BIP32 Root Key": "BIP32 Root Key",
42329 "BIP39 Mnemonic": "BIP39 Mnemonic",
42330 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
42331 "BIP39 Seed": "BIP39 Seed",
42332 "Base 10": "Base 10",
42333 "Base 6": "Base 6",
42334 "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.",
42335 "Binary": "Binary",
42336 "Bitcoin Core": "Bitcoin Core",
42337 "Bits Per Event": "Bits Per Event",
42338 "Block Explorers": "Block Explorers",
42339 "Can be used with": "Can be used with",
42340 "Card": "Card",
42341 "Coin": "Coin",
42342 "Dice": "Dice",
42343 "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.",
42344 "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.",
42345 "Entropy": "Entropy",
42346 "Entropy Type": "Entropy Type",
42347 "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.",
42348 "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>.",
42349 "Event Count": "Event Count",
42350 "External / Internal": "External / Internal",
42351 "Filtered Entropy": "Filtered Entropy",
42352 "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>",
42353 "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>.",
42354 "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>.",
42355 "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>",
42356 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
42357 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
42358 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
42359 "Get the source code from the repository": "Get the source code from the repository",
42360 "Hex": "Hex",
42361 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
42362 "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.",
42363 "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.",
42364 "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.",
42365 "Libraries": "Libraries",
42366 "Mnemonic Language": "Mnemonic Language",
42367 "Mnemonic Length": "Mnemonic Length",
42368 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
42369 "More info": "More info",
42370 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
42371 "Mycelium Wallet": "Mycelium Wallet",
42372 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
42373 "Offline Usage": "Offline Usage",
42374 "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.",
42375 "Path": "Path",
42376 "Private Key": "Private Key",
42377 "Private Keys": "Private Keys",
42378 "Public Key": "Public Key",
42379 "Purpose": "Purpose",
42380 "Raw Binary": "Raw Binary",
42381 "Read more": "Read more",
42382 "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>",
42383 "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>",
42384 "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>",
42385 "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>",
42386 "Show": "Show",
42387 "Show more rows": "Show more rows",
42388 "Strength": "Strength",
42389 "Supply my own source of entropy": "Supply my own source of entropy",
42390 "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.",
42391 "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>.",
42392 "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.",
42393 "This project is 100% open-source code": "This project is 100% open-source code",
42394 "Toggle": "Toggle",
42395 "Total Bits": "Total Bits",
42396 "Use hardened addresses": "Use hardened addresses",
42397 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
42398 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
42399 "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>.",
42400 "Valid entropy values include:": "Valid entropy values include:",
42401 "Warning": "Warning",
42402 "Word Count": "Word Count",
42403 "You are not a good source of entropy.": "You are not a good source of entropy.",
42404 "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).",
42405 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
42406 "words": "words"
42407}
42408);
dc55c6b0 42409</script>
ab78acc6 42410 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
3af2954a 42411WORDLISTS["english"] = [
ebd8d4e8
IC
42412"abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
42413"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
42414"action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
42415"adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
42416"agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
42417"alien","all","alley","allow","almost","alone","alpha","already","also","alter",
42418"always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
42419"angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
42420"anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
42421"area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
42422"arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
42423"assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
42424"audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
42425"aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
42426"bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
42427"barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
42428"beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
42429"best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
42430"bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
42431"blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
42432"boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
42433"bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
42434"breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
42435"broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
42436"bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
42437"butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
42438"calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
42439"canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
42440"cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
42441"cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
42442"cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
42443"chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
42444"chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
42445"citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
42446"clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
42447"cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
42448"code","coffee","coil","coin","collect","color","column","combine","come","comfort",
42449"comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
42450"convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
42451"cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
42452"craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
42453"crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
42454"cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
42455"cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
42456"damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
42457"debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
42458"define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
42459"depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
42460"despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
42461"diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
42462"direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
42463"divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
42464"donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
42465"drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
42466"drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
42467"dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
42468"ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
42469"elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
42470"embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
42471"endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
42472"enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
42473"era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
42474"eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
42475"excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
42476"exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
42477"eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
42478"family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
42479"fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
42480"fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
42481"film","filter","final","find","fine","finger","finish","fire","firm","first",
42482"fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
42483"flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
42484"foam","focus","fog","foil","fold","follow","food","foot","force","forest",
42485"forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
42486"frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
42487"fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
42488"gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
42489"gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
42490"ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
42491"glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
42492"goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
42493"grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
42494"grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
42495"guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
42496"harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
42497"heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
42498"high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
42499"holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
42500"host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
42501"hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
42502"identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
42503"impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
42504"indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
42505"inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
42506"intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
42507"item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
42508"job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
42509"junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
42510"kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
42511"knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
42512"laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
42513"layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
42514"legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
42515"liar","liberty","library","license","life","lift","light","like","limb","limit",
42516"link","lion","liquid","list","little","live","lizard","load","loan","lobster",
42517"local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
42518"loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
42519"magic","magnet","maid","mail","main","major","make","mammal","man","manage",
42520"mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
42521"marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
42522"maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
42523"member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
42524"metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
42525"minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
42526"model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
42527"more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
42528"much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
42529"myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
42530"near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
42531"network","neutral","never","news","next","nice","night","noble","noise","nominee",
42532"noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
42533"nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
42534"obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
42535"oil","okay","old","olive","olympic","omit","once","one","onion","online",
42536"only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
42537"ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
42538"outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
42539"paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
42540"parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
42541"pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
42542"penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
42543"phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
42544"pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
42545"play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
42546"pole","police","pond","pony","pool","popular","portion","position","possible","post",
42547"potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
42548"present","pretty","prevent","price","pride","primary","print","priority","prison","private",
42549"prize","problem","process","produce","profit","program","project","promote","proof","property",
42550"prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
42551"punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
42552"pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
42553"raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
42554"ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
42555"ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
42556"reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
42557"relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
42558"repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
42559"result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
42560"ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
42561"ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
42562"romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
42563"rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
42564"safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
42565"satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
42566"scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
42567"scrub","sea","search","season","seat","second","secret","section","security","seed",
42568"seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
42569"session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
42570"sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
42571"short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
42572"siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
42573"sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
42574"skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
42575"slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
42576"snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
42577"soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
42578"sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
42579"speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
42580"spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
42581"spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
42582"stand","start","state","stay","steak","steel","stem","step","stereo","stick",
42583"still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
42584"strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
42585"success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
42586"sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
42587"suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
42588"swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
42589"tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
42590"teach","team","tell","ten","tenant","tennis","tent","term","test","text",
42591"thank","that","theme","then","theory","there","they","thing","this","thought",
42592"three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
42593"time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
42594"toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
42595"tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
42596"toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
42597"trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
42598"trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
42599"truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
42600"twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
42601"unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
42602"unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
42603"uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
42604"useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
42605"vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
42606"verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
42607"video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
42608"vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
42609"wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
42610"wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
42611"web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
42612"wheel","when","where","whip","whisper","wide","width","wife","wild","will",
42613"win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
42614"wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
42615"worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
42616"yellow","you","young","youth","zebra","zero","zone","zoo"]
0515eeec
IC
42617</script>
42618 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42619WORDLISTS["japanese"] = [
42620"あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
42621"あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
42622"あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
42623"あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
42624"あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
42625"あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
42626"いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
42627"いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
42628"いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
42629"いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
42630"いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
42631"いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
42632"いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
42633"いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
42634"いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
42635"うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
42636"うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
42637"うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
42638"うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
42639"うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
42640"うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
42641"えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
42642"えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
42643"えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
42644"えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
42645"おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
42646"おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
42647"おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
42648"おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
42649"おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
42650"おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
42651"おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
42652"かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
42653"かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
42654"かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
42655"がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
42656"かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
42657"かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
42658"きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
42659"きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
42660"ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
42661"きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
42662"きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
42663"きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
42664"きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
42665"きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
42666"くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
42667"くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
42668"くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
42669"ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
42670"くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
42671"ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
42672"けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
42673"げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
42674"けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
42675"けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
42676"けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
42677"けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
42678"けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
42679"けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
42680"ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
42681"ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
42682"ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
42683"こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
42684"こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
42685"こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
42686"こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
42687"こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
42688"こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
42689"こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
42690"こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
42691"さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
42692"さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
42693"さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
42694"さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
42695"さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
42696"さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
42697"ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
42698"しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
42699"しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
42700"しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
42701"しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
42702"しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
42703"しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
42704"しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
42705"しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
42706"しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
42707"しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
42708"すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
42709"すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
42710"すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
42711"ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
42712"すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
42713"せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
42714"せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
42715"せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
42716"せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
42717"ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
42718"せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
42719"せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
42720"そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
42721"そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
42722"そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
42723"そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
42724"そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
42725"ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
42726"たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
42727"だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
42728"たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
42729"たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
42730"たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
42731"たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
42732"たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
42733"ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
42734"たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
42735"たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
42736"たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
42737"ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
42738"ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
42739"ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
42740"ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
42741"ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
42742"つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
42743"つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
42744"つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
42745"てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
42746"ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
42747"てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
42748"でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
42749"てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
42750"でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
42751"でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
42752"どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
42753"とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
42754"とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
42755"とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
42756"どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
42757"ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
42758"なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
42759"なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
42760"ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
42761"にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
42762"にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
42763"にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
42764"にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
42765"にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
42766"ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
42767"ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
42768"ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
42769"ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
42770"ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
42771"のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
42772"のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
42773"ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
42774"はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
42775"はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
42776"はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
42777"はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
42778"はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
42779"はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
42780"はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
42781"ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
42782"ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
42783"ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
42784"ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
42785"ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
42786"ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
42787"ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
42788"ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
42789"ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
42790"ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
42791"ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
42792"ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
42793"へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
42794"へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
42795"へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
42796"ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
42797"ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
42798"ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
42799"ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
42800"まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
42801"まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
42802"みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
42803"みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
42804"みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
42805"むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
42806"むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
42807"むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
42808"めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
42809"めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
42810"もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
42811"やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
42812"やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
42813"ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
42814"ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
42815"よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
42816"よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
42817"らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
42818"りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
42819"りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
42820"りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
42821"れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
42822"れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
42823"ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
42824"わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
42825</script>
42826 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
42827WORDLISTS["spanish"] = [
42828"ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
42829"abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
42830"aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
42831"acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
42832"afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
42833"agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
42834"alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
42835"aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
42836"altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
42837"amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
42838"ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
42839"anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
42840"apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
42841"apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
42842"arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
42843"arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
42844"asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
42845"astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
42846"atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
42847"ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
42848"aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
42849"baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
42850"banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
42851"batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
42852"beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
42853"bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
42854"bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
42855"bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
42856"bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
42857"bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
42858"caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
42859"caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
42860"calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
42861"canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
42862"captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
42863"carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
42864"causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
42865"ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
42866"chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
42867"choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
42868"cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
42869"clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
42870"cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
42871"cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
42872"comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
42873"copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
42874"cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
42875"cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
42876"cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
42877"cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
42878"curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
42879"decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
42880"dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
42881"detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
42882"dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
42883"dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
42884"don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
42885"duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
42886"ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
42887"eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
42888"elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
42889"encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
42890"enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
42891"erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
42892"espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
42893"eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
42894"excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
42895"fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
42896"faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
42897"fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
42898"fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
42899"fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
42900"fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
42901"fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
42902"forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
42903"fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
42904"fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
42905"gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
42906"ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
42907"género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
42908"giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
42909"gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
42910"grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
42911"grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
42912"gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
42913"harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
42914"hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
42915"hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
42916"horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
42917"humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
42918"ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
42919"imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
42920"inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
42921"ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
42922"jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
42923"juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
42924"juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
42925"lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
42926"lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
42927"latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
42928"legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
42929"leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
42930"lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
42931"líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
42932"llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
42933"lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
42934"luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
42935"maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
42936"mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
42937"manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
42938"marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
42939"matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
42940"mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
42941"mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
42942"miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
42943"minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
42944"moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
42945"monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
42946"morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
42947"mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
42948"muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
42949"nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
42950"naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
42951"neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
42952"nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
42953"novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
42954"nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
42955"observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
42956"octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
42957"oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
42958"olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
42959"ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
42960"orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
42961"orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
42962"óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
42963"país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
42964"panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
42965"pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
42966"paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
42967"pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
42968"peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
42969"pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
42970"persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
42971"pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
42972"pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
42973"pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
42974"pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
42975"policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
42976"posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
42977"premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
42978"proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
42979"prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
42980"pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
42981"queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
42982"rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
42983"rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
42984"rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
42985"reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
42986"reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
42987"remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
42988"resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
42989"rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
42990"riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
42991"rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
42992"ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
42993"rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
42994"rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
42995"salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
42996"sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
42997"sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
42998"seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
42999"sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
43000"severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
43001"silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
43002"sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
43003"sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
43004"sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
43005"sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
43006"surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
43007"talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
43008"tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
43009"tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
43010"tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
43011"tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
43012"testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
43013"tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
43014"tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
43015"todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
43016"torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
43017"toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
43018"trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
43019"trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
43020"truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
43021"turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
43022"uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
43023"utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
43024"válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
43025"vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
43026"veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
43027"verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
43028"vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
43029"viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
43030"vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
43031"vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
43032"zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
43033</script>
43034 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43035WORDLISTS["chinese_simplified"] = [
43036"的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
43037"中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
43038"时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
43039"就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
43040"同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
43041"面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
43042"民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
43043"度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
43044"二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
43045"两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
43046"去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
43047"由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
43048"那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
43049"样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
43050"心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
43051"或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
43052"条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
43053"无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
43054"已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
43055"果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
43056"次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
43057"求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
43058"图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
43059"别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
43060"几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
43061"必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
43062"南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
43063"百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
43064"压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
43065"术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
43066"收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
43067"风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
43068"身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
43069"达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
43070"八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
43071"节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
43072"传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
43073"研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
43074"织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
43075"复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
43076"深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
43077"半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
43078"史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
43079"何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
43080"号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
43081"毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
43082"王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
43083"却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
43084"包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
43085"细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
43086"官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
43087"女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
43088"含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
43089"英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
43090"破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
43091"河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
43092"案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
43093"仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
43094"轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
43095"足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
43096"负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
43097"修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
43098"财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
43099"跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
43100"初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
43101"未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
43102"钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
43103"限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
43104"州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
43105"础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
43106"袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
43107"诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
43108"夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
43109"终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
43110"烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
43111"括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43112"侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
43113"货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
43114"息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
43115"医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
43116"训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
43117"脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
43118"械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
43119"粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
43120"钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
43121"培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
43122"答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
43123"脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
43124"概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
43125"评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
43126"伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
43127"亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
43128"诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43129"绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
43130"屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
43131"束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
43132"胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
43133"宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
43134"露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
43135"库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
43136"鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
43137"借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
43138"润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
43139"欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
43140"纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
43141"塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
43142"刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
43143"洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
43144"献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43145"阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43146"楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
43147"馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
43148"塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
43149"楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
43150"监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
43151"壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
43152"桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
43153"您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
43154"纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
43155"湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
43156"齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
43157"净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43158"庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
43159"伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
43160"璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
43161"纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
43162"津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
43163"肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
43164"贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
43165"峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
43166"浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
43167"睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
43168"炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
43169"呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
43170"授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
43171"幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
43172"姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
43173"夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
43174"绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
43175"礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
43176"勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
43177"饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
43178"扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
43179"奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
43180"寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
43181"贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
43182"渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
43183"乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
43184"锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
43185"缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
43186"碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
43187"票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
43188"荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
43189"撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
43190"陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
43191"虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
43192"乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
43193"瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
43194"秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
43195"洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
43196"籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
43197"醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
43198"玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
43199"趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
43200"滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
43201"泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
43202"胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
43203"串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
43204"辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
43205"沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
43206"侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
43207"豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
43208"掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
43209"雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
43210"蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
43211"番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
43212"扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
43213"悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
43214"渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
43215"霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
43216"甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
43217"伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
43218"弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
43219"逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
43220"冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
43221"欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
43222"搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
43223"忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
43224"杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
43225"烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
43226"姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
43227"董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
43228"拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
43229"览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
43230"凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
43231"丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
43232"铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
43233"窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
43234"胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
43235"疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
43236"嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
43237"莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
43238"皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
43239"巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
43240"卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
43241</script>
43242 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43243WORDLISTS["chinese_traditional"] = [
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"深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
43285"半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
43286"史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
43287"何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
43288"號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
43289"毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
43290"王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
43291"卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
43292"包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
43293"細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
43294"官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
43295"女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
43296"含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
43297"英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
43298"破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
43299"河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
43300"案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
43301"僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
43302"輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
43303"足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
43304"負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
43305"修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
43306"財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
43307"跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
43308"初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
43309"未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
43310"錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
43311"限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
43312"州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
43313"礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
43314"袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
43315"訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
43316"夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
43317"終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
43318"烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
43319"括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
43320"侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
43321"貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
43322"息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
43323"醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
43324"訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
43325"脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
43326"械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
43327"粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
43328"鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
43329"培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
43330"答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
43331"腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
43332"概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
43333"評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
43334"傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
43335"亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
43336"詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
43337"綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
43338"屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
43339"束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
43340"胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
43341"宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
43342"露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
43343"庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
43344"鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
43345"借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
43346"潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
43347"歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
43348"納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
43349"塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
43350"刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
43351"洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
43352"獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
43353"陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
43354"樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
43355"館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
43356"塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
43357"楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
43358"監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
43359"壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
43360"橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
43361"您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
43362"紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
43363"灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
43364"齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
43365"淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
43366"莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
43367"夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
43368"璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
43369"縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
43370"津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
43371"肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
43372"貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
43373"峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
43374"浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
43375"睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
43376"炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
43377"呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
43378"授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
43379"幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
43380"姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
43381"夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
43382"繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
43383"禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
43384"勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
43385"飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
43386"掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
43387"奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
43388"寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
43389"貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
43390"漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
43391"乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
43392"銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
43393"缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
43394"碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
43395"票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
43396"荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
43397"撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
43398"陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
43399"蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
43400"乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
43401"瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
43402"秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
43403"洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
43404"籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
43405"醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
43406"玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
43407"趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
43408"灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
43409"泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
43410"脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
43411"串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
43412"輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
43413"沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
43414"僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
43415"豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
43416"掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
43417"霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
43418"蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
43419"番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
43420"扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
43421"悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
43422"渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
43423"黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
43424"甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
43425"偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
43426"弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
43427"逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
43428"冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
43429"欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
43430"搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
43431"憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
43432"杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
43433"烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
43434"姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
43435"董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
43436"拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
43437"覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
43438"兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
43439"叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
43440"鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
43441"窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
43442"胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
43443"瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
43444"嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
43445"蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
43446"皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
43447"巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
43448"卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
43449</script>
43450 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43451WORDLISTS["french"] = [
43452"abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
43453"abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
43454"acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
43455"aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
43456"adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
43457"adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
43458"agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
43459"aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
43460"alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
43461"ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
43462"amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
43463"animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
43464"anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
43465"aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
43466"armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
43467"aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
43468"atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
43469"audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
43470"aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
43471"badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
43472"bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
43473"bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
43474"bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
43475"bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
43476"biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
43477"blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
43478"bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
43479"bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
43480"breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
43481"broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
43482"bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
43483"caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
43484"caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
43485"caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
43486"carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
43487"caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
43488"cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
43489"charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
43490"chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
43491"chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
43492"citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
43493"cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
43494"coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
43495"colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
43496"connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
43497"corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
43498"couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
43499"crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
43500"crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
43501"curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
43502"dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
43503"déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
43504"dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
43505"dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
43506"dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
43507"détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
43508"différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
43509"discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
43510"domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
43511"doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
43512"dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
43513"écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
43514"écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
43515"effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
43516"élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
43517"embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
43518"émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
43519"enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
43520"ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
43521"énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
43522"épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
43523"épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
43524"espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
43525"estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
43526"ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
43527"évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
43528"exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
43529"exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
43530"exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
43531"farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
43532"favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
43533"féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
43534"figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
43535"fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
43536"fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
43537"fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
43538"fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
43539"frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
43540"fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
43541"galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
43542"gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
43543"gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
43544"gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
43545"goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
43546"grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
43547"gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
43548"hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
43549"hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
43550"histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
43551"horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
43552"humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
43553"illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
43554"imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
43555"inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
43556"inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
43557"inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
43558"inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
43559"jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
43560"jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
43561"joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
43562"kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
43563"laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
43564"laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
43565"lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
43566"ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
43567"lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
43568"loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
43569"lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
43570"magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
43571"malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
43572"marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
43573"matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
43574"méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
43575"mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
43576"métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
43577"mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
43578"moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
43579"morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
43580"mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
43581"muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
43582"natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
43583"négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
43584"nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
43585"normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
43586"nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
43587"obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
43588"octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
43589"olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
43590"opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
43591"oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
43592"otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
43593"paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
43594"panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
43595"parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
43596"patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
43597"pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
43598"perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
43599"pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
43600"pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
43601"pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
43602"pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
43603"pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
43604"ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
43605"pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
43606"préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
43607"problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
43608"prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
43609"pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
43610"question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
43611"ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
43612"réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
43613"rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
43614"régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
43615"remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
43616"reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
43617"rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
43618"révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
43619"rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
43620"rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
43621"ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
43622"sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
43623"sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
43624"savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
43625"scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
43626"séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
43627"séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
43628"sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
43629"sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
43630"soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
43631"sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
43632"soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
43633"station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
43634"subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
43635"surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
43636"synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
43637"tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
43638"tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
43639"tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
43640"tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
43641"tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
43642"torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
43643"trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
43644"tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
43645"tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
43646"typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
43647"univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
43648"vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
43649"valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
43650"végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
43651"vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
43652"viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
43653"violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
43654"vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
43655"voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
43656"voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
43657</script>
43658 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
43659WORDLISTS["italian"] = [
43660"abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
43661"accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
43662"addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
43663"affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
43664"agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
43665"alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
43666"allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
43667"altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
43668"america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
43669"amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
43670"andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
43671"anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
43672"appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
43673"archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
43674"arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
43675"asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
43676"astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
43677"attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
43678"avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
43679"badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
43680"bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
43681"battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
43682"benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
43683"bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
43684"bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
43685"botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
43686"brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
43687"buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
43688"cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
43689"camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
43690"capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
43691"carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
43692"casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
43693"cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
43694"cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
43695"ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
43696"ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
43697"cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
43698"comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
43699"consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
43700"cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
43701"cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
43702"critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
43703"cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
43704"daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
43705"decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
43706"demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
43707"desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
43708"diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
43709"disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
43710"dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
43711"dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
43712"dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
43713"economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
43714"elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
43715"eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
43716"enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
43717"eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
43718"erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
43719"esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
43720"esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
43721"europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
43722"famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
43723"fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
43724"feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
43725"feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
43726"fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
43727"fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
43728"fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
43729"fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
43730"frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
43731"fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
43732"gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
43733"garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
43734"gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
43735"ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
43736"gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
43737"gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
43738"gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
43739"guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
43740"idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
43741"imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
43742"importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
43743"incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
43744"ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
43745"insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
43746"invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
43747"irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
43748"lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
43749"larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
43750"lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
43751"levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
43752"liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
43753"lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
43754"luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
43755"macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
43756"malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
43757"mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
43758"massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
43759"medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
43760"merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
43761"mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
43762"minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
43763"mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
43764"molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
43765"mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
43766"mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
43767"muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
43768"narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
43769"negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
43770"nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
43771"normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
43772"nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
43773"obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
43774"offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
43775"ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
43776"onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
43777"orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
43778"orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
43779"ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
43780"ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
43781"padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
43782"pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
43783"parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
43784"pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
43785"penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
43786"periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
43787"pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
43788"piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
43789"pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
43790"pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
43791"poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
43792"pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
43793"positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
43794"prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
43795"principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
43796"proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
43797"pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
43798"qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
43799"ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
43800"rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
43801"recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
43802"remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
43803"rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
43804"ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
43805"rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
43806"rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
43807"ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
43808"rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
43809"riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
43810"rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
43811"rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
43812"rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
43813"salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
43814"sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
43815"sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
43816"sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
43817"scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
43818"scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
43819"scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
43820"sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
43821"selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
43822"sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
43823"setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
43824"sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
43825"sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
43826"sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
43827"sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
43828"smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
43829"snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
43830"solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
43831"sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
43832"sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
43833"spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
43834"spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
43835"sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
43836"statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
43837"storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
43838"succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
43839"sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
43840"svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
43841"tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
43842"tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
43843"tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
43844"tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
43845"titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
43846"tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
43847"tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
43848"trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
43849"trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
43850"trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
43851"tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
43852"ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
43853"unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
43854"usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
43855"valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
43856"vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
43857"vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
43858"verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
43859"vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
43860"vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
43861"viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
43862"viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
43863"zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
43864"zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
dc55c6b0 43865</script>
ab78acc6 43866 <script>/*
3af2954a
IC
43867 * Copyright (c) 2013 Pavol Rusnak
43868 *
43869 * Permission is hereby granted, free of charge, to any person obtaining a copy of
43870 * this software and associated documentation files (the "Software"), to deal in
43871 * the Software without restriction, including without limitation the rights to
43872 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
43873 * of the Software, and to permit persons to whom the Software is furnished to do
43874 * so, subject to the following conditions:
43875 *
43876 * The above copyright notice and this permission notice shall be included in all
43877 * copies or substantial portions of the Software.
43878 *
43879 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43880 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43881 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43882 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43883 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43884 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43885 */
43886
43887/*
43888 * Javascript port from python by Ian Coleman
43889 *
80c4dd2a
IC
43890 * Requires code from sjcl
43891 * https://github.com/bitwiseshiftleft/sjcl
3af2954a
IC
43892 */
43893
43894var Mnemonic = function(language) {
43895
43896 var PBKDF2_ROUNDS = 2048;
43897 var RADIX = 2048;
43898
43899 var self = this;
43900 var wordlist = [];
43901
80c4dd2a
IC
43902 var hmacSHA512 = function(key) {
43903 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
43904 this.encrypt = function() {
43905 return hasher.encrypt.apply(hasher, arguments);
43906 };
43907 };
43908
3af2954a
IC
43909 function init() {
43910 wordlist = WORDLISTS[language];
43911 if (wordlist.length != RADIX) {
43912 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
43913 throw err;
43914 }
43915 }
43916
43917 self.generate = function(strength) {
43918 strength = strength || 128;
43919 var r = strength % 32;
43920 if (r > 0) {
43921 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
43922 }
43923 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
43924 if (!hasStrongCrypto) {
43925 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
43926 }
43927 var buffer = new Uint8Array(strength / 8);
43928 var data = crypto.getRandomValues(buffer);
43929 return self.toMnemonic(data);
43930 }
43931
80c4dd2a
IC
43932 self.toMnemonic = function(byteArray) {
43933 if (byteArray.length % 4 > 0) {
43934 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
3af2954a
IC
43935 }
43936
43937 //h = hashlib.sha256(data).hexdigest()
80c4dd2a
IC
43938 var data = byteArrayToWordArray(byteArray);
43939 var hash = sjcl.hash.sha256.hash(data);
43940 var h = sjcl.codec.hex.fromBits(hash);
3af2954a
IC
43941
43942 // b is a binary string, eg '00111010101100...'
43943 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
43944 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
43945 //
43946 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
43947 // c = bin(int(h, 16))[2:].zfill(256)
43948 // d = c[:len(data) * 8 / 32]
80c4dd2a
IC
43949 var a = byteArrayToBinaryString(byteArray);
43950 var c = zfill(hexStringToBinaryString(h), 256);
43951 var d = c.substring(0, byteArray.length * 8 / 32);
3af2954a
IC
43952 // b = line1 + line2
43953 var b = a + d;
43954
43955 var result = [];
43956 var blen = b.length / 11;
43957 for (var i=0; i<blen; i++) {
43958 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
43959 result.push(wordlist[idx]);
43960 }
0515eeec 43961 return self.joinWords(result);
3af2954a
IC
43962 }
43963
43964 self.check = function(mnemonic) {
0515eeec 43965 var mnemonic = self.splitWords(mnemonic);
18abe53b 43966 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
3af2954a
IC
43967 return false
43968 }
43969 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
43970 var idx = [];
43971 for (var i=0; i<mnemonic.length; i++) {
43972 var word = mnemonic[i];
43973 var wordIndex = wordlist.indexOf(word);
43974 if (wordIndex == -1) {
43975 return false;
43976 }
43977 var binaryIndex = zfill(wordIndex.toString(2), 11);
43978 idx.push(binaryIndex);
43979 }
43980 var b = idx.join('');
43981 var l = b.length;
43982 //d = b[:l / 33 * 32]
43983 //h = b[-l / 33:]
43984 var d = b.substring(0, l / 33 * 32);
43985 var h = b.substring(l - l / 33, l);
43986 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
80c4dd2a 43987 var nd = binaryStringToWordArray(d);
3af2954a 43988 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
80c4dd2a
IC
43989 var ndHash = sjcl.hash.sha256.hash(nd);
43990 var ndHex = sjcl.codec.hex.fromBits(ndHash);
43991 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
3af2954a
IC
43992 var nh = ndBstr.substring(0,l/33);
43993 return h == nh;
43994 }
43995
43996 self.toSeed = function(mnemonic, passphrase) {
43997 passphrase = passphrase || '';
599fb39e
IC
43998 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
43999 var mnemonicNormalized = self.normalizeString(mnemonic);
3af2954a
IC
44000 passphrase = self.normalizeString(passphrase)
44001 passphrase = "mnemonic" + passphrase;
599fb39e 44002 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
80c4dd2a
IC
44003 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
44004 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
44005 var hashHex = sjcl.codec.hex.fromBits(result);
44006 return hashHex;
3af2954a
IC
44007 }
44008
0515eeec
IC
44009 self.splitWords = function(mnemonic) {
44010 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
44011 }
44012
44013 self.joinWords = function(words) {
44014 // Set space correctly depending on the language
44015 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
44016 var space = " ";
44017 if (language == "japanese") {
44018 space = "\u3000"; // ideographic space
44019 }
44020 return words.join(space);
44021 }
44022
3af2954a
IC
44023 self.normalizeString = function(str) {
44024 if (typeof str.normalize == "function") {
44025 return str.normalize("NFKD");
44026 }
44027 else {
44028 // TODO decide how to handle this in the future.
44029 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
44030 return str;
44031 }
44032 }
44033
80c4dd2a
IC
44034 function byteArrayToWordArray(data) {
44035 var a = [];
44036 for (var i=0; i<data.length/4; i++) {
44037 v = 0;
44038 v += data[i*4 + 0] << 8 * 3;
44039 v += data[i*4 + 1] << 8 * 2;
44040 v += data[i*4 + 2] << 8 * 1;
44041 v += data[i*4 + 3] << 8 * 0;
44042 a.push(v);
44043 }
44044 return a;
44045 }
44046
3af2954a
IC
44047 function byteArrayToBinaryString(data) {
44048 var bin = "";
44049 for (var i=0; i<data.length; i++) {
44050 bin += zfill(data[i].toString(2), 8);
44051 }
44052 return bin;
44053 }
44054
80c4dd2a
IC
44055 function hexStringToBinaryString(hexString) {
44056 binaryString = "";
44057 for (var i=0; i<hexString.length; i++) {
44058 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
44059 }
44060 return binaryString;
44061 }
44062
44063 function binaryStringToWordArray(binary) {
44064 var aLen = binary.length / 32;
44065 var a = [];
44066 for (var i=0; i<aLen; i++) {
44067 var valueStr = binary.substring(0,32);
3af2954a 44068 var value = parseInt(valueStr, 2);
80c4dd2a
IC
44069 a.push(value);
44070 binary = binary.slice(32);
3af2954a 44071 }
80c4dd2a 44072 return a;
3af2954a
IC
44073 }
44074
44075 // Pad a numeric string on the left with zero digits until the given width
44076 // is reached.
44077 // Note this differs to the python implementation because it does not
44078 // handle numbers starting with a sign.
44079 function zfill(source, length) {
44080 source = source.toString();
44081 while (source.length < length) {
44082 source = '0' + source;
44083 }
44084 return source;
44085 }
44086
44087 init();
ebd8d4e8 44088
3af2954a 44089}
dc55c6b0 44090</script>
95f04905
IC
44091 <script>/*
44092 JavaScript BigInteger library version 0.9.1
44093 http://silentmatt.com/biginteger/
18abe53b 44094
95f04905
IC
44095 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
44096 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
44097 Licensed under the MIT license.
c6624d51 44098
95f04905
IC
44099 Support for arbitrary internal representation base was added by
44100 Vitaly Magerya.
44101*/
18abe53b 44102
95f04905
IC
44103/*
44104 File: biginteger.js
18abe53b 44105
95f04905 44106 Exports:
18abe53b 44107
95f04905
IC
44108 <BigInteger>
44109*/
44110(function(exports) {
44111"use strict";
44112/*
44113 Class: BigInteger
44114 An arbitrarily-large integer.
18abe53b 44115
95f04905
IC
44116 <BigInteger> objects should be considered immutable. None of the "built-in"
44117 methods modify *this* or their arguments. All properties should be
44118 considered private.
18abe53b 44119
95f04905
IC
44120 All the methods of <BigInteger> instances can be called "statically". The
44121 static versions are convenient if you don't already have a <BigInteger>
44122 object.
18abe53b 44123
95f04905 44124 As an example, these calls are equivalent.
18abe53b 44125
95f04905
IC
44126 > BigInteger(4).multiply(5); // returns BigInteger(20);
44127 > BigInteger.multiply(4, 5); // returns BigInteger(20);
18abe53b 44128
95f04905
IC
44129 > var a = 42;
44130 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
44131*/
c6624d51 44132
95f04905 44133var CONSTRUCT = {}; // Unique token to call "private" version of constructor
c6624d51
IC
44134
44135/*
44136 Constructor: BigInteger()
44137 Convert a value to a <BigInteger>.
44138
44139 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
44140 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
44141 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
44142 without a radix argument.
44143
44144 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
44145 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
44146 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
44147 > var n3 = BigInteger(n2); // Return n2, unchanged
44148
44149 The constructor form only takes an array and a sign. *n* must be an
44150 array of numbers in little-endian order, where each digit is between 0
44151 and BigInteger.base. The second parameter sets the sign: -1 for
44152 negative, +1 for positive, or 0 for zero. The array is *not copied and
44153 may be modified*. If the array contains only zeros, the sign parameter
44154 is ignored and is forced to zero.
44155
44156 > new BigInteger([5], -1): create a new BigInteger with value -5
44157
44158 Parameters:
44159
44160 n - Value to convert to a <BigInteger>.
44161
44162 Returns:
44163
44164 A <BigInteger> value.
44165
44166 See Also:
44167
44168 <parse>, <BigInteger>
44169*/
44170function BigInteger(n, s, token) {
44171 if (token !== CONSTRUCT) {
44172 if (n instanceof BigInteger) {
44173 return n;
44174 }
44175 else if (typeof n === "undefined") {
44176 return ZERO;
44177 }
44178 return BigInteger.parse(n);
44179 }
44180
44181 n = n || []; // Provide the nullary constructor for subclasses.
44182 while (n.length && !n[n.length - 1]) {
44183 --n.length;
44184 }
44185 this._d = n;
44186 this._s = n.length ? (s || 1) : 0;
44187}
44188
44189BigInteger._construct = function(n, s) {
44190 return new BigInteger(n, s, CONSTRUCT);
44191};
44192
44193// Base-10 speedup hacks in parse, toString, exp10 and log functions
44194// require base to be a power of 10. 10^7 is the largest such power
44195// that won't cause a precision loss when digits are multiplied.
44196var BigInteger_base = 10000000;
44197var BigInteger_base_log10 = 7;
44198
44199BigInteger.base = BigInteger_base;
44200BigInteger.base_log10 = BigInteger_base_log10;
44201
44202var ZERO = new BigInteger([], 0, CONSTRUCT);
44203// Constant: ZERO
44204// <BigInteger> 0.
44205BigInteger.ZERO = ZERO;
44206
44207var ONE = new BigInteger([1], 1, CONSTRUCT);
44208// Constant: ONE
44209// <BigInteger> 1.
44210BigInteger.ONE = ONE;
44211
44212var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
44213// Constant: M_ONE
44214// <BigInteger> -1.
44215BigInteger.M_ONE = M_ONE;
44216
44217// Constant: _0
44218// Shortcut for <ZERO>.
44219BigInteger._0 = ZERO;
44220
44221// Constant: _1
44222// Shortcut for <ONE>.
44223BigInteger._1 = ONE;
44224
44225/*
44226 Constant: small
44227 Array of <BigIntegers> from 0 to 36.
44228
44229 These are used internally for parsing, but useful when you need a "small"
44230 <BigInteger>.
44231
44232 See Also:
44233
44234 <ZERO>, <ONE>, <_0>, <_1>
44235*/
44236BigInteger.small = [
44237 ZERO,
44238 ONE,
44239 /* Assuming BigInteger_base > 36 */
44240 new BigInteger( [2], 1, CONSTRUCT),
44241 new BigInteger( [3], 1, CONSTRUCT),
44242 new BigInteger( [4], 1, CONSTRUCT),
44243 new BigInteger( [5], 1, CONSTRUCT),
44244 new BigInteger( [6], 1, CONSTRUCT),
44245 new BigInteger( [7], 1, CONSTRUCT),
44246 new BigInteger( [8], 1, CONSTRUCT),
44247 new BigInteger( [9], 1, CONSTRUCT),
44248 new BigInteger([10], 1, CONSTRUCT),
44249 new BigInteger([11], 1, CONSTRUCT),
44250 new BigInteger([12], 1, CONSTRUCT),
44251 new BigInteger([13], 1, CONSTRUCT),
44252 new BigInteger([14], 1, CONSTRUCT),
44253 new BigInteger([15], 1, CONSTRUCT),
44254 new BigInteger([16], 1, CONSTRUCT),
44255 new BigInteger([17], 1, CONSTRUCT),
44256 new BigInteger([18], 1, CONSTRUCT),
44257 new BigInteger([19], 1, CONSTRUCT),
44258 new BigInteger([20], 1, CONSTRUCT),
44259 new BigInteger([21], 1, CONSTRUCT),
44260 new BigInteger([22], 1, CONSTRUCT),
44261 new BigInteger([23], 1, CONSTRUCT),
44262 new BigInteger([24], 1, CONSTRUCT),
44263 new BigInteger([25], 1, CONSTRUCT),
44264 new BigInteger([26], 1, CONSTRUCT),
44265 new BigInteger([27], 1, CONSTRUCT),
44266 new BigInteger([28], 1, CONSTRUCT),
44267 new BigInteger([29], 1, CONSTRUCT),
44268 new BigInteger([30], 1, CONSTRUCT),
44269 new BigInteger([31], 1, CONSTRUCT),
44270 new BigInteger([32], 1, CONSTRUCT),
44271 new BigInteger([33], 1, CONSTRUCT),
44272 new BigInteger([34], 1, CONSTRUCT),
44273 new BigInteger([35], 1, CONSTRUCT),
44274 new BigInteger([36], 1, CONSTRUCT)
44275];
44276
44277// Used for parsing/radix conversion
44278BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
44279
44280/*
44281 Method: toString
44282 Convert a <BigInteger> to a string.
44283
44284 When *base* is greater than 10, letters are upper case.
44285
44286 Parameters:
44287
44288 base - Optional base to represent the number in (default is base 10).
44289 Must be between 2 and 36 inclusive, or an Error will be thrown.
44290
44291 Returns:
44292
44293 The string representation of the <BigInteger>.
44294*/
44295BigInteger.prototype.toString = function(base) {
44296 base = +base || 10;
44297 if (base < 2 || base > 36) {
44298 throw new Error("illegal radix " + base + ".");
44299 }
44300 if (this._s === 0) {
44301 return "0";
44302 }
44303 if (base === 10) {
44304 var str = this._s < 0 ? "-" : "";
44305 str += this._d[this._d.length - 1].toString();
44306 for (var i = this._d.length - 2; i >= 0; i--) {
44307 var group = this._d[i].toString();
44308 while (group.length < BigInteger_base_log10) group = '0' + group;
44309 str += group;
44310 }
44311 return str;
44312 }
44313 else {
44314 var numerals = BigInteger.digits;
44315 base = BigInteger.small[base];
44316 var sign = this._s;
44317
44318 var n = this.abs();
44319 var digits = [];
44320 var digit;
44321
44322 while (n._s !== 0) {
44323 var divmod = n.divRem(base);
44324 n = divmod[0];
44325 digit = divmod[1];
44326 // TODO: This could be changed to unshift instead of reversing at the end.
44327 // Benchmark both to compare speeds.
44328 digits.push(numerals[digit.valueOf()]);
44329 }
44330 return (sign < 0 ? "-" : "") + digits.reverse().join("");
44331 }
44332};
44333
44334// Verify strings for parsing
44335BigInteger.radixRegex = [
44336 /^$/,
44337 /^$/,
44338 /^[01]*$/,
44339 /^[012]*$/,
44340 /^[0-3]*$/,
44341 /^[0-4]*$/,
44342 /^[0-5]*$/,
44343 /^[0-6]*$/,
44344 /^[0-7]*$/,
44345 /^[0-8]*$/,
44346 /^[0-9]*$/,
44347 /^[0-9aA]*$/,
44348 /^[0-9abAB]*$/,
44349 /^[0-9abcABC]*$/,
44350 /^[0-9a-dA-D]*$/,
44351 /^[0-9a-eA-E]*$/,
44352 /^[0-9a-fA-F]*$/,
44353 /^[0-9a-gA-G]*$/,
44354 /^[0-9a-hA-H]*$/,
44355 /^[0-9a-iA-I]*$/,
44356 /^[0-9a-jA-J]*$/,
44357 /^[0-9a-kA-K]*$/,
44358 /^[0-9a-lA-L]*$/,
44359 /^[0-9a-mA-M]*$/,
44360 /^[0-9a-nA-N]*$/,
44361 /^[0-9a-oA-O]*$/,
44362 /^[0-9a-pA-P]*$/,
44363 /^[0-9a-qA-Q]*$/,
44364 /^[0-9a-rA-R]*$/,
44365 /^[0-9a-sA-S]*$/,
44366 /^[0-9a-tA-T]*$/,
44367 /^[0-9a-uA-U]*$/,
44368 /^[0-9a-vA-V]*$/,
44369 /^[0-9a-wA-W]*$/,
44370 /^[0-9a-xA-X]*$/,
44371 /^[0-9a-yA-Y]*$/,
44372 /^[0-9a-zA-Z]*$/
44373];
44374
44375/*
44376 Function: parse
44377 Parse a string into a <BigInteger>.
44378
44379 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
44380 *base* is not provided, it will be guessed based on the leading characters
44381 of *s* as follows:
44382
44383 - "0x" or "0X": *base* = 16
44384 - "0c" or "0C": *base* = 8
44385 - "0b" or "0B": *base* = 2
44386 - else: *base* = 10
44387
44388 If no base is provided, or *base* is 10, the number can be in exponential
44389 form. For example, these are all valid:
44390
44391 > BigInteger.parse("1e9"); // Same as "1000000000"
44392 > BigInteger.parse("1.234*10^3"); // Same as 1234
44393 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
44394
44395 If any characters fall outside the range defined by the radix, an exception
44396 will be thrown.
44397
44398 Parameters:
44399
44400 s - The string to parse.
44401 base - Optional radix (default is to guess based on *s*).
44402
44403 Returns:
44404
44405 a <BigInteger> instance.
44406*/
44407BigInteger.parse = function(s, base) {
44408 // Expands a number in exponential form to decimal form.
44409 // expandExponential("-13.441*10^5") === "1344100";
44410 // expandExponential("1.12300e-1") === "0.112300";
44411 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
44412 function expandExponential(str) {
44413 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
44414
44415 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
44416 c = +c;
44417 var l = c < 0;
44418 var i = n.length + c;
44419 x = (l ? n : f).length;
44420 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
44421 var z = (new Array(c + 1)).join("0");
44422 var r = n + f;
44423 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
44424 });
44425 }
44426
44427 s = s.toString();
44428 if (typeof base === "undefined" || +base === 10) {
44429 s = expandExponential(s);
44430 }
44431
44432 var prefixRE;
44433 if (typeof base === "undefined") {
44434 prefixRE = '0[xcb]';
44435 }
44436 else if (base == 16) {
44437 prefixRE = '0x';
44438 }
44439 else if (base == 8) {
44440 prefixRE = '0c';
44441 }
44442 else if (base == 2) {
44443 prefixRE = '0b';
44444 }
44445 else {
44446 prefixRE = '';
44447 }
44448 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
44449 if (parts) {
44450 var sign = parts[1] || "+";
44451 var baseSection = parts[2] || "";
44452 var digits = parts[3] || "";
44453
44454 if (typeof base === "undefined") {
44455 // Guess base
44456 if (baseSection === "0x" || baseSection === "0X") { // Hex
44457 base = 16;
44458 }
44459 else if (baseSection === "0c" || baseSection === "0C") { // Octal
44460 base = 8;
44461 }
44462 else if (baseSection === "0b" || baseSection === "0B") { // Binary
44463 base = 2;
44464 }
44465 else {
44466 base = 10;
44467 }
44468 }
44469 else if (base < 2 || base > 36) {
44470 throw new Error("Illegal radix " + base + ".");
44471 }
44472
44473 base = +base;
44474
44475 // Check for digits outside the range
44476 if (!(BigInteger.radixRegex[base].test(digits))) {
44477 throw new Error("Bad digit for radix " + base);
44478 }
44479
44480 // Strip leading zeros, and convert to array
44481 digits = digits.replace(/^0+/, "").split("");
44482 if (digits.length === 0) {
44483 return ZERO;
44484 }
44485
44486 // Get the sign (we know it's not zero)
44487 sign = (sign === "-") ? -1 : 1;
44488
44489 // Optimize 10
44490 if (base == 10) {
44491 var d = [];
44492 while (digits.length >= BigInteger_base_log10) {
44493 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
44494 }
44495 d.push(parseInt(digits.join(''), 10));
44496 return new BigInteger(d, sign, CONSTRUCT);
44497 }
44498
44499 // Do the conversion
44500 var d = ZERO;
44501 base = BigInteger.small[base];
44502 var small = BigInteger.small;
44503 for (var i = 0; i < digits.length; i++) {
44504 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
44505 }
44506 return new BigInteger(d._d, sign, CONSTRUCT);
44507 }
44508 else {
44509 throw new Error("Invalid BigInteger format: " + s);
44510 }
44511};
44512
44513/*
44514 Function: add
44515 Add two <BigIntegers>.
44516
44517 Parameters:
44518
44519 n - The number to add to *this*. Will be converted to a <BigInteger>.
44520
44521 Returns:
44522
44523 The numbers added together.
44524
44525 See Also:
44526
44527 <subtract>, <multiply>, <quotient>, <next>
44528*/
44529BigInteger.prototype.add = function(n) {
44530 if (this._s === 0) {
44531 return BigInteger(n);
44532 }
44533
44534 n = BigInteger(n);
44535 if (n._s === 0) {
44536 return this;
44537 }
44538 if (this._s !== n._s) {
44539 n = n.negate();
44540 return this.subtract(n);
44541 }
44542
44543 var a = this._d;
44544 var b = n._d;
44545 var al = a.length;
44546 var bl = b.length;
44547 var sum = new Array(Math.max(al, bl) + 1);
44548 var size = Math.min(al, bl);
44549 var carry = 0;
44550 var digit;
44551
44552 for (var i = 0; i < size; i++) {
44553 digit = a[i] + b[i] + carry;
44554 sum[i] = digit % BigInteger_base;
44555 carry = (digit / BigInteger_base) | 0;
44556 }
44557 if (bl > al) {
44558 a = b;
44559 al = bl;
44560 }
44561 for (i = size; carry && i < al; i++) {
44562 digit = a[i] + carry;
44563 sum[i] = digit % BigInteger_base;
44564 carry = (digit / BigInteger_base) | 0;
44565 }
44566 if (carry) {
44567 sum[i] = carry;
44568 }
44569
44570 for ( ; i < al; i++) {
44571 sum[i] = a[i];
44572 }
44573
44574 return new BigInteger(sum, this._s, CONSTRUCT);
44575};
44576
44577/*
44578 Function: negate
44579 Get the additive inverse of a <BigInteger>.
44580
44581 Returns:
44582
44583 A <BigInteger> with the same magnatude, but with the opposite sign.
44584
44585 See Also:
44586
44587 <abs>
44588*/
44589BigInteger.prototype.negate = function() {
44590 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
44591};
44592
44593/*
44594 Function: abs
44595 Get the absolute value of a <BigInteger>.
44596
44597 Returns:
44598
44599 A <BigInteger> with the same magnatude, but always positive (or zero).
44600
44601 See Also:
44602
44603 <negate>
44604*/
44605BigInteger.prototype.abs = function() {
44606 return (this._s < 0) ? this.negate() : this;
44607};
44608
44609/*
44610 Function: subtract
44611 Subtract two <BigIntegers>.
44612
44613 Parameters:
44614
44615 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
44616
44617 Returns:
44618
44619 The *n* subtracted from *this*.
44620
44621 See Also:
44622
44623 <add>, <multiply>, <quotient>, <prev>
44624*/
44625BigInteger.prototype.subtract = function(n) {
44626 if (this._s === 0) {
44627 return BigInteger(n).negate();
44628 }
44629
44630 n = BigInteger(n);
44631 if (n._s === 0) {
44632 return this;
44633 }
44634 if (this._s !== n._s) {
44635 n = n.negate();
44636 return this.add(n);
44637 }
44638
44639 var m = this;
44640 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
44641 if (this._s < 0) {
44642 m = new BigInteger(n._d, 1, CONSTRUCT);
44643 n = new BigInteger(this._d, 1, CONSTRUCT);
44644 }
44645
44646 // Both are positive => a - b
44647 var sign = m.compareAbs(n);
44648 if (sign === 0) {
44649 return ZERO;
44650 }
44651 else if (sign < 0) {
44652 // swap m and n
44653 var t = n;
44654 n = m;
44655 m = t;
44656 }
44657
44658 // a > b
44659 var a = m._d;
44660 var b = n._d;
44661 var al = a.length;
44662 var bl = b.length;
44663 var diff = new Array(al); // al >= bl since a > b
44664 var borrow = 0;
44665 var i;
44666 var digit;
44667
44668 for (i = 0; i < bl; i++) {
44669 digit = a[i] - borrow - b[i];
44670 if (digit < 0) {
44671 digit += BigInteger_base;
44672 borrow = 1;
44673 }
44674 else {
44675 borrow = 0;
44676 }
44677 diff[i] = digit;
44678 }
44679 for (i = bl; i < al; i++) {
44680 digit = a[i] - borrow;
44681 if (digit < 0) {
44682 digit += BigInteger_base;
44683 }
44684 else {
44685 diff[i++] = digit;
44686 break;
44687 }
44688 diff[i] = digit;
44689 }
44690 for ( ; i < al; i++) {
44691 diff[i] = a[i];
44692 }
44693
44694 return new BigInteger(diff, sign, CONSTRUCT);
44695};
44696
44697(function() {
44698 function addOne(n, sign) {
44699 var a = n._d;
44700 var sum = a.slice();
44701 var carry = true;
44702 var i = 0;
44703
44704 while (true) {
44705 var digit = (a[i] || 0) + 1;
44706 sum[i] = digit % BigInteger_base;
44707 if (digit <= BigInteger_base - 1) {
44708 break;
44709 }
44710 ++i;
44711 }
44712
44713 return new BigInteger(sum, sign, CONSTRUCT);
44714 }
44715
44716 function subtractOne(n, sign) {
44717 var a = n._d;
44718 var sum = a.slice();
44719 var borrow = true;
44720 var i = 0;
44721
44722 while (true) {
44723 var digit = (a[i] || 0) - 1;
44724 if (digit < 0) {
44725 sum[i] = digit + BigInteger_base;
44726 }
44727 else {
44728 sum[i] = digit;
44729 break;
44730 }
44731 ++i;
44732 }
44733
44734 return new BigInteger(sum, sign, CONSTRUCT);
44735 }
44736
44737 /*
44738 Function: next
44739 Get the next <BigInteger> (add one).
44740
44741 Returns:
44742
44743 *this* + 1.
44744
44745 See Also:
44746
44747 <add>, <prev>
44748 */
44749 BigInteger.prototype.next = function() {
44750 switch (this._s) {
44751 case 0:
44752 return ONE;
44753 case -1:
44754 return subtractOne(this, -1);
44755 // case 1:
44756 default:
44757 return addOne(this, 1);
44758 }
44759 };
44760
44761 /*
44762 Function: prev
44763 Get the previous <BigInteger> (subtract one).
44764
44765 Returns:
44766
44767 *this* - 1.
44768
44769 See Also:
44770
44771 <next>, <subtract>
44772 */
44773 BigInteger.prototype.prev = function() {
44774 switch (this._s) {
44775 case 0:
44776 return M_ONE;
44777 case -1:
44778 return addOne(this, -1);
44779 // case 1:
44780 default:
44781 return subtractOne(this, 1);
44782 }
44783 };
44784})();
44785
44786/*
44787 Function: compareAbs
44788 Compare the absolute value of two <BigIntegers>.
44789
44790 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
44791
44792 Parameters:
44793
44794 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44795
44796 Returns:
44797
44798 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
44799
44800 See Also:
44801
44802 <compare>, <abs>
44803*/
44804BigInteger.prototype.compareAbs = function(n) {
44805 if (this === n) {
44806 return 0;
44807 }
44808
44809 if (!(n instanceof BigInteger)) {
44810 if (!isFinite(n)) {
44811 return(isNaN(n) ? n : -1);
44812 }
44813 n = BigInteger(n);
44814 }
44815
44816 if (this._s === 0) {
44817 return (n._s !== 0) ? -1 : 0;
44818 }
44819 if (n._s === 0) {
44820 return 1;
44821 }
44822
44823 var l = this._d.length;
44824 var nl = n._d.length;
44825 if (l < nl) {
44826 return -1;
44827 }
44828 else if (l > nl) {
44829 return 1;
44830 }
44831
44832 var a = this._d;
44833 var b = n._d;
44834 for (var i = l-1; i >= 0; i--) {
44835 if (a[i] !== b[i]) {
44836 return a[i] < b[i] ? -1 : 1;
44837 }
44838 }
44839
44840 return 0;
44841};
44842
44843/*
44844 Function: compare
44845 Compare two <BigIntegers>.
44846
44847 Parameters:
44848
44849 n - The number to compare to *this*. Will be converted to a <BigInteger>.
44850
44851 Returns:
44852
44853 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
44854
44855 See Also:
44856
44857 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
44858*/
44859BigInteger.prototype.compare = function(n) {
44860 if (this === n) {
44861 return 0;
44862 }
44863
44864 n = BigInteger(n);
44865
44866 if (this._s === 0) {
44867 return -n._s;
44868 }
44869
44870 if (this._s === n._s) { // both positive or both negative
44871 var cmp = this.compareAbs(n);
44872 return cmp * this._s;
44873 }
44874 else {
44875 return this._s;
44876 }
44877};
44878
44879/*
44880 Function: isUnit
44881 Return true iff *this* is either 1 or -1.
44882
44883 Returns:
44884
44885 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
44886
44887 See Also:
44888
44889 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
44890 <BigInteger.ONE>, <BigInteger.M_ONE>
44891*/
44892BigInteger.prototype.isUnit = function() {
44893 return this === ONE ||
44894 this === M_ONE ||
44895 (this._d.length === 1 && this._d[0] === 1);
44896};
44897
44898/*
44899 Function: multiply
44900 Multiply two <BigIntegers>.
44901
44902 Parameters:
44903
44904 n - The number to multiply *this* by. Will be converted to a
44905 <BigInteger>.
44906
44907 Returns:
44908
44909 The numbers multiplied together.
44910
44911 See Also:
44912
44913 <add>, <subtract>, <quotient>, <square>
44914*/
44915BigInteger.prototype.multiply = function(n) {
44916 // TODO: Consider adding Karatsuba multiplication for large numbers
44917 if (this._s === 0) {
44918 return ZERO;
44919 }
44920
44921 n = BigInteger(n);
44922 if (n._s === 0) {
44923 return ZERO;
44924 }
44925 if (this.isUnit()) {
44926 if (this._s < 0) {
44927 return n.negate();
44928 }
44929 return n;
44930 }
44931 if (n.isUnit()) {
44932 if (n._s < 0) {
44933 return this.negate();
44934 }
44935 return this;
44936 }
44937 if (this === n) {
44938 return this.square();
44939 }
44940
44941 var r = (this._d.length >= n._d.length);
44942 var a = (r ? this : n)._d; // a will be longer than b
44943 var b = (r ? n : this)._d;
44944 var al = a.length;
44945 var bl = b.length;
44946
44947 var pl = al + bl;
44948 var partial = new Array(pl);
44949 var i;
44950 for (i = 0; i < pl; i++) {
44951 partial[i] = 0;
44952 }
44953
44954 for (i = 0; i < bl; i++) {
44955 var carry = 0;
44956 var bi = b[i];
44957 var jlimit = al + i;
44958 var digit;
44959 for (var j = i; j < jlimit; j++) {
44960 digit = partial[j] + bi * a[j - i] + carry;
44961 carry = (digit / BigInteger_base) | 0;
44962 partial[j] = (digit % BigInteger_base) | 0;
44963 }
44964 if (carry) {
44965 digit = partial[j] + carry;
44966 carry = (digit / BigInteger_base) | 0;
44967 partial[j] = digit % BigInteger_base;
44968 }
44969 }
44970 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
44971};
44972
44973// Multiply a BigInteger by a single-digit native number
44974// Assumes that this and n are >= 0
44975// This is not really intended to be used outside the library itself
44976BigInteger.prototype.multiplySingleDigit = function(n) {
44977 if (n === 0 || this._s === 0) {
44978 return ZERO;
44979 }
44980 if (n === 1) {
44981 return this;
44982 }
44983
44984 var digit;
44985 if (this._d.length === 1) {
44986 digit = this._d[0] * n;
44987 if (digit >= BigInteger_base) {
44988 return new BigInteger([(digit % BigInteger_base)|0,
44989 (digit / BigInteger_base)|0], 1, CONSTRUCT);
44990 }
44991 return new BigInteger([digit], 1, CONSTRUCT);
44992 }
44993
44994 if (n === 2) {
44995 return this.add(this);
44996 }
44997 if (this.isUnit()) {
44998 return new BigInteger([n], 1, CONSTRUCT);
44999 }
45000
45001 var a = this._d;
45002 var al = a.length;
45003
45004 var pl = al + 1;
45005 var partial = new Array(pl);
45006 for (var i = 0; i < pl; i++) {
45007 partial[i] = 0;
45008 }
45009
45010 var carry = 0;
45011 for (var j = 0; j < al; j++) {
45012 digit = n * a[j] + carry;
45013 carry = (digit / BigInteger_base) | 0;
45014 partial[j] = (digit % BigInteger_base) | 0;
45015 }
45016 if (carry) {
45017 partial[j] = carry;
45018 }
45019
45020 return new BigInteger(partial, 1, CONSTRUCT);
45021};
45022
45023/*
45024 Function: square
45025 Multiply a <BigInteger> by itself.
45026
45027 This is slightly faster than regular multiplication, since it removes the
45028 duplicated multiplcations.
45029
45030 Returns:
45031
45032 > this.multiply(this)
45033
45034 See Also:
45035 <multiply>
45036*/
45037BigInteger.prototype.square = function() {
45038 // Normally, squaring a 10-digit number would take 100 multiplications.
45039 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
45040 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
45041 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
45042
45043 if (this._s === 0) {
45044 return ZERO;
45045 }
45046 if (this.isUnit()) {
45047 return ONE;
45048 }
45049
45050 var digits = this._d;
45051 var length = digits.length;
45052 var imult1 = new Array(length + length + 1);
45053 var product, carry, k;
45054 var i;
45055
45056 // Calculate diagonal
45057 for (i = 0; i < length; i++) {
45058 k = i * 2;
45059 product = digits[i] * digits[i];
45060 carry = (product / BigInteger_base) | 0;
45061 imult1[k] = product % BigInteger_base;
45062 imult1[k + 1] = carry;
45063 }
45064
45065 // Calculate repeating part
45066 for (i = 0; i < length; i++) {
45067 carry = 0;
45068 k = i * 2 + 1;
45069 for (var j = i + 1; j < length; j++, k++) {
45070 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
45071 carry = (product / BigInteger_base) | 0;
45072 imult1[k] = product % BigInteger_base;
45073 }
45074 k = length + i;
45075 var digit = carry + imult1[k];
45076 carry = (digit / BigInteger_base) | 0;
45077 imult1[k] = digit % BigInteger_base;
45078 imult1[k + 1] += carry;
45079 }
45080
45081 return new BigInteger(imult1, 1, CONSTRUCT);
45082};
45083
45084/*
45085 Function: quotient
45086 Divide two <BigIntegers> and truncate towards zero.
45087
45088 <quotient> throws an exception if *n* is zero.
45089
45090 Parameters:
45091
45092 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45093
45094 Returns:
45095
45096 The *this* / *n*, truncated to an integer.
45097
45098 See Also:
45099
45100 <add>, <subtract>, <multiply>, <divRem>, <remainder>
45101*/
45102BigInteger.prototype.quotient = function(n) {
45103 return this.divRem(n)[0];
45104};
45105
45106/*
45107 Function: divide
45108 Deprecated synonym for <quotient>.
45109*/
45110BigInteger.prototype.divide = BigInteger.prototype.quotient;
45111
45112/*
45113 Function: remainder
45114 Calculate the remainder of two <BigIntegers>.
45115
45116 <remainder> throws an exception if *n* is zero.
45117
45118 Parameters:
45119
45120 n - The remainder after *this* is divided *this* by *n*. Will be
45121 converted to a <BigInteger>.
45122
45123 Returns:
45124
45125 *this* % *n*.
45126
45127 See Also:
45128
45129 <divRem>, <quotient>
45130*/
45131BigInteger.prototype.remainder = function(n) {
45132 return this.divRem(n)[1];
45133};
45134
45135/*
45136 Function: divRem
45137 Calculate the integer quotient and remainder of two <BigIntegers>.
45138
45139 <divRem> throws an exception if *n* is zero.
45140
45141 Parameters:
45142
45143 n - The number to divide *this* by. Will be converted to a <BigInteger>.
45144
45145 Returns:
45146
45147 A two-element array containing the quotient and the remainder.
45148
45149 > a.divRem(b)
45150
45151 is exactly equivalent to
45152
45153 > [a.quotient(b), a.remainder(b)]
45154
45155 except it is faster, because they are calculated at the same time.
45156
45157 See Also:
45158
45159 <quotient>, <remainder>
45160*/
45161BigInteger.prototype.divRem = function(n) {
45162 n = BigInteger(n);
45163 if (n._s === 0) {
45164 throw new Error("Divide by zero");
45165 }
45166 if (this._s === 0) {
45167 return [ZERO, ZERO];
45168 }
45169 if (n._d.length === 1) {
45170 return this.divRemSmall(n._s * n._d[0]);
45171 }
45172
45173 // Test for easy cases -- |n1| <= |n2|
45174 switch (this.compareAbs(n)) {
45175 case 0: // n1 == n2
45176 return [this._s === n._s ? ONE : M_ONE, ZERO];
45177 case -1: // |n1| < |n2|
45178 return [ZERO, this];
45179 }
45180
45181 var sign = this._s * n._s;
45182 var a = n.abs();
45183 var b_digits = this._d;
45184 var b_index = b_digits.length;
45185 var digits = n._d.length;
45186 var quot = [];
45187 var guess;
45188
45189 var part = new BigInteger([], 0, CONSTRUCT);
45190
45191 while (b_index) {
45192 part._d.unshift(b_digits[--b_index]);
45193 part = new BigInteger(part._d, 1, CONSTRUCT);
45194
45195 if (part.compareAbs(n) < 0) {
45196 quot.push(0);
45197 continue;
45198 }
45199 if (part._s === 0) {
45200 guess = 0;
45201 }
45202 else {
45203 var xlen = part._d.length, ylen = a._d.length;
45204 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
45205 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
45206 if (part._d.length > a._d.length) {
45207 // The length of part._d can either match a._d length,
45208 // or exceed it by one.
45209 highx = (highx+1)*BigInteger_base;
45210 }
45211 guess = Math.ceil(highx/highy);
45212 }
45213 do {
45214 var check = a.multiplySingleDigit(guess);
45215 if (check.compareAbs(part) <= 0) {
45216 break;
45217 }
45218 guess--;
45219 } while (guess);
45220
45221 quot.push(guess);
45222 if (!guess) {
45223 continue;
45224 }
45225 var diff = part.subtract(check);
45226 part._d = diff._d.slice();
45227 }
45228
45229 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
45230 new BigInteger(part._d, this._s, CONSTRUCT)];
45231};
45232
45233// Throws an exception if n is outside of (-BigInteger.base, -1] or
45234// [1, BigInteger.base). It's not necessary to call this, since the
45235// other division functions will call it if they are able to.
45236BigInteger.prototype.divRemSmall = function(n) {
45237 var r;
45238 n = +n;
45239 if (n === 0) {
45240 throw new Error("Divide by zero");
45241 }
45242
45243 var n_s = n < 0 ? -1 : 1;
45244 var sign = this._s * n_s;
45245 n = Math.abs(n);
45246
45247 if (n < 1 || n >= BigInteger_base) {
45248 throw new Error("Argument out of range");
45249 }
45250
45251 if (this._s === 0) {
45252 return [ZERO, ZERO];
45253 }
45254
45255 if (n === 1 || n === -1) {
45256 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
45257 }
45258
45259 // 2 <= n < BigInteger_base
45260
45261 // divide a single digit by a single digit
45262 if (this._d.length === 1) {
45263 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
45264 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
45265 if (sign < 0) {
45266 q = q.negate();
45267 }
45268 if (this._s < 0) {
45269 r = r.negate();
45270 }
45271 return [q, r];
45272 }
45273
45274 var digits = this._d.slice();
45275 var quot = new Array(digits.length);
45276 var part = 0;
45277 var diff = 0;
45278 var i = 0;
45279 var guess;
45280
45281 while (digits.length) {
45282 part = part * BigInteger_base + digits[digits.length - 1];
45283 if (part < n) {
45284 quot[i++] = 0;
45285 digits.pop();
45286 diff = BigInteger_base * diff + part;
45287 continue;
45288 }
45289 if (part === 0) {
45290 guess = 0;
45291 }
45292 else {
45293 guess = (part / n) | 0;
45294 }
45295
45296 var check = n * guess;
45297 diff = part - check;
45298 quot[i++] = guess;
45299 if (!guess) {
45300 digits.pop();
45301 continue;
45302 }
45303
45304 digits.pop();
45305 part = diff;
45306 }
45307
45308 r = new BigInteger([diff], 1, CONSTRUCT);
45309 if (this._s < 0) {
45310 r = r.negate();
45311 }
45312 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
45313};
45314
45315/*
45316 Function: isEven
45317 Return true iff *this* is divisible by two.
45318
45319 Note that <BigInteger.ZERO> is even.
45320
45321 Returns:
45322
45323 true if *this* is even, false otherwise.
45324
45325 See Also:
45326
45327 <isOdd>
45328*/
45329BigInteger.prototype.isEven = function() {
45330 var digits = this._d;
45331 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
45332};
45333
45334/*
45335 Function: isOdd
45336 Return true iff *this* is not divisible by two.
45337
45338 Returns:
45339
45340 true if *this* is odd, false otherwise.
45341
45342 See Also:
45343
45344 <isEven>
45345*/
45346BigInteger.prototype.isOdd = function() {
45347 return !this.isEven();
45348};
45349
45350/*
45351 Function: sign
45352 Get the sign of a <BigInteger>.
45353
45354 Returns:
45355
45356 * -1 if *this* < 0
45357 * 0 if *this* == 0
45358 * +1 if *this* > 0
45359
45360 See Also:
45361
45362 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
45363*/
45364BigInteger.prototype.sign = function() {
45365 return this._s;
45366};
45367
45368/*
45369 Function: isPositive
45370 Return true iff *this* > 0.
45371
45372 Returns:
45373
45374 true if *this*.compare(<BigInteger.ZERO>) == 1.
45375
45376 See Also:
45377
45378 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
45379*/
45380BigInteger.prototype.isPositive = function() {
45381 return this._s > 0;
45382};
45383
45384/*
45385 Function: isNegative
45386 Return true iff *this* < 0.
45387
45388 Returns:
45389
45390 true if *this*.compare(<BigInteger.ZERO>) == -1.
45391
45392 See Also:
45393
45394 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
45395*/
45396BigInteger.prototype.isNegative = function() {
45397 return this._s < 0;
45398};
45399
45400/*
45401 Function: isZero
45402 Return true iff *this* == 0.
45403
45404 Returns:
45405
45406 true if *this*.compare(<BigInteger.ZERO>) == 0.
45407
45408 See Also:
45409
45410 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
45411*/
45412BigInteger.prototype.isZero = function() {
45413 return this._s === 0;
45414};
45415
45416/*
45417 Function: exp10
45418 Multiply a <BigInteger> by a power of 10.
45419
45420 This is equivalent to, but faster than
45421
45422 > if (n >= 0) {
45423 > return this.multiply(BigInteger("1e" + n));
45424 > }
45425 > else { // n <= 0
45426 > return this.quotient(BigInteger("1e" + -n));
45427 > }
45428
45429 Parameters:
45430
45431 n - The power of 10 to multiply *this* by. *n* is converted to a
45432 javascipt number and must be no greater than <BigInteger.MAX_EXP>
45433 (0x7FFFFFFF), or an exception will be thrown.
45434
45435 Returns:
45436
45437 *this* * (10 ** *n*), truncated to an integer if necessary.
45438
45439 See Also:
45440
45441 <pow>, <multiply>
45442*/
45443BigInteger.prototype.exp10 = function(n) {
45444 n = +n;
45445 if (n === 0) {
45446 return this;
45447 }
45448 if (Math.abs(n) > Number(MAX_EXP)) {
45449 throw new Error("exponent too large in BigInteger.exp10");
45450 }
45451 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
45452 if (this._s === 0) {
45453 return ZERO;
45454 }
45455 if (n > 0) {
45456 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45457
45458 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45459 k._d.unshift(0);
45460 }
45461 if (n == 0)
45462 return k;
45463 k._s = 1;
45464 k = k.multiplySingleDigit(Math.pow(10, n));
45465 return (this._s < 0 ? k.negate() : k);
45466 } else if (-n >= this._d.length*BigInteger_base_log10) {
45467 return ZERO;
45468 } else {
45469 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
45470
45471 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
45472 k._d.shift();
45473 }
45474 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
45475 }
45476};
45477
45478/*
45479 Function: pow
45480 Raise a <BigInteger> to a power.
45481
45482 In this implementation, 0**0 is 1.
45483
45484 Parameters:
45485
45486 n - The exponent to raise *this* by. *n* must be no greater than
45487 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
45488
45489 Returns:
45490
45491 *this* raised to the *nth* power.
45492
45493 See Also:
45494
45495 <modPow>
45496*/
45497BigInteger.prototype.pow = function(n) {
45498 if (this.isUnit()) {
45499 if (this._s > 0) {
45500 return this;
45501 }
45502 else {
45503 return BigInteger(n).isOdd() ? this : this.negate();
45504 }
45505 }
45506
45507 n = BigInteger(n);
45508 if (n._s === 0) {
45509 return ONE;
45510 }
45511 else if (n._s < 0) {
45512 if (this._s === 0) {
45513 throw new Error("Divide by zero");
45514 }
45515 else {
45516 return ZERO;
45517 }
45518 }
45519 if (this._s === 0) {
45520 return ZERO;
45521 }
45522 if (n.isUnit()) {
45523 return this;
45524 }
45525
45526 if (n.compareAbs(MAX_EXP) > 0) {
45527 throw new Error("exponent too large in BigInteger.pow");
45528 }
45529 var x = this;
45530 var aux = ONE;
45531 var two = BigInteger.small[2];
45532
45533 while (n.isPositive()) {
45534 if (n.isOdd()) {
45535 aux = aux.multiply(x);
45536 if (n.isUnit()) {
45537 return aux;
45538 }
45539 }
45540 x = x.square();
45541 n = n.quotient(two);
45542 }
45543
45544 return aux;
45545};
45546
45547/*
45548 Function: modPow
45549 Raise a <BigInteger> to a power (mod m).
45550
45551 Because it is reduced by a modulus, <modPow> is not limited by
45552 <BigInteger.MAX_EXP> like <pow>.
45553
45554 Parameters:
45555
45556 exponent - The exponent to raise *this* by. Must be positive.
45557 modulus - The modulus.
45558
45559 Returns:
45560
45561 *this* ^ *exponent* (mod *modulus*).
45562
45563 See Also:
45564
45565 <pow>, <mod>
45566*/
45567BigInteger.prototype.modPow = function(exponent, modulus) {
45568 var result = ONE;
45569 var base = this;
45570
45571 while (exponent.isPositive()) {
45572 if (exponent.isOdd()) {
45573 result = result.multiply(base).remainder(modulus);
45574 }
45575
45576 exponent = exponent.quotient(BigInteger.small[2]);
45577 if (exponent.isPositive()) {
45578 base = base.square().remainder(modulus);
45579 }
45580 }
45581
45582 return result;
45583};
45584
45585/*
45586 Function: log
45587 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
45588
45589 This is equivalent to
45590
45591 > Math.log(this.toJSValue())
45592
45593 but handles values outside of the native number range.
45594
45595 Returns:
45596
45597 log( *this* )
45598
45599 See Also:
45600
45601 <toJSValue>
45602*/
45603BigInteger.prototype.log = function() {
45604 switch (this._s) {
45605 case 0: return -Infinity;
45606 case -1: return NaN;
45607 default: // Fall through.
45608 }
45609
45610 var l = this._d.length;
45611
45612 if (l*BigInteger_base_log10 < 30) {
45613 return Math.log(this.valueOf());
45614 }
45615
45616 var N = Math.ceil(30/BigInteger_base_log10);
45617 var firstNdigits = this._d.slice(l - N);
45618 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
45619};
45620
45621/*
45622 Function: valueOf
45623 Convert a <BigInteger> to a native JavaScript integer.
45624
45625 This is called automatically by JavaScipt to convert a <BigInteger> to a
45626 native value.
45627
45628 Returns:
45629
45630 > parseInt(this.toString(), 10)
45631
45632 See Also:
45633
45634 <toString>, <toJSValue>
45635*/
45636BigInteger.prototype.valueOf = function() {
45637 return parseInt(this.toString(), 10);
45638};
45639
45640/*
45641 Function: toJSValue
45642 Convert a <BigInteger> to a native JavaScript integer.
45643
45644 This is the same as valueOf, but more explicitly named.
45645
45646 Returns:
45647
45648 > parseInt(this.toString(), 10)
45649
45650 See Also:
45651
45652 <toString>, <valueOf>
45653*/
45654BigInteger.prototype.toJSValue = function() {
45655 return parseInt(this.toString(), 10);
45656};
45657
45658var MAX_EXP = BigInteger(0x7FFFFFFF);
45659// Constant: MAX_EXP
45660// The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
45661BigInteger.MAX_EXP = MAX_EXP;
45662
45663(function() {
45664 function makeUnary(fn) {
45665 return function(a) {
45666 return fn.call(BigInteger(a));
45667 };
45668 }
45669
45670 function makeBinary(fn) {
45671 return function(a, b) {
45672 return fn.call(BigInteger(a), BigInteger(b));
45673 };
45674 }
45675
45676 function makeTrinary(fn) {
45677 return function(a, b, c) {
45678 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
45679 };
45680 }
45681
45682 (function() {
45683 var i, fn;
45684 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
45685 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
45686 var trinary = ["modPow"];
45687
45688 for (i = 0; i < unary.length; i++) {
45689 fn = unary[i];
45690 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
45691 }
45692
45693 for (i = 0; i < binary.length; i++) {
45694 fn = binary[i];
45695 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
45696 }
45697
45698 for (i = 0; i < trinary.length; i++) {
45699 fn = trinary[i];
45700 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
45701 }
45702
45703 BigInteger.exp10 = function(x, n) {
45704 return BigInteger(x).exp10(n);
45705 };
45706 })();
45707})();
45708
45709exports.BigInteger = BigInteger;
45710})(typeof exports !== 'undefined' ? exports : this);
95f04905
IC
45711</script>
45712 <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){
45713var 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;
45714
45715},{}],2:[function(require,module,exports){
45716var 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;
45717
45718},{"./scoring":6}],3:[function(require,module,exports){
45719var 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(","),
45720english_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(","),
45721female_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(","),
45722us_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(","),
45723male_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;
45724
45725},{}],4:[function(require,module,exports){
45726var 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;
45727
45728},{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
45729var 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;
45730
45731},{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
45732var 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;
45733
45734},{"./adjacency_graphs":1}],7:[function(require,module,exports){
45735var 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;
45736
45737},{}]},{},[4])(4)
45738});
45739//# sourceMappingURL=zxcvbn.js.map
45740</script>
45741 <script>/*
45742 * Detects entropy from a string.
45743 *
45744 * Formats include:
45745 * binary [0-1]
45746 * base 6 [0-5]
45747 * dice 6 [1-6]
45748 * decimal [0-9]
45749 * hexadecimal [0-9A-F]
9e97eb76 45750 * card [A2-9TJQK][CDHS]
95f04905
IC
45751 *
45752 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
45753 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
45754 * entropy.
45755 */
45756
45757window.Entropy = new (function() {
45758
78b8d604
IC
45759 var TWO = new BigInteger(2);
45760
95f04905
IC
45761 // matchers returns an array of the matched events for each type of entropy.
45762 // eg
45763 // matchers.binary("010") returns ["0", "1", "0"]
45764 // matchers.binary("a10") returns ["1", "0"]
45765 // matchers.hex("a10") returns ["a", "1", "0"]
45766 var matchers = {
45767 binary: function(str) {
45768 return str.match(/[0-1]/gi) || [];
45769 },
45770 base6: function(str) {
45771 return str.match(/[0-5]/gi) || [];
45772 },
45773 dice: function(str) {
45774 return str.match(/[1-6]/gi) || []; // ie dice numbers
45775 },
45776 base10: function(str) {
45777 return str.match(/[0-9]/gi) || [];
45778 },
45779 hex: function(str) {
45780 return str.match(/[0-9A-F]/gi) || [];
45781 },
45782 card: function(str) {
45783 // Format is NumberSuit, eg
45784 // AH ace of hearts
45785 // 8C eight of clubs
45786 // TD ten of diamonds
45787 // JS jack of spades
45788 // QH queen of hearts
45789 // KC king of clubs
45790 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
45791 }
45792 }
45793
45794 // Convert array of cards from ["ac", "4d", "ks"]
45795 // to numbers between 0 and 51 [0, 16, 51]
45796 function convertCardsToInts(cards) {
45797 var ints = [];
45798 var values = "a23456789tjqk";
45799 var suits = "cdhs";
45800 for (var i=0; i<cards.length; i++) {
45801 var card = cards[i].toLowerCase();
45802 var value = card[0];
45803 var suit = card[1];
45804 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
45805 ints.push(asInt);
45806 }
45807 return ints;
45808 }
45809
45810 this.fromString = function(rawEntropyStr) {
45811 // Find type of entropy being used (binary, hex, dice etc)
45812 var base = getBase(rawEntropyStr);
45813 // Convert dice to base6 entropy (ie 1-6 to 0-5)
45814 // This is done by changing all 6s to 0s
45815 if (base.str == "dice") {
45816 var newParts = [];
45817 var newInts = [];
45818 for (var i=0; i<base.parts.length; i++) {
45819 var c = base.parts[i];
45820 if ("12345".indexOf(c) > -1) {
45821 newParts[i] = base.parts[i];
45822 newInts[i] = base.ints[i];
45823 }
45824 else {
45825 newParts[i] = "0";
45826 newInts[i] = 0;
45827 }
45828 }
45829 base.str = "base 6 (dice)";
45830 base.ints = newInts;
45831 base.parts = newParts;
45832 base.matcher = matchers.base6;
45833 }
45834 // Detect empty entropy
45835 if (base.parts.length == 0) {
45836 return {
45837 binaryStr: "",
45838 cleanStr: "",
45839 cleanHtml: "",
45840 base: base,
45841 };
45842 }
45843 // Convert base.ints to BigInteger.
45844 // Due to using unusual bases, eg cards of base52, this is not as simple as
45845 // using BigInteger.parse()
45846 var entropyInt = BigInteger.ZERO;
45847 for (var i=base.ints.length-1; i>=0; i--) {
45848 var thisInt = BigInteger.parse(base.ints[i]);
45849 var power = (base.ints.length - 1) - i;
45850 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
45851 entropyInt = entropyInt.add(additionalEntropy);
45852 }
45853 // Convert entropy to binary
45854 var entropyBin = entropyInt.toString(2);
45855 // If the first integer is small, it must be padded with zeros.
45856 // Otherwise the chance of the first bit being 1 is 100%, which is
45857 // obviously incorrect.
45858 // This is not perfect for non-2^n bases.
45859 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
45860 while (entropyBin.length < expectedBits) {
45861 entropyBin = "0" + entropyBin;
45862 }
94959756
IC
45863 // Calculate the number of bits per event
45864 var bitsPerEvent = Math.log2(base.asInt);
ea87f1d3 45865 // Cards binary must be handled differently, since they're not replaced
9e97eb76 45866 if (base.asInt == 52) {
94959756
IC
45867 var cardEntropy = processCardEntropy(base.parts);
45868 entropyBin = cardEntropy.binaryStr;
45869 bitsPerEvent = cardEntropy.bitsPerEvent;
9e97eb76 45870 }
95f04905
IC
45871 // Supply a 'filtered' entropy string for display purposes
45872 var entropyClean = base.parts.join("");
45873 var entropyHtml = base.parts.join("");
45874 if (base.asInt == 52) {
45875 entropyClean = base.parts.join(" ").toUpperCase();
45876 entropyClean = entropyClean.replace(/C/g, "\u2663");
45877 entropyClean = entropyClean.replace(/D/g, "\u2666");
45878 entropyClean = entropyClean.replace(/H/g, "\u2665");
45879 entropyClean = entropyClean.replace(/S/g, "\u2660");
45880 entropyHtml = base.parts.join(" ").toUpperCase();
45881 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
45882 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
45883 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
45884 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
45885 }
9e97eb76 45886 // Return the result
95f04905
IC
45887 var e = {
45888 binaryStr: entropyBin,
45889 cleanStr: entropyClean,
45890 cleanHtml: entropyHtml,
94959756 45891 bitsPerEvent: bitsPerEvent,
95f04905
IC
45892 base: base,
45893 }
45894 return e;
45895 }
45896
78b8d604
IC
45897 function getSortedDeck() {
45898 var s = [];
45899 var suits = "CDHS";
45900 var values = "A23456789TJQK";
45901 for (var i=0; i<suits.length; i++) {
45902 for (var j=0; j<values.length; j++) {
45903 s.push(values[j]+suits[i]);
45904 }
45905 }
45906 return s;
45907 }
45908
95f04905
IC
45909 function getBase(str) {
45910 // Need to get the lowest base for the supplied entropy.
45911 // This prevents interpreting, say, dice rolls as hexadecimal.
45912 var binaryMatches = matchers.binary(str);
45913 var hexMatches = matchers.hex(str);
45914 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
45915 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
45916 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
45917 return {
45918 ints: ints,
45919 parts: binaryMatches,
45920 matcher: matchers.binary,
45921 asInt: 2,
45922 str: "binary",
45923 }
45924 }
45925 var cardMatches = matchers.card(str);
45926 if (cardMatches.length >= hexMatches.length / 2) {
45927 var ints = convertCardsToInts(cardMatches);
45928 return {
45929 ints: ints,
45930 parts: cardMatches,
45931 matcher: matchers.card,
45932 asInt: 52,
45933 str: "card",
45934 }
45935 }
45936 var diceMatches = matchers.dice(str);
45937 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
45938 var ints = diceMatches.map(function(i) { return parseInt(i) });
45939 return {
45940 ints: ints,
45941 parts: diceMatches,
45942 matcher: matchers.dice,
45943 asInt: 6,
45944 str: "dice",
45945 }
45946 }
45947 var base6Matches = matchers.base6(str);
45948 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
45949 var ints = base6Matches.map(function(i) { return parseInt(i) });
45950 return {
45951 ints: ints,
45952 parts: base6Matches,
45953 matcher: matchers.base6,
45954 asInt: 6,
45955 str: "base 6",
45956 }
45957 }
45958 var base10Matches = matchers.base10(str);
45959 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
45960 var ints = base10Matches.map(function(i) { return parseInt(i) });
45961 return {
45962 ints: ints,
45963 parts: base10Matches,
45964 matcher: matchers.base10,
45965 asInt: 10,
45966 str: "base 10",
45967 }
45968 }
45969 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
45970 return {
45971 ints: ints,
45972 parts: hexMatches,
45973 matcher: matchers.hex,
45974 asInt: 16,
45975 str: "hexadecimal",
45976 }
45977 }
45978
ea87f1d3
IC
45979 // Assume cards are NOT replaced.
45980 // Additional entropy decreases as more cards are used. This means
45981 // total possible entropy is measured using n!, not base^n.
45982 // eg the second last card can be only one of two, not one of fifty two
45983 // so the added entropy for that card is only one bit at most
94959756 45984 function processCardEntropy(cards) {
ea87f1d3
IC
45985 // Track how many instances of each card have been used, and thus
45986 // how many decks are in use.
45987 var cardCounts = {};
45988 var numberOfDecks = 0;
45989 // Work out number of decks by max(duplicates)
45990 for (var i=0; i<cards.length; i++) {
45991 // Get the card that was drawn
45992 var cardLower = cards[i];
45993 var card = cardLower.toUpperCase();
45994 // Initialize the count for this card if needed
45995 if (!(card in cardCounts)) {
45996 cardCounts[card] = 0;
45997 }
45998 cardCounts[card] += 1;
45999 // See if this is max(duplicates)
46000 if (cardCounts[card] > numberOfDecks) {
46001 numberOfDecks = cardCounts[card];
46002 }
46003 }
46004 // Work out the total number of bits for this many decks
46005 // See http://crypto.stackexchange.com/q/41886
fc7c248f
IC
46006 var gainedBits = 0;
46007 // Equivalent of Math.log2(factorial(52*numberOfDecks))
46008 // which becomes infinity for numberOfDecks > 4
46009 for (var i=1; i<=52*numberOfDecks; i++) {
46010 gainedBits = gainedBits + Math.log2(i);
46011 }
ea87f1d3
IC
46012 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
46013 var maxBits = gainedBits - lostBits;
46014 // Convert the drawn cards to a binary representation.
46015 // The exact technique for doing this is unclear.
46016 // See
46017 // http://crypto.stackexchange.com/a/41896
46018 // "I even doubt that this is well defined (only the average entropy
46019 // is, I believe)."
46020 // See
46021 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
46022 // "The binary representation can be the first log(permutations,2) bits
46023 // of the sha-2 hash of the normalized deck string."
46024 //
46025 // In this specific implementation, the first N bits of the hash of the
46026 // normalized cards string is being used. Uppercase, no spaces; eg
46027 // sha256("AH8DQSTC2H")
46028 var totalCards = numberOfDecks * 52;
46029 var percentUsed = cards.length / totalCards;
46030 // Calculate the average number of bits of entropy for the number of
46031 // cards drawn.
46032 var numberOfBits = Math.floor(maxBits * percentUsed);
46033 // Create a normalized string of the selected cards
46034 var normalizedCards = cards.join("").toUpperCase();
46035 // Convert to binary using the SHA256 hash of the normalized cards.
434caecd 46036 // If the number of bits is more than 256, multiple hashes
ea87f1d3
IC
46037 // are used until the required number of bits is reached.
46038 var entropyBin = "";
46039 var iterations = 0;
46040 while (entropyBin.length < numberOfBits) {
434caecd 46041 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
ea87f1d3
IC
46042 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
46043 for (var i=0; i<hashHex.length; i++) {
46044 var decimal = parseInt(hashHex[i], 16);
46045 var binary = decimal.toString(2);
46046 while (binary.length < 4) {
46047 binary = "0" + binary;
46048 }
46049 entropyBin = entropyBin + binary;
46050 }
46051 iterations = iterations + 1;
46052 }
46053 // Truncate to the appropriate number of bits.
46054 entropyBin = entropyBin.substring(0, numberOfBits);
94959756
IC
46055 // Get the number of bits per event
46056 bitsPerEvent = maxBits / totalCards;
46057 return {
46058 binaryStr: entropyBin,
46059 bitsPerEvent: bitsPerEvent,
46060 }
ea87f1d3
IC
46061 }
46062
95f04905
IC
46063 // Polyfill for Math.log2
46064 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
46065 Math.log2 = Math.log2 || function(x) {
46066 // The polyfill isn't good enough because of the poor accuracy of
46067 // Math.LOG2E
46068 // log2(8) gave 2.9999999999999996 which when floored causes issues.
46069 // So instead use the BigInteger library to get it right.
46070 return BigInteger.log(x) / BigInteger.log(2);
46071 };
46072
9e97eb76
IC
46073 // Depends on BigInteger
46074 function factorial(n) {
46075 if (n == 0) {
46076 return 1;
46077 }
46078 f = BigInteger.ONE;
46079 for (var i=1; i<=n; i++) {
46080 f = f.multiply(new BigInteger(i));
46081 }
46082 return f;
46083 }
46084
95f04905 46085})();
c6624d51
IC
46086</script>
46087 <script>(function() {
46088
46089 // mnemonics is populated as required by getLanguage
46090 var mnemonics = { "english": new Mnemonic("english") };
46091 var mnemonic = mnemonics["english"];
3725abb5 46092 var seed = null;
c6624d51
IC
46093 var bip32RootKey = null;
46094 var bip32ExtendedKey = null;
9987f0c1 46095 var network = bitcoinjs.bitcoin.networks.bitcoin;
c6624d51
IC
46096 var addressRowTemplate = $("#address-row-template");
46097
46098 var showIndex = true;
46099 var showAddress = true;
46100 var showPubKey = true;
46101 var showPrivKey = true;
52da415f 46102 var showQr = false;
c6624d51
IC
46103
46104 var entropyChangeTimeoutEvent = null;
46105 var phraseChangeTimeoutEvent = null;
46106 var rootKeyChangedTimeoutEvent = null;
46107
40892aba
IC
46108 var generationProcesses = [];
46109
c6624d51
IC
46110 var DOM = {};
46111 DOM.network = $(".network");
56530adc 46112 DOM.bip32Client = $("#bip32-client");
c6624d51
IC
46113 DOM.phraseNetwork = $("#network-phrase");
46114 DOM.useEntropy = $(".use-entropy");
46115 DOM.entropyContainer = $(".entropy-container");
46116 DOM.entropy = $(".entropy");
2a6dd137
IC
46117 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
46118 DOM.entropyType = DOM.entropyContainer.find(".type");
f1e5d484 46119 DOM.entropyCrackTime = DOM.entropyContainer.find(".crack-time");
2a6dd137
IC
46120 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
46121 DOM.entropyBits = DOM.entropyContainer.find(".bits");
46122 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
46123 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
46124 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
46125 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
c6624d51
IC
46126 DOM.phrase = $(".phrase");
46127 DOM.passphrase = $(".passphrase");
46128 DOM.generateContainer = $(".generate-container");
46129 DOM.generate = $(".generate");
46130 DOM.seed = $(".seed");
46131 DOM.rootKey = $(".root-key");
46132 DOM.extendedPrivKey = $(".extended-priv-key");
46133 DOM.extendedPubKey = $(".extended-pub-key");
46134 DOM.bip32tab = $("#bip32-tab");
46135 DOM.bip44tab = $("#bip44-tab");
9987f0c1 46136 DOM.bip49tab = $("#bip49-tab");
c6624d51
IC
46137 DOM.bip32panel = $("#bip32");
46138 DOM.bip44panel = $("#bip44");
9987f0c1 46139 DOM.bip49panel = $("#bip49");
c6624d51
IC
46140 DOM.bip32path = $("#bip32-path");
46141 DOM.bip44path = $("#bip44-path");
46142 DOM.bip44purpose = $("#bip44 .purpose");
46143 DOM.bip44coin = $("#bip44 .coin");
46144 DOM.bip44account = $("#bip44 .account");
20083ab9
IC
46145 DOM.bip44accountXprv = $("#bip44 .account-xprv");
46146 DOM.bip44accountXpub = $("#bip44 .account-xpub");
c6624d51 46147 DOM.bip44change = $("#bip44 .change");
9987f0c1
IC
46148 DOM.bip49unavailable = $("#bip49 .unavailable");
46149 DOM.bip49available = $("#bip49 .available");
46150 DOM.bip49path = $("#bip49-path");
46151 DOM.bip49purpose = $("#bip49 .purpose");
46152 DOM.bip49coin = $("#bip49 .coin");
46153 DOM.bip49account = $("#bip49 .account");
46154 DOM.bip49accountXprv = $("#bip49 .account-xprv");
46155 DOM.bip49accountXpub = $("#bip49 .account-xpub");
46156 DOM.bip49change = $("#bip49 .change");
18abe53b 46157 DOM.generatedStrength = $(".generate-container .strength");
c6624d51
IC
46158 DOM.hardenedAddresses = $(".hardened-addresses");
46159 DOM.addresses = $(".addresses");
46160 DOM.rowsToAdd = $(".rows-to-add");
46161 DOM.more = $(".more");
46162 DOM.feedback = $(".feedback");
46163 DOM.tab = $(".derivation-type a");
46164 DOM.indexToggle = $(".index-toggle");
46165 DOM.addressToggle = $(".address-toggle");
46166 DOM.publicKeyToggle = $(".public-key-toggle");
46167 DOM.privateKeyToggle = $(".private-key-toggle");
46168 DOM.languages = $(".languages a");
e00964cc 46169 DOM.qrContainer = $(".qr-container");
52da415f 46170 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
e00964cc
IC
46171 DOM.qrImage = DOM.qrContainer.find(".qr-image");
46172 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
46173 DOM.showQrEls = $("[data-show-qr]");
c6624d51
IC
46174
46175 function init() {
46176 // Events
46177 DOM.network.on("change", networkChanged);
56530adc 46178 DOM.bip32Client.on("change", bip32ClientChanged);
c6624d51
IC
46179 DOM.useEntropy.on("change", setEntropyVisibility);
46180 DOM.entropy.on("input", delayedEntropyChanged);
18abe53b 46181 DOM.entropyMnemonicLength.on("change", entropyChanged);
c6624d51
IC
46182 DOM.phrase.on("input", delayedPhraseChanged);
46183 DOM.passphrase.on("input", delayedPhraseChanged);
46184 DOM.generate.on("click", generateClicked);
46185 DOM.more.on("click", showMore);
46186 DOM.rootKey.on("input", delayedRootKeyChanged);
46187 DOM.bip32path.on("input", calcForDerivationPath);
c6624d51
IC
46188 DOM.bip44account.on("input", calcForDerivationPath);
46189 DOM.bip44change.on("input", calcForDerivationPath);
9987f0c1
IC
46190 DOM.bip49account.on("input", calcForDerivationPath);
46191 DOM.bip49change.on("input", calcForDerivationPath);
c6624d51
IC
46192 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
46193 DOM.hardenedAddresses.on("change", calcForDerivationPath);
46194 DOM.indexToggle.on("click", toggleIndexes);
46195 DOM.addressToggle.on("click", toggleAddresses);
46196 DOM.publicKeyToggle.on("click", togglePublicKeys);
46197 DOM.privateKeyToggle.on("click", togglePrivateKeys);
46198 DOM.languages.on("click", languageChanged);
e00964cc 46199 setQrEvents(DOM.showQrEls);
c6624d51
IC
46200 disableForms();
46201 hidePending();
46202 hideValidationError();
46203 populateNetworkSelect();
56530adc 46204 populateClientSelect();
c6624d51
IC
46205 }
46206
46207 // Event handlers
46208
46209 function networkChanged(e) {
9987f0c1
IC
46210 clearDerivedKeys();
46211 clearAddressesList();
c6624d51 46212 var networkIndex = e.target.value;
9987f0c1
IC
46213 var network = networks[networkIndex];
46214 network.onSelect();
46215 if (network.bip49available) {
46216 showBip49();
46217 }
46218 else {
46219 hideBip49();
46220 }
c6624d51
IC
46221 if (seed != null) {
46222 phraseChanged();
46223 }
46224 else {
46225 rootKeyChanged();
46226 }
46227 }
46228
56530adc
IC
46229 function bip32ClientChanged(e) {
46230 var clientIndex = DOM.bip32Client.val();
46231 if (clientIndex == "custom") {
46232 DOM.bip32path.prop("readonly", false);
46233 }
46234 else {
46235 DOM.bip32path.prop("readonly", true);
46236 clients[clientIndex].onSelect();
46237 if (seed != null) {
46238 phraseChanged();
46239 }
46240 else {
46241 rootKeyChanged();
46242 }
46243 }
46244 }
46245
c6624d51
IC
46246 function setEntropyVisibility() {
46247 if (isUsingOwnEntropy()) {
46248 DOM.entropyContainer.removeClass("hidden");
46249 DOM.generateContainer.addClass("hidden");
46250 DOM.phrase.prop("readonly", true);
46251 DOM.entropy.focus();
46252 entropyChanged();
46253 }
46254 else {
46255 DOM.entropyContainer.addClass("hidden");
46256 DOM.generateContainer.removeClass("hidden");
46257 DOM.phrase.prop("readonly", false);
18abe53b 46258 hidePending();
c6624d51
IC
46259 }
46260 }
46261
46262 function delayedPhraseChanged() {
46263 hideValidationError();
f128bd58
IC
46264 seed = null;
46265 bip32RootKey = null;
46266 bip32ExtendedKey = null;
46267 clearAddressesList();
c6624d51
IC
46268 showPending();
46269 if (phraseChangeTimeoutEvent != null) {
46270 clearTimeout(phraseChangeTimeoutEvent);
46271 }
46272 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
46273 }
46274
46275 function phraseChanged() {
46276 showPending();
c6624d51
IC
46277 setMnemonicLanguage();
46278 // Get the mnemonic phrase
46279 var phrase = DOM.phrase.val();
46280 var errorText = findPhraseErrors(phrase);
46281 if (errorText) {
46282 showValidationError(errorText);
46283 return;
46284 }
46285 // Calculate and display
46286 var passphrase = DOM.passphrase.val();
46287 calcBip32RootKeyFromSeed(phrase, passphrase);
46288 calcForDerivationPath();
c6624d51
IC
46289 }
46290
46291 function delayedEntropyChanged() {
46292 hideValidationError();
46293 showPending();
46294 if (entropyChangeTimeoutEvent != null) {
46295 clearTimeout(entropyChangeTimeoutEvent);
46296 }
46297 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
46298 }
46299
46300 function entropyChanged() {
18abe53b
IC
46301 // If blank entropy, clear mnemonic, addresses, errors
46302 if (DOM.entropy.val().trim().length == 0) {
46303 clearDisplay();
2a6dd137 46304 clearEntropyFeedback();
18abe53b
IC
46305 DOM.phrase.val("");
46306 showValidationError("Blank entropy");
46307 return;
46308 }
46309 // Get the current phrase to detect changes
46310 var phrase = DOM.phrase.val();
46311 // Set the phrase from the entropy
c6624d51 46312 setMnemonicFromEntropy();
18abe53b
IC
46313 // Recalc addresses if the phrase has changed
46314 var newPhrase = DOM.phrase.val();
46315 if (newPhrase != phrase) {
46316 if (newPhrase.length == 0) {
46317 clearDisplay();
46318 }
46319 else {
46320 phraseChanged();
46321 }
46322 }
46323 else {
46324 hidePending();
46325 }
c6624d51
IC
46326 }
46327
46328 function delayedRootKeyChanged() {
46329 // Warn if there is an existing mnemonic or passphrase.
46330 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
46331 if (!confirm("This will clear existing mnemonic and passphrase")) {
46332 DOM.rootKey.val(bip32RootKey);
46333 return
46334 }
46335 }
46336 hideValidationError();
46337 showPending();
46338 // Clear existing mnemonic and passphrase
46339 DOM.phrase.val("");
46340 DOM.passphrase.val("");
46341 seed = null;
46342 if (rootKeyChangedTimeoutEvent != null) {
46343 clearTimeout(rootKeyChangedTimeoutEvent);
46344 }
46345 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
46346 }
46347
46348 function rootKeyChanged() {
46349 showPending();
46350 hideValidationError();
46351 // Validate the root key TODO
46352 var rootKeyBase58 = DOM.rootKey.val();
46353 var errorText = validateRootKey(rootKeyBase58);
46354 if (errorText) {
46355 showValidationError(errorText);
46356 return;
46357 }
46358 // Calculate and display
46359 calcBip32RootKeyFromBase58(rootKeyBase58);
46360 calcForDerivationPath();
c6624d51
IC
46361 }
46362
46363 function calcForDerivationPath() {
9987f0c1 46364 clearDerivedKeys();
ba3cb9ec 46365 clearAddressesList();
f128bd58 46366 showPending();
9987f0c1
IC
46367 // Don't show bip49 if it's selected but network doesn't support it
46368 if (bip49TabSelected() && !networkHasBip49()) {
46369 return;
46370 }
c6624d51
IC
46371 // Get the derivation path
46372 var derivationPath = getDerivationPath();
46373 var errorText = findDerivationPathErrors(derivationPath);
46374 if (errorText) {
46375 showValidationError(errorText);
46376 return;
46377 }
20083ab9
IC
46378 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
46379 if (bip44TabSelected()) {
46380 displayBip44Info();
46381 }
9987f0c1
IC
46382 if (bip49TabSelected()) {
46383 displayBip49Info();
46384 }
c6624d51 46385 displayBip32Info();
c6624d51
IC
46386 }
46387
46388 function generateClicked() {
46389 if (isUsingOwnEntropy()) {
46390 return;
46391 }
46392 clearDisplay();
46393 showPending();
46394 setTimeout(function() {
46395 setMnemonicLanguage();
46396 var phrase = generateRandomPhrase();
46397 if (!phrase) {
46398 return;
46399 }
46400 phraseChanged();
46401 }, 50);
46402 }
46403
46404 function languageChanged() {
46405 setTimeout(function() {
46406 setMnemonicLanguage();
46407 if (DOM.phrase.val().length > 0) {
46408 var newPhrase = convertPhraseToNewLanguage();
46409 DOM.phrase.val(newPhrase);
46410 phraseChanged();
46411 }
46412 else {
46413 DOM.generate.trigger("click");
46414 }
46415 }, 50);
46416 }
46417
46418 function toggleIndexes() {
46419 showIndex = !showIndex;
46420 $("td.index span").toggleClass("invisible");
46421 }
46422
46423 function toggleAddresses() {
46424 showAddress = !showAddress;
46425 $("td.address span").toggleClass("invisible");
46426 }
46427
46428 function togglePublicKeys() {
46429 showPubKey = !showPubKey;
46430 $("td.pubkey span").toggleClass("invisible");
46431 }
46432
46433 function togglePrivateKeys() {
46434 showPrivKey = !showPrivKey;
46435 $("td.privkey span").toggleClass("invisible");
46436 }
46437
46438 // Private methods
46439
46440 function generateRandomPhrase() {
46441 if (!hasStrongRandom()) {
46442 var errorText = "This browser does not support strong randomness";
46443 showValidationError(errorText);
46444 return;
46445 }
18abe53b 46446 var numWords = parseInt(DOM.generatedStrength.val());
c6624d51
IC
46447 var strength = numWords / 3 * 32;
46448 var words = mnemonic.generate(strength);
46449 DOM.phrase.val(words);
46450 return words;
46451 }
46452
46453 function calcBip32RootKeyFromSeed(phrase, passphrase) {
46454 seed = mnemonic.toSeed(phrase, passphrase);
9987f0c1 46455 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromSeedHex(seed, network);
c6624d51
IC
46456 }
46457
46458 function calcBip32RootKeyFromBase58(rootKeyBase58) {
9987f0c1 46459 bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network);
c6624d51
IC
46460 }
46461
46462 function calcBip32ExtendedKey(path) {
0a1f0259
IC
46463 // Check there's a root key to derive from
46464 if (!bip32RootKey) {
46465 return bip32RootKey;
46466 }
20083ab9 46467 var extendedKey = bip32RootKey;
c6624d51
IC
46468 // Derive the key from the path
46469 var pathBits = path.split("/");
ebd8d4e8
IC
46470 for (var i=0; i<pathBits.length; i++) {
46471 var bit = pathBits[i];
46472 var index = parseInt(bit);
46473 if (isNaN(index)) {
46474 continue;
46475 }
46476 var hardened = bit[bit.length-1] == "'";
9987f0c1 46477 var isPriv = !(extendedKey.isNeutered());
ba3cb9ec
IC
46478 var invalidDerivationPath = hardened && !isPriv;
46479 if (invalidDerivationPath) {
46480 extendedKey = null;
46481 }
46482 else if (hardened) {
20083ab9 46483 extendedKey = extendedKey.deriveHardened(index);
ebd8d4e8
IC
46484 }
46485 else {
20083ab9 46486 extendedKey = extendedKey.derive(index);
ebd8d4e8
IC
46487 }
46488 }
20083ab9 46489 return extendedKey
ebd8d4e8
IC
46490 }
46491
46492 function showValidationError(errorText) {
46493 DOM.feedback
46494 .text(errorText)
46495 .show();
46496 }
46497
46498 function hideValidationError() {
46499 DOM.feedback
46500 .text("")
46501 .hide();
46502 }
46503
46504 function findPhraseErrors(phrase) {
ebd8d4e8 46505 // Preprocess the words
783981de 46506 phrase = mnemonic.normalizeString(phrase);
0515eeec 46507 var words = phraseToWordArray(phrase);
18abe53b
IC
46508 // Detect blank phrase
46509 if (words.length == 0) {
46510 return "Blank mnemonic";
46511 }
563e401a 46512 // Check each word
0515eeec
IC
46513 for (var i=0; i<words.length; i++) {
46514 var word = words[i];
46515 var language = getLanguage();
46516 if (WORDLISTS[language].indexOf(word) == -1) {
563e401a
IC
46517 console.log("Finding closest match to " + word);
46518 var nearestWord = findNearestWord(word);
46519 return word + " not in wordlist, did you mean " + nearestWord + "?";
46520 }
46521 }
ebd8d4e8 46522 // Check the words are valid
0515eeec 46523 var properPhrase = wordArrayToPhrase(words);
ebd8d4e8
IC
46524 var isValid = mnemonic.check(properPhrase);
46525 if (!isValid) {
46526 return "Invalid mnemonic";
46527 }
46528 return false;
46529 }
46530
efe41586
IC
46531 function validateRootKey(rootKeyBase58) {
46532 try {
9987f0c1 46533 bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58);
efe41586
IC
46534 }
46535 catch (e) {
46536 return "Invalid root key";
46537 }
46538 return "";
46539 }
46540
38523d36 46541 function getDerivationPath() {
20083ab9 46542 if (bip44TabSelected()) {
38523d36
IC
46543 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46544 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46545 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46546 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
46547 var path = "m/";
46548 path += purpose + "'/";
46549 path += coin + "'/";
46550 path += account + "'/";
46551 path += change;
46552 DOM.bip44path.val(path);
46553 var derivationPath = DOM.bip44path.val();
46554 console.log("Using derivation path from BIP44 tab: " + derivationPath);
46555 return derivationPath;
46556 }
9987f0c1
IC
46557 if (bip49TabSelected()) {
46558 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46559 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46560 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46561 var change = parseIntNoNaN(DOM.bip49change.val(), 0);
46562 var path = "m/";
46563 path += purpose + "'/";
46564 path += coin + "'/";
46565 path += account + "'/";
46566 path += change;
46567 DOM.bip49path.val(path);
46568 var derivationPath = DOM.bip49path.val();
46569 console.log("Using derivation path from BIP49 tab: " + derivationPath);
46570 return derivationPath;
46571 }
20083ab9 46572 else if (bip32TabSelected()) {
38523d36
IC
46573 var derivationPath = DOM.bip32path.val();
46574 console.log("Using derivation path from BIP32 tab: " + derivationPath);
46575 return derivationPath;
46576 }
46577 else {
46578 console.log("Unknown derivation path");
46579 }
46580 }
46581
ebd8d4e8 46582 function findDerivationPathErrors(path) {
30c9e79d
IC
46583 // TODO is not perfect but is better than nothing
46584 // Inspired by
46585 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
46586 // and
46587 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
46588 var maxDepth = 255; // TODO verify this!!
46589 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
46590 if (path[0] != "m") {
46591 return "First character must be 'm'";
46592 }
46593 if (path.length > 1) {
46594 if (path[1] != "/") {
46595 return "Separator must be '/'";
46596 }
46597 var indexes = path.split("/");
46598 if (indexes.length > maxDepth) {
46599 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
46600 }
46601 for (var depth = 1; depth<indexes.length; depth++) {
46602 var index = indexes[depth];
46603 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
46604 if (invalidChars.length > 0) {
46605 return "Invalid characters " + invalidChars + " found at depth " + depth;
46606 }
46607 var indexValue = parseInt(index.replace("'", ""));
46608 if (isNaN(depth)) {
46609 return "Invalid number at depth " + depth;
46610 }
46611 if (indexValue > maxIndexValue) {
46612 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
46613 }
46614 }
46615 }
0a1f0259
IC
46616 // Check root key exists or else derivation path is useless!
46617 if (!bip32RootKey) {
46618 return "No root key";
46619 }
ba3cb9ec
IC
46620 // Check no hardened derivation path when using xpub keys
46621 var hardened = path.indexOf("'") > -1;
9987f0c1 46622 var isXpubkey = bip32RootKey.isNeutered();
ba3cb9ec
IC
46623 if (hardened && isXpubkey) {
46624 return "Hardened derivation path is invalid with xpub key";
46625 }
ebd8d4e8
IC
46626 return false;
46627 }
46628
20083ab9
IC
46629 function displayBip44Info() {
46630 // Get the derivation path for the account
46631 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
46632 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
46633 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
46634 var path = "m/";
46635 path += purpose + "'/";
46636 path += coin + "'/";
46637 path += account + "'/";
46638 // Calculate the account extended keys
46639 var accountExtendedKey = calcBip32ExtendedKey(path);
46640 var accountXprv = accountExtendedKey.toBase58();
9987f0c1 46641 var accountXpub = accountExtendedKey.neutered().toBase58();
20083ab9
IC
46642 // Display the extended keys
46643 DOM.bip44accountXprv.val(accountXprv);
46644 DOM.bip44accountXpub.val(accountXpub);
46645 }
46646
9987f0c1
IC
46647 function displayBip49Info() {
46648 // Get the derivation path for the account
46649 var purpose = parseIntNoNaN(DOM.bip49purpose.val(), 49);
46650 var coin = parseIntNoNaN(DOM.bip49coin.val(), 0);
46651 var account = parseIntNoNaN(DOM.bip49account.val(), 0);
46652 var path = "m/";
46653 path += purpose + "'/";
46654 path += coin + "'/";
46655 path += account + "'/";
46656 // Calculate the account extended keys
46657 var accountExtendedKey = calcBip32ExtendedKey(path);
46658 var accountXprv = accountExtendedKey.toBase58();
46659 var accountXpub = accountExtendedKey.neutered().toBase58();
46660 // Display the extended keys
46661 DOM.bip49accountXprv.val(accountXprv);
46662 DOM.bip49accountXpub.val(accountXpub);
46663 }
46664
ebd8d4e8
IC
46665 function displayBip32Info() {
46666 // Display the key
73161a92 46667 DOM.seed.val(seed);
ebd8d4e8
IC
46668 var rootKey = bip32RootKey.toBase58();
46669 DOM.rootKey.val(rootKey);
ba3cb9ec 46670 var xprvkeyB58 = "NA";
9987f0c1 46671 if (!bip32ExtendedKey.isNeutered()) {
ba3cb9ec
IC
46672 xprvkeyB58 = bip32ExtendedKey.toBase58();
46673 }
46674 var extendedPrivKey = xprvkeyB58;
ebd8d4e8 46675 DOM.extendedPrivKey.val(extendedPrivKey);
9987f0c1 46676 var extendedPubKey = bip32ExtendedKey.neutered().toBase58();
ebd8d4e8
IC
46677 DOM.extendedPubKey.val(extendedPubKey);
46678 // Display the addresses and privkeys
46679 clearAddressesList();
46680 displayAddresses(0, 20);
46681 }
46682
46683 function displayAddresses(start, total) {
40892aba
IC
46684 generationProcesses.push(new (function() {
46685
46686 var rows = [];
46687
46688 this.stop = function() {
46689 for (var i=0; i<rows.length; i++) {
46690 rows[i].shouldGenerate = false;
46691 }
f128bd58 46692 hidePending();
40892aba
IC
46693 }
46694
46695 for (var i=0; i<total; i++) {
46696 var index = i + start;
f128bd58
IC
46697 var isLast = i == total - 1;
46698 rows.push(new TableRow(index, isLast));
40892aba
IC
46699 }
46700
46701 })());
80c4dd2a
IC
46702 }
46703
f128bd58 46704 function TableRow(index, isLast) {
80c4dd2a 46705
40892aba
IC
46706 var self = this;
46707 this.shouldGenerate = true;
1975bfbc 46708 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
9987f0c1
IC
46709 var isBip49 = bip49TabSelected();
46710 var bip49available = networkHasBip49();
1975bfbc 46711
80c4dd2a
IC
46712 function init() {
46713 calculateValues();
46714 }
46715
46716 function calculateValues() {
46717 setTimeout(function() {
40892aba
IC
46718 if (!self.shouldGenerate) {
46719 return;
46720 }
9987f0c1 46721 var key = "NA";
1975bfbc
IC
46722 if (useHardenedAddresses) {
46723 key = bip32ExtendedKey.deriveHardened(index);
46724 }
46725 else {
46726 key = bip32ExtendedKey.derive(index);
46727 }
80c4dd2a 46728 var address = key.getAddress().toString();
ba3cb9ec 46729 var privkey = "NA";
9987f0c1
IC
46730 if (!key.isNeutered()) {
46731 privkey = key.keyPair.toWIF(network);
ba3cb9ec 46732 }
9987f0c1 46733 var pubkey = key.getPublicKeyBuffer().toString('hex');
38523d36 46734 var indexText = getDerivationPath() + "/" + index;
1975bfbc
IC
46735 if (useHardenedAddresses) {
46736 indexText = indexText + "'";
46737 }
8b095871 46738 // Ethereum values are different
534481b6 46739 if (networks[DOM.network.val()].name == "ETH - Ethereum") {
9987f0c1 46740 var privKeyBuffer = key.keyPair.d.toBuffer();
8b095871
IC
46741 privkey = privKeyBuffer.toString('hex');
46742 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
49b21f12
IC
46743 var hexAddress = addressBuffer.toString('hex');
46744 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
46745 address = ethUtil.addHexPrefix(checksumAddress);
920eb591
IC
46746 privkey = ethUtil.addHexPrefix(privkey);
46747 pubkey = ethUtil.addHexPrefix(pubkey);
8b095871 46748 }
8a1f452d 46749 // Ripple values are different
534481b6 46750 if (networks[DOM.network.val()].name == "XRP - Ripple") {
8a1f452d 46751 privkey = convertRipplePriv(privkey);
46752 address = convertRippleAdrr(address);
46753 }
9987f0c1
IC
46754 // BIP49 addresses are different
46755 if (isBip49) {
46756 if (!bip49available) {
46757 return;
46758 }
46759 var keyhash = bitcoinjs.bitcoin.crypto.hash160(key.getPublicKeyBuffer());
46760 var scriptsig = bitcoinjs.bitcoin.script.witnessPubKeyHash.output.encode(keyhash);
46761 var addressbytes = bitcoinjs.bitcoin.crypto.hash160(scriptsig);
46762 var scriptpubkey = bitcoinjs.bitcoin.script.scriptHash.output.encode(addressbytes);
46763 address = bitcoinjs.bitcoin.address.fromOutputScript(scriptpubkey, network)
46764 }
1b12b2f5 46765 addAddressToList(indexText, address, pubkey, privkey);
f128bd58
IC
46766 if (isLast) {
46767 hidePending();
46768 }
80c4dd2a 46769 }, 50)
ebd8d4e8 46770 }
80c4dd2a
IC
46771
46772 init();
46773
ebd8d4e8
IC
46774 }
46775
46776 function showMore() {
46777 var start = DOM.addresses.children().length;
46778 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
46779 if (isNaN(rowsToAdd)) {
46780 rowsToAdd = 20;
46781 DOM.rowsToAdd.val("20");
46782 }
46783 if (rowsToAdd > 200) {
46784 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
46785 msg += "Do you want to continue?";
46786 if (!confirm(msg)) {
46787 return;
46788 }
46789 }
ebd8d4e8 46790 displayAddresses(start, rowsToAdd);
ebd8d4e8
IC
46791 }
46792
46793 function clearDisplay() {
46794 clearAddressesList();
9987f0c1 46795 clearKeys();
ebd8d4e8
IC
46796 hideValidationError();
46797 }
46798
46799 function clearAddressesList() {
46800 DOM.addresses.empty();
40892aba
IC
46801 stopGenerating();
46802 }
46803
46804 function stopGenerating() {
46805 while (generationProcesses.length > 0) {
46806 var generation = generationProcesses.shift();
46807 generation.stop();
46808 }
ebd8d4e8
IC
46809 }
46810
9987f0c1
IC
46811 function clearKeys() {
46812 clearRootKey();
46813 clearDerivedKeys();
46814 }
46815
46816 function clearRootKey() {
ebd8d4e8 46817 DOM.rootKey.val("");
9987f0c1
IC
46818 }
46819
46820 function clearDerivedKeys() {
ebd8d4e8
IC
46821 DOM.extendedPrivKey.val("");
46822 DOM.extendedPubKey.val("");
9987f0c1
IC
46823 DOM.bip44accountXprv.val("");
46824 DOM.bip44accountXpub.val("");
ebd8d4e8
IC
46825 }
46826
1b12b2f5 46827 function addAddressToList(indexText, address, pubkey, privkey) {
ebd8d4e8 46828 var row = $(addressRowTemplate.html());
80c4dd2a
IC
46829 // Elements
46830 var indexCell = row.find(".index span");
46831 var addressCell = row.find(".address span");
1b12b2f5 46832 var pubkeyCell = row.find(".pubkey span");
80c4dd2a
IC
46833 var privkeyCell = row.find(".privkey span");
46834 // Content
ae30fed8 46835 indexCell.text(indexText);
80c4dd2a 46836 addressCell.text(address);
1b12b2f5 46837 pubkeyCell.text(pubkey);
80c4dd2a
IC
46838 privkeyCell.text(privkey);
46839 // Visibility
46840 if (!showIndex) {
46841 indexCell.addClass("invisible");
46842 }
46843 if (!showAddress) {
46844 addressCell.addClass("invisible");
46845 }
1b12b2f5
IC
46846 if (!showPubKey) {
46847 pubkeyCell.addClass("invisible");
46848 }
80c4dd2a 46849 if (!showPrivKey) {
6d628db7 46850 privkeyCell.addClass("invisible");
80c4dd2a 46851 }
ebd8d4e8 46852 DOM.addresses.append(row);
e00964cc
IC
46853 var rowShowQrEls = row.find("[data-show-qr]");
46854 setQrEvents(rowShowQrEls);
ebd8d4e8
IC
46855 }
46856
46857 function hasStrongRandom() {
46858 return 'crypto' in window && window['crypto'] !== null;
46859 }
46860
46861 function disableForms() {
46862 $("form").on("submit", function(e) {
46863 e.preventDefault();
46864 });
46865 }
46866
ebd8d4e8
IC
46867 function parseIntNoNaN(val, defaultVal) {
46868 var v = parseInt(val);
46869 if (isNaN(v)) {
46870 return defaultVal;
46871 }
46872 return v;
46873 }
46874
46875 function showPending() {
46876 DOM.feedback
46877 .text("Calculating...")
46878 .show();
46879 }
46880
563e401a 46881 function findNearestWord(word) {
0515eeec
IC
46882 var language = getLanguage();
46883 var words = WORDLISTS[language];
563e401a
IC
46884 var minDistance = 99;
46885 var closestWord = words[0];
46886 for (var i=0; i<words.length; i++) {
46887 var comparedTo = words[i];
6ea15134
IC
46888 if (comparedTo.indexOf(word) == 0) {
46889 return comparedTo;
46890 }
563e401a
IC
46891 var distance = Levenshtein.get(word, comparedTo);
46892 if (distance < minDistance) {
46893 closestWord = comparedTo;
46894 minDistance = distance;
46895 }
46896 }
46897 return closestWord;
46898 }
46899
ebd8d4e8
IC
46900 function hidePending() {
46901 DOM.feedback
46902 .text("")
46903 .hide();
46904 }
46905
ab78acc6
IC
46906 function populateNetworkSelect() {
46907 for (var i=0; i<networks.length; i++) {
46908 var network = networks[i];
46909 var option = $("<option>");
46910 option.attr("value", i);
46911 option.text(network.name);
b3cc3930
IC
46912 if (network.name == "BTC - Bitcoin") {
46913 option.prop("selected", true);
46914 }
ab78acc6
IC
46915 DOM.phraseNetwork.append(option);
46916 }
46917 }
46918
56530adc
IC
46919 function populateClientSelect() {
46920 for (var i=0; i<clients.length; i++) {
46921 var client = clients[i];
46922 var option = $("<option>");
46923 option.attr("value", i);
46924 option.text(client.name);
46925 DOM.bip32Client.append(option);
46926 }
46927 }
46928
0515eeec
IC
46929 function getLanguage() {
46930 var defaultLanguage = "english";
46931 // Try to get from existing phrase
46932 var language = getLanguageFromPhrase();
46933 // Try to get from url if not from phrase
46934 if (language.length == 0) {
46935 language = getLanguageFromUrl();
46936 }
46937 // Default to English if no other option
46938 if (language.length == 0) {
46939 language = defaultLanguage;
46940 }
46941 return language;
46942 }
46943
46944 function getLanguageFromPhrase(phrase) {
46945 // Check if how many words from existing phrase match a language.
46946 var language = "";
46947 if (!phrase) {
46948 phrase = DOM.phrase.val();
46949 }
46950 if (phrase.length > 0) {
46951 var words = phraseToWordArray(phrase);
46952 var languageMatches = {};
46953 for (l in WORDLISTS) {
46954 // Track how many words match in this language
46955 languageMatches[l] = 0;
46956 for (var i=0; i<words.length; i++) {
46957 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
46958 if (wordInLanguage) {
46959 languageMatches[l]++;
46960 }
46961 }
46962 // Find languages with most word matches.
46963 // This is made difficult due to commonalities between Chinese
46964 // simplified vs traditional.
46965 var mostMatches = 0;
46966 var mostMatchedLanguages = [];
46967 for (var l in languageMatches) {
46968 var numMatches = languageMatches[l];
46969 if (numMatches > mostMatches) {
46970 mostMatches = numMatches;
46971 mostMatchedLanguages = [l];
46972 }
46973 else if (numMatches == mostMatches) {
46974 mostMatchedLanguages.push(l);
46975 }
46976 }
46977 }
46978 if (mostMatchedLanguages.length > 0) {
46979 // Use first language and warn if multiple detected
46980 language = mostMatchedLanguages[0];
46981 if (mostMatchedLanguages.length > 1) {
46982 console.warn("Multiple possible languages");
46983 console.warn(mostMatchedLanguages);
46984 }
46985 }
46986 }
46987 return language;
46988 }
46989
46990 function getLanguageFromUrl() {
c6624d51
IC
46991 for (var language in WORDLISTS) {
46992 if (window.location.hash.indexOf(language) > -1) {
46993 return language;
46994 }
46995 }
46996 return "";
0515eeec
IC
46997 }
46998
46999 function setMnemonicLanguage() {
47000 var language = getLanguage();
47001 // Load the bip39 mnemonic generator for this language if required
47002 if (!(language in mnemonics)) {
47003 mnemonics[language] = new Mnemonic(language);
47004 }
47005 mnemonic = mnemonics[language];
47006 }
47007
47008 function convertPhraseToNewLanguage() {
47009 var oldLanguage = getLanguageFromPhrase();
47010 var newLanguage = getLanguageFromUrl();
47011 var oldPhrase = DOM.phrase.val();
47012 var oldWords = phraseToWordArray(oldPhrase);
47013 var newWords = [];
47014 for (var i=0; i<oldWords.length; i++) {
47015 var oldWord = oldWords[i];
47016 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
47017 var newWord = WORDLISTS[newLanguage][index];
47018 newWords.push(newWord);
47019 }
47020 newPhrase = wordArrayToPhrase(newWords);
47021 return newPhrase;
47022 }
47023
47024 // TODO look at jsbip39 - mnemonic.splitWords
47025 function phraseToWordArray(phrase) {
47026 var words = phrase.split(/\s/g);
47027 var noBlanks = [];
47028 for (var i=0; i<words.length; i++) {
47029 var word = words[i];
47030 if (word.length > 0) {
47031 noBlanks.push(word);
47032 }
47033 }
47034 return noBlanks;
47035 }
47036
47037 // TODO look at jsbip39 - mnemonic.joinWords
47038 function wordArrayToPhrase(words) {
47039 var phrase = words.join(" ");
47040 var language = getLanguageFromPhrase(phrase);
47041 if (language == "japanese") {
47042 phrase = words.join("\u3000");
47043 }
47044 return phrase;
47045 }
47046
c6624d51
IC
47047 function isUsingOwnEntropy() {
47048 return DOM.useEntropy.prop("checked");
47049 }
47050
47051 function setMnemonicFromEntropy() {
2a6dd137 47052 clearEntropyFeedback();
18abe53b 47053 // Get entropy value
c6624d51 47054 var entropyStr = DOM.entropy.val();
18abe53b 47055 // Work out minimum base for entropy
c6624d51 47056 var entropy = Entropy.fromString(entropyStr);
18abe53b 47057 if (entropy.binaryStr.length == 0) {
c6624d51
IC
47058 return;
47059 }
47060 // Show entropy details
18abe53b
IC
47061 showEntropyFeedback(entropy);
47062 // Use entropy hash if not using raw entropy
47063 var bits = entropy.binaryStr;
47064 var mnemonicLength = DOM.entropyMnemonicLength.val();
47065 if (mnemonicLength != "raw") {
47066 // Get bits by hashing entropy with SHA256
47067 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
47068 var hex = sjcl.codec.hex.fromBits(hash);
47069 bits = BigInteger.parse(hex, 16).toString(2);
53aaab27 47070 while (bits.length % 256 != 0) {
18abe53b
IC
47071 bits = "0" + bits;
47072 }
47073 // Truncate hash to suit number of words
47074 mnemonicLength = parseInt(mnemonicLength);
47075 var numberOfBits = 32 * mnemonicLength / 3;
47076 bits = bits.substring(0, numberOfBits);
c6624d51 47077 }
c6624d51 47078 // Discard trailing entropy
18abe53b 47079 var bitsToUse = Math.floor(bits.length / 32) * 32;
2a6dd137
IC
47080 var start = bits.length - bitsToUse;
47081 var binaryStr = bits.substring(start);
c6624d51
IC
47082 // Convert entropy string to numeric array
47083 var entropyArr = [];
18abe53b
IC
47084 for (var i=0; i<binaryStr.length / 8; i++) {
47085 var byteAsBits = binaryStr.substring(i*8, i*8+8);
47086 var entropyByte = parseInt(byteAsBits, 2);
c6624d51
IC
47087 entropyArr.push(entropyByte)
47088 }
47089 // Convert entropy array to mnemonic
47090 var phrase = mnemonic.toMnemonic(entropyArr);
47091 // Set the mnemonic in the UI
47092 DOM.phrase.val(phrase);
47093 }
47094
2a6dd137 47095 function clearEntropyFeedback() {
f1e5d484 47096 DOM.entropyCrackTime.text("...");
18abe53b 47097 DOM.entropyType.text("");
2a6dd137
IC
47098 DOM.entropyWordCount.text("0");
47099 DOM.entropyEventCount.text("0");
47100 DOM.entropyBitsPerEvent.text("0");
47101 DOM.entropyBits.text("0");
47102 DOM.entropyFiltered.html("&nbsp;");
47103 DOM.entropyBinary.html("&nbsp;");
c6624d51
IC
47104 }
47105
18abe53b 47106 function showEntropyFeedback(entropy) {
9e97eb76 47107 var numberOfBits = entropy.binaryStr.length;
f1e5d484 47108 var timeToCrack = "unknown";
95f04905
IC
47109 try {
47110 var z = zxcvbn(entropy.base.parts.join(""));
f1e5d484
IC
47111 timeToCrack = z.crack_times_display.offline_fast_hashing_1e10_per_second;
47112 if (z.feedback.warning != "") {
47113 timeToCrack = timeToCrack + " - " + z.feedback.warning;
47114 };
18abe53b 47115 }
95f04905 47116 catch (e) {
95f04905
IC
47117 console.log("Error detecting entropy strength with zxcvbn:");
47118 console.log(e);
47119 }
95f04905 47120 var entropyTypeStr = getEntropyTypeStr(entropy);
9e97eb76 47121 var wordCount = Math.floor(numberOfBits / 32) * 3;
94959756 47122 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
2a6dd137 47123 DOM.entropyFiltered.html(entropy.cleanHtml);
95f04905 47124 DOM.entropyType.text(entropyTypeStr);
f1e5d484 47125 DOM.entropyCrackTime.text(timeToCrack);
18abe53b 47126 DOM.entropyEventCount.text(entropy.base.ints.length);
9e97eb76 47127 DOM.entropyBits.text(numberOfBits);
2a6dd137
IC
47128 DOM.entropyWordCount.text(wordCount);
47129 DOM.entropyBinary.text(entropy.binaryStr);
9e97eb76 47130 DOM.entropyBitsPerEvent.text(bitsPerEvent);
95f04905
IC
47131 }
47132
47133 function getEntropyTypeStr(entropy) {
47134 var typeStr = entropy.base.str;
47135 // Add some detail if these are cards
47136 if (entropy.base.asInt == 52) {
47137 var cardDetail = []; // array of message strings
47138 // Detect duplicates
47139 var dupes = [];
47140 var dupeTracker = {};
47141 for (var i=0; i<entropy.base.parts.length; i++) {
47142 var card = entropy.base.parts[i];
9e97eb76
IC
47143 var cardUpper = card.toUpperCase();
47144 if (cardUpper in dupeTracker) {
95f04905
IC
47145 dupes.push(card);
47146 }
9e97eb76 47147 dupeTracker[cardUpper] = true;
95f04905
IC
47148 }
47149 if (dupes.length > 0) {
47150 var dupeWord = "duplicates";
47151 if (dupes.length == 1) {
47152 dupeWord = "duplicate";
47153 }
47154 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
47155 if (dupes.length > 3) {
47156 msg += "...";
47157 }
47158 cardDetail.push(msg);
47159 }
47160 // Detect full deck
47161 var uniqueCards = [];
47162 for (var uniqueCard in dupeTracker) {
47163 uniqueCards.push(uniqueCard);
47164 }
47165 if (uniqueCards.length == 52) {
47166 cardDetail.unshift("full deck");
47167 }
9e97eb76
IC
47168 // Detect missing cards
47169 var values = "A23456789TJQK";
47170 var suits = "CDHS";
47171 var missingCards = [];
47172 for (var i=0; i<suits.length; i++) {
47173 for (var j=0; j<values.length; j++) {
47174 var card = values[j] + suits[i];
47175 if (!(card in dupeTracker)) {
47176 missingCards.push(card);
47177 }
47178 }
47179 }
47180 // Display missing cards if six or less, ie clearly going for full deck
47181 if (missingCards.length > 0 && missingCards.length <= 6) {
47182 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
47183 if (missingCards.length > 3) {
47184 msg += "...";
47185 }
47186 cardDetail.push(msg);
47187 }
95f04905
IC
47188 // Add card details to typeStr
47189 if (cardDetail.length > 0) {
47190 typeStr += " (" + cardDetail.join(", ") + ")";
47191 }
47192 }
47193 return typeStr;
47194 }
47195
e00964cc
IC
47196 function setQrEvents(els) {
47197 els.on("mouseenter", createQr);
47198 els.on("mouseleave", destroyQr);
47199 els.on("click", toggleQr);
47200 }
47201
47202 function createQr(e) {
47203 var content = e.target.textContent || e.target.value;
47204 if (content) {
47205 var size = 130;
47206 DOM.qrImage.qrcode({width: size, height: size, text: content});
47207 if (!showQr) {
52da415f
IC
47208 DOM.qrHider.addClass("hidden");
47209 }
47210 else {
47211 DOM.qrHider.removeClass("hidden");
e00964cc
IC
47212 }
47213 DOM.qrContainer.removeClass("hidden");
47214 }
47215 }
47216
47217 function destroyQr() {
47218 DOM.qrImage.text("");
47219 DOM.qrContainer.addClass("hidden");
47220 }
47221
47222 function toggleQr() {
47223 showQr = !showQr;
52da415f 47224 DOM.qrHider.toggleClass("hidden");
e00964cc
IC
47225 DOM.qrHint.toggleClass("hidden");
47226 }
47227
20083ab9
IC
47228 function bip44TabSelected() {
47229 return DOM.bip44tab.hasClass("active");
47230 }
47231
47232 function bip32TabSelected() {
47233 return DOM.bip32tab.hasClass("active");
47234 }
47235
9987f0c1
IC
47236 function networkHasBip49() {
47237 return networks[DOM.network.val()].bip49available;
47238 }
47239
47240 function bip49TabSelected() {
47241 return DOM.bip49tab.hasClass("active");
47242 }
47243
47244 function setHdCoin(coinValue) {
47245 DOM.bip44coin.val(coinValue);
47246 DOM.bip49coin.val(coinValue);
47247 }
47248
47249 function showBip49() {
47250 DOM.bip49unavailable.addClass("hidden");
47251 DOM.bip49available.removeClass("hidden");
47252 }
47253
47254 function hideBip49() {
47255 DOM.bip49available.addClass("hidden");
47256 DOM.bip49unavailable.removeClass("hidden");
47257 }
47258
ab78acc6 47259 var networks = [
b3cc3930
IC
47260 {
47261 name: "BCH - Bitcoin Cash",
47262 bip49available: false,
47263 onSelect: function() {
47264 network = bitcoinjs.bitcoin.networks.bitcoin;
47265 setHdCoin(145);
47266 },
47267 },
ab78acc6 47268 {
534481b6 47269 name: "BTC - Bitcoin",
9987f0c1 47270 bip49available: true,
ab78acc6 47271 onSelect: function() {
9987f0c1
IC
47272 network = bitcoinjs.bitcoin.networks.bitcoin;
47273 setHdCoin(0);
ab78acc6
IC
47274 },
47275 },
47276 {
534481b6 47277 name: "BTC - Bitcoin Testnet",
9987f0c1 47278 bip49available: true,
ab78acc6 47279 onSelect: function() {
9987f0c1
IC
47280 network = bitcoinjs.bitcoin.networks.testnet;
47281 setHdCoin(1);
ab78acc6
IC
47282 },
47283 },
47284 {
534481b6 47285 name: "CLAM - Clams",
9987f0c1 47286 bip49available: false,
ab78acc6 47287 onSelect: function() {
9987f0c1
IC
47288 network = bitcoinjs.bitcoin.networks.clam;
47289 setHdCoin(23);
ab78acc6
IC
47290 },
47291 },
0921f370 47292 {
47293 name: "CRW - Crown",
9987f0c1 47294 bip49available: false,
0921f370 47295 onSelect: function() {
9987f0c1
IC
47296 network = bitcoinjs.bitcoin.networks.crown;
47297 setHdCoin(72);
0921f370 47298 },
47299 },
ab78acc6 47300 {
534481b6 47301 name: "DASH - Dash",
9987f0c1 47302 bip49available: false,
d5dc92fd 47303 onSelect: function() {
9987f0c1
IC
47304 network = bitcoinjs.bitcoin.networks.dash;
47305 setHdCoin(5);
d5dc92fd
IC
47306 },
47307 },
c0386f3b 47308 {
534481b6 47309 name: "DASH - Dash Testnet",
9987f0c1 47310 bip49available: false,
c0386f3b 47311 onSelect: function() {
9987f0c1
IC
47312 network = bitcoinjs.bitcoin.networks.dashtn;
47313 setHdCoin(1);
c0386f3b
KR
47314 },
47315 },
d5dc92fd 47316 {
534481b6 47317 name: "DOGE - Dogecoin",
9987f0c1 47318 bip49available: false,
534481b6 47319 onSelect: function() {
9987f0c1
IC
47320 network = bitcoinjs.bitcoin.networks.dogecoin;
47321 setHdCoin(3);
534481b6 47322 },
47323 },
47324 {
47325 name: "ETH - Ethereum",
9987f0c1 47326 bip49available: false,
d5dc92fd 47327 onSelect: function() {
9987f0c1
IC
47328 network = bitcoinjs.bitcoin.networks.bitcoin;
47329 setHdCoin(60);
d5dc92fd
IC
47330 },
47331 },
f88fab20 47332 {
534481b6 47333 name: "GAME - GameCredits",
9987f0c1 47334 bip49available: false,
f88fab20 47335 onSelect: function() {
9987f0c1
IC
47336 network = bitcoinjs.bitcoin.networks.game;
47337 setHdCoin(101);
f88fab20 47338 },
47339 },
a3baa26e 47340 {
534481b6 47341 name: "JBS - Jumbucks",
9987f0c1 47342 bip49available: false,
a3baa26e 47343 onSelect: function() {
9987f0c1
IC
47344 network = bitcoinjs.bitcoin.networks.jumbucks;
47345 setHdCoin(26);
a3baa26e
IC
47346 },
47347 },
47348 {
534481b6 47349 name: "LTC - Litecoin",
9987f0c1 47350 bip49available: false,
a3baa26e 47351 onSelect: function() {
9987f0c1
IC
47352 network = bitcoinjs.bitcoin.networks.litecoin;
47353 setHdCoin(2);
a3baa26e
IC
47354 },
47355 },
47356 {
534481b6 47357 name: "NMC - Namecoin",
9987f0c1 47358 bip49available: false,
a3baa26e 47359 onSelect: function() {
9987f0c1
IC
47360 network = bitcoinjs.bitcoin.networks.namecoin;
47361 setHdCoin(7);
a3baa26e
IC
47362 },
47363 },
f128bd58
IC
47364 {
47365 name: "PIVX - PIVX",
47366 bip49available: false,
47367 onSelect: function() {
47368 network = bitcoinjs.bitcoin.networks.pivx;
47369 setHdCoin(119);
47370 },
47371 },
47372 {
47373 name: "PIVX - PIVX Testnet",
47374 bip49available: false,
47375 onSelect: function() {
47376 network = bitcoinjs.bitcoin.networks.pivxtestnet;
47377 setHdCoin(1);
47378 },
47379 },
5c434a8a 47380 {
534481b6 47381 name: "PPC - Peercoin",
9987f0c1 47382 bip49available: false,
5c434a8a 47383 onSelect: function() {
9987f0c1
IC
47384 network = bitcoinjs.bitcoin.networks.peercoin;
47385 setHdCoin(6);
5c434a8a
CM
47386 },
47387 },
8a1f452d 47388 {
534481b6 47389 name: "SDC - ShadowCash",
9987f0c1 47390 bip49available: false,
5493efc3 47391 onSelect: function() {
9987f0c1
IC
47392 network = bitcoinjs.bitcoin.networks.shadow;
47393 setHdCoin(35);
5493efc3 47394 },
47395 },
07ac4350 47396 {
534481b6 47397 name: "SDC - ShadowCash Testnet",
9987f0c1 47398 bip49available: false,
07ac4350 47399 onSelect: function() {
9987f0c1
IC
47400 network = bitcoinjs.bitcoin.networks.shadowtn;
47401 setHdCoin(1);
07ac4350 47402 },
47403 },
01e81e53 47404 {
534481b6 47405 name: "SLM - Slimcoin",
9987f0c1 47406 bip49available: false,
01e81e53 47407 onSelect: function() {
9987f0c1
IC
47408 network = bitcoinjs.bitcoin.networks.slimcoin;
47409 setHdCoin(63);
01e81e53
GH
47410 },
47411 },
47412 {
534481b6 47413 name: "SLM - Slimcoin Testnet",
9987f0c1 47414 bip49available: false,
01e81e53 47415 onSelect: function() {
9987f0c1
IC
47416 network = bitcoinjs.bitcoin.networks.slimcointn;
47417 setHdCoin(111);
01e81e53
GH
47418 },
47419 },
07ac4350 47420 {
534481b6 47421 name: "VIA - Viacoin",
9987f0c1 47422 bip49available: false,
07ac4350 47423 onSelect: function() {
9987f0c1
IC
47424 network = bitcoinjs.bitcoin.networks.viacoin;
47425 setHdCoin(14);
07ac4350 47426 },
47427 },
8b095871 47428 {
534481b6 47429 name: "VIA - Viacoin Testnet",
9987f0c1 47430 bip49available: false,
8b095871 47431 onSelect: function() {
9987f0c1
IC
47432 network = bitcoinjs.bitcoin.networks.viacointestnet;
47433 setHdCoin(1);
8b095871
IC
47434 },
47435 },
b3cc3930
IC
47436 {
47437 name: "XMY - Myriadcoin",
47438 bip49available: false,
47439 onSelect: function() {
47440 network = bitcoinjs.bitcoin.networks.myriadcoin;
47441 setHdCoin(90);
47442 },
47443 },
534481b6 47444 {
47445 name: "XRP - Ripple",
9987f0c1 47446 bip49available: false,
534481b6 47447 onSelect: function() {
9987f0c1
IC
47448 network = bitcoinjs.bitcoin.networks.bitcoin;
47449 setHdCoin(144);
534481b6 47450 },
47451 }
ab78acc6
IC
47452 ]
47453
56530adc
IC
47454 var clients = [
47455 {
47456 name: "Bitcoin Core",
47457 onSelect: function() {
47458 DOM.bip32path.val("m/0'/0'");
47459 DOM.hardenedAddresses.prop('checked', true);
47460 },
47461 },
47462 {
47463 name: "blockchain.info",
47464 onSelect: function() {
47465 DOM.bip32path.val("m/44'/0'/0'");
47466 DOM.hardenedAddresses.prop('checked', false);
47467 },
47468 },
47469 {
47470 name: "MultiBit HD",
47471 onSelect: function() {
47472 DOM.bip32path.val("m/0'/0");
47473 DOM.hardenedAddresses.prop('checked', false);
47474 },
47475 }
47476 ]
47477
ebd8d4e8
IC
47478 init();
47479
47480})();
dc55c6b0 47481</script>
ebd8d4e8
IC
47482 </body>
47483</html>